From 16578d1ec5f12ce4cdde780860e4f198b89ac606 Mon Sep 17 00:00:00 2001 From: jakub-nt <175944085+jakub-nt@users.noreply.github.com> Date: Tue, 24 Jun 2025 18:21:48 +0200 Subject: [PATCH] Added more edge cases to utility functions unit tests Signed-off-by: jakub-nt <175944085+jakub-nt@users.noreply.github.com> --- tests/sample/sample_bad_syntax.json | 7 +++++++ tests/test_utils.py | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 tests/sample/sample_bad_syntax.json diff --git a/tests/sample/sample_bad_syntax.json b/tests/sample/sample_bad_syntax.json new file mode 100644 index 00000000..573ecbb1 --- /dev/null +++ b/tests/sample/sample_bad_syntax.json @@ -0,0 +1,7 @@ +{ + "a": 1, + "b": { + "c": "value", + "d": [2, "string" + +} diff --git a/tests/test_utils.py b/tests/test_utils.py index cc5bb6bd..4331788d 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,4 +1,8 @@ from collections import OrderedDict +import os + +import pytest + from cfbs.utils import ( are_paths_equal, canonify, @@ -71,6 +75,10 @@ def test_read_json(): assert read_json("tests/thisfiledoesntexist.json") is None assert read_json("tests/thisdirdoesntexist/file.json") is None + with pytest.raises(SystemExit) as exc_info: + read_json("tests/sample/sample_bad_syntax.json") + assert exc_info.value.code == 1 + def test_merge_json(): original = {"classes": {"services_autorun": ["any"]}} @@ -210,6 +218,14 @@ def test_deduplicate_list(): assert deduplicate_list(l) == [1, 2, 3, 4] + assert deduplicate_list([1, 1, 2, 3]) == [1, 2, 3] + assert deduplicate_list([1, 2, 3, 3]) == [1, 2, 3] + assert deduplicate_list([1, 2, 3]) == [1, 2, 3] + + assert deduplicate_list([]) == [] + assert deduplicate_list([1]) == [1] + assert deduplicate_list([1, 1, 1, 1, 1, 1, 1]) == [1] + def test_dict_sorted_by_key(): d = {"b": 1, "c": 3, "a": 2} @@ -218,6 +234,9 @@ def test_dict_sorted_by_key(): assert dict_sorted_by_key(d) == expected_dict + assert dict_sorted_by_key({}) == OrderedDict([]) + assert dict_sorted_by_key({"a": 1}) == OrderedDict([("a", 1)]) + def test_dict_diff(): A = {"A": "a", "B": "b", "C": "c"} @@ -253,6 +272,11 @@ def test_are_paths_equal(): assert are_paths_equal(path_a, path_b) + assert are_paths_equal(".", os.getcwd()) + + assert are_paths_equal("a", "b") == False + assert are_paths_equal("a", "") == False + def test_string_sha256(): s = "cfbs/masterfiles/"