File: test_json.py

package info (click to toggle)
borgmatic 2.0.11-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,752 kB
  • sloc: python: 58,506; sh: 150; makefile: 8; javascript: 5
file content (31 lines) | stat: -rw-r--r-- 1,078 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import pytest

from borgmatic.actions import json as module


def test_parse_json_loads_json_from_string():
    assert module.parse_json('{"repository": {"id": "foo"}}', label=None) == {
        'repository': {'id': 'foo', 'label': ''},
    }


def test_parse_json_skips_non_json_warnings_and_loads_subsequent_json():
    assert module.parse_json(
        '/non/existent/path: stat: [Errno 2] No such file or directory: /non/existent/path\n{"repository":\n{"id": "foo"}}',
        label=None,
    ) == {'repository': {'id': 'foo', 'label': ''}}


def test_parse_json_skips_with_invalid_json_raises():
    with pytest.raises(module.json.JSONDecodeError):
        module.parse_json('this is not valid JSON }', label=None)


def test_parse_json_injects_label_into_parsed_data():
    assert module.parse_json('{"repository": {"id": "foo"}}', label='bar') == {
        'repository': {'id': 'foo', 'label': 'bar'},
    }


def test_parse_json_injects_nothing_when_repository_missing():
    assert module.parse_json('{"stuff": {"id": "foo"}}', label='bar') == {'stuff': {'id': 'foo'}}