def check_file(dirname):
        filename = os.path.join(dirname, DEFAULT_PROJECT_LOCK_FILENAME)
        assert os.path.exists(filename)
        lock_file = ProjectLockFile.load_for_directory(dirname)

        # we have the global enabled flag off; individual
        # env spec settings override that; foo has no setting.
        foo_lock_set = _get_lock_set(lock_file, 'foo')
        assert lock_file.get_value(['env_specs', 'foo', 'locked'],
                                   None) is None
        assert foo_lock_set.disabled
        bar_lock_set = _get_lock_set(lock_file, 'bar')
        assert bar_lock_set.disabled

        all_names = ['foo', 'bar']

        lock_set = CondaLockSet(
            {'all': ['something=3.0=0']},
            platforms=['linux-32', 'linux-64', 'osx-64', 'win-32', 'win-64'])
        lock_set.env_spec_hash = "hash-hash-hash"

        lock_file._set_lock_set('bar', lock_set, all_names=all_names)

        # "foo" should have been DISABLED since we had to
        # enable the global flag in order to enable "bar"
        foo_lock_set = _get_lock_set(lock_file, 'foo')
        assert lock_file.get_value(['env_specs', 'foo', 'locked']) is False
        assert foo_lock_set.disabled
        assert foo_lock_set.env_spec_hash is None

        bar_lock_set = _get_lock_set(lock_file, 'bar')
        assert bar_lock_set.enabled
        assert ('something=3.0=0',
                ) == bar_lock_set.package_specs_for_current_platform
        assert "hash-hash-hash" == bar_lock_set.env_spec_hash

        # and now we should enable "foo" when we set it to something
        lock_file._set_lock_set('foo', lock_set, all_names=all_names)
        foo_lock_set = _get_lock_set(lock_file, 'foo')
        assert foo_lock_set.enabled
        assert ('something=3.0=0',
                ) == foo_lock_set.package_specs_for_current_platform

        # be sure we can save
        lock_file.save()

        reloaded = ProjectLockFile.load_for_directory(dirname)

        assert ('something=3.0=0', ) == _get_lock_set(
            reloaded, 'bar').package_specs_for_current_platform
        assert ('something=3.0=0', ) == _get_lock_set(
            reloaded, 'foo').package_specs_for_current_platform

        # Check _set_lock_set_hash
        lock_file._set_lock_set_hash('bar', 'hash2.0')
        lock_file.save()

        reloaded = ProjectLockFile.load_for_directory(dirname)
        bar_lock_set = _get_lock_set(reloaded, 'bar')
        assert bar_lock_set.env_spec_hash == 'hash2.0'
def _get_lock_set(lock_file, env_spec_name):
    """Library-internal method."""
    # TODO no validation here, we'll do that by moving this
    # into project.py soon
    enabled = _get_locking_enabled(lock_file, env_spec_name)
    packages = lock_file.get_value(['env_specs', env_spec_name, 'packages'],
                                   {})
    platforms = lock_file.get_value(['env_specs', env_spec_name, 'platforms'],
                                    [])
    env_spec_hash = lock_file.get_value(
        ['env_specs', env_spec_name, 'env_spec_hash'], None)
    lock_set = CondaLockSet(packages, platforms, enabled=enabled)
    lock_set.env_spec_hash = env_spec_hash
    return lock_set