示例#1
0
文件: external.py 项目: wking/layman
    def getshortlist(self):
        document = ET.parse(HERE + '/testfiles/global-overlays.xml')
        overlays = document.findall('overlay') + document.findall('repo')
        output = Message()

        ovl = Overlay({'output': output}, overlays[0])
        test_short_list = 'wrobel                    [Subversion] '\
                          '(https://o.g.o/svn/dev/wrobel         )'
        self.assertEqual(ovl.short_list(80).decode('utf-8'), test_short_list)
        print(ovl.short_list(80).decode('utf-8'))
示例#2
0
    def getshortlist(self):
        document = ET.parse(HERE + '/testfiles/global-overlays.xml')
        overlays = document.findall('overlay') + document.findall('repo')
        output = Message()

        ovl = Overlay({'output': output, 'db_type': 'xml'}, xml=overlays[0])
        test_short_list = 'wrobel                    [Subversion] '\
                          '(https://o.g.o/svn/dev/wrobel         )'
        self.assertEqual(ovl.short_list(80).decode('utf-8'), test_short_list)
        print(ovl.short_list(80).decode('utf-8'))
示例#3
0
    def getinfostr(self):
        document = ET.parse(HERE + '/testfiles/global-overlays.xml')
        overlays = document.findall('overlay') + document.findall('repo')
        output = Message()

        ovl = Overlay({'output': output, 'db_type': 'xml'}, xml=overlays[0])
        test_infostr = 'wrobel\n~~~~~~\nSource  : '\
                       'https://overlays.gentoo.org/svn/dev/wrobel\nContact '\
                       ': [email protected]\nType    : Subversion; Priority: '\
                       '10\nQuality : experimental\n\nDescription:\n  Test\n'
        self.assertEqual(ovl.get_infostr().decode('utf-8'), test_infostr)
        print(ovl.get_infostr().decode('utf-8'))
示例#4
0
文件: external.py 项目: wking/layman
    def getinfostr(self):
        document = ET.parse(HERE + '/testfiles/global-overlays.xml')
        overlays = document.findall('overlay') + document.findall('repo')
        output = Message()

        ovl = Overlay({'output': output}, overlays[0])
        test_infostr = 'wrobel\n~~~~~~\nSource  : '\
                       'https://overlays.gentoo.org/svn/dev/wrobel\nContact '\
                       ': [email protected]\nType    : Subversion; Priority: '\
                       '10\nQuality : experimental\n\nDescription:\n  Test\n'
        self.assertEqual(ovl.get_infostr().decode('utf-8'), test_infostr)
        print(ovl.get_infostr().decode('utf-8'))
示例#5
0
文件: external.py 项目: dewey/layman
    def objattribs(self):
        document = ET.parse(HERE + '/testfiles/global-overlays.xml')
        overlays = document.findall('overlay') + document.findall('repo')
        output = Message()
        ovl_a = Overlay({'output': output, 'db_type': 'xml'}, xml=overlays[0])
        self.assertEqual(ovl_a.name, 'wrobel')
        self.assertEqual(ovl_a.is_official(), True)
        url = ['https://overlays.gentoo.org/svn/dev/wrobel']
        self.assertEqual(list(ovl_a.source_uris()), url)
        self.assertEqual(ovl_a.owners[0]['email'], '*****@*****.**')
        self.assertEqual(ovl_a.descriptions, ['Test'])
        self.assertEqual(ovl_a.priority, 10)

        ovl_b = Overlay({'output': output, 'db_type': 'xml'}, xml=overlays[1])
        self.assertEqual(ovl_b.is_official(), False)
示例#6
0
    def _add_from_dict(self, overlays=None):
        '''
        Add a new overlay from a list of dictionary values
        '''
        self.output.info('DbBase: add_from_dict()')

        for overlay in overlays:
            self.output.debug('Parsing overlay entry', 8)
            ovl = Overlay(self.config, ovl_dict=overlay,
                          ignore=self.ignore)
            self.overlays[ovl.name] = ovl

        return
示例#7
0
    def objattribs(self):
        document = ET.parse(HERE + '/testfiles/global-overlays.xml')
        overlays = document.findall('overlay') + document.findall('repo')
        output = Message()
        ovl_a = Overlay({'output': output, 'db_type': 'xml'}, xml=overlays[0])
        self.assertEqual(ovl_a.name, 'wrobel')
        self.assertEqual(ovl_a.is_official(), True)
        url = ['https://overlays.gentoo.org/svn/dev/wrobel']
        self.assertEqual(list(ovl_a.source_uris()), url)
        self.assertEqual(ovl_a.owners[0]['email'], '*****@*****.**')
        self.assertEqual(ovl_a.descriptions, ['Test'])
        self.assertEqual(ovl_a.priority, 10)

        ovl_b = Overlay({'output': output, 'db_type': 'xml'}, xml=overlays[1])
        self.assertEqual(ovl_b.is_official(), False)
示例#8
0
    def add_new(self, document=None, origin=None):
        '''
        Reads in provided json text and generates overlays to populate database.
        '''
        if not document:
            msg = 'JSON DBHandler - add_new() failed: JSON text cannot be none'\
                  '.\nOrigin: %(path)s' % {'path': origin}
            self.output.warn(msg)
            return False

        load = json.loads(document)['repo']

        for ovl in load:
            overlay = Overlay(self.config, json=ovl, ignore=self.ignore)
            self.overlays[overlay.name] = overlay

        return True
示例#9
0
    def test(self):
        temp_dir_path = tempfile.mkdtemp()
        my_opts = {
                   'overlays': ['file://'\
                        + HERE + '/testfiles/global-overlays.xml'],
                   'nocheck': 'yes',
                   'proxy': None,
                   'quietness': 3,
                  }

        config = OptionConfig(my_opts)

        ovl_dict = {
            'name': 'wrobel',
            'description': ['Test'],
            'owner': [{
                'name': 'nobody',
                'email': '*****@*****.**'
            }],
            'status': 'official',
            'source':
            [['https://overlays.gentoo.org/svn/dev/wrobel', 'svn', '']],
            'priority': '10',
        }

        a = Overlay(config=config, ovl_dict=ovl_dict, ignore=config['ignore'])
        ovl = (ovl_dict['name'], a)
        path = temp_dir_path + '/overlay.xml'
        create_overlay_xml = Interactive(config=config)

        create_overlay_xml(overlay_package=ovl, path=path)
        self.assertTrue(os.path.exists(path))

        with fileopen(path, 'r') as xml:
            test_line = '    <source type="svn">'\
                        'https://overlays.gentoo.org/svn/dev/wrobel</source>\n'
            self.assertTrue(test_line in xml.readlines())
            for line in xml.readlines():
                print(line, end='')

        shutil.rmtree(temp_dir_path)
示例#10
0
    def read(self, text, origin):
        '''
        Read an xml list of overlays (adding to and potentially overwriting
        existing entries)
        '''
        try:
            document = ET.fromstring(text)
        except ET.ParseError as error:
            msg = 'XML DBHandler - ET.ParseError: %(err)s' % {'err': error}
            self.output.error(msg)
            return False

        overlays = document.findall('overlay') + document.findall('repo')

        for overlay in overlays:
            msg = 'XML DBHandler - Parsing overlay: %(ovl)s' % {'ovl': overlay}
            self.output.debug(msg, 9)
            ovl = Overlay(config=self.config, xml=overlay, ignore=self.ignore)
            self.overlays[ovl.name] = ovl

        return True
示例#11
0
    def read_db(self, path, text=None):
        '''
        Read the overlay definitions from the database and generate overlays.
        '''
        cursor = None
        overlay_id = None
        overlay = {}

        try:
            connection = self.__connect__(path)
        except sqlite3.DatabaseError as err:
            msg = 'SQLite DBHandler DatabaseError: %(err)s' % {'err': err}
            self.output.error(msg)
            return False

        cursor = connection.cursor()
        cursor.execute('''SELECT Overlay_ID, Name, Priority, Status,
        Quality, Homepage, IRC, License FROM Overlay''')
        overlays_info = cursor.fetchall()
        connection.commit()

        for overlay_info in overlays_info:
            overlay = {}
            overlay_id = overlay_info[0]
            overlay['name'] = overlay_info[1]

            cursor.execute(
                '''SELECT URL, Type, Branch FROM Overlay_Source
            JOIN Overlay USING (Overlay_ID) JOIN Source USING (Source_ID)
            WHERE Overlay_ID = ?''', (overlay_id, ))
            overlay['source'] = cursor.fetchall()

            cursor.execute(
                '''SELECT Owner_Email, Owner_Name FROM Overlay_Owner
            JOIN Overlay USING (Overlay_ID) JOIN Owner USING (Owner_ID)
            WHERE Overlay_ID = ?''', (overlay_id, ))
            owner_info = cursor.fetchall()
            overlay['owner'] = []
            for _owner in owner_info:
                owner = {}
                if _owner[0]:
                    owner['email'] = _owner[0]
                else:
                    owner['email'] = None
                if len(_owner) > 1:
                    if _owner[1]:
                        owner['name'] = _owner[1]
                    else:
                        owner['name'] = None
                overlay['owner'].append(owner)

            cursor.execute(
                '''SELECT Description FROM Description
            JOIN Overlay USING (Overlay_ID) WHERE Overlay_ID = ?''',
                (overlay_id, ))
            overlay['description'] = cursor.fetchall()[0]

            overlay['status'] = overlay_info[3]
            overlay['quality'] = overlay_info[4]
            overlay['priority'] = overlay_info[2]
            overlay['license'] = overlay_info[7]
            overlay['homepage'] = overlay_info[5]
            overlay['IRC'] = overlay_info[6]

            cursor.execute(
                '''SELECT Feed FROM Feed JOIN Overlay USING
            (Overlay_ID) WHERE Overlay_ID = ?''', (overlay_id, ))
            overlay['feed'] = cursor.fetchall()

            if len(overlay['feed']):
                overlay['feed'] = overlay['feed'][0]

            self.overlays[overlay_info[1]] = Overlay(self.config,
                                                     ovl_dict=overlay,
                                                     ignore=self.ignore)
        connection.close()
        return True