Example #1
0
def test_keys():
    pkg = Package()
    assert not pkg.keys()

    pkg.set('asdf', LOCAL_MANIFEST)
    assert set(pkg.keys()) == {'asdf'}

    pkg.set('jkl;', REMOTE_MANIFEST)
    assert set(pkg.keys()) == {'asdf', 'jkl;'}

    pkg.delete('asdf')
    assert set(pkg.keys()) == {'jkl;'}
Example #2
0
def test_brackets():
    pkg = Package()
    pkg.set('asdf/jkl', LOCAL_MANIFEST)
    pkg.set('asdf/qwer', LOCAL_MANIFEST)
    pkg.set('qwer/asdf', LOCAL_MANIFEST)
    assert set(pkg.keys()) == {'asdf', 'qwer'}

    pkg2 = pkg['asdf']
    assert set(pkg2.keys()) == {'jkl', 'qwer'}

    assert pkg['asdf']['qwer'].get() == pathlib.Path(LOCAL_MANIFEST).as_uri()

    assert pkg['asdf']['qwer'] == pkg['asdf/qwer'] == pkg[('asdf', 'qwer')]
    assert pkg[[]] == pkg

    pkg = (Package().set(
        'foo', os.path.join(os.path.dirname(__file__), 'data', 'foo.txt'),
        {'foo': 'blah'}))
    pkg['foo'].meta['target'] = 'unicode'

    pkg.build()

    assert pkg['foo'].deserialize() == '123\n'
    assert pkg['foo']() == '123\n'

    with pytest.raises(KeyError):
        pkg['baz']

    with pytest.raises(TypeError):
        pkg[b'asdf']

    with pytest.raises(TypeError):
        pkg[0]
Example #3
0
    def test_brackets(self):
        pkg = Package()
        pkg.set('asdf/jkl', LOCAL_MANIFEST)
        pkg.set('asdf/qwer', LOCAL_MANIFEST)
        pkg.set('qwer/asdf', LOCAL_MANIFEST)
        assert set(pkg.keys()) == {'asdf', 'qwer'}

        pkg2 = pkg['asdf']
        assert set(pkg2.keys()) == {'jkl', 'qwer'}

        assert pkg['asdf']['qwer'].get() == LOCAL_MANIFEST.as_uri()

        assert pkg['asdf']['qwer'] == pkg['asdf/qwer'] == pkg[('asdf', 'qwer')]
        assert pkg[[]] == pkg

        pkg = (Package().set('foo', DATA_DIR / 'foo.txt', {'foo': 'blah'}))
        pkg['foo'].meta['target'] = 'unicode'

        pkg.build()

        assert pkg['foo'].deserialize() == '123\n'
        assert pkg['foo']() == '123\n'

        with pytest.raises(KeyError):
            pkg['baz']

        with pytest.raises(TypeError):
            pkg[b'asdf']

        with pytest.raises(TypeError):
            pkg[0]
Example #4
0
def test_local_set_dir(tmpdir):
    """ Verify building a package from a local directory. """
    pkg = Package()

    # Create some nested example files that contain their names.
    foodir = pathlib.Path("foo_dir")
    bazdir = pathlib.Path(foodir, "baz_dir")
    bazdir.mkdir(parents=True, exist_ok=True)
    with open('bar', 'w') as fd:
        fd.write(fd.name)
    with open('foo', 'w') as fd:
        fd.write(fd.name)
    with open(bazdir / 'baz', 'w') as fd:
        fd.write(fd.name)
    with open(foodir / 'bar', 'w') as fd:
        fd.write(fd.name)

    pkg = pkg.set_dir("/", ".")

    assert pathlib.Path(
        'foo').resolve().as_uri() == pkg['foo'].physical_keys[0]
    assert pathlib.Path(
        'bar').resolve().as_uri() == pkg['bar'].physical_keys[0]
    assert (bazdir / 'baz'
            ).resolve().as_uri() == pkg['foo_dir/baz_dir/baz'].physical_keys[0]
    assert (foodir /
            'bar').resolve().as_uri() == pkg['foo_dir/bar'].physical_keys[0]

    pkg = Package()
    pkg = pkg.set_dir('/', 'foo_dir/baz_dir/')
    # todo nested at set_dir site or relative to set_dir path.
    assert (bazdir / 'baz').resolve().as_uri() == pkg['baz'].physical_keys[0]

    pkg = Package()
    pkg = pkg.set_dir('my_keys', 'foo_dir/baz_dir/')
    # todo nested at set_dir site or relative to set_dir path.
    assert (bazdir /
            'baz').resolve().as_uri() == pkg['my_keys/baz'].physical_keys[0]

    # Verify ignoring files in the presence of a dot-quiltignore
    with open('.quiltignore', 'w') as fd:
        fd.write('foo\n')
        fd.write('bar')

    pkg = Package()
    pkg = pkg.set_dir("/", ".")
    assert 'foo_dir' in pkg.keys()
    assert 'foo' not in pkg.keys() and 'bar' not in pkg.keys()

    with open('.quiltignore', 'w') as fd:
        fd.write('foo_dir')

    pkg = Package()
    pkg = pkg.set_dir("/", ".")
    assert 'foo_dir' not in pkg.keys()

    with open('.quiltignore', 'w') as fd:
        fd.write('foo_dir\n')
        fd.write('foo_dir/baz_dir')

    pkg = Package()
    pkg = pkg.set_dir("/", ".")
    assert 'foo_dir/baz_dir' not in pkg.keys() and 'foo_dir' not in pkg.keys()