Install multi-hook repositories only once

This commit is contained in:
Anthony Sottile 2018-10-23 10:17:21 -07:00
parent fcdd638134
commit 6cde287a1e
3 changed files with 9 additions and 9 deletions

View file

@ -1,11 +1,11 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import collections
import os.path import os.path
class Prefix(object): class Prefix(collections.namedtuple('Prefix', ('prefix_dir',))):
def __init__(self, prefix_dir): __slots__ = ()
self.prefix_dir = prefix_dir
def path(self, *parts): def path(self, *parts):
return os.path.normpath(os.path.join(self.prefix_dir, *parts)) return os.path.normpath(os.path.join(self.prefix_dir, *parts))

View file

@ -179,12 +179,12 @@ class Repository(object):
return Prefix(self.store.clone(repo, rev, deps)) return Prefix(self.store.clone(repo, rev, deps))
def _venvs(self): def _venvs(self):
ret = [] ret = set()
for _, hook in self.hooks: for _, hook in self.hooks:
language = hook['language'] language = hook['language']
version = hook['language_version'] version = hook['language_version']
deps = hook['additional_dependencies'] deps = tuple(hook['additional_dependencies'])
ret.append(( ret.add((
self._prefix_from_deps(language, deps), self._prefix_from_deps(language, deps),
language, version, deps, language, version, deps,
)) ))

View file

@ -466,7 +466,7 @@ def test_venvs(tempdir_factory, store):
config = make_config_from_repo(path) config = make_config_from_repo(path)
repo = Repository.create(config, store) repo = Repository.create(config, store)
venv, = repo._venvs() venv, = repo._venvs()
assert venv == (mock.ANY, 'python', python.get_default_version(), []) assert venv == (mock.ANY, 'python', python.get_default_version(), ())
def test_additional_dependencies(tempdir_factory, store): def test_additional_dependencies(tempdir_factory, store):
@ -474,8 +474,8 @@ def test_additional_dependencies(tempdir_factory, store):
config = make_config_from_repo(path) config = make_config_from_repo(path)
config['hooks'][0]['additional_dependencies'] = ['pep8'] config['hooks'][0]['additional_dependencies'] = ['pep8']
repo = Repository.create(config, store) repo = Repository.create(config, store)
venv, = repo._venvs() env, = repo._venvs()
assert venv == (mock.ANY, 'python', python.get_default_version(), ['pep8']) assert env == (mock.ANY, 'python', python.get_default_version(), ('pep8',))
def test_additional_dependencies_roll_forward(tempdir_factory, store): def test_additional_dependencies_roll_forward(tempdir_factory, store):