Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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]}})
Beispiel #5
0
    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)
Beispiel #6
0
    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"}}})