Recover coverage from subprocesses during unit tests (#15354)

* Recover coverage from subprocesses during unit tests
This commit is contained in:
Tamara Dahlgren 2020-03-05 16:54:29 -08:00 committed by Todd Gamblin
parent fa0a5e44aa
commit 733f9f8cfa
5 changed files with 16 additions and 16 deletions

View file

@ -154,7 +154,7 @@ def test(parser, args, unknown_args):
# The default is to test the core of Spack. If the option `--extension`
# has been used, then test that extension.
pytest_root = spack.paths.test_path
pytest_root = spack.paths.spack_root
if args.extension:
target = args.extension
extensions = spack.config.get('config:extensions')

View file

@ -6,6 +6,7 @@
from spack.main import SpackCommand
spack_test = SpackCommand('test')
cmd_test_py = 'lib/spack/spack/test/cmd/test.py'
def test_list():
@ -16,13 +17,13 @@ def test_list():
def test_list_with_pytest_arg():
output = spack_test('--list', 'cmd/test.py')
assert output.strip() == "cmd/test.py"
output = spack_test('--list', cmd_test_py)
assert output.strip() == cmd_test_py
def test_list_with_keywords():
output = spack_test('--list', '-k', 'cmd/test.py')
assert output.strip() == "cmd/test.py"
assert output.strip() == cmd_test_py
def test_list_long(capsys):
@ -44,7 +45,7 @@ def test_list_long(capsys):
def test_list_long_with_pytest_arg(capsys):
with capsys.disabled():
output = spack_test('--list-long', 'cmd/test.py')
output = spack_test('--list-long', cmd_test_py)
assert "test.py::\n" in output
assert "test_list" in output
assert "test_list_with_pytest_arg" in output
@ -74,7 +75,7 @@ def test_list_names():
def test_list_names_with_pytest_arg():
output = spack_test('--list-names', 'cmd/test.py')
output = spack_test('--list-names', cmd_test_py)
assert "test.py::test_list\n" in output
assert "test.py::test_list_with_pytest_arg\n" in output
assert "test.py::test_list_with_keywords\n" in output

View file

@ -32,7 +32,8 @@ def test_log_python_output_with_fd_stream(capfd, tmpdir):
with open('foo.txt') as f:
assert f.read() == 'logged\n'
assert capfd.readouterr() == ('', '')
# Coverage is cluttering stderr during tests
assert capfd.readouterr()[0] == ''
def test_log_python_output_and_echo_output(capfd, tmpdir):
@ -42,7 +43,8 @@ def test_log_python_output_and_echo_output(capfd, tmpdir):
print('echo')
print('logged')
assert capfd.readouterr() == ('echo\n', '')
# Coverage is cluttering stderr during tests
assert capfd.readouterr()[0] == 'echo\n'
with open('foo.txt') as f:
assert f.read() == 'echo\nlogged\n'
@ -75,7 +77,8 @@ def test_log_subproc_and_echo_output(capfd, tmpdir):
echo('echo')
print('logged')
assert capfd.readouterr() == ('echo\n', '')
# Coverage is cluttering stderr during tests
assert capfd.readouterr()[0] == 'echo\n'
with open('foo.txt') as f:
assert f.read() == 'logged\n'

View file

@ -1,7 +1,7 @@
# content of pytest.ini
[pytest]
addopts = --durations=20 -ra
testpaths = .
testpaths = lib/spack/spack/test
python_files = *.py
markers =
db: tests that require creating a DB

View file

@ -37,16 +37,12 @@ bin/spack -h
bin/spack help -a
# Profile and print top 20 lines for a simple call to spack spec
bin/spack -p --lines 20 spec mpileaks%gcc ^elfutils@0.170
spack -p --lines 20 spec mpileaks%gcc ^elfutils@0.170
#-----------------------------------------------------------
# Run unit tests with code coverage
#-----------------------------------------------------------
extra_args=""
if [[ -n "$@" ]]; then
extra_args="-k $@"
fi
$coverage_run bin/spack test -x --verbose "$extra_args"
$coverage_run $(which spack) test -x --verbose
#-----------------------------------------------------------
# Run tests for setup-env.sh