From b2e7e7edaa93f838d46ca62817b0215d089b048a Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Thu, 5 Mar 2020 16:54:29 -0800 Subject: Recover coverage from subprocesses during unit tests (#15354) * Recover coverage from subprocesses during unit tests --- lib/spack/spack/cmd/test.py | 2 +- lib/spack/spack/test/cmd/test.py | 11 ++++++----- lib/spack/spack/test/llnl/util/log.py | 9 ++++++--- lib/spack/spack/test/pytest.ini | 10 ---------- pytest.ini | 10 ++++++++++ share/spack/qa/run-unit-tests | 8 ++------ 6 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 lib/spack/spack/test/pytest.ini create mode 100644 pytest.ini diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index f2ca8fc93b..8cbc0fbccf 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -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') diff --git a/lib/spack/spack/test/cmd/test.py b/lib/spack/spack/test/cmd/test.py index 9a64209cfa..a9ef735afe 100644 --- a/lib/spack/spack/test/cmd/test.py +++ b/lib/spack/spack/test/cmd/test.py @@ -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 diff --git a/lib/spack/spack/test/llnl/util/log.py b/lib/spack/spack/test/llnl/util/log.py index 1eae1ccf69..0c879c5a6e 100644 --- a/lib/spack/spack/test/llnl/util/log.py +++ b/lib/spack/spack/test/llnl/util/log.py @@ -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' diff --git a/lib/spack/spack/test/pytest.ini b/lib/spack/spack/test/pytest.ini deleted file mode 100644 index 59839c0005..0000000000 --- a/lib/spack/spack/test/pytest.ini +++ /dev/null @@ -1,10 +0,0 @@ -# content of pytest.ini -[pytest] -addopts = --durations=20 -ra -testpaths = . -python_files = *.py -markers = - db: tests that require creating a DB - network: tests that require access to the network - maybeslow: tests that may be slow (e.g. access a lot the filesystem, etc.) - regression: tests that fix a reported bug diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000000..baf163ef0b --- /dev/null +++ b/pytest.ini @@ -0,0 +1,10 @@ +# content of pytest.ini +[pytest] +addopts = --durations=20 -ra +testpaths = lib/spack/spack/test +python_files = *.py +markers = + db: tests that require creating a DB + network: tests that require access to the network + maybeslow: tests that may be slow (e.g. access a lot the filesystem, etc.) + regression: tests that fix a reported bug diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index 52748dacdf..01f564e5e1 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -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 -- cgit v1.2.3-70-g09d2