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())
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())
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())
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())
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'))
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'))
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)