mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-19 17:14:43 +04:00
Install multi-hook repositories only once
This commit is contained in:
parent
fcdd638134
commit
6cde287a1e
3 changed files with 9 additions and 9 deletions
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
))
|
))
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue