Speed-up CI by reorganizing tests (#22247)
* unit tests: mark slow tests as "maybeslow" This commit also removes the "network" marker and marks every "network" test as "maybeslow". Tests marked as db are maintained, but they're not slow anymore. * GA: require style tests to pass before running unit-tests * GA: make MacOS unit tests fail fast * GA: move all unit tests into the same workflow, run style tests as a prerequisite All the unit tests have been moved into the same workflow so that a single run of the dorny/paths-filter action can be used to ask for coverage based on the files that have been changed in a PR. The basic idea is that for PRs that introduce only changes to packages coverage is not necessary, this resulting in a faster execution of the tests. Also, for package only PRs slow unit tests are skipped. Finally, MacOS and linux unit tests are now conditional on style tests passing meaning that e.g. we won't waste a MacOS worker if we know that the PR has flake8 issues. * Addressed review comments * Skipping slow tests on MacOS for package only recipes * QA: make tests on changes correct before merging
This commit is contained in:

committed by
GitHub

parent
d36de79ba0
commit
b304b4bdb0
@@ -114,6 +114,7 @@ def test_get_concrete_specs(config, mock_packages):
|
||||
assert('archive-files' in spec_map)
|
||||
|
||||
|
||||
@pytest.mark.maybeslow
|
||||
def test_register_cdash_build():
|
||||
build_name = 'Some pkg'
|
||||
base_url = 'http://cdash.fake.org'
|
||||
|
@@ -38,6 +38,9 @@
|
||||
git = exe.which('git', required=True)
|
||||
|
||||
|
||||
pytestmark = pytest.mark.maybeslow
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def env_deactivate():
|
||||
yield
|
||||
|
@@ -25,8 +25,10 @@
|
||||
|
||||
|
||||
# everything here uses the mock_env_path
|
||||
pytestmark = pytest.mark.usefixtures(
|
||||
'mutable_mock_env_path', 'config', 'mutable_mock_repo')
|
||||
pytestmark = [
|
||||
pytest.mark.usefixtures('mutable_mock_env_path', 'config', 'mutable_mock_repo'),
|
||||
pytest.mark.maybeslow
|
||||
]
|
||||
|
||||
env = SpackCommand('env')
|
||||
install = SpackCommand('install')
|
||||
|
@@ -71,7 +71,7 @@ def test_url_with_no_version_fails():
|
||||
url('parse', 'http://www.netlib.org/voronoi/triangle.zip')
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
@pytest.mark.skipif(
|
||||
sys.version_info < (2, 7),
|
||||
reason="Python 2.6 tests are run in a container, where "
|
||||
@@ -106,7 +106,7 @@ def test_url_list():
|
||||
assert 0 < correct_version_urls < total_urls
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
@pytest.mark.skipif(
|
||||
sys.version_info < (2, 7),
|
||||
reason="Python 2.6 tests are run in a container, where "
|
||||
|
@@ -14,7 +14,6 @@ def test_safe_only_versions():
|
||||
"""Only test the safe versions of a package.
|
||||
(Using the deprecated command line argument)
|
||||
"""
|
||||
|
||||
versions('--safe-only', 'zlib')
|
||||
|
||||
|
||||
@@ -24,21 +23,21 @@ def test_safe_versions():
|
||||
versions('--safe', 'zlib')
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
def test_remote_versions():
|
||||
"""Test a package for which remote versions should be available."""
|
||||
|
||||
versions('zlib')
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
def test_remote_versions_only():
|
||||
"""Test a package for which remote versions should be available."""
|
||||
|
||||
versions('--remote', 'zlib')
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
@pytest.mark.usefixtures('mock_packages')
|
||||
def test_new_versions_only():
|
||||
"""Test a package for which new versions should be available."""
|
||||
@@ -46,28 +45,28 @@ def test_new_versions_only():
|
||||
versions('--new', 'brillig')
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
def test_no_versions():
|
||||
"""Test a package for which no remote versions are available."""
|
||||
|
||||
versions('converge')
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
def test_no_unchecksummed_versions():
|
||||
"""Test a package for which no unchecksummed versions are available."""
|
||||
|
||||
versions('bzip2')
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
def test_versions_no_url():
|
||||
"""Test a package with versions but without a ``url`` attribute."""
|
||||
|
||||
versions('graphviz')
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.maybeslow
|
||||
def test_no_versions_no_url():
|
||||
"""Test a package without versions or a ``url`` attribute."""
|
||||
|
||||
|
@@ -65,6 +65,7 @@ def test_parse_gpg_output_case_three():
|
||||
|
||||
@pytest.mark.skipif(not spack.util.gpg.GpgConstants.user_run_dir,
|
||||
reason='This test requires /var/run/user/$(id -u)')
|
||||
@pytest.mark.requires_executables('gpg2')
|
||||
def test_really_long_gnupg_home_dir(tmpdir):
|
||||
N = 960
|
||||
|
||||
|
Reference in New Issue
Block a user