def test_content_modify(self): """check between time 0 and 1, just a content edit""" version0 = BlockVersion(self.block, 0) version1 = BlockVersion(self.block, 1) changes = compare_remote_versions(self.service, version0, version1) self.assertEqual(0, len(changes.deleted)) self.assertEqual(0, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(1, len(changes.modified)) diff = compute_diff(changes, resource_diff_function) self.assertEqual((None, "--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n" "-hello\n+hello2"), diff.modified["r1.h"])
def test_diff_text(self): base = {'f1': 'Hola que tal\nBien Gracias\n', 'f2': 'Hasta luego\n'} other = {'f1': 'Hola que tal\nBien, Bien\n', 'f3': 'Hasta luego lucas\n'} changes = compare(base, other) diff = compute_diff(changes, text_unified_diff) self.assertIn('-Hasta luego', diff.deleted['f2']) self.assertIn('+Hasta luego lucas', diff.created['f3']) self.assertIn('-Bien Gracias', diff.modified['f1']) self.assertIn('+Bien, Bien', diff.modified['f1'])
def test_content_modify(self): '''check between time 0 and 1, just a content edit''' version0 = BlockVersion(self.block, 0) version1 = BlockVersion(self.block, 1) changes = compare_remote_versions(self.service, version0, version1) self.assertEqual(0, len(changes.deleted)) self.assertEqual(0, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(1, len(changes.modified)) diff = compute_diff(changes, resource_diff_function) self.assertEqual((None, '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n' '-hello\n+hello2'), diff.modified['r1.h'])
def test_diff_text(self): base = {'f1': 'Hola que tal\nBien Gracias\n', 'f2': 'Hasta luego\n'} other = { 'f1': 'Hola que tal\nBien, Bien\n', 'f3': 'Hasta luego lucas\n' } changes = compare(base, other) diff = compute_diff(changes, text_unified_diff) self.assertIn('-Hasta luego', diff.deleted['f2']) self.assertIn('+Hasta luego lucas', diff.created['f3']) self.assertIn('-Bien Gracias', diff.modified['f1']) self.assertIn('+Bien, Bien', diff.modified['f1'])
def test_delete(self): """4 => 5 r2.h is deleted""" version4 = BlockVersion(self.block, 4) version5 = BlockVersion(self.block, 5) changes = compare_remote_versions(self.service, version4, version5) self.assertEqual(1, len(changes.deleted)) self.assertEqual(0, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(0, len(changes.modified)) diff = compute_diff(changes, resource_diff_function) self.assertEqual("--- base\n\n+++ other\n\n@@ -1 +0,0 @@\n\n-bye", diff.deleted["r2.h"].content) self.assertIsNotNone(diff.deleted["r2.h"].cell)
def test_cell_content_modify(self): """between time 0 and 2 there is content and biitype change""" version0 = BlockVersion(self.block, 0) version2 = BlockVersion(self.block, 2) changes = compare_remote_versions(self.service, version0, version2) self.assertEqual(0, len(changes.deleted)) self.assertEqual(0, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(1, len(changes.modified)) self.assertEqual(UNKNOWN, changes.modified["r1.h"].old.cell.type) self.assertEqual(CPP, changes.modified["r1.h"].new.cell.type) diff = compute_diff(changes, resource_diff_function) self.assertEqual("--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n" "-hello\n+hello2", diff.modified["r1.h"].content)
def test_delete(self): '''4 => 5 r2.h is deleted''' version4 = BlockVersion(self.block, 4) version5 = BlockVersion(self.block, 5) changes = compare_remote_versions(self.service, version4, version5) self.assertEqual(1, len(changes.deleted)) self.assertEqual(0, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(0, len(changes.modified)) diff = compute_diff(changes, resource_diff_function) self.assertEqual('--- base\n\n+++ other\n\n@@ -1 +0,0 @@\n\n-bye', diff.deleted['r2.h'].content) self.assertIsNotNone(diff.deleted['r2.h'].cell)
def test_resource_created(self): """ 3 => 4 cell creation""" version3 = BlockVersion(self.block, 3) version4 = BlockVersion(self.block, 4) changes = compare_remote_versions(self.service, version3, version4) self.assertEqual(0, len(changes.deleted)) self.assertEqual(1, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(0, len(changes.modified)) diff = compute_diff(changes, resource_diff_function) self.assertEqual("--- base\n\n+++ other\n\n@@ -0,0 +1 @@\n\n+bye", diff.created["r2.h"].content) # TODO: Implement and check diff of cell self.assertIsNotNone(diff.created["r2.h"].cell)
def test_resource_created(self): ''' 3 => 4 cell creation''' version3 = BlockVersion(self.block, 3) version4 = BlockVersion(self.block, 4) changes = compare_remote_versions(self.service, version3, version4) self.assertEqual(0, len(changes.deleted)) self.assertEqual(1, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(0, len(changes.modified)) diff = compute_diff(changes, resource_diff_function) self.assertEqual('--- base\n\n+++ other\n\n@@ -0,0 +1 @@\n\n+bye', diff.created['r2.h'].content) #TODO: Implement and check diff of cell self.assertIsNotNone(diff.created['r2.h'].cell)
def test_cell_content_modify(self): '''between time 0 and 2 there is content and biitype change''' version0 = BlockVersion(self.block, 0) version2 = BlockVersion(self.block, 2) changes = compare_remote_versions(self.service, version0, version2) self.assertEqual(0, len(changes.deleted)) self.assertEqual(0, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(1, len(changes.modified)) self.assertEqual(UNKNOWN, changes.modified['r1.h'].old.cell.type) self.assertEqual(CPP, changes.modified['r1.h'].new.cell.type) diff = compute_diff(changes, resource_diff_function) self.assertEqual( '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n' '-hello\n+hello2', diff.modified['r1.h'].content)
def test_rename(self): version5 = BlockVersion(self.block, 5) version6 = BlockVersion(self.block, 6) changes = compare_remote_versions(self.service, version5, version6) self.assertEqual(1, len(changes.deleted)) self.assertEqual(1, len(changes.created)) self.assertEqual(1, len(changes.renames)) self.assertEqual(0, len(changes.modified)) self.assertEqual('r3.h', changes.renames['r1.h']) diff = compute_diff(changes, resource_diff_function) self.assertEqual(0, len(diff.deleted)) self.assertEqual(0, len(diff.created)) self.assertEqual('', diff.modified['r1.h'].content) self.assertIsNotNone(diff.modified['r1.h'].cell) self.assertEqual('r3.h', diff.renames['r1.h'])
def test_cell_content_modify_single_step(self): """ 2=> 3 content modify and biitype change in single step""" version2 = BlockVersion(self.block, 2) version3 = BlockVersion(self.block, 3) changes = compare_remote_versions(self.service, version2, version3) self.assertEqual(0, len(changes.deleted)) self.assertEqual(0, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(1, len(changes.modified)) self.assertEqual(CPP, changes.modified["r1.h"].old.cell.type) self.assertEqual(UNKNOWN, changes.modified["r1.h"].new.cell.type) diff = compute_diff(changes, resource_diff_function) self.assertEqual("--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n" "-hello2\n+hello3", diff.modified["r1.h"].content) # TODO: Implement and check diff of cell self.assertIsNotNone(diff.modified["r1.h"].cell)
def test_rename_changes(self): version6 = BlockVersion(self.block, 6) version7 = BlockVersion(self.block, 7) changes = compare_remote_versions(self.service, version6, version7) self.assertEqual(1, len(changes.deleted)) self.assertEqual(1, len(changes.created)) self.assertEqual(1, len(changes.renames)) self.assertEqual(0, len(changes.modified)) self.assertEqual("r4.h", changes.renames["r3.h"]) diff = compute_diff(changes, resource_diff_function) self.assertEqual(0, len(diff.deleted)) self.assertEqual(0, len(diff.created)) self.assertEqual("--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n" "-hello3\n+hello4", diff.modified["r3.h"].content) self.assertIsNotNone(diff.modified["r3.h"].cell) self.assertEqual("r4.h", diff.renames["r3.h"])
def test_rename(self): version5 = BlockVersion(self.block, 5) version6 = BlockVersion(self.block, 6) changes = compare_remote_versions(self.service, version5, version6) self.assertEqual(1, len(changes.deleted)) self.assertEqual(1, len(changes.created)) self.assertEqual(1, len(changes.renames)) self.assertEqual(0, len(changes.modified)) self.assertEqual("r3.h", changes.renames["r1.h"]) diff = compute_diff(changes, resource_diff_function) self.assertEqual(0, len(diff.deleted)) self.assertEqual(0, len(diff.created)) self.assertEqual("", diff.modified["r1.h"].content) self.assertIsNotNone(diff.modified["r1.h"].cell) self.assertEqual("r3.h", diff.renames["r1.h"])
def test_modify_content_diff(self): r1 = SimpleCell(self.brl_block.block_name + 'r1.h') content = Content(id_=None, load=Blob('bye')) edition_resources = {'r1.h': Resource(r1, content)} changes = compare(self.last_version_resources, edition_resources) diff = compute_diff(changes, resource_diff_function) self.assertEqual(0, len(diff.deleted)) self.assertEqual(0, len(diff.created)) self.assertEqual(0, len(diff.renames)) self.assertEqual(1, len(diff.modified)) self.assertEqual('--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n-hello\n+bye', diff.modified['r1.h'].content) #print '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n-hello\n+bye' self.assertEqual(Resource(None, '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n-hello\n+bye'), diff.modified['r1.h'])
def test_cell_content_modify_single_step(self): ''' 2=> 3 content modify and biitype change in single step''' version2 = BlockVersion(self.block, 2) version3 = BlockVersion(self.block, 3) changes = compare_remote_versions(self.service, version2, version3) self.assertEqual(0, len(changes.deleted)) self.assertEqual(0, len(changes.created)) self.assertEqual(0, len(changes.renames)) self.assertEqual(1, len(changes.modified)) self.assertEqual(CPP, changes.modified['r1.h'].old.cell.type) self.assertEqual(UNKNOWN, changes.modified['r1.h'].new.cell.type) diff = compute_diff(changes, resource_diff_function) self.assertEqual( '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n' '-hello2\n+hello3', diff.modified['r1.h'].content) #TODO: Implement and check diff of cell self.assertIsNotNone(diff.modified['r1.h'].cell)
def diff(biiapi, block_holder=None, v1=None, v2=None): if v1 and v2: # comparison between two remotes changes = compare_remote_versions(biiapi, v1, v2) else: if not v1: v1 = block_holder.parent if v1.time == -1: changes = compare({}, block_holder.resources) else: other_block_holder = biiapi.get_block_holder(v1) # Filter parent modification other_block_holder.parent = v1 #other_block_holder.commit_config() changes = compare(other_block_holder.resources, block_holder.resources) changes.deduce_renames() from biicode.common.diffmerge.differ import compute_diff return compute_diff(changes, resource_diff_function)
def test_rename_changes(self): version6 = BlockVersion(self.block, 6) version7 = BlockVersion(self.block, 7) changes = compare_remote_versions(self.service, version6, version7) self.assertEqual(1, len(changes.deleted)) self.assertEqual(1, len(changes.created)) self.assertEqual(1, len(changes.renames)) self.assertEqual(0, len(changes.modified)) self.assertEqual('r4.h', changes.renames['r3.h']) diff = compute_diff(changes, resource_diff_function) self.assertEqual(0, len(diff.deleted)) self.assertEqual(0, len(diff.created)) self.assertEqual( '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n' '-hello3\n+hello4', diff.modified['r3.h'].content) self.assertIsNotNone(diff.modified['r3.h'].cell) self.assertEqual('r4.h', diff.renames['r3.h'])
def test_modify_content_diff(self): r1 = SimpleCell(self.brl_block.block_name + 'r1.h') content = Content(id_=None, load=Blob('bye')) edition_resources = {'r1.h': Resource(r1, content)} changes = compare(self.last_version_resources, edition_resources) diff = compute_diff(changes, resource_diff_function) self.assertEqual(0, len(diff.deleted)) self.assertEqual(0, len(diff.created)) self.assertEqual(0, len(diff.renames)) self.assertEqual(1, len(diff.modified)) self.assertEqual( '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n-hello\n+bye', diff.modified['r1.h'].content) #print '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n-hello\n+bye' self.assertEqual( Resource(None, '--- base\n\n+++ other\n\n@@ -1 +1 @@\n\n-hello\n+bye'), diff.modified['r1.h'])