Ejemplo n.º 1
0
Archivo: XML.py Proyecto: taf3/taf
    def append_failure(self, report):
        """Append xml report with failed TC.

        Args:
            report(dict):  Failure report

        """
        self.class_logger.info("Appending XML report with fail.")
        report['sections'] = [
            xml_unescape(section) for section in report['sections']
        ]  # pylint: disable=no-member
        sec = dict(report['sections'])
        self.fail_traceback = self.Junit.failure(message="Test failure")  # pylint: disable=no-member
        # Removing BASH escape symbols (decolorizing)
        # longrepr = xml_unescape(re_sub(r"\x1b.*?m", "", report['longrepr']))
        longrepr = xml_unescape(report['longrepr'])
        # TODO: Change str to encode for unicode text

        try:
            self.fail_traceback.append(str(longrepr))
        except UnicodeEncodeError as err:
            self.fail_traceback.append(ud.normalize('NFKD', longrepr))
            self.class_logger.warning("Unicode data in traceback: %s" %
                                      (err, ))

        self.append(self.fail_traceback)

        for name in ("out", "err"):
            content = sec.get("Captured std{0}".format(name))
            if content:
                tag = getattr(self.Junit, "system-{0}".format(name))
                self.append(tag(content))
        self.failed += 1
Ejemplo n.º 2
0
    def loadXML(self):
        if not os_path.exists(self.filename):
            return

        def getValue(definitions, default):
            ret = ""
            Len = len(definitions)
            return Len > 0 and definitions[Len - 1].text or default

        try:
            tree = ci_parse(self.filename).getroot()
            self.read_services = []
            self.read_providers = []
            self.usingcaid = []
            self.ci_config = []
            for slot in tree.findall("slot"):
                read_slot = getValue(slot.findall("id"), False).encode("UTF-8")
                print "ci " + read_slot

                i = 0
                for caid in slot.findall("caid"):
                    read_caid = caid.get("id").encode("UTF-8")
                    self.selectedcaid.append(
                        (str(read_caid), str(read_caid), i))
                    self.usingcaid.append(long(read_caid, 16))
                    i += 1

                for service in slot.findall("service"):
                    read_service_ref = xml_unescape(
                        service.get("ref").encode("UTF-8"))
                    self.read_services.append(read_service_ref)

                for provider in slot.findall("provider"):
                    read_provider_name = xml_unescape(
                        provider.get("name").encode("UTF-8"))
                    read_provider_dvbname = xml_unescape(
                        provider.get("dvbnamespace").encode("UTF-8"))
                    self.read_providers.append(
                        (read_provider_name, read_provider_dvbname))

                self.ci_config.append(
                    (int(read_slot), (self.read_services, self.read_providers,
                                      self.usingcaid)))
        except:
            print "[CI_Config_CI%d] error parsing xml..." % self.ci_slot

        for item in self.read_services:
            if len(item):
                self.finishedChannelSelection(item)

        for item in self.read_providers:
            if len(item):
                self.finishedProviderSelection(item[0], item[1])

        print self.ci_config
        self.finishedCAidSelection(self.selectedcaid)
        self["ServiceList"].l.setList(self.servicelist)
        self.setServiceListInfo()
Ejemplo n.º 3
0
	def loadXML(self):
		if not os_path.exists(self.filename):
			return

		def getValue(definitions, default):
			Len = len(definitions)
			return Len > 0 and definitions[Len-1].text or default

		try:
			tree = ci_parse(self.filename).getroot()
			self.read_services=[]
			self.read_providers=[]
			self.usingcaid=[]
			self.ci_config=[]
			for slot in tree.findall("slot"):
				read_slot = getValue(slot.findall("id"), False).encode("UTF-8")
				print "ci " + read_slot

				i=0
				for caid in slot.findall("caid"):
					read_caid = caid.get("id").encode("UTF-8")
					self.selectedcaid.append((str(read_caid),str(read_caid),i))
					self.usingcaid.append(long(read_caid,16))
					i+=1

				for service in  slot.findall("service"):
					read_service_ref = xml_unescape( service.get("ref").encode("UTF-8") )
					self.read_services.append (read_service_ref)

				for provider in  slot.findall("provider"):
					read_provider_name = xml_unescape( provider.get("name").encode("UTF-8") )
					read_provider_dvbname = xml_unescape( provider.get("dvbnamespace").encode("UTF-8") )
					self.read_providers.append((read_provider_name,read_provider_dvbname))

				self.ci_config.append((int(read_slot), (self.read_services, self.read_providers, self.usingcaid)))
		except:
			print "[CI_Config_CI%d] error parsing xml..." %self.ci_slot

		for item in self.read_services:
			if len(item):
				self.finishedChannelSelection(item)

		for item in self.read_providers:
			if len(item):
				self.finishedProviderSelection(item[0],item[1])

		print self.ci_config
		self.finishedCAidSelection(self.selectedcaid)
		self["ServiceList"].l.setList(self.servicelist)
		self.setServiceListInfo()
Ejemplo n.º 4
0
    def _parse_menu_tag(self, item):
        name = None
        untranslated_name = None
        query = None
        icon = None
        only_unallocated = False
        dont_display = False
        flags = []
        subcategories = []
        sortmode = SortMethods.BY_ALPHABET
        item_limit = 0
        for element in item.getchildren():
            # ignore inline translations, we use gettext for this
            if (element.tag == "Name"
                    and '{http://www.w3.org/XML/1998/namespace}lang'
                    in element.attrib):
                continue
            if element.tag == "Name":
                untranslated_name = element.text
                # gettext/xml writes stuff from software-center.menu
                # out into the pot as escaped xml, so we need to escape
                # the name first, get the translation and unscape it again
                escaped_name = xml_escape(untranslated_name)
                name = xml_unescape(gettext.gettext(escaped_name))
            elif element.tag == "SCIcon":
                icon = element.text
            elif element.tag == 'Flags':
                flags = self._parse_flags_tag(element)
            elif element.tag == "Directory":
                l = self._parse_directory_tag(element)
                if l:
                    (untranslated_name, name, gettext_domain, icon) = l
            elif element.tag == "Include":
                query = self._parse_include_tag(element)
            elif element.tag == "OnlyUnallocated":
                only_unallocated = True
            elif element.tag == "SCDontDisplay":
                dont_display = True
            elif element.tag == "SCSortMode":
                sortmode = int(element.text)
                if not self._verify_supported_sort_mode(sortmode):
                    return None
            elif element.tag == "SCItemLimit":
                item_limit = int(element.text)
            elif element.tag == "Menu":
                subcat = self._parse_menu_tag(element)
                if subcat:
                    subcategories.append(subcat)
            else:
                LOG.warn("UNHANDLED tag in _parse_menu_tag: %s" % element.tag)

        if untranslated_name and query:
            return Category(untranslated_name, name, icon, query,
                            only_unallocated, dont_display, flags,
                            subcategories, sortmode, item_limit)
        else:
            LOG.warn("UNHANDLED entry: %s %s %s %s" %
                     (name, untranslated_name, icon, query))
        return None
Ejemplo n.º 5
0
 def _parse_menu_tag(self, item):
     name = None
     untranslated_name = None
     query = None
     icon = None
     only_unallocated = False
     dont_display = False
     flags = []
     subcategories = []
     sortmode = SortMethods.BY_ALPHABET
     item_limit = 0
     for element in item.getchildren():
         # ignore inline translations, we use gettext for this
         if (element.tag == "Name" and 
             '{http://www.w3.org/XML/1998/namespace}lang' in element.attrib):
             continue
         if element.tag == "Name":
             untranslated_name = element.text
             # gettext/xml writes stuff from software-center.menu
             # out into the pot as escaped xml, so we need to escape
             # the name first, get the translation and unscape it again
             escaped_name = xml_escape(untranslated_name)
             name = xml_unescape(gettext.gettext(escaped_name))
         elif element.tag == "SCIcon":
             icon = element.text
         elif element.tag == 'Flags':
             flags = self._parse_flags_tag(element)
         elif element.tag == "Directory":
             l = self._parse_directory_tag(element)
             if l:
                 (untranslated_name, name, gettext_domain, icon) = l
         elif element.tag == "Include":
             query = self._parse_include_tag(element)
         elif element.tag == "OnlyUnallocated":
             only_unallocated = True
         elif element.tag == "SCDontDisplay":
             dont_display = True
         elif element.tag == "SCSortMode":
             sortmode = int(element.text)
             if not self._verify_supported_sort_mode(sortmode):
                 return None
         elif element.tag == "SCItemLimit":
             item_limit = int(element.text)
         elif element.tag == "Menu":
             subcat = self._parse_menu_tag(element)
             if subcat:
                 subcategories.append(subcat)
         else:
             LOG.warn("UNHANDLED tag in _parse_menu_tag: %s" % element.tag)
             
     if untranslated_name and query:
         return Category(untranslated_name, name, icon, query,  only_unallocated, dont_display, flags, subcategories, sortmode, item_limit)
     else:
         LOG.warn("UNHANDLED entry: %s %s %s %s" % (name, 
                                                    untranslated_name, 
                                                    icon, 
                                                    query))
     return None
Ejemplo n.º 6
0
    def text_xmldecode(data):
        """ 
        XML decode to unicode text.

        :param str data: Data to decode to unicode.
        :return: XML decoded data.
        :rtype: str
        """
        return xml_unescape(data)
Ejemplo n.º 7
0
    def text_xmldecode(data):
        ''' 
        XML decode to unicode text.

        :param str data: Data to decode to unicode.
        :return: XML decoded data.
        :rtype: str
        '''
        return xml_unescape(data)
Ejemplo n.º 8
0
 def _unescape(self, s):
     """ Unescape entities for easy editing """
     return xml_unescape(s, {
         '"': '"',
         ''': "'",
         '%': '%',
         ''': "'",
         '%': '%',
         ''': "'",
     })
Ejemplo n.º 9
0
 def _unescape(self, s):
     """ Unescape entities for easy editing """
     return xml_unescape(
         s, {
             '"': '"',
             ''': "'",
             '%': '%',
             ''': "'",
             '%': '%',
             ''': "'",
         })
Ejemplo n.º 10
0
Archivo: XML.py Proyecto: taf3/taf
    def append_xfail(self, report):
        """Append xml report with xfailed TC.

        Args:
            report(dict):  XFail report

        """
        self.class_logger.info("Appending XML report with xfail.")
        self.append(
            self.Junit.skipped(
                str(xml_unescape(report['keywords']['xfail'])),  # pylint: disable=no-member
                message="expected test failure"))
Ejemplo n.º 11
0
def fetch_with_refresh(url, accept_encodings=HTTP_ENCODINGS, max_delay=20, user_agent_spoof=None):
    try:
        hops = []
        refresh = True
        while refresh is not None:
            headers = {'accept-encoding': ', '.join(accept_encodings or HTTP_ENCODINGS)}
            if user_agent_spoof is not None:
                headers['User-Agent'] = USER_AGENTS[user_agent_spoof]
            try:
                response = requests.get(url, timeout=10, headers=headers)
            except requests.exceptions.ContentDecodingError as e:
                enc = re.search('Received response with content-encoding: ([a-z]+),', repr(e))
                if not enc:
                    raise
                enc = enc.group(1)
                if enc not in accept_encodings:
                    raise
                print('>> Removing encoding {!r} for {!r}'.format(enc, url.encode('utf8')), file=sys.stderr)
                try:
                    accept_encodings.remove(enc)
                except AttributeError:
                    pass
                continue
            hops.extend(response.history)
            hops.append(response)
            if response.status_code >= 400:
                break
            refresh = response.headers.get('refresh')
            if refresh is None:
                match = meta_refresh_re.search(response.content)
                if match is not None:
                    tag = match.group(0).lower()
                    if 'http-equiv="refresh' in tag \
                       or 'http-equiv=\'refresh' in tag:
                        refresh = match.group(1)

            if refresh is not None and refresh != response.url:
                delay, next_url = refresh.split(';', 1)
                _, next_url = next_url.split('=', 1)
                next_url = urlparse.urljoin(url, xml_unescape(next_url))
                assert next_url.startswith('http')
                if next_url in (hop.url for hop in hops):
                    break
                url = next_url
                if int(delay) > max_delay:
                    refresh = None
    except Exception as e:
        raise FetchException(e, url, hops)
    if hops[-1].status_code == 200 and not hops[-1].content:
        raise FetchException('Status 200 but empty content', url, hops, code=-2)
    return hops
Ejemplo n.º 12
0
    def add_torrents(self):
        (model, row) = self.listview_torrents.get_selection().get_selected()
        if row is not None:
            self.save_torrent_options(row)

        torrents_to_add = []

        row = self.torrent_liststore.get_iter_first()
        while row is not None:
            torrent_id = self.torrent_liststore.get_value(row, 0)
            filename = xml_unescape(
                decode_bytes(self.torrent_liststore.get_value(row, 2)))
            try:
                options = self.options[torrent_id]
            except KeyError:
                options = None

            file_priorities = self.get_file_priorities(torrent_id)
            if options is not None:
                options['file_priorities'] = file_priorities

            if self.infos[torrent_id]:
                torrents_to_add.append((
                    os.path.split(filename)[-1],
                    b64encode(self.infos[torrent_id]),
                    options,
                ))
            elif is_magnet(filename):
                client.core.add_torrent_magnet(filename,
                                               options).addErrback(log.debug)

            row = self.torrent_liststore.iter_next(row)

        def on_torrents_added(errors):
            if errors:
                log.info(
                    'Failed to add %d out of %d torrents.',
                    len(errors),
                    len(torrents_to_add),
                )
                for e in errors:
                    log.info('Torrent add failed: %s', e)
            else:
                log.info('Successfully added %d torrents.',
                         len(torrents_to_add))

        if torrents_to_add:
            client.core.add_torrent_files(torrents_to_add).addCallback(
                on_torrents_added)
Ejemplo n.º 13
0
def unescape(obj: Any) -> str:
    """Unescape xml entities.

    Parameters
    ----------
    obj : Any
        Can be anything that will be converted to string, then where xml entities will be unescaped.

    Returns
    -------
    str
        The unescaped string version of `obj`.

    """
    return xml_unescape(str(obj), UNESCAPE_CHARS)
Ejemplo n.º 14
0
Archivo: XML.py Proyecto: taf3/taf
    def append_skipped(self, report):
        """Append xml reports with skipped TC.

        Args:
            report(dict):  Skipped report

        """
        self.class_logger.info("Appending XML report with skip.")
        # filename, lineno, skipreason = report['longrepr']
        # self.class_logger.debug("Received longrepr: {0}".format(xml_unescape(report['longrepr'])))
        longrepr = xml_unescape(report['longrepr'])
        # TODO: fixed bug with longrepr crashing
        skipreason = get_skipped_reason(report['longrepr'])
        self.append(
            self.Junit.skipped(
                "%s" % longrepr,  # pylint: disable=no-member
                type="pytest.skip",
                message=skipreason))
        #        self.append(self.Junit.skipped("%s:%s: %s" % longrepr, type="pytest.skip", message=skipreason))
        self.skipped += 1
Ejemplo n.º 15
0
    def _parse_menu_tag(self, item):
        name = None
        untranslated_name = None
        query = None
        icon = None
        only_unallocated = False
        dont_display = False
        subcategories = []
        for element in item.getchildren():
            # ignore inline translations, we use gettext for this
            if element.tag == "Name" and "{http://www.w3.org/XML/1998/namespace}lang" in element.attrib:
                continue
            if element.tag == "Name":
                untranslated_name = element.text
                # gettext/xml writes stuff from software-center.menu
                # out into the pot as escaped xml, so we need to escape
                # the name first, get the translation and unscape it again
                escaped_name = xml_escape(untranslated_name)
                name = xml_unescape(gettext.gettext(escaped_name))
            elif element.tag == "SCIcon":
                icon = element.text
            elif element.tag == "Directory":
                (untranslated_name, name, gettext_domain, icon) = self._parse_directory_tag(element)
            elif element.tag == "Include":
                query = self._parse_include_tag(element)
            elif element.tag == "OnlyUnallocated":
                only_unallocated = True
            elif element.tag == "SCDontDisplay":
                dont_display = True
            elif element.tag == "Menu":
                subcat = self._parse_menu_tag(element)
                if subcat:
                    subcategories.append(subcat)
            else:
                print "UNHANDLED tag in _parse_menu_tag: ", element.tag

        if untranslated_name and query:
            return Category(untranslated_name, name, icon, query, only_unallocated, dont_display, subcategories)
        else:
            print "UNHANDLED entry: ", name, untranslated_name, icon, query
        return None
Ejemplo n.º 16
0
Archivo: XML.py Proyecto: taf3/taf
    def append_error(self, report, when=""):
        """Append xml report with error (in case TC failed on setup or teardown).

        Args:
            report(dict):  Error report
            when(str):  Error occurance stage (setup|call|teardown)

        """
        self.class_logger.info("Appending XML report with error.")
        if 'longrepr' in list(report.keys()):
            longrepr = xml_unescape(report['longrepr'])
            if self.fail_traceback is not None:
                failure_reason = None
                if len(self.tests[-1]) > 0:
                    failure_reason = self.tests[-1].pop()
                if self.update is not None and len(self.tests[-1]) > 0:
                    self.tests[-1].pop()
                    try:
                        self.tests[-1].pop()
                    except IndexError:
                        pass
                self.append(
                    self.Junit.error(
                        longrepr,  # pylint: disable=no-member
                        message="Test error on %s and Test failure" %
                        (when, )))
                if hasattr(
                        failure_reason.attr, "message"
                ) and failure_reason.attr.message == "Failure Reason":
                    self.tests[-1].append(failure_reason)
                self.tests[-1][0].extend("\n" + "-" * 80 +
                                         "\nTest Case Failure\n" + "-" * 80 +
                                         "\n")
                self.tests[-1][0].extend(self.fail_traceback)
            else:
                self.append(
                    self.Junit.error(
                        longrepr,  # pylint: disable=no-member
                        message="Test error on %s" % (when, )))
        self.errors += 1
        self.failed += 1
Ejemplo n.º 17
0
    def add_torrents(self):
        (model, row) = self.listview_torrents.get_selection().get_selected()
        if row is not None:
            self.save_torrent_options(row)

        torrents_to_add = []

        row = self.torrent_liststore.get_iter_first()
        while row is not None:
            torrent_id = self.torrent_liststore.get_value(row, 0)
            filename = xml_unescape(self.torrent_liststore.get_value(row, 2))
            try:
                options = self.options[torrent_id]
            except KeyError:
                options = None

            file_priorities = self.get_file_priorities(torrent_id)
            if options is not None:
                options['file_priorities'] = file_priorities

            if deluge.common.is_magnet(filename):
                del options['file_priorities']
                client.core.add_torrent_magnet(filename, options)
            else:
                torrents_to_add.append((os.path.split(filename)[-1],
                                        base64.encodestring(self.infos[torrent_id]),
                                        options))
            row = self.torrent_liststore.iter_next(row)

        def on_torrents_added(errors):
            if errors:
                log.info('Failed to add %d out of %d torrents.', len(errors), len(torrents_to_add))
                for e in errors:
                    log.info('Torrent add failed: %s', e)
            else:
                log.info('Successfully added %d torrents.', len(torrents_to_add))
        client.core.add_torrent_files(torrents_to_add).addCallback(on_torrents_added)
Ejemplo n.º 18
0
 def decode(self, content, response):
     return xml_unescape(content)
Ejemplo n.º 19
0
 def _unescape(self, s):
     return xml_unescape(s, {"'": "'", '"': '"'})
Ejemplo n.º 20
0
 def _unescape(self, s):
     return xml_unescape(s, {"'": "'", '"': '"'})
Ejemplo n.º 21
0
def unescape(text):
    return xml_unescape(text, html_unescape_table)