def test_preprocessing():
    try:
        os.environ['FOO'] = 'abcdef'
        pp = proxy_to_partialplus(
            Proxy(callable=dict,
                  positionals=(),
                  keywords={'x': '${FOO}'},
                  yaml_src=None))
        p = evaluate(pp)
        assert p['x'] == 'abcdef'
        pp = proxy_to_partialplus(Proxy(callable=dict,
                                        positionals=(),
                                        keywords={'x': '${BAR}'},
                                        yaml_src=None),
                                  environ={'BAR': 'fedcba'})
        p = evaluate(pp)
        assert p['x'] == 'fedcba'
        pp = proxy_to_partialplus(Proxy(callable=dict,
                                        positionals=(),
                                        keywords={'x': '${FOO}'},
                                        yaml_src=None),
                                  environ={'FOO': 'ghijkl'})
        p = evaluate(pp)
        assert p['x'] == 'ghijkl'
    finally:
        del os.environ['FOO']
    # Test turning it off.
    pp = proxy_to_partialplus(Proxy(callable=dict,
                                    positionals=(),
                                    keywords={'x': '${BAZ}'},
                                    yaml_src=None),
                              preprocess_strings=False)
    p = evaluate(pp)
    assert p['x'] == '${BAZ}'
def test_preprocessing():
    try:
        os.environ['FOO'] = 'abcdef'
        pp = proxy_to_partialplus(Proxy(callable=dict, positionals=(),
                                        keywords={'x': '${FOO}'},
                                        yaml_src=None))
        p = evaluate(pp)
        assert p['x'] == 'abcdef'
        pp = proxy_to_partialplus(Proxy(callable=dict, positionals=(),
                                        keywords={'x': '${BAR}'},
                                        yaml_src=None),
                                  environ={'BAR': 'fedcba'})
        p = evaluate(pp)
        assert p['x'] == 'fedcba'
        pp = proxy_to_partialplus(Proxy(callable=dict, positionals=(),
                                        keywords={'x': '${FOO}'},
                                        yaml_src=None),
                                  environ={'FOO': 'ghijkl'})
        p = evaluate(pp)
        assert p['x'] == 'ghijkl'
    finally:
        del os.environ['FOO']
    # Test turning it off.
    pp = proxy_to_partialplus(Proxy(callable=dict, positionals=(),
                                    keywords={'x': '${BAZ}'},
                                    yaml_src=None), preprocess_strings=False)
    p = evaluate(pp)
    assert p['x'] == '${BAZ}'
def test_load():
    src = '!obj:searchspaces.load.tests.test_pylearn2_yaml.Foo {x: 5}\n'
    pp = load(src)
    p = evaluate(pp)
    assert p.yaml_src == src
    assert p.x == 5
    assert isinstance(p, Foo)
    src = "!obj:searchspaces.load.tests.test_pylearn2_yaml.Foo {x: '${FOO}'}\n"
    pp = load(src, environ={'FOO': 'abcdef'})
    p = evaluate(pp)
    assert p.x == 'abcdef'
def test_load():
    src = '!obj:searchspaces.load.tests.test_pylearn2_yaml.Foo {x: 5}\n'
    pp = load(src)
    p = evaluate(pp)
    assert p.yaml_src == src
    assert p.x == 5
    assert isinstance(p, Foo)
    src = "!obj:searchspaces.load.tests.test_pylearn2_yaml.Foo {x: '${FOO}'}\n"
    pp = load(src, environ={'FOO': 'abcdef'})
    p = evaluate(pp)
    assert p.x == 'abcdef'
def test_proxy_to_partialplus():
    # Use proxy_callback=None to test without YAML-appending.
    pp = proxy_to_partialplus(Proxy(callable=dict,
                                    positionals=(),
                                    keywords={'x': [5, 3, 2]},
                                    yaml_src=None),
                              proxy_callback=None)
    assert evaluate(pp) == {'x': [5, 3, 2]}
def test_proxy_to_partialplus_literal_callback():
    def baz(x):
        if isinstance(x, int):
            x *= 2
        return x

    # Use proxy_callback=None to test without YAML-appending.
    pp = proxy_to_partialplus(Proxy(callable=dict, positionals=(),
                                    keywords={'x': 5}, yaml_src=None),
                              proxy_callback=None, literal_callback=baz)
    assert evaluate(pp)['x'] == 10
def test_proxy_to_partialplus_literal_callback():
    def baz(x):
        if isinstance(x, int):
            x *= 2
        return x

    # Use proxy_callback=None to test without YAML-appending.
    pp = proxy_to_partialplus(Proxy(callable=dict,
                                    positionals=(),
                                    keywords={'x': 5},
                                    yaml_src=None),
                              proxy_callback=None,
                              literal_callback=baz)
    assert evaluate(pp)['x'] == 10
def test_append_yaml_callback():
    pfail = Proxy(callable=dict, positionals=(), keywords={'value': 5},
                  yaml_src="test_value_1")
    pobj = Proxy(callable=Foo, positionals=(), keywords={'x': 3},
                 yaml_src="test_value_2")
    raised = False
    try:
        test = append_yaml_callback(pfail, proxy_to_partialplus(pfail))
    except AttributeError:
        raised = True
    assert not raised
    test = evaluate(append_yaml_callback(pobj, proxy_to_partialplus(pobj)))
    assert hasattr(test, 'yaml_src')
    assert test.yaml_src == "test_value_2"
def test_load_path():
    src = '!obj:searchspaces.load.tests.test_pylearn2_yaml.Foo {x: 5}\n'
    try:
        fd, fn = tempfile.mkstemp()
        os.close(fd)
        with open(fn, 'w') as f:
            f.write(src)
        pp = load_path(fn)
        p = evaluate(pp)
        print p
        assert p.yaml_src == src
        assert p.x == 5
        assert isinstance(p, Foo)
    finally:
        os.remove(fn)
def test_load_path():
    src = '!obj:searchspaces.load.tests.test_pylearn2_yaml.Foo {x: 5}\n'
    try:
        fd, fn = tempfile.mkstemp()
        os.close(fd)
        with open(fn, 'w') as f:
            f.write(src)
        pp = load_path(fn)
        p = evaluate(pp)
        print p
        assert p.yaml_src == src
        assert p.x == 5
        assert isinstance(p, Foo)
    finally:
        os.remove(fn)
def test_append_yaml_callback():
    pfail = Proxy(callable=dict,
                  positionals=(),
                  keywords={'value': 5},
                  yaml_src="test_value_1")
    pobj = Proxy(callable=Foo,
                 positionals=(),
                 keywords={'x': 3},
                 yaml_src="test_value_2")
    raised = False
    try:
        test = append_yaml_callback(pfail, proxy_to_partialplus(pfail))
    except AttributeError:
        raised = True
    assert not raised
    test = evaluate(append_yaml_callback(pobj, proxy_to_partialplus(pobj)))
    assert hasattr(test, 'yaml_src')
    assert test.yaml_src == "test_value_2"
def test_do_not_recurse():
    proxy = Proxy(callable=do_not_recurse,
                  positionals=(),
                  keywords={'value': Proxy(None, None, None, None)},
                  yaml_src=None)
    assert isinstance(evaluate(proxy_to_partialplus(proxy)), Proxy)
def test_proxy_to_partialplus():
    # Use proxy_callback=None to test without YAML-appending.
    pp = proxy_to_partialplus(Proxy(callable=dict, positionals=(),
                                    keywords={'x': [5, 3, 2]}, yaml_src=None),
                              proxy_callback=None)
    assert evaluate(pp) == {'x': [5, 3, 2]}
def test_do_not_recurse():
    proxy = Proxy(callable=do_not_recurse, positionals=(),
                  keywords={'value': Proxy(None, None, None, None)},
                  yaml_src=None)
    assert isinstance(evaluate(proxy_to_partialplus(proxy)), Proxy)