class TestDiffHelper(TestCase, MktPaths): def setUp(self): src = self.packaged_app_path('signed.zip') self.helper = DiffHelper(make_file(1, src), make_file(2, src)) def tearDown(self): self.helper.cleanup() def test_files_not_extracted(self): eq_(self.helper.is_extracted(), False) def test_files_extracted(self): self.helper.extract() eq_(self.helper.is_extracted(), True) def test_get_files(self): eq_(self.helper.left.get_files(), self.helper.get_files()) def test_diffable(self): self.helper.extract() self.helper.select('index.html') assert self.helper.is_diffable() def test_diffable_one_missing(self): self.helper.extract() os.remove(os.path.join(self.helper.right.dest, 'index.html')) self.helper.select('index.html') assert self.helper.is_diffable() def test_diffable_allow_empty(self): self.helper.extract() self.assertRaises(AssertionError, self.helper.right.read_file) eq_(self.helper.right.read_file(allow_empty=True), '') def test_diffable_both_missing(self): self.helper.extract() self.helper.select('foo.js') assert not self.helper.is_diffable() def test_diffable_deleted_files(self): self.helper.extract() os.remove(os.path.join(self.helper.left.dest, 'index.html')) eq_('index.html' in self.helper.get_deleted_files(), True) def test_diffable_one_binary_same(self): self.helper.extract() self.helper.select('main.js') self.helper.left.selected['binary'] = True assert self.helper.is_binary() def test_diffable_one_binary_diff(self): self.helper.extract() self.change(self.helper.left.dest, 'asd') cache.clear() self.helper.select('main.js') self.helper.left.selected['binary'] = True assert self.helper.is_binary() def test_diffable_two_binary_diff(self): self.helper.extract() self.change(self.helper.left.dest, 'asd') self.change(self.helper.right.dest, 'asd123') cache.clear() self.helper.select('main.js') self.helper.left.selected['binary'] = True self.helper.right.selected['binary'] = True assert self.helper.is_binary() def test_diffable_one_directory(self): self.helper.extract() self.helper.select('main.js') self.helper.left.selected['directory'] = True assert not self.helper.is_diffable() assert self.helper.left.selected['msg'].startswith('This file') def test_diffable_parent(self): self.helper.extract() self.change(self.helper.left.dest, 'asd', filename='META-INF/ids.json') cache.clear() files = self.helper.get_files() eq_(files['META-INF/ids.json']['diff'], True) eq_(files['META-INF']['diff'], True) def change(self, file, text, filename='main.js'): path = os.path.join(file, filename) data = open(path, 'r').read() data += text open(path, 'w').write(data)
class TestDiffHelper(amo.tests.TestCase): def setUp(self): src = os.path.join(settings.ROOT, get_file('dictionary-test.xpi')) self.helper = DiffHelper(make_file(1, src), make_file(2, src)) def tearDown(self): self.helper.cleanup() def test_files_not_extracted(self): eq_(self.helper.is_extracted(), False) def test_files_extracted(self): self.helper.extract() eq_(self.helper.is_extracted(), True) def test_get_files(self): eq_(self.helper.left.get_files(), self.helper.get_files()) def test_diffable(self): self.helper.extract() self.helper.select('install.js') assert self.helper.is_diffable() def test_diffable_one_missing(self): self.helper.extract() os.remove(os.path.join(self.helper.right.dest, 'install.js')) self.helper.select('install.js') assert self.helper.is_diffable() def test_diffable_allow_empty(self): self.helper.extract() self.assertRaises(AssertionError, self.helper.right.read_file) eq_(self.helper.right.read_file(allow_empty=True), '') def test_diffable_both_missing(self): self.helper.extract() self.helper.select('foo.js') assert not self.helper.is_diffable() def test_diffable_deleted_files(self): self.helper.extract() os.remove(os.path.join(self.helper.left.dest, 'install.js')) eq_('install.js' in self.helper.get_deleted_files(), True) def test_diffable_one_binary_same(self): self.helper.extract() self.helper.select('install.js') self.helper.left.selected['binary'] = True assert self.helper.is_binary() def test_diffable_one_binary_diff(self): self.helper.extract() self.change(self.helper.left.dest, 'asd') cache.clear() self.helper.select('install.js') self.helper.left.selected['binary'] = True assert self.helper.is_binary() def test_diffable_two_binary_diff(self): self.helper.extract() self.change(self.helper.left.dest, 'asd') self.change(self.helper.right.dest, 'asd123') cache.clear() self.helper.select('install.js') self.helper.left.selected['binary'] = True self.helper.right.selected['binary'] = True assert self.helper.is_binary() def test_diffable_one_directory(self): self.helper.extract() self.helper.select('install.js') self.helper.left.selected['directory'] = True assert not self.helper.is_diffable() assert self.helper.left.selected['msg'].startswith('This file') def test_diffable_parent(self): self.helper.extract() self.change(self.helper.left.dest, 'asd', filename='__MACOSX/._dictionaries') cache.clear() files = self.helper.get_files() eq_(files['__MACOSX/._dictionaries']['diff'], True) eq_(files['__MACOSX']['diff'], True) def change(self, file, text, filename='install.js'): path = os.path.join(file, filename) data = open(path, 'r').read() data += text open(path, 'w').write(data)
class TestDiffHelper(TestCase, MktPaths): def setUp(self): src = self.packaged_app_path('signed.zip') if storage_is_remote(): copy_stored_file(src, src, src_storage=local_storage) self.helper = DiffHelper(make_file(1, src), make_file(2, src)) def tearDown(self): self.helper.cleanup() if storage_is_remote(): private_storage.delete(self.packaged_app_path('signed.zip')) def test_files_not_extracted(self): eq_(self.helper.is_extracted(), False) def test_files_extracted(self): self.helper.extract() eq_(self.helper.is_extracted(), True) def test_get_files(self): eq_(self.helper.left.get_files(), self.helper.get_files()) def test_diffable(self): self.helper.extract() self.helper.select('index.html') assert self.helper.is_diffable() def test_diffable_one_missing(self): self.helper.extract() storage.delete(os.path.join(self.helper.right.dest, 'index.html')) self.helper.select('index.html') assert self.helper.is_diffable() def test_diffable_allow_empty(self): self.helper.extract() self.assertRaises(AssertionError, self.helper.right.read_file) eq_(self.helper.right.read_file(allow_empty=True), '') def test_diffable_both_missing(self): self.helper.extract() self.helper.select('foo.js') assert not self.helper.is_diffable() def test_diffable_deleted_files(self): self.helper.extract() storage.delete(os.path.join(self.helper.left.dest, 'index.html')) eq_('index.html' in self.helper.get_deleted_files(), True) def test_diffable_one_binary_same(self): self.helper.extract() self.helper.select('main.js') self.helper.left.selected['binary'] = True assert self.helper.is_binary() def test_diffable_one_binary_diff(self): self.helper.extract() self.change(self.helper.left.dest, 'asd') cache.clear() self.helper.select('main.js') self.helper.left.selected['binary'] = True assert self.helper.is_binary() def test_diffable_two_binary_diff(self): self.helper.extract() self.change(self.helper.left.dest, 'asd') self.change(self.helper.right.dest, 'asd123') cache.clear() self.helper.select('main.js') self.helper.left.selected['binary'] = True self.helper.right.selected['binary'] = True assert self.helper.is_binary() def test_diffable_one_directory(self): self.helper.extract() self.helper.select('main.js') self.helper.left.selected['directory'] = True assert not self.helper.is_diffable() assert self.helper.left.selected['msg'].startswith('This file') def test_diffable_parent(self): self.helper.extract() self.change(self.helper.left.dest, 'asd', filename='META-INF/ids.json') cache.clear() files = self.helper.get_files() eq_(files['META-INF/ids.json']['diff'], True) eq_(files['META-INF']['diff'], True) def change(self, file, text, filename='main.js'): path = os.path.join(file, filename) data = storage.open(path, 'r').read() data += text with storage.open(path, 'w') as f: f.write(data)