Esempio n. 1
0
    def test_load_repos_conf_dir(self):
        # repo priority sorting and dir/symlink scanning

        repos_conf_dir = pjoin(self.dir, 'repos.conf')
        os.mkdir(repos_conf_dir)
        repos_conf_sym = pjoin(self.dir, 'repos.conf.sym')
        os.symlink(repos_conf_dir, repos_conf_sym)

        # add global repos.conf
        shutil.copyfile(
            pjoin(const.CONFIG_PATH, 'repos.conf'),
            pjoin(repos_conf_dir, 'repos.conf'))

        with open(pjoin(repos_conf_dir, 'z'), 'w') as f:
            f.write(textwrap.dedent('''\
                [bar]
                location = /var/gentoo/repos/bar

                [foo]
                location = /var/gentoo/repos/foo
                priority = 10'''))
            f.flush()

        defaults, repos = load_repos_conf(repos_conf_dir)
        sym_defaults, sym_repos = load_repos_conf(repos_conf_sym)

        self.assertEqual(defaults, sym_defaults)
        self.assertEqual(repos, sym_repos)
        self.assertEqual('gentoo', defaults['main-repo'])
        self.assertEqual(['foo', 'bar', 'gentoo'], repos.keys())
Esempio n. 2
0
    def test_load_repos_conf_dir(self):
        # repo priority sorting and dir/symlink scanning

        repos_conf_dir = pjoin(self.dir, 'repos.conf')
        os.mkdir(repos_conf_dir)
        repos_conf_sym = pjoin(self.dir, 'repos.conf.sym')
        os.symlink(repos_conf_dir, repos_conf_sym)

        # add global repos.conf
        shutil.copyfile(pjoin(const.CONFIG_PATH, 'repos.conf'),
                        pjoin(repos_conf_dir, 'repos.conf'))

        with open(pjoin(repos_conf_dir, 'z'), 'w') as f:
            f.write(
                textwrap.dedent('''\
                [bar]
                location = /var/gentoo/repos/bar

                [foo]
                location = /var/gentoo/repos/foo
                priority = 10'''))
            f.flush()

        defaults, repos = load_repos_conf(repos_conf_dir)
        sym_defaults, sym_repos = load_repos_conf(repos_conf_sym)

        self.assertEqual(defaults, sym_defaults)
        self.assertEqual(repos, sym_repos)
        self.assertEqual('gentoo', defaults['main-repo'])
        self.assertEqual(['foo', 'bar', 'gentoo'], repos.keys())
Esempio n. 3
0
    def test_load_repos_conf(self):
        self.assertIn('gentoo', self.global_repos_conf)

        # nonexistent file
        self.assertRaises(errors.ParsingError, load_repos_conf,
                          pjoin(self.dir, 'repos.conf'))

        # unreadable file
        with NamedTemporaryFile() as f:
            os.chmod(f.name, stat.S_IWUSR)
            self.assertRaises(errors.PermissionDeniedError, load_repos_conf,
                              f.name)

        # blank file
        with NamedTemporaryFile() as f:
            self.assertRaises(errors.ConfigurationError, load_repos_conf,
                              f.name)

        # missing location parameter
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [foo]
                sync-uri = git://foo.git''').encode())
            f.flush()
            self.assertRaises(errors.ParsingError, load_repos_conf, f.name)

        # bad priority value
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [foo]
                priority = foo
                location = /var/gentoo/repos/foo''').encode())
            f.flush()
            self.assertRaises(errors.ParsingError, load_repos_conf, f.name)

        # undefined main repo with 'gentoo' missing
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [foo]
                location = /var/gentoo/repos/foo''').encode())
            f.flush()
            self.assertRaises(errors.ConfigurationError, load_repos_conf,
                              f.name)

        # default section isn't required as long as gentoo repo exists
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [foo]
                location = /var/gentoo/repos/foo
                [gentoo]
                location = /var/gentoo/repos/gentoo''').encode())
            f.flush()
            defaults, repos = load_repos_conf(f.name)
            self.assertEqual('gentoo', defaults['main-repo'])
            self.assertEqual(['foo', 'gentoo'], repos.keys())
Esempio n. 4
0
    def test_load_repos_conf(self):
        self.assertIn('gentoo', self.global_repos_conf)

        # nonexistent file
        self.assertRaises(
            errors.ParsingError, load_repos_conf,
            pjoin(self.dir, 'repos.conf'))

        # unreadable file
        with NamedTemporaryFile() as f:
            os.chmod(f.name, stat.S_IWUSR)
            self.assertRaises(
                errors.PermissionDeniedError, load_repos_conf, f.name)

        # blank file
        with NamedTemporaryFile() as f:
            self.assertRaises(
                errors.ConfigurationError, load_repos_conf, f.name)

        # missing location parameter
        with NamedTemporaryFile() as f:
            f.write(textwrap.dedent('''\
                [foo]
                sync-uri = git://foo.git''').encode())
            f.flush()
            self.assertRaises(
                errors.ParsingError, load_repos_conf, f.name)

        # bad priority value
        with NamedTemporaryFile() as f:
            f.write(textwrap.dedent('''\
                [foo]
                priority = foo
                location = /var/gentoo/repos/foo''').encode())
            f.flush()
            self.assertRaises(
                errors.ParsingError, load_repos_conf, f.name)

        # undefined main repo with 'gentoo' missing
        with NamedTemporaryFile() as f:
            f.write(textwrap.dedent('''\
                [foo]
                location = /var/gentoo/repos/foo''').encode())
            f.flush()
            self.assertRaises(
                errors.ConfigurationError, load_repos_conf, f.name)

        # default section isn't required as long as gentoo repo exists
        with NamedTemporaryFile() as f:
            f.write(textwrap.dedent('''\
                [foo]
                location = /var/gentoo/repos/foo
                [gentoo]
                location = /var/gentoo/repos/gentoo''').encode())
            f.flush()
            defaults, repos = load_repos_conf(f.name)
            self.assertEqual('gentoo', defaults['main-repo'])
            self.assertEqual(['foo', 'gentoo'], repos.keys())
Esempio n. 5
0
    def __init__(self, *args, **kwargs):
        TempDirMixin.__init__(self, *args, **kwargs)
        TestCase.__init__(self, *args, **kwargs)

        # default files
        self.make_globals = {}
        load_make_conf(
            self.make_globals, pjoin(const.CONFIG_PATH, 'make.globals'))

        self.global_repos_defaults, self.global_repos_conf = load_repos_conf(
            pjoin(const.CONFIG_PATH, 'repos.conf'))
Esempio n. 6
0
    def __init__(self, *args, **kwargs):
        TempDirMixin.__init__(self, *args, **kwargs)
        TestCase.__init__(self, *args, **kwargs)

        # default files
        self.make_globals = {}
        load_make_conf(self.make_globals,
                       pjoin(const.CONFIG_PATH, 'make.globals'))

        self.global_repos_defaults, self.global_repos_conf = load_repos_conf(
            pjoin(const.CONFIG_PATH, 'repos.conf'))
Esempio n. 7
0
    def test_load_repos_conf(self):
        self.assertIn('gentoo', self.global_repos_conf)

        # nonexistent file
        self.assertRaises(errors.ParsingError, load_repos_conf,
                          pjoin(self.dir, 'repos.conf'))

        # unreadable file
        with NamedTemporaryFile() as f:
            os.chmod(f.name, stat.S_IWUSR)
            self.assertRaises(errors.PermissionDeniedError, load_repos_conf,
                              f.name)

        # blank file
        with NamedTemporaryFile() as f:
            self.assertRaises(errors.ConfigurationError, load_repos_conf,
                              f.name)

        # garbage file
        with NamedTemporaryFile() as f:
            f.write(binascii.b2a_hex(os.urandom(10)))
            f.flush()
            self.assertRaises(errors.ConfigurationError, load_repos_conf,
                              f.name)

        # missing location parameter
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [foo]
                sync-uri = git://foo.git''').encode())
            f.flush()
            self.assertRaises(errors.ConfigurationError, load_repos_conf,
                              f.name)

        # bad priority value causes fallback to the default
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [foo]
                priority = foo
                location = /var/gentoo/repos/foo
                [gentoo]
                location = /var/gentoo/repos/gentoo''').encode())
            f.flush()
            defaults, repos = load_repos_conf(f.name)
            self.assertEqual(0, repos['foo']['priority'])

        # overriding defaults in the same file throws an exception from configparser
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [DEFAULT]
                main-repo = gentoo
                [DEFAULT]
                main-repo = foo

                [foo]
                priority = foo
                location = /var/gentoo/repos/foo
                [gentoo]
                location = /var/gentoo/repos/gentoo''').encode())
            f.flush()
            self.assertRaises(errors.ConfigurationError, load_repos_conf,
                              f.name)

        # undefined main repo with 'gentoo' missing
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [foo]
                location = /var/gentoo/repos/foo''').encode())
            f.flush()
            self.assertRaises(errors.ConfigurationError, load_repos_conf,
                              f.name)

        # default section isn't required as long as gentoo repo exists
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [foo]
                location = /var/gentoo/repos/foo
                [gentoo]
                location = /var/gentoo/repos/gentoo''').encode())
            f.flush()
            defaults, repos = load_repos_conf(f.name)
            self.assertEqual('gentoo', defaults['main-repo'])
            self.assertEqual(['foo', 'gentoo'], repos.keys())

        # TODO: check for logger output?
        # overriding defaults in the same file throws an exception from configparser
        with NamedTemporaryFile() as f:
            f.write(
                textwrap.dedent('''\
                [DEFAULT]
                main-repo = foo
                [foo]
                priority = 3
                location = /var/gentoo/repos/gentoo
                [foo]
                location = /var/gentoo/repos/foo''').encode())
            f.flush()
            self.assertRaises(errors.ConfigurationError, load_repos_conf,
                              f.name)