diff --git a/src/vorta/utils.py b/src/vorta/utils.py index 8a4176e0..e5f8d03f 100644 --- a/src/vorta/utils.py +++ b/src/vorta/utils.py @@ -1,13 +1,11 @@ import argparse import errno import getpass -import operator import os import platform import re import sys import unicodedata -from collections import defaultdict from datetime import datetime as dt from functools import reduce @@ -105,11 +103,11 @@ def nested_dict(): - https://stackoverflow.com/a/16724937/3983708 - https://stackoverflow.com/a/14692747/3983708 """ - return defaultdict(nested_dict) + return dict() def get_dict_from_list(dataDict, mapList): - return reduce(operator.getitem, mapList, dataDict) + return reduce(lambda d, k: d.setdefault(k, {}), mapList, dataDict) def choose_file_dialog(parent, title, want_folder=True): diff --git a/tests/borg_json_output/diff_archives_dict_issue_stderr.json b/tests/borg_json_output/diff_archives_dict_issue_stderr.json new file mode 100644 index 00000000..e69de29b diff --git a/tests/borg_json_output/diff_archives_dict_issue_stdout.json b/tests/borg_json_output/diff_archives_dict_issue_stdout.json new file mode 100644 index 00000000..9fbead1e --- /dev/null +++ b/tests/borg_json_output/diff_archives_dict_issue_stdout.json @@ -0,0 +1,7 @@ +added directory Users/manu/Downloads +added 122 B Users/manu/Downloads/.transifexrc +added 9.22 kB Users/manu/Downloads/12042021 ORDER COD NUMBER.doc +removed directory Users/manu/Downloads/test-diff/bar +removed 0 B Users/manu/Downloads/test-diff/bar/2.txt +removed directory Users/manu/Downloads/test-diff/foo +removed 0 B Users/manu/Downloads/test-diff/foo/1.txt diff --git a/tests/test_diff.py b/tests/test_diff.py index 349ccf0b..b8c93b8c 100644 --- a/tests/test_diff.py +++ b/tests/test_diff.py @@ -4,7 +4,9 @@ import vorta.utils -def test_archive_diff(qapp, qtbot, mocker, borg_json_output): +@pytest.mark.parametrize('json_mock_file,folder_root', [ + ('diff_archives', 'test'), ('diff_archives_dict_issue', 'Users')]) +def test_archive_diff(qapp, qtbot, mocker, borg_json_output, json_mock_file, folder_root): main = qapp.main_window tab = main.archiveTab main.tabWidget.setCurrentIndex(3) @@ -12,7 +14,7 @@ def test_archive_diff(qapp, qtbot, mocker, borg_json_output): tab.populate_from_profile() qtbot.waitUntil(lambda: tab.archiveTable.rowCount() == 2) - stdout, stderr = borg_json_output('diff_archives') + stdout, stderr = borg_json_output(json_mock_file) popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0) mocker.patch.object(vorta.borg.borg_thread, 'Popen', return_value=popen_result) @@ -24,7 +26,7 @@ def test_archive_diff(qapp, qtbot, mocker, borg_json_output): tab._window.diff_action() qtbot.waitUntil(lambda: hasattr(tab, '_resultwindow'), **pytest._wait_defaults) - assert tab._resultwindow.treeView.model().rootItem.childItems[0].data(0) == 'test' + assert tab._resultwindow.treeView.model().rootItem.childItems[0].data(0) == folder_root tab._resultwindow.treeView.model().rootItem.childItems[0].load_children() assert tab._resultwindow.archiveNameLabel_1.text() == 'test-archive'