def test_01__parse__none(self): listfile = "/a/b/c/path.conf" config = init_config(listfile) line = "# this is a comment line to be ignored\n" collector = FilelistCollector(listfile, config) fos = collector._parse(line) self.assertEquals(fos, [])
def test_02__parse__single_virtual_file(self): listfile = "/a/b/c/path.conf" config = init_config(listfile) line = " %s,create=1,content=\"generated file\" \n" % listfile collector = FilelistCollector(listfile, config) fos = collector._parse(line) fos_ref = [Factory.create(listfile, False, create=1, content="generated file")] self.assertNotEquals(fos, []) self.assertEquals(fos, fos_ref)
def test_02_list__multi_generated_file(self): listfile = os.path.join(self.workdir, "file.list") listfile2 = os.path.join(self.workdir, "file2.list") config = init_config(listfile) line = "%s/file*.list\n" % self.workdir open(listfile, "w").write(line) open(listfile2, "w").write(line) collector = FilelistCollector(listfile, config) fos = collector.list(listfile) fos_ref = [Factory.create(listfile), Factory.create(listfile2)] self.assertEquals(sorted(fos), sorted(fos_ref))
def test_08_collect__single_real_file__ignore_owner_mod(self): listfile = path = os.path.join(self.workdir, "file.list") config = init_config(listfile) config.ignore_owner = True open(listfile, "w").write(path + "\n") collector = FilelistCollector(listfile, config) fos = collector.collect() fo_ref = Factory.create(path, False) self.assertEquals(fos[0].uid, 0) self.assertEquals(fos[0].gid, 0)
def test_06_collect__single_real_file__not_supported_type(self): path = random.choice( ["/dev/null", "/dev/zero", "/dev/random"] ) listfile = os.path.join(self.workdir, "file.list") config = init_config(listfile) open(listfile, "w").write(path + "\n") collector = FilelistCollector(listfile, config) fos = collector.collect() self.assertEquals(fos, [])
def test_03_list__multi_real_files(self): listfile = os.path.join(self.workdir, "file.list") config = init_config(listfile) open(listfile, "w").write("\n".join(PATHS)) collector = FilelistCollector(listfile, config) ur = not config.no_rpmdb fos = collector.list(listfile) fos_ref = sorted( Factory.create(p, use_rpmdb=ur) for p in PATHS_EXPANDED ) self.assertEquals(sorted(fos), fos_ref)
def test_04_collect__single_real_file__no_rpms_own(self): path = random.choice(SYSTEM_FILES_EXIST_AND_NO_RPMS_OWN) listfile = os.path.join(self.workdir, "file.list") config = init_config(listfile) open(listfile, "w").write(path + "\n") collector = FilelistCollector(listfile, config) fos = collector.collect() fo_ref = Factory.create(path, use_rpmdb=(not config.no_rpmdb)) self.assertEquals(fos[0].path, path) self.assertEquals(fos, [fo_ref])
def test_09_collect__single_real_file__rpmattr(self): path = random.choice(["/etc/hosts", "/etc/services"]) listfile = os.path.join(self.workdir, "file.list") config = init_config(listfile) config.driver = "autotools.single.rpm" open(listfile, "w").write(path + "\n") collector = FilelistCollector(listfile, config) fos = collector.collect() fo_ref = Factory.create(path, False) ## should differ as RpmConflictsFilter works. #self.assertEquals(fos, [fo_ref]) self.assertTrue("rpm_attr" in fos[0])
def test_07_collect__single_real_file__destdir_mod(self): listfile = path = os.path.join(self.workdir, "file.list") config = init_config(listfile) config.destdir = self.workdir open(listfile, "w").write(path + "\n") collector = FilelistCollector(listfile, config) fos = collector.collect() fo_ref = Factory.create(path, False) self.assertEquals( os.path.join(self.workdir, fos[0].path), fo_ref.path )
def test_10_collect__single_real_file__rpmconflicts(self): path = random.choice( ["/etc/hosts", "/etc/services", "/bin/sh"] ) listfile = os.path.join(self.workdir, "file.list") config = init_config(listfile) config.driver = "autotools.single.rpm" config.no_rpmdb = False open(listfile, "w").write(path + "\n") collector = FilelistCollector(listfile, config) fos = collector.collect() self.assertTrue(fos[0].install_path != fos[0].src) self.assertTrue("save_path" in fos[0])
def test_05_collect__single_real_file__no_read_access(self): if os.getuid() == 0: print >> sys.stderr, "You look root and cannot test this. Skipped" return path = random.choice( ["/etc/shadow", "/etc/securetty", "/etc/gshadow"] ) listfile = os.path.join(self.workdir, "file.list") config = init_config(listfile) open(listfile, "w").write(path + "\n") collector = FilelistCollector(listfile, config) fos = collector.collect() self.assertEquals(fos, [])
def test_04_collect__single_real_file_rpm_owns(self): """test_04_collect__single_real_file_rpm_owns: FIXME""" return path = random.choice( ["/etc/hosts", "/etc/services", "/etc/bashrc", "/etc/passwd"] ) listfile = os.path.join(self.workdir, "file.list") config = init_config(listfile) open(listfile, "w").write(path + "\n") collector = FilelistCollector(listfile, config) fos = collector.collect() fo_ref = Factory.create(path, use_rpmdb=(not config.no_rpmdb)) self.assertEquals(fos[0].path, path) self.assertEquals(fos, [fo_ref])
def test_15_collect__multi_real_files(self): """test_15_collect__multi_real_files: FIXME""" return # modifiers also needed to create reference data. listfile = os.path.join(self.workdir, "file.list") config = init_config(listfile) open(listfile, "w").write("\n".join(PATHS)) collector = FilelistCollector(listfile, config) fos = collector.collect() filters = [ Filters.UnsupportedTypesFilter(), Filters.NotExistFilter(), Filters.ReadAccessFilter(), ] fos_ref = sorted( Factory.create(p, False) for p in PATHS_EXPANDED ) fos_ref = [ f for f in fos_ref if not any(filter(f) for filter in filters) ] self.assertEquals(sorted(fos), fos_ref)