Ejemplo n.º 1
0
def test_failures_optional():
    datatype = {"foo": "int", "optional bar": "int"}
    good_value = {"foo": 5}
    bad_value = {"foo": 5, "bar": "bif"}

    assert failures(datatype, good_value) == []
    assert failures(datatype, bad_value) == ["bar: expected int, got str"]
Ejemplo n.º 2
0
def test_failures_object_nested():
    datatype = {'foo': {'bar': 'str'}}
    value = {'foo': {'bar': 5}}
    expected = ['foo.bar: expected str, got int']
    assert failures(datatype, value) == expected

    value = {'foo': {}}
    expected = ['foo: missing required property: "bar"']
    assert failures(datatype, value) == expected
Ejemplo n.º 3
0
def test_failures_object_nested():
    datatype = {"foo": {"bar": "str"}}
    value = {"foo": {"bar": 5}}
    expected = ["foo.bar: expected str, got int"]
    assert failures(datatype, value) == expected

    value = {"foo": {}}
    expected = ['foo: missing required property: "bar"']
    assert failures(datatype, value) == expected
Ejemplo n.º 4
0
def test_failures_optional():
    datatype = {
            'foo': 'int',
            'optional bar': 'int'
        }
    good_value = {'foo': 5}
    bad_value = {'foo': 5, 'bar': 'bif'}

    assert failures(datatype, good_value) == []
    assert failures(datatype, bad_value) == ['bar: expected int, got str']
Ejemplo n.º 5
0
def test_failures_multiple():
    datatype = {'foo': 'int', 'bar': 'int', 'bif': 'str'}
    value = {'foo': 'a', 'bar': 5, 'bif': 1.0}
    expected = set([
            'foo: expected int, got str',
            'bif: expected str, got float'
        ])
    assert set(failures(datatype, value)) == expected
Ejemplo n.º 6
0
        def wrapped_function(*args, **kwargs):
            for value in fn(*args, **kwargs):
                fails = failures(dfn, value)
                if fails:
                    if strict or _get_bad_values(fails):
                        raise BadReturnValueError(fails)
                    else:
                        logger.warning(fails)

                yield value
Ejemplo n.º 7
0
        def wrapped_function(*args, **kwargs):
            ret = fn(*args, **kwargs)

            # Check for failure and raise
            fails = failures(dfn, ret)
            if fails:
                if strict or _get_bad_values(fails):
                    raise BadReturnValueError(fails)
                else:
                    logger.warning(fails)

            # All is well, return as usual
            return ret
Ejemplo n.º 8
0
def test_failures_recursive():
    datatype = {
        "_type_": "named",
        "name": "person",
        "value": {"name": "str", "children": [{"_type_": "reference", "name": "person"}]},
    }

    good_value = {
        "name": "bob",
        "children": [
            {"name": "frank", "children": []},
            {"name": "jane", "children": [{"name": "alfred", "children": []}]},
        ],
    }
    assert failures(datatype, good_value) == []

    bad_value = {}
    assert failures(datatype, bad_value) == [
        'missing required property: "name"',
        'missing required property: "children"',
    ]

    bad_value2 = {"name": "fred", "children": [{"name": "jim"}]}
    assert failures(datatype, bad_value2) == ['children[0]: missing required property: "children"']
Ejemplo n.º 9
0
def test_failures_object_unexpected_property():
    datatype = {}
    value = {'foo': 'bar'}
    expected = ['unexpected property "foo"']
    assert failures(datatype, value) == expected
Ejemplo n.º 10
0
def test_failures_literal():
    datatype = {"_type_": "literal", "value": "foo"}
    assert failures(datatype, "bar") == ['expected literal value "foo", got "bar"']
Ejemplo n.º 11
0
def test_failures_object_arbitrary_key():
    datatype = {'_any_': 'int'}
    good_value = {'foo': 5, 'bar': 6, 'baz': 7}
    bad_balue = {'foo': 'five'}
    assert failures(datatype, good_value) == []
    assert failures(datatype, bad_balue) == ['foo: expected int, got str']
Ejemplo n.º 12
0
def test_failures_object_missing_property():
    expected = ['missing required property: "foo"']
    assert failures({'foo': 'int'}, {}) == expected
Ejemplo n.º 13
0
def test_failures_object_wrong_prop_type():
    expected = ['foo: expected int, got str']
    assert failures({'foo': 'int'}, {'foo': 'bar'}) == expected
Ejemplo n.º 14
0
def test_failures_multiple():
    datatype = {"foo": "int", "bar": "int", "bif": "str"}
    value = {"foo": "a", "bar": 5, "bif": 1.0}
    expected = set(["foo: expected int, got str", "bif: expected str, got float"])
    assert set(failures(datatype, value)) == expected
Ejemplo n.º 15
0
def test_failures_nullable():
    assert failures('nullable int', None) == []
    assert failures('int', None) == ['unexpected null for non-nullable type']
Ejemplo n.º 16
0
def test_failures_primitive():
    assert failures("int", "5") == ["expected int, got str"]
Ejemplo n.º 17
0
def test_failures_object_wrong_prop_type():
    expected = ["foo: expected int, got str"]
    assert failures({"foo": "int"}, {"foo": "bar"}) == expected
Ejemplo n.º 18
0
def test_failures_tuple():
    datatype = ['str', 'int']
    assert failures(datatype, ['foo', 5]) == []
Ejemplo n.º 19
0
def test_failures_tuple_failure():
    datatype = ['str', 'int']
    assert failures(datatype, ['foo']) == ['missing required value at index 1']
    assert failures(datatype, ['foo', 5, True]
            ) == ['unexpected value at index 2']
Ejemplo n.º 20
0
def test_failures_list_failure():
    datatype = ['str']
    assert failures(datatype, ['a', 'b', 3]) == ['[2]: expected str, got int']
Ejemplo n.º 21
0
def test_failures_list_failure():
    datatype = ["str"]
    assert failures(datatype, ["a", "b", 3]) == ["[2]: expected str, got int"]
Ejemplo n.º 22
0
def test_failures_list():
    datatype = ["str"]
    assert failures(datatype, ["foo", "bar", "baz"]) == []
Ejemplo n.º 23
0
def test_failures_object_bad_value():
    datatype = {}
    value = 5
    expected = ['expected dict, got int']
    assert failures(datatype, value) == expected
Ejemplo n.º 24
0
def test_failures_nullable():
    assert failures("nullable int", None) == []
    assert failures("int", None) == ["unexpected null for non-nullable type"]
Ejemplo n.º 25
0
def test_failures_object_defaultdict():
    datatype = {}
    value = defaultdict(int)
    expected = []
    assert failures(datatype, value) == expected
Ejemplo n.º 26
0
def test_failures_object_arbitrary_key():
    datatype = {"_any_": "int"}
    good_value = {"foo": 5, "bar": 6, "baz": 7}
    bad_balue = {"foo": "five"}
    assert failures(datatype, good_value) == []
    assert failures(datatype, bad_balue) == ["foo: expected int, got str"]
Ejemplo n.º 27
0
def test_failures_list():
    datatype = ['str']
    assert failures(datatype, ['foo', 'bar', 'baz']) == []
Ejemplo n.º 28
0
def test_failures_primitive():
    assert failures('int', 'foo') == ['expected int, got str']
Ejemplo n.º 29
0
def test_failures_unicode_is_str():
    assert failures('str', u'foo') == []
Ejemplo n.º 30
0
def test_failures_unicode_is_str():
    assert failures("str", u"foo") == []