]> git.puffer.fish Git - mirror/frr.git/commitdiff
topotests: fix json_cmp wrong list handling
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Thu, 26 Jul 2018 19:34:15 +0000 (16:34 -0300)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 28 Nov 2018 01:22:14 +0000 (20:22 -0500)
Don't quit on the first match. While here add some more `json_cmp` tests
to make sure this doesn't happen again.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
tests/topotests/lib/test/test_json.py
tests/topotests/lib/topotest.py

index e39719450300c5b681e47c03ccefdf6021ff2f84..3927ba095d032714580c48bacf9b2055fa5b8fd5 100755 (executable)
@@ -329,5 +329,128 @@ def test_json_with_list_failure():
     assert json_cmp(dcomplete, dsub2) is not None
     assert json_cmp(dcomplete, dsub3) is not None
 
+
+def test_json_list_start_success():
+    "Test JSON encoded data that starts with a list that should succeed."
+
+    dcomplete = [
+        {
+            "id": 100,
+            "value": "abc",
+        },
+        {
+            "id": 200,
+            "value": "abcd",
+        },
+        {
+            "id": 300,
+            "value": "abcde",
+        },
+    ]
+
+    dsub1 = [
+        {
+            "id": 100,
+            "value": "abc",
+        }
+    ]
+
+    dsub2 = [
+        {
+            "id": 100,
+            "value": "abc",
+        },
+        {
+            "id": 200,
+            "value": "abcd",
+        }
+    ]
+
+    dsub3 = [
+        {
+            "id": 300,
+            "value": "abcde",
+        }
+    ]
+
+    dsub4 = [
+    ]
+
+    dsub5 = [
+        {
+            "id": 100,
+        }
+    ]
+
+    assert json_cmp(dcomplete, dsub1) is None
+    assert json_cmp(dcomplete, dsub2) is None
+    assert json_cmp(dcomplete, dsub3) is None
+    assert json_cmp(dcomplete, dsub4) is None
+    assert json_cmp(dcomplete, dsub5) is None
+
+
+def test_json_list_start_failure():
+    "Test JSON encoded data that starts with a list that should fail."
+
+    dcomplete = [
+        {
+            "id": 100,
+            "value": "abc"
+        },
+        {
+            "id": 200,
+            "value": "abcd"
+        },
+        {
+            "id": 300,
+            "value": "abcde"
+        },
+    ]
+
+    dsub1 = [
+        {
+            "id": 100,
+            "value": "abcd",
+        }
+    ]
+
+    dsub2 = [
+        {
+            "id": 100,
+            "value": "abc",
+        },
+        {
+            "id": 200,
+            "value": "abc",
+        }
+    ]
+
+    dsub3 = [
+        {
+            "id": 100,
+            "value": "abc",
+        },
+        {
+            "id": 350,
+            "value": "abcde",
+        }
+    ]
+
+    dsub4 = [
+        {
+            "value": "abcx",
+        },
+        {
+            "id": 300,
+            "value": "abcde",
+        }
+    ]
+
+    assert json_cmp(dcomplete, dsub1) is not None
+    assert json_cmp(dcomplete, dsub2) is not None
+    assert json_cmp(dcomplete, dsub3) is not None
+    assert json_cmp(dcomplete, dsub4) is not None
+
+
 if __name__ == '__main__':
     sys.exit(pytest.main())
index 7f66098fc746f11ace5782e6b792f07b7613e52c..1cbde825ac9059512e730e36f4cf1f360654c08b 100644 (file)
@@ -118,8 +118,6 @@ def _json_list_cmp(list1, list2, parent, result):
                 matched = True
                 break
 
-        if matched:
-            break
         if not matched:
             unmatched.append(expected)