Skip to content

Commit c2e432c

Browse files
authored
Merge pull request #2736 from pre-commit/node-tests
test node directly
2 parents 3c2ca11 + 909dd0e commit c2e432c

File tree

8 files changed

+41
-72
lines changed

8 files changed

+41
-72
lines changed

testing/resources/node_hooks_repo/.pre-commit-hooks.yaml

Lines changed: 0 additions & 5 deletions
This file was deleted.

testing/resources/node_hooks_repo/bin/main.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

testing/resources/node_hooks_repo/package.json

Lines changed: 0 additions & 5 deletions
This file was deleted.

testing/resources/node_versioned_hooks_repo/.pre-commit-hooks.yaml

Lines changed: 0 additions & 6 deletions
This file was deleted.

testing/resources/node_versioned_hooks_repo/bin/main.js

Lines changed: 0 additions & 4 deletions
This file was deleted.

testing/resources/node_versioned_hooks_repo/package.json

Lines changed: 0 additions & 5 deletions
This file was deleted.

tests/languages/node_test.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
from pre_commit import parse_shebang
1414
from pre_commit.languages import node
1515
from pre_commit.prefix import Prefix
16+
from pre_commit.store import _make_local_repo
1617
from pre_commit.util import cmd_output
18+
from testing.language_helpers import run_language
1719
from testing.util import xfailif_windows
1820

1921

@@ -109,3 +111,42 @@ def test_installs_without_links_outside_env(tmpdir):
109111

110112
with node.in_env(prefix, 'system'):
111113
assert cmd_output('foo')[1] == 'success!\n'
114+
115+
116+
def _make_hello_world(tmp_path):
117+
package_json = '''\
118+
{"name": "t", "version": "0.0.1", "bin": {"node-hello": "./bin/main.js"}}
119+
'''
120+
tmp_path.joinpath('package.json').write_text(package_json)
121+
bin_dir = tmp_path.joinpath('bin')
122+
bin_dir.mkdir()
123+
bin_dir.joinpath('main.js').write_text(
124+
'#!/usr/bin/env node\n'
125+
'console.log("Hello World");\n',
126+
)
127+
128+
129+
def test_node_hook_system(tmp_path):
130+
_make_hello_world(tmp_path)
131+
ret = run_language(tmp_path, node, 'node-hello')
132+
assert ret == (0, b'Hello World\n')
133+
134+
135+
def test_node_with_user_config_set(tmp_path):
136+
cfg = tmp_path.joinpath('cfg')
137+
cfg.write_text('cache=/dne\n')
138+
with envcontext.envcontext((('NPM_CONFIG_USERCONFIG', str(cfg)),)):
139+
test_node_hook_system(tmp_path)
140+
141+
142+
@pytest.mark.parametrize('version', (C.DEFAULT, '18.13.0'))
143+
def test_node_hook_versions(tmp_path, version):
144+
_make_hello_world(tmp_path)
145+
ret = run_language(tmp_path, node, 'node-hello', version=version)
146+
assert ret == (0, b'Hello World\n')
147+
148+
149+
def test_node_additional_deps(tmp_path):
150+
_make_local_repo(str(tmp_path))
151+
ret, out = run_language(tmp_path, node, 'npm ls -g', deps=('lodash',))
152+
assert b' lodash@' in out

tests/repository_test.py

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
from pre_commit.hook import Hook
1818
from pre_commit.languages import golang
1919
from pre_commit.languages import helpers
20-
from pre_commit.languages import node
2120
from pre_commit.languages import python
2221
from pre_commit.languages.all import languages
2322
from pre_commit.prefix import Prefix
@@ -193,38 +192,6 @@ def test_run_a_docker_image_hook(tempdir_factory, store, hook_id):
193192
)
194193

195194

196-
def test_run_a_node_hook(tempdir_factory, store):
197-
_test_hook_repo(
198-
tempdir_factory, store, 'node_hooks_repo',
199-
'foo', [os.devnull], b'Hello World\n',
200-
)
201-
202-
203-
def test_run_a_node_hook_default_version(tempdir_factory, store):
204-
# make sure that this continues to work for platforms where node is not
205-
# installed at the system
206-
with mock.patch.object(
207-
node,
208-
'get_default_version',
209-
return_value=C.DEFAULT,
210-
):
211-
test_run_a_node_hook(tempdir_factory, store)
212-
213-
214-
def test_run_versioned_node_hook(tempdir_factory, store):
215-
_test_hook_repo(
216-
tempdir_factory, store, 'node_versioned_hooks_repo',
217-
'versioned-node-hook', [os.devnull], b'v9.3.0\nHello World\n',
218-
)
219-
220-
221-
def test_node_hook_with_npm_userconfig_set(tempdir_factory, store, tmpdir):
222-
cfg = tmpdir.join('cfg')
223-
cfg.write('cache=/dne\n')
224-
with mock.patch.dict(os.environ, NPM_CONFIG_USERCONFIG=str(cfg)):
225-
test_run_a_node_hook(tempdir_factory, store)
226-
227-
228195
def test_system_hook_with_spaces(tempdir_factory, store):
229196
_test_hook_repo(
230197
tempdir_factory, store, 'system_hook_with_spaces_repo',
@@ -482,17 +449,6 @@ def test_repository_state_compatibility(tempdir_factory, store, v):
482449
assert _hook_installed(hook) is True
483450

484451

485-
def test_additional_node_dependencies_installed(tempdir_factory, store):
486-
path = make_repo(tempdir_factory, 'node_hooks_repo')
487-
config = make_config_from_repo(path)
488-
# Careful to choose a small package that's not depped by npm
489-
config['hooks'][0]['additional_dependencies'] = ['lodash']
490-
hook = _get_hook(config, store, 'foo')
491-
with node.in_env(hook.prefix, hook.language_version):
492-
output = cmd_output('npm', 'ls', '-g')[1]
493-
assert 'lodash' in output
494-
495-
496452
def test_additional_golang_dependencies_installed(
497453
tempdir_factory, store,
498454
):

0 commit comments

Comments
 (0)