def setUp(self): super(ProvPyComparatorTestCase, self).setUp() self.provpy = ProvPyComparator() self.file1 = None self.file2 = None self.config = {} self.config[ProvPyComparator.EXECUTABLE] = "python" script = os.path.join( os.path.dirname(os.path.abspath(inspect.getfile( inspect.currentframe()))), "prov_compare_dummy.py") self.config[ProvPyComparator.ARGUMENTS] = " ".join( [script, "-f", ProvPyComparator.FORMAT1, "-F", ProvPyComparator.FORMAT2, ProvPyComparator.FILE1, ProvPyComparator.FILE2]) self.config[ProvPyComparator.FORMATS] = [ standards.PROVX, standards.JSON]
class ProvPyComparatorTestCase(unittest.TestCase): def setUp(self): super(ProvPyComparatorTestCase, self).setUp() self.provpy = ProvPyComparator() self.file1 = None self.file2 = None self.config = {} self.config[ProvPyComparator.EXECUTABLE] = "python" script = os.path.join( os.path.dirname(os.path.abspath(inspect.getfile( inspect.currentframe()))), "prov_compare_dummy.py") self.config[ProvPyComparator.ARGUMENTS] = " ".join( [script, "-f", ProvPyComparator.FORMAT1, "-F", ProvPyComparator.FORMAT2, ProvPyComparator.FILE1, ProvPyComparator.FILE2]) self.config[ProvPyComparator.FORMATS] = [ standards.PROVX, standards.JSON] def tearDown(self): super(ProvPyComparatorTestCase, self).tearDown() for tmp in [self.file1, self.file2]: if tmp != None and os.path.isfile(tmp): os.remove(tmp) def test_init(self): self.assertEqual("", self.provpy.executable) self.assertEqual([], self.provpy.arguments) self.assertEqual([], self.provpy.formats) def test_configure(self): self.provpy.configure(self.config) self.assertEqual(self.config[ProvPyComparator.EXECUTABLE].split(), self.provpy.executable) self.assertEqual(self.config[ProvPyComparator.ARGUMENTS].split(), self.provpy.arguments) self.assertEqual(self.config[ProvPyComparator.FORMATS], self.provpy.formats) def test_configure_no_format1(self): self.config[ProvPyComparator.ARGUMENTS] = " ".join( ["prov_compare_dummy.py", "-F", ProvPyComparator.FORMAT2, ProvPyComparator.FILE1, ProvPyComparator.FILE2]) with self.assertRaises(ConfigError): self.provpy.configure(self.config) def test_configure_no_format2(self): self.config[ProvPyComparator.ARGUMENTS] = " ".join( ["prov_compare_dummy.py", "-f", ProvPyComparator.FORMAT1, ProvPyComparator.FILE1, ProvPyComparator.FILE2]) with self.assertRaises(ConfigError): self.provpy.configure(self.config) def test_configure_no_file1(self): self.config[ProvPyComparator.ARGUMENTS] = " ".join( ["prov_compare_dummy.py", "-f", ProvPyComparator.FORMAT1, "-F", ProvPyComparator.FORMAT2, ProvPyComparator.FILE2]) with self.assertRaises(ConfigError): self.provpy.configure(self.config) def test_configure_no_file2(self): self.config[ProvPyComparator.ARGUMENTS] = " ".join( ["prov_compare_dummy.py", "-f", ProvPyComparator.FORMAT1, "-F", ProvPyComparator.FORMAT2, ProvPyComparator.FILE1]) with self.assertRaises(ConfigError): self.provpy.configure(self.config) def test_compare(self): self.provpy.configure(self.config) (_, self.file1) = tempfile.mkstemp(suffix="." + standards.JSON) (_, self.file2) = tempfile.mkstemp(suffix="." + standards.JSON) with open(self.file1, 'a') as f1: f1.write("FILE") with open(self.file2, 'a') as f2: f2.write("FILE") self.assertTrue(self.provpy.compare(self.file1, self.file2)) def test_compare_non_canonical_files(self): self.provpy.configure(self.config) (_, self.file1) = tempfile.mkstemp(suffix="." + standards.PROVX) (_, self.file2) = tempfile.mkstemp(suffix="." + standards.PROVX) with open(self.file1, 'a') as f1: f1.write("FILE") with open(self.file2, 'a') as f2: f2.write("FILE") self.assertTrue(self.provpy.compare(self.file1, self.file2)) def test_compare_non_equivalent(self): self.provpy.configure(self.config) (_, self.file1) = tempfile.mkstemp(suffix="." + standards.JSON) (_, self.file2) = tempfile.mkstemp(suffix="." + standards.JSON) with open(self.file1, 'a') as f1: f1.write("FILE1") with open(self.file2, 'a') as f2: f2.write("FILE2") self.assertFalse(self.provpy.compare(self.file1, self.file2)) def test_compare_oserror(self): self.config[ProvPyComparator.EXECUTABLE] = "/nosuchexecutable" self.provpy.configure(self.config) (_, self.file1) = tempfile.mkstemp(suffix="." + standards.JSON) (_, self.file2) = tempfile.mkstemp(suffix="." + standards.JSON) with self.assertRaises(OSError): self.provpy.compare(self.file1, self.file2) def test_compare_missing_file1(self): self.provpy.configure(self.config) self.file1 = "nosuchfile." + standards.JSON (_, self.file2) = tempfile.mkstemp(suffix="." + standards.JSON) with self.assertRaises(ComparisonError): self.provpy.compare(self.file1, self.file2) def test_compare_missing_file2(self): self.provpy.configure(self.config) (_, self.file1) = tempfile.mkstemp(suffix="." + standards.JSON) self.file2 = "nosuchfile." + standards.JSON with self.assertRaises(ComparisonError): self.provpy.compare(self.file1, self.file2) def test_compare_invalid_format1(self): self.provpy.configure(self.config) (_, self.file1) = tempfile.mkstemp(suffix=".nosuchformat") (_, self.file2) = tempfile.mkstemp(suffix="." + standards.JSON) with self.assertRaises(ComparisonError): self.provpy.compare(self.file1, self.file2) def test_compare_invalid_format2(self): self.provpy.configure(self.config) (_, self.file1) = tempfile.mkstemp(suffix="." + standards.JSON) (_, self.file2) = tempfile.mkstemp(suffix=".nosuchformat") with self.assertRaises(ComparisonError): self.provpy.compare(self.file1, self.file2)