def _enable_repos(self): # 3. run('example.Testrepo', 'enable') with patch.object(logging.Logger, 'info') as mocklog: self.assertEqual( "test", manager.run([self.modulename + ".Testrepo", "enable"])) # 4. verify that "alias foo enabled" is logged log_arg = mocklog.call_args[0][0] self.assertEqual( "Enabled class %s.Testrepo (alias 'test')" % self.modulename, log_arg) # 5. verify that ferenda.ini has changed cfg = configparser.ConfigParser() cfg.read(["ferenda.ini"]) self.assertEqual(cfg.get("test", "class"), self.modulename + ".Testrepo") # (same, with 'example.Testrepo2') self.assertEqual( "test2", manager.run([self.modulename + ".Testrepo2", "enable"])) cfg = configparser.ConfigParser() cfg.read(["ferenda.ini"]) self.assertEqual(cfg.get("test2", "class"), self.modulename + ".Testrepo2") with patch.object(logging.Logger, 'error') as mocklog: # 6. run('example.Nonexistent', 'enable') -- the ImportError must # be caught and an error printed. manager.run([self.modulename + ".Nonexistent", "enable"]) # 7. verify that a suitable error messsage is logged self.assertEqual( "No class named '%s.Nonexistent'" % self.modulename, mocklog.call_args[0][0])
def _enable_repos(self): # 3. run('example.Testrepo', 'enable') with patch.object(logging.Logger, 'info') as mocklog: self.assertEqual("test", manager.run([self.modulename+".Testrepo", "enable"])) # 4. verify that "alias foo enabled" is logged log_arg = mocklog.call_args[0][0] self.assertEqual("Enabled class %s.Testrepo (alias 'test')" % self.modulename, log_arg) # 5. verify that ferenda.ini has changed cfg = configparser.ConfigParser() cfg.read(["ferenda.ini"]) self.assertEqual(cfg.get("test","class"), self.modulename+".Testrepo") # (same, with 'example.Testrepo2') self.assertEqual("test2", manager.run([self.modulename+".Testrepo2", "enable"])) cfg = configparser.ConfigParser() cfg.read(["ferenda.ini"]) self.assertEqual(cfg.get("test2","class"), self.modulename+".Testrepo2") with patch.object(logging.Logger, 'error') as mocklog: # 6. run('example.Nonexistent', 'enable') -- the ImportError must # be caught and an error printed. manager.run([self.modulename+".Nonexistent", "enable"]) # 7. verify that a suitable error messsage is logged self.assertEqual("No class named '%s.Nonexistent'" % self.modulename, mocklog.call_args[0][0])
def distill_test(self, downloaded_file, rdf_file, docroot): try: prefixlen = len(docroot + "/downloaded/") if self.repo.storage_policy == "dir": suffixlen = len(downloaded_file.split(os.sep)[-1]) + 1 else: suffixlen = len(os.path.splitext(downloaded_file)[1]) pathfrag = downloaded_file[prefixlen:-suffixlen] basefile = self.repo.store.pathfrag_to_basefile(pathfrag) except: basefile = self.filename_to_basefile(downloaded_file) with patch.object(self.repo.documentstore_class, 'downloaded_path', return_value=downloaded_file): # self.repo.config.fsmdebug = True self.repo.parse(basefile) if 'FERENDA_SET_TESTFILES' in os.environ: print("Overwriting %r with result of parse (%r)" % (rdf_file, basefile)) g = rdflib.Graph() g.parse(data=util.readfile(self.repo.store.distilled_path(basefile))) util.robust_rename(rdf_file, rdf_file + "~") with open(rdf_file, "wb") as fp: fp.write(g.serialize(format="turtle")) return self.assertEqualGraphs(rdf_file, self.repo.store.distilled_path(basefile), exact=False)
def parse_test(self, downloaded_file, xhtml_file, docroot): # patch method so we control where the downloaded doc is # loaded from. basefile = self.filename_to_basefile(downloaded_file) # with patch('ferenda.DocumentStore.downloaded_path', # return_value=downloaded_file): with patch.object(self.repo.documentstore_class, 'downloaded_path', return_value=downloaded_file): self.repo.parse(basefile) if 'FERENDA_SET_TESTFILES' in os.environ: print("Overwriting %r with result of parse (%r)" % (xhtml_file, basefile)) util.robust_rename(xhtml_file, xhtml_file + "~") shutil.copy2(self.repo.store.parsed_path(basefile), xhtml_file) return self.assertEqualXML(util.readfile(xhtml_file), util.readfile(self.repo.store.parsed_path(basefile)))