def test_with_target_path(self): r1, r2, r3, r4 = 1, 2, 3, 4 d1 = {"A": {"B": {"C": 1, "D": [2, 3]}}} d2 = {"A": {"B": {"C": 2, "D": [2, 3]}}} d3 = {"A": {"B": {"D": [2, 3, 5]}}} d4 = {"A": {"B": {"D": [2, 3, 5], "E": 1}}} td1 = TraceableDict(d1) td1.commit(revision=r1) td1 = td1 | d2 td1.commit(revision=r2) td1 = td1 | d3 td1.commit(revision=r3) td1 = td1 | d4 td1.commit(revision=r4) diff = td1.diff(revision=1, path=('A', 'B')) self.assertFalse(diff) diff = td1.diff(revision=2, path=('A', 'B')) self.assertEquals(diff, {"B": {"C": "---1 +++2", "D": [2, 3]}}) diff = td1.diff(revision=3, path=('A', 'B', 'C')) self.assertEquals(diff, {"C": "---2"}) diff = td1.diff(revision=4, path=('A', 'B')) self.assertEquals(diff, {"B": {"D": [2, 3, 5], "E": "+++1"}}) diff = td1.diff(revision=4, path=('A', 'B', 'E')) self.assertFalse(diff)
def test_log_no_revisions(self): d1 = {"A": {"B": {"C": 1, "D": [2, 3]}}} td1 = TraceableDict(d1) diff = td1.diff() self.assertFalse(diff) diff = td1.diff(revision=1) self.assertFalse(diff)
def test_diff_invalid_revision(self): d1 = {"A": {"B": {"C": 1, "D": [2, 3]}}} td1 = TraceableDict(d1) td1.commit(revision=1) unknown_revision = 2 with self.assertRaises(ValueError) as err: td1.diff(revision=unknown_revision) self.assertTrue('unknown revision %s' % unknown_revision in err.exception) with self.assertRaises(ValueError) as err: td1.diff(revision=unknown_revision, path=('A', 'B')) self.assertTrue('unknown revision %s' % unknown_revision in err.exception)
def test_diff_working_tree(self): d1 = {"A": {"B": {"C": 1, "D": [2, 3]}}} d2 = {"A": {"B": {"C": 2, "D": [2, 3]}}} td1 = TraceableDict(d1) td1.commit(revision=1) diff = td1.diff() self.assertFalse(diff) td1 = td1 | d2 diff = td1.diff() self.assertEquals(diff, {"A": {"B": {"C": "---1 +++2", "D": [2, 3]}}}) diff = td1.diff(path=("A", "B")) self.assertEquals(diff, {"B": {"C": "---1 +++2", "D": [2, 3]}})
def test_diff_base_revision(self): d1 = {"A": {"B": {"C": 1, "D": [2, 3]}}} td1 = TraceableDict(d1) td1.commit(revision=1) diff = td1.diff(revision=1) self.assertFalse(diff)
def test_basic(self): r1, r2, r3, r4 = 1, 2, 3, 4 d1 = {"A": {"B": {"C": 1, "D": [2, 3]}}} d2 = {"A": {"B": {"C": 2, "D": [2, 3]}}} d3 = {"A": {"B": {"D": [2, 3, 5]}}} d4 = {"A": {"B": {"D": [2, 3, 5], "E": 1}}} td1 = TraceableDict(d1) td1.commit(revision=r1) td1 = td1 | d2 td1.commit(revision=r2) td1 = td1 | d3 td1.commit(revision=r3) td1 = td1 | d4 td1.commit(revision=r4) diff = td1.diff(revision=1) self.assertFalse(diff) diff = td1.diff(revision=2) self.assertEquals(diff, {"A": {"B": {"C": "---1 +++2", "D": [2, 3]}}}) diff = td1.diff(revision=3) self.assertEquals( diff, {"A": { "B": { "C": "---2", "D": "---[2, 3] +++[2, 3, 5]" } }}) diff = td1.diff(revision=4) self.assertEquals(diff, {"A": {"B": {"D": [2, 3, 5], "E": "+++1"}}})