diff --git a/deepdiff/colored_view.py b/deepdiff/colored_view.py index 2463dcb..5f6c623 100644 --- a/deepdiff/colored_view.py +++ b/deepdiff/colored_view.py @@ -109,9 +109,10 @@ def _colorize_json(self, obj: Any, path: str = 'root', indent: int = 0) -> str: return '{\n' + ',\n'.join(items) + f'\n{current_indent}' + '}' elif isinstance(obj, (list, tuple)): - if not obj: - return '[]' removed_map = self._get_path_removed(path) + if not obj and not removed_map: + return '[]' + for index in removed_map: self._colorize_skip_paths.add(f"{path}[{index}]") diff --git a/tests/test_colored_view.py b/tests/test_colored_view.py index 3c8c1a5..b2e8a61 100644 --- a/tests/test_colored_view.py +++ b/tests/test_colored_view.py @@ -134,6 +134,36 @@ def test_colored_view_list_additions(): assert result == expected +def test_colored_view_list_all_items_removed(): + """Test that all removed items are displayed when list becomes empty.""" + t1 = [2, 4] + t2 = [] + + diff = DeepDiff(t1, t2, view=COLORED_VIEW) + result = str(diff) + + expected = f'''[ + {RED}2{RESET}, + {RED}4{RESET} +]''' + assert result == expected + + +def test_colored_compact_view_list_all_items_removed(): + """Test that all removed items are displayed when list becomes empty with compact view.""" + t1 = [2, 4] + t2 = [] + + diff = DeepDiff(t1, t2, view=COLORED_COMPACT_VIEW) + result = str(diff) + + expected = f'''[ + {RED}2{RESET}, + {RED}4{RESET} +]''' + assert result == expected + + def test_colored_view_list_changes_deletions(): t1 = [1, 5, 7, 3, 6] t2 = [1, 2, 3, 4]