Contribution Guide¶
This guide is intended for developers or administrators who want to contribute a new package, feature, or bug fix to Spack. It assumes that you have at least some familiarity with Git and GitHub. The guide will show a few examples of contributing workflows and discuss the granularity of pull requests (PRs). It will also discuss the tests your PR must pass in order to be accepted into Spack.
First, what is a PR? Quoting Bitbucket’s tutorials:
Pull requests are a mechanism for a developer to notify team members that they have completed a feature. The pull request is more than just a notification – it’s a dedicated forum for discussing the proposed feature.
Important is completed feature. The changes one proposes in a PR should correspond to one feature, bug fix, extension, etc. One can create PRs with changes relevant to different ideas; however, reviewing such PRs becomes tedious and error-prone. If possible, try to follow the one-PR-one-package/feature rule.
Branches¶
Spack’s develop branch has the latest contributions.
Nearly all pull requests should start from develop and target develop.
There is a branch for each major release series.
Release branches originate from develop and have tags for each point release in the series.
For example, releases/v0.14 has tags for v0.14.0, v0.14.1, v0.14.2, etc., versions of Spack.
We backport important bug fixes to these branches, but we do not advance the package versions or make other changes that would change the way Spack concretizes dependencies.
Currently, the maintainers manage these branches by cherry-picking from develop.
See Releases for more information.
Continuous Integration¶
Spack uses GitHub Actions for Continuous Integration (CI) testing. This means that every time you submit a pull request, a series of tests will be run to make sure you did not accidentally introduce any bugs into Spack. Your PR will not be accepted until it passes all of these tests. While you can certainly wait for the results of these tests after submitting a PR, we recommend that you run them locally to speed up the review process.
Note
Oftentimes, CI will fail for reasons other than a problem with your PR.
For example, apt-get, pip, or brew (Homebrew) might fail to download one of the dependencies for the test suite, or a transient bug might cause the unit tests to timeout.
If any job fails, click the “Details” link and click on the test(s) that is failing.
If it does not look like it is failing for reasons related to your PR, you have two options.
If you have write permissions for the Spack repository, you should see a “Restart workflow” button on the right-hand side.
If not, you can close and reopen your PR to rerun all of the tests.
If the same test keeps failing, there may be a problem with your PR.
If you notice that every recent PR is failing with the same error message, it may be that an issue occurred with the CI infrastructure, or one of Spack’s dependencies put out a new release that is causing problems.
If this is the case, please file an issue.
We currently test against Python 3.6 and up on both macOS and Linux and perform three types of tests:
Unit Tests¶
Unit tests ensure that core Spack features like fetching or spec resolution are working as expected. If your PR only adds new packages or modifies existing ones, there’s very little chance that your changes could cause the unit tests to fail. However, if you make changes to Spack’s core libraries, you should run the unit tests to make sure you didn’t break anything.
Since they test things like fetching from VCS repos, the unit tests require git, mercurial, and subversion to run.
Make sure these are installed on your system and can be found in your PATH.
All of these can be installed with Spack or with your system package manager.
To run all of the unit tests, use:
$ spack unit-test
These tests may take several minutes to complete.
If you know you are only modifying a single Spack feature, you can run subsets of tests at a time.
For example, this would run all the tests in lib/spack/spack/test/architecture.py:
$ spack unit-test lib/spack/spack/test/architecture.py
And this would run the test_platform test from that file:
$ spack unit-test lib/spack/spack/test/architecture.py::test_platform
This allows you to develop iteratively: make a change, test that change, make another change, test that change, etc.
We use pytest as our tests framework, and these types of arguments are just passed to the pytest command underneath.
See the pytest docs for more details on test selection syntax.
spack unit-test has a few special options that can help you understand what tests are available.
To get a list of all available unit test files, run:
$ spack unit-test --list
==> Installing "clingo-bootstrap@=spack~apps~docs+ipo+optimized+python+static_libstdcpp build_system=cmake build_type=Release commit=2a025667090d71b2c9dce60fe924feb6bde8f667 generator=make patches:=bebb819,ec99431 platform=linux os=centos7 target=x86_64" from a buildcache
lib/spack/spack/test/architecture.py lib/spack/spack/test/entry_points.py
lib/spack/spack/test/audit.py lib/spack/spack/test/environment/mutate.py
lib/spack/spack/test/binary_distribution.py lib/spack/spack/test/environment_modifications.py
lib/spack/spack/test/bootstrap.py lib/spack/spack/test/error_messages.py
...
To see a more detailed list of available unit tests, use spack unit-test --list-long:
$ spack unit-test --list-long
lib/spack/spack/test/architecture.py::
test_arch_spec_container_semantic test_operating_system_conversion_to_dict
test_concretize_target_ranges test_platform
test_default_os_and_target test_satisfy_strict_constraint_when_not_concrete
test_instantiate_non_default_macos test_user_input_combination
lib/spack/spack/test/audit.py::
test_audit_configs test_audit_packages test_audit_packages_https test_config_audits test_package_audits
lib/spack/spack/test/binary_distribution.py::
...
And to see the fully qualified names of all tests, use --list-names:
$ spack unit-test --list-names
lib/spack/spack/test/architecture.py::test_arch_spec_container_semantic
lib/spack/spack/test/architecture.py::test_concretize_target_ranges
lib/spack/spack/test/architecture.py::test_default_os_and_target
lib/spack/spack/test/architecture.py::test_instantiate_non_default_macos
lib/spack/spack/test/architecture.py::test_operating_system_conversion_to_dict
...
You can combine these with pytest arguments to restrict which tests you want to know about.
For example, to see just the tests in architecture.py:
$ spack unit-test --list-long lib/spack/spack/test/architecture.py
lib/spack/spack/test/architecture.py::
test_arch_spec_container_semantic test_operating_system_conversion_to_dict
test_concretize_target_ranges test_platform
test_default_os_and_target test_satisfy_strict_constraint_when_not_concrete
test_instantiate_non_default_macos test_user_input_combination
You can also combine any of these options with a pytest keyword search.
See the pytest usage documentation for more details on test selection syntax.
For example, to see the names of all tests that have “spec” or “concretize” somewhere in their names:
$ spack unit-test --list-names -k "spec and concretize"
lib/spack/spack/test/architecture.py::test_arch_spec_container_semantic
lib/spack/spack/test/architecture.py::test_concretize_target_ranges
lib/spack/spack/test/architecture.py::test_default_os_and_target
lib/spack/spack/test/architecture.py::test_instantiate_non_default_macos
lib/spack/spack/test/architecture.py::test_operating_system_conversion_to_dict
lib/spack/spack/test/architecture.py::test_platform
lib/spack/spack/test/architecture.py::test_satisfy_strict_constraint_when_not_concrete
lib/spack/spack/test/architecture.py::test_user_input_combination
lib/spack/spack/test/audit.py::test_audit_configs
lib/spack/spack/test/audit.py::test_audit_packages
lib/spack/spack/test/audit.py::test_audit_packages_https
lib/spack/spack/test/audit.py::test_config_audits
lib/spack/spack/test/audit.py::test_package_audits
lib/spack/spack/test/binary_distribution.py::test_FetchCacheError_only_accepts_lists_of_errors
lib/spack/spack/test/binary_distribution.py::test_FetchCacheError_pretty_printing_multiple
lib/spack/spack/test/binary_distribution.py::test_FetchCacheError_pretty_printing_single
lib/spack/spack/test/binary_distribution.py::test_buildcache_cmd_smoke_test
lib/spack/spack/test/binary_distribution.py::test_built_spec_cache
lib/spack/spack/test/binary_distribution.py::test_compression_writer
lib/spack/spack/test/binary_distribution.py::test_default_index_404
lib/spack/spack/test/binary_distribution.py::test_default_index_fetch_200
lib/spack/spack/test/binary_distribution.py::test_default_index_not_modified
lib/spack/spack/test/binary_distribution.py::test_default_tag
lib/spack/spack/test/binary_distribution.py::test_etag_fetching_200
lib/spack/spack/test/binary_distribution.py::test_etag_fetching_304
lib/spack/spack/test/binary_distribution.py::test_etag_fetching_404
lib/spack/spack/test/binary_distribution.py::test_generate_index_missing
lib/spack/spack/test/binary_distribution.py::test_generate_indices_exception
lib/spack/spack/test/binary_distribution.py::test_generate_key_index_failure
lib/spack/spack/test/binary_distribution.py::test_generate_package_index_failure
lib/spack/spack/test/binary_distribution.py::test_get_entries_from_cache_nested_mirrors
lib/spack/spack/test/binary_distribution.py::test_get_valid_spec_file
lib/spack/spack/test/binary_distribution.py::test_get_valid_spec_file_doesnt_exist
lib/spack/spack/test/binary_distribution.py::test_get_valid_spec_file_no_json
lib/spack/spack/test/binary_distribution.py::test_load_buildcache_index
lib/spack/spack/test/binary_distribution.py::test_load_buildcache_index_degrades_gracefully
lib/spack/spack/test/binary_distribution.py::test_mirror_metadata
lib/spack/spack/test/binary_distribution.py::test_mirror_metadata_format
lib/spack/spack/test/binary_distribution.py::test_mirror_metadata_format_with_view
lib/spack/spack/test/binary_distribution.py::test_mirror_metadata_with_view
lib/spack/spack/test/binary_distribution.py::test_push_and_fetch_keys
lib/spack/spack/test/binary_distribution.py::test_relative_path_components
lib/spack/spack/test/binary_distribution.py::test_reproducible_tarball_is_reproducible
lib/spack/spack/test/binary_distribution.py::test_spec_needs_rebuild
lib/spack/spack/test/binary_distribution.py::test_tarball_common_prefix
lib/spack/spack/test/binary_distribution.py::test_tarball_doesnt_include_buildinfo_twice
lib/spack/spack/test/binary_distribution.py::test_tarball_normalized_permissions
lib/spack/spack/test/binary_distribution.py::test_tarfile_missing_binary_distribution_file
lib/spack/spack/test/binary_distribution.py::test_tarfile_of_spec_prefix
lib/spack/spack/test/binary_distribution.py::test_tarfile_with_files_outside_common_prefix
lib/spack/spack/test/binary_distribution.py::test_tarfile_without_common_directory_prefix_fails
lib/spack/spack/test/binary_distribution.py::test_text_relocate_if_needed
lib/spack/spack/test/binary_distribution.py::test_update_does_not_warn_on_mirror_with_no_index
lib/spack/spack/test/binary_distribution.py::test_update_sbang
lib/spack/spack/test/binary_distribution.py::test_url_buildcache_entry_v3
lib/spack/spack/test/binary_distribution.py::test_url_buildcache_hash_from_manifest_name
lib/spack/spack/test/binary_distribution.py::test_use_bin_index
lib/spack/spack/test/binary_distribution.py::test_use_bin_index_active_env_with_view
lib/spack/spack/test/binary_distribution.py::test_use_bin_index_with_view
lib/spack/spack/test/binary_distribution.py::test_v2_default_index_dont_fetch_index_json_hash_if_no_local_hash
lib/spack/spack/test/binary_distribution.py::test_v2_default_index_fetch_200
lib/spack/spack/test/binary_distribution.py::test_v2_default_index_invalid_hash_file
lib/spack/spack/test/binary_distribution.py::test_v2_default_index_json_404
lib/spack/spack/test/binary_distribution.py::test_v2_default_index_not_modified
lib/spack/spack/test/binary_distribution.py::test_v2_etag_fetching_200
lib/spack/spack/test/binary_distribution.py::test_v2_etag_fetching_304
lib/spack/spack/test/binary_distribution.py::test_v2_etag_fetching_404
lib/spack/spack/test/bootstrap.py::test_add_failures_for_already_existing_name
lib/spack/spack/test/bootstrap.py::test_add_failures_for_non_existing_files
lib/spack/spack/test/bootstrap.py::test_bootstrap_custom_store_in_environment
lib/spack/spack/test/bootstrap.py::test_bootstrap_deactivates_environments
lib/spack/spack/test/bootstrap.py::test_bootstrap_disables_modulefile_generation
lib/spack/spack/test/bootstrap.py::test_bootstrap_mirror_metadata
lib/spack/spack/test/bootstrap.py::test_bootstrap_search_for_compilers_with_environment_active
lib/spack/spack/test/bootstrap.py::test_bootstrap_search_for_compilers_with_no_environment
lib/spack/spack/test/bootstrap.py::test_config_yaml_is_preserved_during_bootstrap
lib/spack/spack/test/bootstrap.py::test_enable_and_disable
lib/spack/spack/test/bootstrap.py::test_enable_or_disable_fails_with_more_than_one_method
lib/spack/spack/test/bootstrap.py::test_enable_or_disable_fails_with_no_method
lib/spack/spack/test/bootstrap.py::test_enable_or_disable_sources
lib/spack/spack/test/bootstrap.py::test_gpg_status_check
lib/spack/spack/test/bootstrap.py::test_install_tree_customization_is_respected
lib/spack/spack/test/bootstrap.py::test_list_sources
lib/spack/spack/test/bootstrap.py::test_nested_use_of_context_manager
lib/spack/spack/test/bootstrap.py::test_raising_exception_executables_in_path
lib/spack/spack/test/bootstrap.py::test_raising_exception_if_bootstrap_disabled
lib/spack/spack/test/bootstrap.py::test_raising_exception_module_importable
lib/spack/spack/test/bootstrap.py::test_remove_and_add_a_source
lib/spack/spack/test/bootstrap.py::test_remove_failure_for_non_existing_names
lib/spack/spack/test/bootstrap.py::test_reset_in_environment
lib/spack/spack/test/bootstrap.py::test_reset_in_file_scopes
lib/spack/spack/test/bootstrap.py::test_reset_in_file_scopes_overwrites_backup_files
lib/spack/spack/test/bootstrap.py::test_root_get_and_set
lib/spack/spack/test/bootstrap.py::test_source_is_disabled
lib/spack/spack/test/bootstrap.py::test_status_function_find_files
lib/spack/spack/test/bootstrap.py::test_store_is_restored_correctly_after_bootstrap
lib/spack/spack/test/bootstrap.py::test_store_padding_length_is_zero_during_bootstrapping
lib/spack/spack/test/bootstrap.py::test_store_path_customization
lib/spack/spack/test/bootstrap.py::test_use_store_does_not_try_writing_outside_root
lib/spack/spack/test/build_distribution.py::test_build_tarball_overwrite
lib/spack/spack/test/build_environment.py::TestModuleMonkeyPatcher::test_getting_attributes
lib/spack/spack/test/build_environment.py::TestModuleMonkeyPatcher::test_setting_attributes
lib/spack/spack/test/build_environment.py::test_add_werror_handling
lib/spack/spack/test/build_environment.py::test_build_jobs_command_line_overrides
lib/spack/spack/test/build_environment.py::test_build_jobs_defaults
lib/spack/spack/test/build_environment.py::test_build_jobs_sequential_is_sequential
lib/spack/spack/test/build_environment.py::test_build_process_timeout
lib/spack/spack/test/build_environment.py::test_cc_not_changed_by_modules
lib/spack/spack/test/build_environment.py::test_clear_compiler_related_runtime_variables_of_build_deps
lib/spack/spack/test/build_environment.py::test_compiler_config_modifications
lib/spack/spack/test/build_environment.py::test_dump_environment
lib/spack/spack/test/build_environment.py::test_effective_deptype_build_environment
lib/spack/spack/test/build_environment.py::test_effective_deptype_run_environment
lib/spack/spack/test/build_environment.py::test_env_flag
lib/spack/spack/test/build_environment.py::test_external_config_env
lib/spack/spack/test/build_environment.py::test_external_prefixes_last
lib/spack/spack/test/build_environment.py::test_extra_rpaths_is_set
lib/spack/spack/test/build_environment.py::test_filter_system_paths
lib/spack/spack/test/build_environment.py::test_get_path
lib/spack/spack/test/build_environment.py::test_is_system_path
lib/spack/spack/test/build_environment.py::test_load_external_modules_error
lib/spack/spack/test/build_environment.py::test_module_globals_available_at_setup_dependent_time
lib/spack/spack/test/build_environment.py::test_monkey_patching_works_across_virtual
lib/spack/spack/test/build_environment.py::test_optimization_flags
lib/spack/spack/test/build_environment.py::test_optimization_flags_are_using_node_target
lib/spack/spack/test/build_environment.py::test_package_inheritance_module_setup
lib/spack/spack/test/build_environment.py::test_parallel_false_is_not_propagating
lib/spack/spack/test/build_environment.py::test_path_put_first
lib/spack/spack/test/build_environment.py::test_path_set
lib/spack/spack/test/build_environment.py::test_prune_duplicate_paths
lib/spack/spack/test/build_environment.py::test_reverse_environment_modifications
lib/spack/spack/test/build_environment.py::test_rpath_with_duplicate_link_deps
lib/spack/spack/test/build_environment.py::test_setting_dtags_based_on_config
lib/spack/spack/test/build_environment.py::test_setup_dependent_package_inherited_modules
lib/spack/spack/test/build_environment.py::test_shell_modifications_are_properly_escaped
lib/spack/spack/test/build_environment.py::test_spack_paths_before_module_paths
lib/spack/spack/test/build_environment.py::test_static_to_shared_library
lib/spack/spack/test/build_environment.py::test_wrapper_variables
lib/spack/spack/test/build_system_guess.py::test_build_systems
lib/spack/spack/test/builder.py::test_build_time_tests_are_executed_from_default_builder
lib/spack/spack/test/builder.py::test_builder_when_inheriting_just_package
lib/spack/spack/test/builder.py::test_callbacks_and_installation_procedure
lib/spack/spack/test/builder.py::test_install_time_test_callback
lib/spack/spack/test/builder.py::test_mixins_with_builders
lib/spack/spack/test/builder.py::test_monkey_patching_test_log_file
lib/spack/spack/test/builder.py::test_monkey_patching_wrapped_pkg
lib/spack/spack/test/builder.py::test_old_style_compatibility_with_super
lib/spack/spack/test/builder.py::test_reading_api_v20_attributes
lib/spack/spack/test/builder.py::test_reading_api_v22_attributes
lib/spack/spack/test/cache_fetch.py::test_fetch
lib/spack/spack/test/cache_fetch.py::test_fetch_in_env
lib/spack/spack/test/cache_fetch.py::test_fetch_missing_cache
lib/spack/spack/test/cache_fetch.py::test_fetch_multiple_specs
lib/spack/spack/test/cache_fetch.py::test_fetch_no_argument
lib/spack/spack/test/cache_fetch.py::test_fetch_single_spec
lib/spack/spack/test/ci.py::test_affected_specs_on_first_concretization
lib/spack/spack/test/ci.py::test_ci_copy_stage_logs_to_artifacts_fail
lib/spack/spack/test/ci.py::test_ci_copy_test_logs_to_artifacts_fail
lib/spack/spack/test/ci.py::test_ci_create_buildcache
lib/spack/spack/test/ci.py::test_ci_dynamic_mapping_empty
lib/spack/spack/test/ci.py::test_ci_dynamic_mapping_full
lib/spack/spack/test/ci.py::test_ci_generate_alternate_target
lib/spack/spack/test/ci.py::test_ci_generate_copy_only
lib/spack/spack/test/ci.py::test_ci_generate_external_signing_job
lib/spack/spack/test/ci.py::test_ci_generate_for_pr_pipeline
lib/spack/spack/test/ci.py::test_ci_generate_forward_variables
lib/spack/spack/test/ci.py::test_ci_generate_mirror_config
lib/spack/spack/test/ci.py::test_ci_generate_override_runner_attrs
lib/spack/spack/test/ci.py::test_ci_generate_pkg_with_deps
lib/spack/spack/test/ci.py::test_ci_generate_prune_untouched
lib/spack/spack/test/ci.py::test_ci_generate_read_broken_specs_url
lib/spack/spack/test/ci.py::test_ci_generate_unknown_generator
lib/spack/spack/test/ci.py::test_ci_generate_with_cdash_token
lib/spack/spack/test/ci.py::test_ci_generate_with_custom_settings
lib/spack/spack/test/ci.py::test_ci_generate_with_env
lib/spack/spack/test/ci.py::test_ci_generate_with_env_missing_section
lib/spack/spack/test/ci.py::test_ci_generate_with_external_pkg
lib/spack/spack/test/ci.py::test_ci_get_stack_changed
lib/spack/spack/test/ci.py::test_ci_help
lib/spack/spack/test/ci.py::test_ci_nothing_to_rebuild
lib/spack/spack/test/ci.py::test_ci_process_command
lib/spack/spack/test/ci.py::test_ci_process_command_fail
lib/spack/spack/test/ci.py::test_ci_rebuild_index
lib/spack/spack/test/ci.py::test_ci_rebuild_missing_config
lib/spack/spack/test/ci.py::test_ci_rebuild_mock_failure_to_push
lib/spack/spack/test/ci.py::test_ci_rebuild_mock_success
lib/spack/spack/test/ci.py::test_ci_reproduce
lib/spack/spack/test/ci.py::test_ci_require_signing
lib/spack/spack/test/ci.py::test_ci_run_standalone_tests_missing_requirements
lib/spack/spack/test/ci.py::test_ci_run_standalone_tests_not_installed_cdash
lib/spack/spack/test/ci.py::test_ci_run_standalone_tests_not_installed_junit
lib/spack/spack/test/ci.py::test_ci_skipped_report
lib/spack/spack/test/ci.py::test_ci_subcommands_without_mirror
lib/spack/spack/test/ci.py::test_ci_validate_git_versions_bad_tag
lib/spack/spack/test/ci.py::test_ci_validate_git_versions_invalid
lib/spack/spack/test/ci.py::test_ci_validate_git_versions_valid
lib/spack/spack/test/ci.py::test_ci_validate_standard_versions_invalid
lib/spack/spack/test/ci.py::test_ci_validate_standard_versions_valid
lib/spack/spack/test/ci.py::test_ci_verify_versions_invalid
lib/spack/spack/test/ci.py::test_ci_verify_versions_manual_package
lib/spack/spack/test/ci.py::test_ci_verify_versions_standard_duplicates
lib/spack/spack/test/ci.py::test_ci_verify_versions_valid
lib/spack/spack/test/ci.py::test_docstring_utils
lib/spack/spack/test/ci.py::test_download_and_extract_artifacts
lib/spack/spack/test/ci.py::test_filter_added_checksums_new_checksum
lib/spack/spack/test/ci.py::test_filter_added_checksums_new_commit
lib/spack/spack/test/ci.py::test_get_spec_filter_list
lib/spack/spack/test/ci.py::test_gitlab_config_scopes
lib/spack/spack/test/ci.py::test_import_signing_key
lib/spack/spack/test/ci.py::test_pipeline_dag
lib/spack/spack/test/ci.py::test_push_to_build_cache
lib/spack/spack/test/ci.py::test_push_to_build_cache_exceptions
lib/spack/spack/test/ci.py::test_reproduce_build_url_validation
lib/spack/spack/test/ci.py::test_reproduce_build_url_validation_fails
lib/spack/spack/test/ci.py::test_setup_spack_repro_version
lib/spack/spack/test/cmd/arch.py::test_arch
lib/spack/spack/test/cmd/arch.py::test_arch_operating_system
lib/spack/spack/test/cmd/arch.py::test_arch_platform
lib/spack/spack/test/cmd/arch.py::test_arch_target
lib/spack/spack/test/cmd/arch.py::test_display_targets
lib/spack/spack/test/cmd/blame.py::test_blame_by_git
lib/spack/spack/test/cmd/blame.py::test_blame_by_modtime
lib/spack/spack/test/cmd/blame.py::test_blame_by_percent
lib/spack/spack/test/cmd/blame.py::test_blame_directory
lib/spack/spack/test/cmd/blame.py::test_blame_file
lib/spack/spack/test/cmd/blame.py::test_blame_file_missing
lib/spack/spack/test/cmd/blame.py::test_blame_file_outside_spack_repo
lib/spack/spack/test/cmd/blame.py::test_blame_json
lib/spack/spack/test/cmd/blame.py::test_blame_spack_not_git_clone
lib/spack/spack/test/cmd/blame.py::test_ensure_full_history_shallow_fails
lib/spack/spack/test/cmd/blame.py::test_ensure_full_history_shallow_old_git
lib/spack/spack/test/cmd/blame.py::test_ensure_full_history_shallow_works
lib/spack/spack/test/cmd/blame.py::test_git_prefix_bad
lib/spack/spack/test/cmd/blame.py::test_repo_root_local_descriptor
lib/spack/spack/test/cmd/blame.py::test_repo_root_remote_descriptor
lib/spack/spack/test/cmd/build_env.py::TestDirectoryInitialization::test_environment_dir_from_name
lib/spack/spack/test/cmd/build_env.py::TestDirectoryInitialization::test_environment_dir_from_nested_name
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_cannot_define_group_twice
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_cyclic_group_dependencies_give_clear_error
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_environment_without_groups_use_lockfile_v6
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_from_lockfile_preserves_groups
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_from_lockfile_without_groups_stays_default
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_independent_group_dont_reuse
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_independent_groups_concretization
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_manifest_and_groups
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_manifest_can_contain_config_override
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_matrix_can_be_expanded_in_groups
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_missing_needs_group_gives_clear_error
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_overriding_concretization_properties_per_group
lib/spack/spack/test/cmd/build_env.py::TestEnvironmentGroups::test_relying_on_a_dependency_group
lib/spack/spack/test/cmd/build_env.py::test_activate_adds_transitive_run_deps_to_path
lib/spack/spack/test/cmd/build_env.py::test_activate_default
lib/spack/spack/test/cmd/build_env.py::test_activate_parser_conflicts_with_temp
lib/spack/spack/test/cmd/build_env.py::test_activate_should_require_an_env
lib/spack/spack/test/cmd/build_env.py::test_activate_temp
lib/spack/spack/test/cmd/build_env.py::test_activation_and_deactivation_ambiguities
lib/spack/spack/test/cmd/build_env.py::test_add
lib/spack/spack/test/cmd/build_env.py::test_add_requires_active_env
lib/spack/spack/test/cmd/build_env.py::test_adding_anonymous_specs_to_env_fails
lib/spack/spack/test/cmd/build_env.py::test_bad_env_yaml_create_fails
lib/spack/spack/test/cmd/build_env.py::test_bad_env_yaml_format_remove
lib/spack/spack/test/cmd/build_env.py::test_bad_remove_included_env
lib/spack/spack/test/cmd/build_env.py::test_build_env_requires_a_spec
lib/spack/spack/test/cmd/build_env.py::test_can_add_specs_to_environment_without_specs_attribute
lib/spack/spack/test/cmd/build_env.py::test_can_update_attributes_with_override
lib/spack/spack/test/cmd/build_env.py::test_cannot_initialize_from_bad_lockfile
lib/spack/spack/test/cmd/build_env.py::test_cannot_initialize_if_init_file_does_not_exist
lib/spack/spack/test/cmd/build_env.py::test_cannot_initialize_in_dir_with_init_file
lib/spack/spack/test/cmd/build_env.py::test_cannot_initiliaze_if_dirname_exists_as_a_file
lib/spack/spack/test/cmd/build_env.py::test_cannot_use_double_percent_with_require
lib/spack/spack/test/cmd/build_env.py::test_change_match_spec
lib/spack/spack/test/cmd/build_env.py::test_change_multiple_matches
lib/spack/spack/test/cmd/build_env.py::test_compiler_target_env
lib/spack/spack/test/cmd/build_env.py::test_concretize
lib/spack/spack/test/cmd/build_env.py::test_concretize_include_concrete_env
lib/spack/spack/test/cmd/build_env.py::test_concretize_nested_include_concrete_envs
lib/spack/spack/test/cmd/build_env.py::test_concretize_nested_included_concrete
lib/spack/spack/test/cmd/build_env.py::test_concretize_transactional
lib/spack/spack/test/cmd/build_env.py::test_concretize_user_specs_together
lib/spack/spack/test/cmd/build_env.py::test_concretized_specs_and_include_concrete
lib/spack/spack/test/cmd/build_env.py::test_config_change_existing
lib/spack/spack/test/cmd/build_env.py::test_config_change_new
lib/spack/spack/test/cmd/build_env.py::test_conflicts_with_packages_that_are_not_dependencies
lib/spack/spack/test/cmd/build_env.py::test_create_and_activate_independent
lib/spack/spack/test/cmd/build_env.py::test_create_and_activate_managed
lib/spack/spack/test/cmd/build_env.py::test_create_with_orphaned_directory
lib/spack/spack/test/cmd/build_env.py::test_custom_store_in_environment
lib/spack/spack/test/cmd/build_env.py::test_custom_version_concretize_together
lib/spack/spack/test/cmd/build_env.py::test_deconcretize_then_concretize_does_not_error
lib/spack/spack/test/cmd/build_env.py::test_dependency_propagation_in_environments
lib/spack/spack/test/cmd/build_env.py::test_depfile_empty_does_not_error
lib/spack/spack/test/cmd/build_env.py::test_depfile_phony_convenience_targets
lib/spack/spack/test/cmd/build_env.py::test_depfile_safe_format
lib/spack/spack/test/cmd/build_env.py::test_depfile_works_with_gitversions
lib/spack/spack/test/cmd/build_env.py::test_does_not_rewrite_rel_dev_path_when_keep_relative_is_set
lib/spack/spack/test/cmd/build_env.py::test_double_percent_semantics
lib/spack/spack/test/cmd/build_env.py::test_dump
lib/spack/spack/test/cmd/build_env.py::test_duplicate_packages_raise_when_concretizing_together
lib/spack/spack/test/cmd/build_env.py::test_env_activate_broken_view
lib/spack/spack/test/cmd/build_env.py::test_env_activate_csh_prints_shell_output
lib/spack/spack/test/cmd/build_env.py::test_env_activate_custom_view
lib/spack/spack/test/cmd/build_env.py::test_env_activate_default_view_root_unconditional
lib/spack/spack/test/cmd/build_env.py::test_env_activate_sh_prints_shell_output
lib/spack/spack/test/cmd/build_env.py::test_env_activate_view_fails
lib/spack/spack/test/cmd/build_env.py::test_env_add_nonexistent_fails
lib/spack/spack/test/cmd/build_env.py::test_env_add_virtual
lib/spack/spack/test/cmd/build_env.py::test_env_bad_include_concrete_env
lib/spack/spack/test/cmd/build_env.py::test_env_blocks_uninstall
lib/spack/spack/test/cmd/build_env.py::test_env_change_spec
lib/spack/spack/test/cmd/build_env.py::test_env_change_spec_in_definition
lib/spack/spack/test/cmd/build_env.py::test_env_change_spec_in_matrix_raises_error
lib/spack/spack/test/cmd/build_env.py::test_env_commands_die_with_no_env_arg
lib/spack/spack/test/cmd/build_env.py::test_env_config_view_default
lib/spack/spack/test/cmd/build_env.py::test_env_definition_symlink
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_add_env
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_env_reconcretized
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_env_yaml
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_envs_lockfile
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_git_lockfile
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_old_env
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_only
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_relative_path
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_remove_env
lib/spack/spack/test/cmd/build_env.py::test_env_include_concrete_reuse
lib/spack/spack/test/cmd/build_env.py::test_env_include_configs
lib/spack/spack/test/cmd/build_env.py::test_env_include_mixed_views
lib/spack/spack/test/cmd/build_env.py::test_env_include_packages_url
lib/spack/spack/test/cmd/build_env.py::test_env_install_all
lib/spack/spack/test/cmd/build_env.py::test_env_install_include_concrete_env
lib/spack/spack/test/cmd/build_env.py::test_env_install_single_spec
lib/spack/spack/test/cmd/build_env.py::test_env_install_two_specs_same_dep
lib/spack/spack/test/cmd/build_env.py::test_env_list
lib/spack/spack/test/cmd/build_env.py::test_env_loads
lib/spack/spack/test/cmd/build_env.py::test_env_modifications_error_on_activate
lib/spack/spack/test/cmd/build_env.py::test_env_multiple_include_concrete_envs
lib/spack/spack/test/cmd/build_env.py::test_env_not_concrete_include_concrete_env
lib/spack/spack/test/cmd/build_env.py::test_env_remove
lib/spack/spack/test/cmd/build_env.py::test_env_rename_independent
lib/spack/spack/test/cmd/build_env.py::test_env_rename_managed
lib/spack/spack/test/cmd/build_env.py::test_env_repo
lib/spack/spack/test/cmd/build_env.py::test_env_roots_marked_explicit
lib/spack/spack/test/cmd/build_env.py::test_env_specs_partition
lib/spack/spack/test/cmd/build_env.py::test_env_status_broken_view
lib/spack/spack/test/cmd/build_env.py::test_env_track_existing_env_fails
lib/spack/spack/test/cmd/build_env.py::test_env_track_nonexistent_path_fails
lib/spack/spack/test/cmd/build_env.py::test_env_track_valid
lib/spack/spack/test/cmd/build_env.py::test_env_untrack_invalid_name
lib/spack/spack/test/cmd/build_env.py::test_env_untrack_managed
lib/spack/spack/test/cmd/build_env.py::test_env_untrack_valid
lib/spack/spack/test/cmd/build_env.py::test_env_untrack_when_active
lib/spack/spack/test/cmd/build_env.py::test_env_update_include_concrete
lib/spack/spack/test/cmd/build_env.py::test_env_updates_view_add_concretize
lib/spack/spack/test/cmd/build_env.py::test_env_updates_view_force_remove
lib/spack/spack/test/cmd/build_env.py::test_env_updates_view_install
lib/spack/spack/test/cmd/build_env.py::test_env_updates_view_install_package
lib/spack/spack/test/cmd/build_env.py::test_env_updates_view_remove_concretize
lib/spack/spack/test/cmd/build_env.py::test_env_updates_view_uninstall
lib/spack/spack/test/cmd/build_env.py::test_env_updates_view_uninstall_referenced_elsewhere
lib/spack/spack/test/cmd/build_env.py::test_env_view_backward_compat_old_symlink_format
lib/spack/spack/test/cmd/build_env.py::test_env_view_disabled
lib/spack/spack/test/cmd/build_env.py::test_env_view_external_prefix
lib/spack/spack/test/cmd/build_env.py::test_env_view_fail_if_symlink_points_elsewhere
lib/spack/spack/test/cmd/build_env.py::test_env_view_fails
lib/spack/spack/test/cmd/build_env.py::test_env_view_fails_dir_file
lib/spack/spack/test/cmd/build_env.py::test_env_view_ignores_different_file_conflicts
lib/spack/spack/test/cmd/build_env.py::test_env_view_on_empty_dir_is_fine
lib/spack/spack/test/cmd/build_env.py::test_env_view_on_non_empty_dir_errors
lib/spack/spack/test/cmd/build_env.py::test_env_view_resolves_identical_file_conflicts
lib/spack/spack/test/cmd/build_env.py::test_env_view_succeeds_symlinked_dir_file
lib/spack/spack/test/cmd/build_env.py::test_env_with_config
lib/spack/spack/test/cmd/build_env.py::test_env_with_include_config_files_same_basename
lib/spack/spack/test/cmd/build_env.py::test_env_with_include_def_missing
lib/spack/spack/test/cmd/build_env.py::test_env_with_include_defs
lib/spack/spack/test/cmd/build_env.py::test_env_with_included_config_file
lib/spack/spack/test/cmd/build_env.py::test_env_with_included_config_file_url
lib/spack/spack/test/cmd/build_env.py::test_env_with_included_config_precedence
lib/spack/spack/test/cmd/build_env.py::test_env_with_included_config_scope
lib/spack/spack/test/cmd/build_env.py::test_env_with_included_config_var_path
lib/spack/spack/test/cmd/build_env.py::test_env_with_included_configs_precedence
lib/spack/spack/test/cmd/build_env.py::test_env_without_view_install
lib/spack/spack/test/cmd/build_env.py::test_env_write_only_non_default
lib/spack/spack/test/cmd/build_env.py::test_env_write_only_non_default_nested
lib/spack/spack/test/cmd/build_env.py::test_environment_cant_modify_environments_root
lib/spack/spack/test/cmd/build_env.py::test_environment_concretizer_scheme_used
lib/spack/spack/test/cmd/build_env.py::test_environment_config_scheme_used
lib/spack/spack/test/cmd/build_env.py::test_environment_created_from_lockfile_has_view
lib/spack/spack/test/cmd/build_env.py::test_environment_created_in_users_location
lib/spack/spack/test/cmd/build_env.py::test_environment_depfile_makefile
lib/spack/spack/test/cmd/build_env.py::test_environment_depfile_out
lib/spack/spack/test/cmd/build_env.py::test_environment_from_name_or_dir
lib/spack/spack/test/cmd/build_env.py::test_environment_pickle
lib/spack/spack/test/cmd/build_env.py::test_environment_pickle_preserves_lock_state
lib/spack/spack/test/cmd/build_env.py::test_environment_query_spec_by_hash
lib/spack/spack/test/cmd/build_env.py::test_environment_status
lib/spack/spack/test/cmd/build_env.py::test_environment_view_target_already_exists
lib/spack/spack/test/cmd/build_env.py::test_envvar_set_in_activate
lib/spack/spack/test/cmd/build_env.py::test_error_message_when_using_too_new_lockfile
lib/spack/spack/test/cmd/build_env.py::test_error_when_multiple_specs_are_given
lib/spack/spack/test/cmd/build_env.py::test_exists_consistent_with_all_environment_names
lib/spack/spack/test/cmd/build_env.py::test_failed_view_cleanup
lib/spack/spack/test/cmd/build_env.py::test_failure_when_uninstalled_deps
lib/spack/spack/test/cmd/build_env.py::test_force_remove_included_env
lib/spack/spack/test/cmd/build_env.py::test_hash_change_no_rehash_concrete
lib/spack/spack/test/cmd/build_env.py::test_ids_when_using_toolchain_twice_in_a_spec
lib/spack/spack/test/cmd/build_env.py::test_include_concrete_deprecation_warning
lib/spack/spack/test/cmd/build_env.py::test_indirect_build_dep
lib/spack/spack/test/cmd/build_env.py::test_init_from_env
lib/spack/spack/test/cmd/build_env.py::test_init_from_env_no_spackfile
lib/spack/spack/test/cmd/build_env.py::test_init_from_lockfile
lib/spack/spack/test/cmd/build_env.py::test_init_from_yaml
lib/spack/spack/test/cmd/build_env.py::test_init_from_yaml_relative_includes
lib/spack/spack/test/cmd/build_env.py::test_init_from_yaml_relative_includes_outside_env
lib/spack/spack/test/cmd/build_env.py::test_init_with_file_and_remove
lib/spack/spack/test/cmd/build_env.py::test_initialize_from_lockfile
lib/spack/spack/test/cmd/build_env.py::test_initialize_from_random_file_as_manifest
lib/spack/spack/test/cmd/build_env.py::test_install_develop_keep_stage
lib/spack/spack/test/cmd/build_env.py::test_installed_specs_disregards_deprecation
lib/spack/spack/test/cmd/build_env.py::test_it_just_runs
lib/spack/spack/test/cmd/build_env.py::test_lockfile_not_deleted_on_write_error
lib/spack/spack/test/cmd/build_env.py::test_lockfile_spliced_specs
lib/spack/spack/test/cmd/build_env.py::test_manifest_file_removal_works_if_spec_is_not_normalized
lib/spack/spack/test/cmd/build_env.py::test_matrix_exclude_from_environment_manifest
lib/spack/spack/test/cmd/build_env.py::test_mixed_compilers_and_libllvm
lib/spack/spack/test/cmd/build_env.py::test_mixing_toolchains_in_an_input_spec
lib/spack/spack/test/cmd/build_env.py::test_modules_exist_after_env_install
lib/spack/spack/test/cmd/build_env.py::test_modules_relative_to_views
lib/spack/spack/test/cmd/build_env.py::test_multi_env_remove
lib/spack/spack/test/cmd/build_env.py::test_newline_in_commented_sequence_is_not_an_issue
lib/spack/spack/test/cmd/build_env.py::test_non_str_repos
lib/spack/spack/test/cmd/build_env.py::test_only_roots_are_explicitly_installed
lib/spack/spack/test/cmd/build_env.py::test_pickle
lib/spack/spack/test/cmd/build_env.py::test_preserving_comments_when_adding_specs
lib/spack/spack/test/cmd/build_env.py::test_query_develop_specs
lib/spack/spack/test/cmd/build_env.py::test_read_legacy_lockfile_and_reconcretize
lib/spack/spack/test/cmd/build_env.py::test_read_old_lock_and_write_new
lib/spack/spack/test/cmd/build_env.py::test_read_v1_lock_creates_backup
lib/spack/spack/test/cmd/build_env.py::test_relative_view_path_on_command_line_is_made_absolute
lib/spack/spack/test/cmd/build_env.py::test_remove_after_concretize
lib/spack/spack/test/cmd/build_env.py::test_remove_before_concretize
lib/spack/spack/test/cmd/build_env.py::test_remove_command
lib/spack/spack/test/cmd/build_env.py::test_remove_command_all
lib/spack/spack/test/cmd/build_env.py::test_removing_from_non_existing_list_fails
lib/spack/spack/test/cmd/build_env.py::test_removing_spec_from_manifest_with_exact_duplicates
lib/spack/spack/test/cmd/build_env.py::test_requires_on_virtual_and_potential_providers
lib/spack/spack/test/cmd/build_env.py::test_reuse_environment_dependencies
lib/spack/spack/test/cmd/build_env.py::test_rewrite_rel_dev_path_named_env
lib/spack/spack/test/cmd/build_env.py::test_rewrite_rel_dev_path_new_dir
lib/spack/spack/test/cmd/build_env.py::test_root_version_weights_for_old_versions
lib/spack/spack/test/cmd/build_env.py::test_roots_display_with_variants
lib/spack/spack/test/cmd/build_env.py::test_roundtrip_spack_yaml_with_comments
lib/spack/spack/test/cmd/build_env.py::test_single_toolchain_and_matrix
lib/spack/spack/test/cmd/build_env.py::test_spack_package_ids_variable
lib/spack/spack/test/cmd/build_env.py::test_stack_combinatorial_view
lib/spack/spack/test/cmd/build_env.py::test_stack_definition_complex_conditional
lib/spack/spack/test/cmd/build_env.py::test_stack_definition_conditional_add_write
lib/spack/spack/test/cmd/build_env.py::test_stack_definition_conditional_false
lib/spack/spack/test/cmd/build_env.py::test_stack_definition_conditional_invalid_variable
lib/spack/spack/test/cmd/build_env.py::test_stack_definition_conditional_true
lib/spack/spack/test/cmd/build_env.py::test_stack_definition_conditional_with_satisfaction
lib/spack/spack/test/cmd/build_env.py::test_stack_definition_conditional_with_variable
lib/spack/spack/test/cmd/build_env.py::test_stack_definition_extension
lib/spack/spack/test/cmd/build_env.py::test_stack_enforcement_is_strict
lib/spack/spack/test/cmd/build_env.py::test_stack_view_activate_from_default
lib/spack/spack/test/cmd/build_env.py::test_stack_view_exclude
lib/spack/spack/test/cmd/build_env.py::test_stack_view_multiple_views
lib/spack/spack/test/cmd/build_env.py::test_stack_view_multiple_views_same_name
lib/spack/spack/test/cmd/build_env.py::test_stack_view_no_activate_without_default
lib/spack/spack/test/cmd/build_env.py::test_stack_view_select
lib/spack/spack/test/cmd/build_env.py::test_stack_view_select_and_exclude
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_add_to_list
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_definitions
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_definitions_as_constraints
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_definitions_as_constraints_on_matrix
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_definitions_write_reference
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_force_remove_from_matrix
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_remove_from_list
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_remove_from_list_force
lib/spack/spack/test/cmd/build_env.py::test_stack_yaml_remove_from_matrix_no_effect
lib/spack/spack/test/cmd/build_env.py::test_stage
lib/spack/spack/test/cmd/build_env.py::test_static_analysis_in_environments
lib/spack/spack/test/cmd/build_env.py::test_store_different_build_deps
lib/spack/spack/test/cmd/build_env.py::test_to_lockfile_dict
lib/spack/spack/test/cmd/build_env.py::test_toolchain_definitions_are_allowed
lib/spack/spack/test/cmd/build_env.py::test_toolchains_as_matrix_dimension
lib/spack/spack/test/cmd/build_env.py::test_unified_environment_with_mixed_compilers_and_fortran
lib/spack/spack/test/cmd/build_env.py::test_unify_when_possible_works_around_conflicts
lib/spack/spack/test/cmd/build_env.py::test_uninstall_keeps_in_env
lib/spack/spack/test/cmd/build_env.py::test_uninstall_removes_from_env
lib/spack/spack/test/cmd/build_env.py::test_update_default_view
lib/spack/spack/test/cmd/build_env.py::test_user_removed_spec
lib/spack/spack/test/cmd/build_env.py::test_user_view_path_is_not_canonicalized_in_yaml
lib/spack/spack/test/cmd/build_env.py::test_using_multiple_compilers_on_a_node_is_discouraged
lib/spack/spack/test/cmd/build_env.py::test_using_toolchain_as_preferences
lib/spack/spack/test/cmd/build_env.py::test_using_toolchain_as_requirement
lib/spack/spack/test/cmd/build_env.py::test_variant_propagation_with_unify_false
lib/spack/spack/test/cmd/build_env.py::test_view_can_select_group_of_specs
lib/spack/spack/test/cmd/build_env.py::test_view_can_select_group_of_specs_using_string
lib/spack/spack/test/cmd/build_env.py::test_view_link_all
lib/spack/spack/test/cmd/build_env.py::test_view_link_roots
lib/spack/spack/test/cmd/build_env.py::test_view_link_run
lib/spack/spack/test/cmd/build_env.py::test_view_link_type
lib/spack/spack/test/cmd/build_env.py::test_view_projection_path_is_final_after_regenerate
lib/spack/spack/test/cmd/build_env.py::test_virtual_spec_concretize_together
lib/spack/spack/test/cmd/build_env.py::test_with_config_bad_include_activate
lib/spack/spack/test/cmd/build_env.py::test_with_config_bad_include_create
lib/spack/spack/test/cmd/buildcache.py::test_allow_missing_when_dep_not_installed
lib/spack/spack/test/cmd/buildcache.py::test_basic_migrate_signed
lib/spack/spack/test/cmd/buildcache.py::test_basic_migrate_unsigned
lib/spack/spack/test/cmd/buildcache.py::test_best_effort_vs_fail_fast_when_dep_not_installed
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_autopush
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_check_index_full
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_fail_on_perm_denied
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_fails_on_noargs
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_install
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_view
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_view_append
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_view_empty
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_view_failure
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_view_non_active_env
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_create_view_overwrite
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_list_allarch
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_list_duplicates
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_prune_direct_empty_keeplist_fails
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_prune_direct_removes_unlisted
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_prune_direct_with_keeplist
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_prune_new_specs_race_condition
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_prune_no_orphans
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_prune_orphaned_blobs
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_prune_orphaned_manifest
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_prune_with_invalid_keep_hash
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_push_group_and_specs_mutually_exclusive
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_push_group_nonexistent_errors
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_push_group_requires_active_env
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_push_with_group
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_push_with_multiple_groups
lib/spack/spack/test/cmd/buildcache.py::test_buildcache_sync
lib/spack/spack/test/cmd/buildcache.py::test_check_mirror_for_layout
lib/spack/spack/test/cmd/buildcache.py::test_correct_specs_are_pushed
lib/spack/spack/test/cmd/buildcache.py::test_filter_specs_for_push_with_exclude
lib/spack/spack/test/cmd/buildcache.py::test_filter_specs_for_push_with_include
lib/spack/spack/test/cmd/buildcache.py::test_install_v2_layout
lib/spack/spack/test/cmd/buildcache.py::test_migrate_requires_index
lib/spack/spack/test/cmd/buildcache.py::test_push_and_install_with_mirror_marked_unsigned_does_not_require_extra_flags
lib/spack/spack/test/cmd/buildcache.py::test_push_without_build_deps
lib/spack/spack/test/cmd/buildcache.py::test_skip_no_redistribute
lib/spack/spack/test/cmd/buildcache.py::test_unsigned_migrate_of_signed_mirror
lib/spack/spack/test/cmd/buildcache.py::test_update_key_index
lib/spack/spack/test/cmd/buildcache.py::test_url_buildcache_entry_v2_exists
lib/spack/spack/test/cmd/buildcache.py::tests_buildcache_create_env
lib/spack/spack/test/cmd/cd.py::test_cd
lib/spack/spack/test/cmd/checksum.py::test_checksum
lib/spack/spack/test/cmd/checksum.py::test_checksum_args
lib/spack/spack/test/cmd/checksum.py::test_checksum_deprecated_version
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_ask_each
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_filter
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_new_only
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_nothing_left
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_quit_from_ask_each
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_quit_returns_none
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_reset_resets
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_return_from_filter_prompt
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_top_n
lib/spack/spack/test/cmd/checksum.py::test_checksum_interactive_unrecognized_command
lib/spack/spack/test/cmd/checksum.py::test_checksum_manual_download_fails
lib/spack/spack/test/cmd/checksum.py::test_checksum_missing_version
lib/spack/spack/test/cmd/checksum.py::test_checksum_url
lib/spack/spack/test/cmd/checksum.py::test_checksum_verification_fails
lib/spack/spack/test/cmd/checksum.py::test_checksum_versions
lib/spack/spack/test/cmd/checksum.py::test_upate_package_contents
lib/spack/spack/test/cmd/clean.py::test_function_calls
lib/spack/spack/test/cmd/clean.py::test_remove_python_cache
lib/spack/spack/test/cmd/commands.py::test_alias_overrides_builtin
lib/spack/spack/test/cmd/commands.py::test_alias_resolves_properly
lib/spack/spack/test/cmd/commands.py::test_alias_with_space
lib/spack/spack/test/cmd/commands.py::test_bash_completion
lib/spack/spack/test/cmd/commands.py::test_bash_completion_choices
lib/spack/spack/test/cmd/commands.py::test_fish_completion
lib/spack/spack/test/cmd/commands.py::test_names
lib/spack/spack/test/cmd/commands.py::test_rst
lib/spack/spack/test/cmd/commands.py::test_rst_update
lib/spack/spack/test/cmd/commands.py::test_rst_with_header
lib/spack/spack/test/cmd/commands.py::test_rst_with_input_files
lib/spack/spack/test/cmd/commands.py::test_subcommands
lib/spack/spack/test/cmd/commands.py::test_update_completion_arg
lib/spack/spack/test/cmd/commands.py::test_update_with_header
lib/spack/spack/test/cmd/commands.py::test_updated_completion_scripts
lib/spack/spack/test/cmd/common/arguments.py::test_concretizer_arguments
lib/spack/spack/test/cmd/common/arguments.py::test_match_spec_env
lib/spack/spack/test/cmd/common/arguments.py::test_missing_config_scopes_are_valid_scope_arguments
lib/spack/spack/test/cmd/common/arguments.py::test_missing_config_scopes_not_valid_read_scope
lib/spack/spack/test/cmd/common/arguments.py::test_multiple_env_match_raises_error
lib/spack/spack/test/cmd/common/arguments.py::test_negative_integers_not_allowed_for_parallel_jobs
lib/spack/spack/test/cmd/common/arguments.py::test_omitted_job_flag
lib/spack/spack/test/cmd/common/arguments.py::test_parse_spec_flags_with_spaces
lib/spack/spack/test/cmd/common/arguments.py::test_root_and_dep_match_returns_root
lib/spack/spack/test/cmd/common/arguments.py::test_setting_jobs_flag
lib/spack/spack/test/cmd/common/arguments.py::test_use_buildcache_type
lib/spack/spack/test/cmd/common/spec_strings.py::test_spec_strings
lib/spack/spack/test/cmd/compiler.py::test_compiler_add
lib/spack/spack/test/cmd/compiler.py::test_compiler_find_path_order
lib/spack/spack/test/cmd/compiler.py::test_compiler_find_prefer_no_suffix
lib/spack/spack/test/cmd/compiler.py::test_compiler_find_without_paths
lib/spack/spack/test/cmd/compiler.py::test_compiler_list_empty
lib/spack/spack/test/cmd/compiler.py::test_compiler_remove
lib/spack/spack/test/cmd/compiler.py::test_removing_compilers_from_multiple_scopes
lib/spack/spack/test/cmd/concretize.py::test_concretize_all_test_dependencies
lib/spack/spack/test/cmd/concretize.py::test_concretize_root_test_dependencies_are_concretized
lib/spack/spack/test/cmd/concretize.py::test_concretize_root_test_dependencies_not_recursive
lib/spack/spack/test/cmd/config.py::test_add_config_filename
lib/spack/spack/test/cmd/config.py::test_add_config_path
lib/spack/spack/test/cmd/config.py::test_add_config_path_with_enumerated_type
lib/spack/spack/test/cmd/config.py::test_alternate_override
lib/spack/spack/test/cmd/config.py::test_bad_compilers_yaml
lib/spack/spack/test/cmd/config.py::test_bad_config_section
lib/spack/spack/test/cmd/config.py::test_bad_config_yaml
lib/spack/spack/test/cmd/config.py::test_bad_env_yaml
lib/spack/spack/test/cmd/config.py::test_bad_include_yaml
lib/spack/spack/test/cmd/config.py::test_bad_mirrors_yaml
lib/spack/spack/test/cmd/config.py::test_bad_path_double_override
lib/spack/spack/test/cmd/config.py::test_bad_repos_yaml
lib/spack/spack/test/cmd/config.py::test_blame_override
lib/spack/spack/test/cmd/config.py::test_canonicalize_file_relative
lib/spack/spack/test/cmd/config.py::test_canonicalize_file_unix
lib/spack/spack/test/cmd/config.py::test_canonicalize_file_windows
lib/spack/spack/test/cmd/config.py::test_change_or_add
lib/spack/spack/test/cmd/config.py::test_config_add
lib/spack/spack/test/cmd/config.py::test_config_add_from_file
lib/spack/spack/test/cmd/config.py::test_config_add_from_file_multiple
lib/spack/spack/test/cmd/config.py::test_config_add_interpret_oneof
lib/spack/spack/test/cmd/config.py::test_config_add_invalid_fails
lib/spack/spack/test/cmd/config.py::test_config_add_invalid_file_fails
lib/spack/spack/test/cmd/config.py::test_config_add_list
lib/spack/spack/test/cmd/config.py::test_config_add_ordered_dict
lib/spack/spack/test/cmd/config.py::test_config_add_override
lib/spack/spack/test/cmd/config.py::test_config_add_override_from_file
lib/spack/spack/test/cmd/config.py::test_config_add_override_leaf
lib/spack/spack/test/cmd/config.py::test_config_add_override_leaf_from_file
lib/spack/spack/test/cmd/config.py::test_config_add_to_env
lib/spack/spack/test/cmd/config.py::test_config_add_to_env_preserve_comments
lib/spack/spack/test/cmd/config.py::test_config_add_update_dict
lib/spack/spack/test/cmd/config.py::test_config_add_update_dict_from_file
lib/spack/spack/test/cmd/config.py::test_config_add_with_scope_adds_to_scope
lib/spack/spack/test/cmd/config.py::test_config_edit
lib/spack/spack/test/cmd/config.py::test_config_edit_creates_scope_dir
lib/spack/spack/test/cmd/config.py::test_config_edit_edits_spack_yaml
lib/spack/spack/test/cmd/config.py::test_config_edit_fails_correctly_with_no_env
lib/spack/spack/test/cmd/config.py::test_config_file_dir_failure
lib/spack/spack/test/cmd/config.py::test_config_file_read_invalid_yaml
lib/spack/spack/test/cmd/config.py::test_config_file_read_perms_failure
lib/spack/spack/test/cmd/config.py::test_config_format_error
lib/spack/spack/test/cmd/config.py::test_config_get_gets_spack_yaml
lib/spack/spack/test/cmd/config.py::test_config_include_similar_name
lib/spack/spack/test/cmd/config.py::test_config_invalid_scope
lib/spack/spack/test/cmd/config.py::test_config_list
lib/spack/spack/test/cmd/config.py::test_config_parse_dict_in_list
lib/spack/spack/test/cmd/config.py::test_config_parse_list_in_dict
lib/spack/spack/test/cmd/config.py::test_config_parse_str_not_bool
lib/spack/spack/test/cmd/config.py::test_config_path_dsl
lib/spack/spack/test/cmd/config.py::test_config_prefer_upstream
lib/spack/spack/test/cmd/config.py::test_config_remove_alias_rm
lib/spack/spack/test/cmd/config.py::test_config_remove_dict
lib/spack/spack/test/cmd/config.py::test_config_remove_from_env
lib/spack/spack/test/cmd/config.py::test_config_remove_value
lib/spack/spack/test/cmd/config.py::test_config_scope_empty_write
lib/spack/spack/test/cmd/config.py::test_config_scopes
lib/spack/spack/test/cmd/config.py::test_config_scopes_include
lib/spack/spack/test/cmd/config.py::test_config_scopes_path
lib/spack/spack/test/cmd/config.py::test_config_scopes_section
lib/spack/spack/test/cmd/config.py::test_config_section_defaults
lib/spack/spack/test/cmd/config.py::test_config_set_beyond_existing
lib/spack/spack/test/cmd/config.py::test_config_update_not_needed
lib/spack/spack/test/cmd/config.py::test_config_update_shared_linking
lib/spack/spack/test/cmd/config.py::test_config_with_c_argument
lib/spack/spack/test/cmd/config.py::test_config_with_group_requires_active_environment
lib/spack/spack/test/cmd/config.py::test_config_with_group_shows_override_packages
lib/spack/spack/test/cmd/config.py::test_config_with_unknown_group_gives_clear_error
lib/spack/spack/test/cmd/config.py::test_deepcopy_as_builtin
lib/spack/spack/test/cmd/config.py::test_default_install_tree
lib/spack/spack/test/cmd/config.py::test_env_activation_preserves_command_line_scope
lib/spack/spack/test/cmd/config.py::test_env_activation_preserves_config_scopes
lib/spack/spack/test/cmd/config.py::test_env_substitution_follows_activation
lib/spack/spack/test/cmd/config.py::test_environment_config_update
lib/spack/spack/test/cmd/config.py::test_get_all_config_roundtrip
lib/spack/spack/test/cmd/config.py::test_get_config_roundtrip
lib/spack/spack/test/cmd/config.py::test_get_config_scope
lib/spack/spack/test/cmd/config.py::test_get_config_scope_merged
lib/spack/spack/test/cmd/config.py::test_good_env_yaml
lib/spack/spack/test/cmd/config.py::test_immutable_scope
lib/spack/spack/test/cmd/config.py::test_include_bad_parent_scope
lib/spack/spack/test/cmd/config.py::test_include_overrides
lib/spack/spack/test/cmd/config.py::test_included_optional_include_scopes
lib/spack/spack/test/cmd/config.py::test_included_path_conditional_bad_when
lib/spack/spack/test/cmd/config.py::test_included_path_conditional_success
lib/spack/spack/test/cmd/config.py::test_included_path_git
lib/spack/spack/test/cmd/config.py::test_included_path_git_errs
lib/spack/spack/test/cmd/config.py::test_included_path_git_missing_args
lib/spack/spack/test/cmd/config.py::test_included_path_git_substitutions
lib/spack/spack/test/cmd/config.py::test_included_path_git_temp_dest
lib/spack/spack/test/cmd/config.py::test_included_path_git_unsat
lib/spack/spack/test/cmd/config.py::test_included_path_local_no_dest
lib/spack/spack/test/cmd/config.py::test_included_path_string
lib/spack/spack/test/cmd/config.py::test_included_path_string_no_parent_path
lib/spack/spack/test/cmd/config.py::test_included_path_substitution
lib/spack/spack/test/cmd/config.py::test_included_path_url_temp_dest
lib/spack/spack/test/cmd/config.py::test_internal_config_dict_override
lib/spack/spack/test/cmd/config.py::test_internal_config_filename
lib/spack/spack/test/cmd/config.py::test_internal_config_from_data
lib/spack/spack/test/cmd/config.py::test_internal_config_list_override
lib/spack/spack/test/cmd/config.py::test_internal_config_scope_cache_clearing
lib/spack/spack/test/cmd/config.py::test_internal_config_section_override
lib/spack/spack/test/cmd/config.py::test_internal_config_update
lib/spack/spack/test/cmd/config.py::test_keys_are_ordered
lib/spack/spack/test/cmd/config.py::test_license_dir_config
lib/spack/spack/test/cmd/config.py::test_local_config_can_be_disabled
lib/spack/spack/test/cmd/config.py::test_mark_internal
lib/spack/spack/test/cmd/config.py::test_merge_with_defaults
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_default_created_as_dir_scope
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_empty_read
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_file_empty_read
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_list
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_not_readable_list
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_writable_list
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_write_directory
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_write_file
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_writeable_not_readable
lib/spack/spack/test/cmd/config.py::test_missing_include_scope_yaml_ext_is_file_scope
lib/spack/spack/test/cmd/config.py::test_modify_scope_precedence
lib/spack/spack/test/cmd/config.py::test_nested_override
lib/spack/spack/test/cmd/config.py::test_override_error_does_not_leak_scope
lib/spack/spack/test/cmd/config.py::test_override_included_config
lib/spack/spack/test/cmd/config.py::test_parse_install_tree
lib/spack/spack/test/cmd/config.py::test_parse_install_tree_padded
lib/spack/spack/test/cmd/config.py::test_read_config
lib/spack/spack/test/cmd/config.py::test_read_config_merge_list
lib/spack/spack/test/cmd/config.py::test_read_config_override_all
lib/spack/spack/test/cmd/config.py::test_read_config_override_key
lib/spack/spack/test/cmd/config.py::test_read_config_override_list
lib/spack/spack/test/cmd/config.py::test_remove_from_list
lib/spack/spack/test/cmd/config.py::test_remove_list
lib/spack/spack/test/cmd/config.py::test_set_bad_path
lib/spack/spack/test/cmd/config.py::test_set_dict_override
lib/spack/spack/test/cmd/config.py::test_set_list_override
lib/spack/spack/test/cmd/config.py::test_set_section_override
lib/spack/spack/test/cmd/config.py::test_single_file_scope
lib/spack/spack/test/cmd/config.py::test_single_file_scope_cache_clearing
lib/spack/spack/test/cmd/config.py::test_single_file_scope_section_override
lib/spack/spack/test/cmd/config.py::test_substitute_config_variables
lib/spack/spack/test/cmd/config.py::test_substitute_date
lib/spack/spack/test/cmd/config.py::test_substitute_spack_version
lib/spack/spack/test/cmd/config.py::test_substitute_tempdir
lib/spack/spack/test/cmd/config.py::test_substitute_user
lib/spack/spack/test/cmd/config.py::test_substitute_user_cache
lib/spack/spack/test/cmd/config.py::test_system_config_path_is_default_when_env_var_is_empty
lib/spack/spack/test/cmd/config.py::test_system_config_path_is_overridable
lib/spack/spack/test/cmd/config.py::test_user_cache_path_is_default_when_env_var_is_empty
lib/spack/spack/test/cmd/config.py::test_user_cache_path_is_overridable
lib/spack/spack/test/cmd/config.py::test_user_config_path_is_default_when_env_var_is_empty
lib/spack/spack/test/cmd/config.py::test_user_config_path_is_overridable
lib/spack/spack/test/cmd/config.py::test_write_empty_single_file_scope
lib/spack/spack/test/cmd/config.py::test_write_key_in_memory
lib/spack/spack/test/cmd/config.py::test_write_key_to_disk
lib/spack/spack/test/cmd/config.py::test_write_list_in_memory
lib/spack/spack/test/cmd/config.py::test_write_to_same_priority_file
lib/spack/spack/test/cmd/create.py::test_build_system_guesser_no_stage
lib/spack/spack/test/cmd/create.py::test_build_system_guesser_octave
lib/spack/spack/test/cmd/create.py::test_create_template
lib/spack/spack/test/cmd/create.py::test_create_template_bad_name
lib/spack/spack/test/cmd/create.py::test_get_name_error
lib/spack/spack/test/cmd/create.py::test_get_name_urls
lib/spack/spack/test/cmd/create.py::test_language_and_build_system_detection
lib/spack/spack/test/cmd/create.py::test_no_url
lib/spack/spack/test/cmd/debug.py::test_get_builtin_repo_info_bad_destination
lib/spack/spack/test/cmd/debug.py::test_get_builtin_repo_info_local_repo
lib/spack/spack/test/cmd/debug.py::test_get_builtin_repo_info_no_builtin
lib/spack/spack/test/cmd/debug.py::test_get_builtin_repo_info_unsupported_type
lib/spack/spack/test/cmd/debug.py::test_get_spack_repo_info_no_commit
lib/spack/spack/test/cmd/debug.py::test_report
lib/spack/spack/test/cmd/deconcretize.py::test_deconcretize_all
lib/spack/spack/test/cmd/deconcretize.py::test_deconcretize_all_dep
lib/spack/spack/test/cmd/deconcretize.py::test_deconcretize_all_root
lib/spack/spack/test/cmd/deconcretize.py::test_deconcretize_dep
lib/spack/spack/test/cmd/deconcretize.py::test_deconcretize_root
lib/spack/spack/test/cmd/dependencies.py::test_direct_dependencies
lib/spack/spack/test/cmd/dependencies.py::test_direct_installed_dependencies
lib/spack/spack/test/cmd/dependencies.py::test_transitive_installed_dependencies
lib/spack/spack/test/cmd/dependents.py::test_immediate_dependents
lib/spack/spack/test/cmd/dependents.py::test_immediate_installed_dependents
lib/spack/spack/test/cmd/dependents.py::test_transitive_dependents
lib/spack/spack/test/cmd/dependents.py::test_transitive_installed_dependents
lib/spack/spack/test/cmd/deprecate.py::test_concretize_deprecated
lib/spack/spack/test/cmd/deprecate.py::test_deprecate
lib/spack/spack/test/cmd/deprecate.py::test_deprecate_already_deprecated
lib/spack/spack/test/cmd/deprecate.py::test_deprecate_deprecator
lib/spack/spack/test/cmd/deprecate.py::test_deprecate_deps
lib/spack/spack/test/cmd/deprecate.py::test_deprecate_fails_no_such_package
lib/spack/spack/test/cmd/deprecate.py::test_deprecate_install
lib/spack/spack/test/cmd/deprecate.py::test_deprecate_spec_with_external_dependency
lib/spack/spack/test/cmd/deprecate.py::test_uninstall_deprecated
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_binary_cache_miss_with_keep_prefix_and_existing_prefix_restores_original
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_existing_prefix_failure_no_partial_prefix_created
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_existing_prefix_failure_restores_original_prefix
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_existing_prefix_success_cleans_up_old_prefix
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_failure_no_prefix_created
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_keep_prefix_false_removes_failed_install
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_keep_prefix_true_no_existing_prefix
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_keep_prefix_true_with_existing_prefix_keeps_failed_install
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_no_existing_prefix
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoter::test_no_existing_prefix_success
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoterFailureRecovery::test_garbage_move_failure_leaves_backup
lib/spack/spack/test/cmd/dev_build.py::TestPrefixPivoterFailureRecovery::test_restore_failure_leaves_backup
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_basics
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_before
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_before_until
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_can_parse_path_with_at_symbol
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_drop_in
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_env
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_env_dependency
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_env_version_mismatch
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_env_with_vars
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_fails_already_installed
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_fails_multiple_specs
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_fails_no_spec
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_fails_no_version
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_fails_nonexistent_package_name
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_multiple
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_rebuild_on_source_changes
lib/spack/spack/test/cmd/dev_build.py::test_dev_build_until
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_applies_changes
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_applies_changes_parents
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_applies_changes_path
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_applies_changes_spec_conflict
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_build_directory
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_canonicalize_path
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_canonicalize_path_no_args
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_no_args
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_no_clone
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_no_modify
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_no_path_no_clone
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_no_version
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_twice
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_update_path
lib/spack/spack/test/cmd/develop.py::TestDevelop::test_develop_update_spec
lib/spack/spack/test/cmd/develop.py::test_concretize_dev_path_with_at_symbol_in_env
lib/spack/spack/test/cmd/develop.py::test_develop_fails_with_multiple_concrete_versions
lib/spack/spack/test/cmd/develop.py::test_develop_full_git_repo
lib/spack/spack/test/cmd/develop.py::test_develop_with_devpath_staging
lib/spack/spack/test/cmd/develop.py::test_recursive
lib/spack/spack/test/cmd/diff.py::test_diff_cmd
lib/spack/spack/test/cmd/diff.py::test_diff_ignore
lib/spack/spack/test/cmd/diff.py::test_diff_runtimes
lib/spack/spack/test/cmd/diff.py::test_load_first
lib/spack/spack/test/cmd/edit.py::test_edit_files
lib/spack/spack/test/cmd/edit.py::test_edit_non_default_build_system
lib/spack/spack/test/cmd/edit.py::test_edit_packages
lib/spack/spack/test/cmd/extensions.py::test_extensions
lib/spack/spack/test/cmd/extensions.py::test_extensions_no_arguments
lib/spack/spack/test/cmd/extensions.py::test_extensions_raises_if_multiple_specs
lib/spack/spack/test/cmd/extensions.py::test_extensions_raises_if_not_extendable
lib/spack/spack/test/cmd/external.py::test_detect_virtuals
lib/spack/spack/test/cmd/external.py::test_failures_in_scanning_do_not_result_in_an_error
lib/spack/spack/test/cmd/external.py::test_find_external_cmd_not_buildable
lib/spack/spack/test/cmd/external.py::test_find_external_empty_default_manifest_dir
lib/spack/spack/test/cmd/external.py::test_find_external_manifest_failure
lib/spack/spack/test/cmd/external.py::test_find_external_manifest_with_bad_permissions
lib/spack/spack/test/cmd/external.py::test_find_external_merge
lib/spack/spack/test/cmd/external.py::test_find_external_no_manifest
lib/spack/spack/test/cmd/external.py::test_find_external_update_config
lib/spack/spack/test/cmd/external.py::test_get_executables
lib/spack/spack/test/cmd/external.py::test_list_detectable_packages
lib/spack/spack/test/cmd/external.py::test_new_entries_are_reported_correctly
lib/spack/spack/test/cmd/external.py::test_overriding_prefix
lib/spack/spack/test/cmd/external.py::test_package_selection
lib/spack/spack/test/cmd/external.py::test_use_tags_for_detection
lib/spack/spack/test/cmd/find.py::test_display_abstract_hash
lib/spack/spack/test/cmd/find.py::test_display_json
lib/spack/spack/test/cmd/find.py::test_display_json_deps
lib/spack/spack/test/cmd/find.py::test_environment_with_version_range_in_compiler_doesnt_fail
lib/spack/spack/test/cmd/find.py::test_find_based_on_commit_sha
lib/spack/spack/test/cmd/find.py::test_find_cli_output_format
lib/spack/spack/test/cmd/find.py::test_find_command_basic_usage
lib/spack/spack/test/cmd/find.py::test_find_concretized_not_installed
lib/spack/spack/test/cmd/find.py::test_find_env_with_groups
lib/spack/spack/test/cmd/find.py::test_find_format
lib/spack/spack/test/cmd/find.py::test_find_format_deps
lib/spack/spack/test/cmd/find.py::test_find_format_deps_paths
lib/spack/spack/test/cmd/find.py::test_find_json
lib/spack/spack/test/cmd/find.py::test_find_json_deps
lib/spack/spack/test/cmd/find.py::test_find_loaded
lib/spack/spack/test/cmd/find.py::test_find_no_sections
lib/spack/spack/test/cmd/find.py::test_find_not_found
lib/spack/spack/test/cmd/find.py::test_find_prefix_in_env
lib/spack/spack/test/cmd/find.py::test_find_specs_include_concrete_env
lib/spack/spack/test/cmd/find.py::test_find_specs_nested_include_concrete_env
lib/spack/spack/test/cmd/find.py::test_find_very_long
lib/spack/spack/test/cmd/find.py::test_namespaces_shown_correctly
lib/spack/spack/test/cmd/find.py::test_query_arguments
lib/spack/spack/test/cmd/find.py::test_tag1
lib/spack/spack/test/cmd/find.py::test_tag2
lib/spack/spack/test/cmd/find.py::test_tag2_tag3
lib/spack/spack/test/cmd/gc.py::test_gc_except_any_environments
lib/spack/spack/test/cmd/gc.py::test_gc_except_nonexisting_dir_env
lib/spack/spack/test/cmd/gc.py::test_gc_except_specific_dir_env
lib/spack/spack/test/cmd/gc.py::test_gc_except_specific_environments
lib/spack/spack/test/cmd/gc.py::test_gc_with_build_dependency
lib/spack/spack/test/cmd/gc.py::test_gc_with_build_dependency_in_environment
lib/spack/spack/test/cmd/gc.py::test_gc_with_constraints
lib/spack/spack/test/cmd/gc.py::test_gc_with_environment
lib/spack/spack/test/cmd/gc.py::test_gc_with_explicit_groups
lib/spack/spack/test/cmd/gc.py::test_gc_without_build_dependency
lib/spack/spack/test/cmd/gpg.py::test_find_gpg
lib/spack/spack/test/cmd/gpg.py::test_gpg
lib/spack/spack/test/cmd/gpg.py::test_no_gpg_in_path
lib/spack/spack/test/cmd/graph.py::test_ascii_graph_mpileaks
lib/spack/spack/test/cmd/graph.py::test_dynamic_dot_graph_mpileaks
lib/spack/spack/test/cmd/graph.py::test_graph_ascii
lib/spack/spack/test/cmd/graph.py::test_graph_deptype
lib/spack/spack/test/cmd/graph.py::test_graph_dot
lib/spack/spack/test/cmd/graph.py::test_graph_dot_hashes
lib/spack/spack/test/cmd/graph.py::test_graph_installed
lib/spack/spack/test/cmd/graph.py::test_graph_no_specs
lib/spack/spack/test/cmd/graph.py::test_graph_static
lib/spack/spack/test/cmd/help.py::test_help
lib/spack/spack/test/cmd/help.py::test_help_all
lib/spack/spack/test/cmd/help.py::test_help_spec
lib/spack/spack/test/cmd/help.py::test_help_subcommand
lib/spack/spack/test/cmd/help.py::test_reuse_after_help
lib/spack/spack/test/cmd/info.py::test_deprecated_option_warns
lib/spack/spack/test/cmd/info.py::test_info_failures
lib/spack/spack/test/cmd/info.py::test_info_fields
lib/spack/spack/test/cmd/info.py::test_info_noversion
lib/spack/spack/test/cmd/info.py::test_info_output
lib/spack/spack/test/cmd/info.py::test_is_externally_detectable
lib/spack/spack/test/cmd/info.py::test_package_suggestion
lib/spack/spack/test/cmd/init_py_functions.py::test_require_cmd_name
lib/spack/spack/test/cmd/init_py_functions.py::test_require_python_name
lib/spack/spack/test/cmd/init_py_functions.py::test_special_cases_concretization_matching_specs_from_env
lib/spack/spack/test/cmd/init_py_functions.py::test_special_cases_concretization_parse_specs
lib/spack/spack/test/cmd/install.py::test_build_error_output
lib/spack/spack/test/cmd/install.py::test_build_warning_output
lib/spack/spack/test/cmd/install.py::test_cache_only_fails
lib/spack/spack/test/cmd/install.py::test_cdash_auth_token
lib/spack/spack/test/cmd/install.py::test_cdash_buildstamp_param
lib/spack/spack/test/cmd/install.py::test_cdash_configure_warning
lib/spack/spack/test/cmd/install.py::test_cdash_install_from_spec_json
lib/spack/spack/test/cmd/install.py::test_cdash_report_concretization_error
lib/spack/spack/test/cmd/install.py::test_cdash_upload_build_error
lib/spack/spack/test/cmd/install.py::test_cdash_upload_clean_build
lib/spack/spack/test/cmd/install.py::test_cdash_upload_extra_params
lib/spack/spack/test/cmd/install.py::test_concurrent_packages_set_in_config
lib/spack/spack/test/cmd/install.py::test_dont_add_patches_to_installed_package
lib/spack/spack/test/cmd/install.py::test_empty_install_sanity_check_prefix
lib/spack/spack/test/cmd/install.py::test_extra_files_are_archived
lib/spack/spack/test/cmd/install.py::test_failing_build
lib/spack/spack/test/cmd/install.py::test_failing_overwrite_install_should_keep_previous_installation
lib/spack/spack/test/cmd/install.py::test_install_and_uninstall
lib/spack/spack/test/cmd/install.py::test_install_commit
lib/spack/spack/test/cmd/install.py::test_install_conflicts
lib/spack/spack/test/cmd/install.py::test_install_deps_then_package
lib/spack/spack/test/cmd/install.py::test_install_dirty_flag
lib/spack/spack/test/cmd/install.py::test_install_empty_env
lib/spack/spack/test/cmd/install.py::test_install_env_variables
lib/spack/spack/test/cmd/install.py::test_install_env_with_tests_all
lib/spack/spack/test/cmd/install.py::test_install_env_with_tests_root
lib/spack/spack/test/cmd/install.py::test_install_error
lib/spack/spack/test/cmd/install.py::test_install_fails_no_args
lib/spack/spack/test/cmd/install.py::test_install_fails_no_args_suggests_env_activation
lib/spack/spack/test/cmd/install.py::test_install_from_binary_with_missing_patch_succeeds
lib/spack/spack/test/cmd/install.py::test_install_help_cdash
lib/spack/spack/test/cmd/install.py::test_install_help_does_not_show_cdash_options
lib/spack/spack/test/cmd/install.py::test_install_invalid_spec
lib/spack/spack/test/cmd/install.py::test_install_mix_cli_and_files
lib/spack/spack/test/cmd/install.py::test_install_no_add_in_env
lib/spack/spack/test/cmd/install.py::test_install_only_dependencies
lib/spack/spack/test/cmd/install.py::test_install_only_dependencies_in_env
lib/spack/spack/test/cmd/install.py::test_install_only_dependencies_of_all_in_env
lib/spack/spack/test/cmd/install.py::test_install_only_package
lib/spack/spack/test/cmd/install.py::test_install_output_on_build_error
lib/spack/spack/test/cmd/install.py::test_install_output_on_python_error
lib/spack/spack/test/cmd/install.py::test_install_overwrite
lib/spack/spack/test/cmd/install.py::test_install_overwrite_multiple
lib/spack/spack/test/cmd/install.py::test_install_overwrite_not_installed
lib/spack/spack/test/cmd/install.py::test_install_package_already_installed
lib/spack/spack/test/cmd/install.py::test_install_package_and_dependency
lib/spack/spack/test/cmd/install.py::test_install_prefix_collision_fails
lib/spack/spack/test/cmd/install.py::test_install_runtests_all
lib/spack/spack/test/cmd/install.py::test_install_runtests_notests
lib/spack/spack/test/cmd/install.py::test_install_runtests_root
lib/spack/spack/test/cmd/install.py::test_install_splice_root_from_binary
lib/spack/spack/test/cmd/install.py::test_install_spliced
lib/spack/spack/test/cmd/install.py::test_install_spliced_build_spec_installed
lib/spack/spack/test/cmd/install.py::test_install_times
lib/spack/spack/test/cmd/install.py::test_install_use_buildcache
lib/spack/spack/test/cmd/install.py::test_install_with_source
lib/spack/spack/test/cmd/install.py::test_installation_fail_tests
lib/spack/spack/test/cmd/install.py::test_installed_dependency_request_conflicts
lib/spack/spack/test/cmd/install.py::test_installed_upstream
lib/spack/spack/test/cmd/install.py::test_installed_upstream_external
lib/spack/spack/test/cmd/install.py::test_invalid_concurrent_packages_flag
lib/spack/spack/test/cmd/install.py::test_junit_output_with_errors
lib/spack/spack/test/cmd/install.py::test_junit_output_with_failures
lib/spack/spack/test/cmd/install.py::test_log_files_preserved_on_error
lib/spack/spack/test/cmd/install.py::test_log_install_with_build_files
lib/spack/spack/test/cmd/install.py::test_log_install_without_build_files
lib/spack/spack/test/cmd/install.py::test_nosource_bundle_pkg_install
lib/spack/spack/test/cmd/install.py::test_nosource_pkg_install
lib/spack/spack/test/cmd/install.py::test_nosource_pkg_install_post_install
lib/spack/spack/test/cmd/install.py::test_package_output
lib/spack/spack/test/cmd/install.py::test_padded_install_runtests_root
lib/spack/spack/test/cmd/install.py::test_partial_install_delete_prefix_and_stage
lib/spack/spack/test/cmd/install.py::test_partial_install_keep_prefix
lib/spack/spack/test/cmd/install.py::test_pkg_attributes
lib/spack/spack/test/cmd/install.py::test_pkg_build_paths
lib/spack/spack/test/cmd/install.py::test_pkg_install_paths
lib/spack/spack/test/cmd/install.py::test_report_filename_for_cdash
lib/spack/spack/test/cmd/install.py::test_second_install_no_overwrite_first
lib/spack/spack/test/cmd/install.py::test_setting_concurrent_packages_flag
lib/spack/spack/test/cmd/install.py::test_show_log_on_error
lib/spack/spack/test/cmd/install.py::test_store
lib/spack/spack/test/cmd/install.py::test_unconcretized_install
lib/spack/spack/test/cmd/install.py::test_uninstall_by_spec_errors
lib/spack/spack/test/cmd/install.py::test_uninstall_non_existing_package
lib/spack/spack/test/cmd/is_git_repo.py::TestRepo::test_all_package_names
lib/spack/spack/test/cmd/is_git_repo.py::TestRepo::test_creation
lib/spack/spack/test/cmd/is_git_repo.py::TestRepo::test_extensions
lib/spack/spack/test/cmd/is_git_repo.py::TestRepo::test_get
lib/spack/spack/test/cmd/is_git_repo.py::TestRepo::test_is_virtual
lib/spack/spack/test/cmd/is_git_repo.py::TestRepo::test_packages_with_tags
lib/spack/spack/test/cmd/is_git_repo.py::TestRepo::test_providers
lib/spack/spack/test/cmd/is_git_repo.py::TestRepo::test_real_name
lib/spack/spack/test/cmd/is_git_repo.py::TestRepoPath::test_creation_from_string
lib/spack/spack/test/cmd/is_git_repo.py::TestRepoPath::test_get_repo
lib/spack/spack/test/cmd/is_git_repo.py::test_absolute_import_spack_packages_as_python_modules
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_auto_name_from_namespace
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_computed_key_already_exists
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_destination_with_local_path
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_git_url_basic_success
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_git_url_detection_edge_cases
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_git_url_with_custom_destination
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_git_url_with_destination
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_git_url_with_paths
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_git_url_with_single_repo_path_new
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_local_path_success
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_multiple_repos_no_name_error
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_name_already_exists
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_no_usable_repositories_error
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_partial_repo_construction_warning
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_prepends_instead_of_appends
lib/spack/spack/test/cmd/is_git_repo.py::test_add_repo_ssh_git_url_detection
lib/spack/spack/test/cmd/is_git_repo.py::test_all_package_names_is_cached_correctly
lib/spack/spack/test/cmd/is_git_repo.py::test_create_add_list_remove
lib/spack/spack/test/cmd/is_git_repo.py::test_env_activate_with_unmaterialized_path
lib/spack/spack/test/cmd/is_git_repo.py::test_env_repo_path_vars_substitution
lib/spack/spack/test/cmd/is_git_repo.py::test_environment_activation_updates_repo_path
lib/spack/spack/test/cmd/is_git_repo.py::test_get_all_mock_packages
lib/spack/spack/test/cmd/is_git_repo.py::test_help_option
lib/spack/spack/test/cmd/is_git_repo.py::test_is_git_repo_in_worktree
lib/spack/spack/test/cmd/is_git_repo.py::test_is_package_module
lib/spack/spack/test/cmd/is_git_repo.py::test_migrate_diff
lib/spack/spack/test/cmd/is_git_repo.py::test_mock_builtin_repo
lib/spack/spack/test/cmd/is_git_repo.py::test_mod_to_pkg_name_and_reverse
lib/spack/spack/test/cmd/is_git_repo.py::test_namespace_is_optional_in_v2
lib/spack/spack/test/cmd/is_git_repo.py::test_parse_config_descriptor_git_1
lib/spack/spack/test/cmd/is_git_repo.py::test_parse_config_descriptor_git_2
lib/spack/spack/test/cmd/is_git_repo.py::test_parse_config_descriptor_local
lib/spack/spack/test/cmd/is_git_repo.py::test_parse_config_descriptor_no_git
lib/spack/spack/test/cmd/is_git_repo.py::test_parse_package_api_version
lib/spack/spack/test/cmd/is_git_repo.py::test_path_computation_with_names
lib/spack/spack/test/cmd/is_git_repo.py::test_relative_import_spack_packages_as_python_modules
lib/spack/spack/test/cmd/is_git_repo.py::test_remote_descriptor_no_git
lib/spack/spack/test/cmd/is_git_repo.py::test_remote_descriptor_update_no_git
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_descriptors_construct
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_descriptors_update
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_descriptors_update_invalid
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_dump_virtuals
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_getpkg
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_invisibles
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_last_mtime
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_list_format_flags
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_list_json_output
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_migrate
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_multi_getpkg
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_multi_getpkgclass
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_package_api_version
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_path_handles_package_removal
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_pkg_with_unknown_namespace
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_remove_by_scope
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_set_does_not_work_on_local_path
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_set_git_config
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_set_nonexistent_repo
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_show_version_updates_excludes_deprecated
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_show_version_updates_excludes_git_versions
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_show_version_updates_excludes_manual_packages
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_show_version_updates_excludes_non_redistributable
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_show_version_updates_no_changes
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_show_version_updates_success
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_unknown_pkg
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_update
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_update_invalid_flags
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_update_successful_flags
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_use_bad_import
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_use_bad_syntax
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_v2_invalid_module_name
lib/spack/spack/test/cmd/is_git_repo.py::test_repo_v2_module_and_class_to_package_name
lib/spack/spack/test/cmd/is_git_repo.py::test_repository_construction_doesnt_use_globals
lib/spack/spack/test/cmd/is_git_repo.py::test_spack_is_git_repo_nongit
lib/spack/spack/test/cmd/is_git_repo.py::test_subdir_in_v2
lib/spack/spack/test/cmd/is_git_repo.py::test_unknownpkgerror_match_fails
lib/spack/spack/test/cmd/is_git_repo.py::test_unknownpkgerror_str_repo
lib/spack/spack/test/cmd/is_git_repo.py::test_use_repositories_and_import
lib/spack/spack/test/cmd/is_git_repo.py::test_use_repositories_doesnt_change_class
lib/spack/spack/test/cmd/is_git_repo.py::test_use_repositories_with_unmaterialized_path
lib/spack/spack/test/cmd/is_git_repo.py::test_valid_module_name_v2
lib/spack/spack/test/cmd/isolate.py::test_isolate_added_config
lib/spack/spack/test/cmd/isolate.py::test_isolate_overwrite_different_dir
lib/spack/spack/test/cmd/isolate.py::test_isolate_overwrite_same_dir
lib/spack/spack/test/cmd/isolate.py::test_isolate_smoke_test
lib/spack/spack/test/cmd/isolate.py::test_isolate_undo
lib/spack/spack/test/cmd/isolate.py::test_self_isolate
lib/spack/spack/test/cmd/isolate.py::test_self_isolate_overwrite
lib/spack/spack/test/cmd/license.py::test_list_files
lib/spack/spack/test/cmd/license.py::test_verify
lib/spack/spack/test/cmd/list.py::test_list
lib/spack/spack/test/cmd/list.py::test_list_cli_output_format
lib/spack/spack/test/cmd/list.py::test_list_count
lib/spack/spack/test/cmd/list.py::test_list_filter
lib/spack/spack/test/cmd/list.py::test_list_format_html
lib/spack/spack/test/cmd/list.py::test_list_format_local_repo
lib/spack/spack/test/cmd/list.py::test_list_format_name_only
lib/spack/spack/test/cmd/list.py::test_list_format_non_github_repo
lib/spack/spack/test/cmd/list.py::test_list_format_version_json
lib/spack/spack/test/cmd/list.py::test_list_github_url_fails
lib/spack/spack/test/cmd/list.py::test_list_repos
lib/spack/spack/test/cmd/list.py::test_list_search_description
lib/spack/spack/test/cmd/list.py::test_list_tags
lib/spack/spack/test/cmd/list.py::test_list_update
lib/spack/spack/test/cmd/list.py::test_list_url_schemes
lib/spack/spack/test/cmd/load.py::test_load_fails_no_shell
lib/spack/spack/test/cmd/load.py::test_load_first
lib/spack/spack/test/cmd/load.py::test_load_includes_run_env
lib/spack/spack/test/cmd/load.py::test_load_recursive
lib/spack/spack/test/cmd/load.py::test_manpath_trailing_colon
lib/spack/spack/test/cmd/load.py::test_unload
lib/spack/spack/test/cmd/load.py::test_unload_fails_no_shell
lib/spack/spack/test/cmd/location.py::test_location_active_view
lib/spack/spack/test/cmd/location.py::test_location_build_dir
lib/spack/spack/test/cmd/location.py::test_location_cmd_error
lib/spack/spack/test/cmd/location.py::test_location_env_exists
lib/spack/spack/test/cmd/location.py::test_location_env_missing
lib/spack/spack/test/cmd/location.py::test_location_first
lib/spack/spack/test/cmd/location.py::test_location_install_dir
lib/spack/spack/test/cmd/location.py::test_location_no_active_view
lib/spack/spack/test/cmd/location.py::test_location_package_dir
lib/spack/spack/test/cmd/location.py::test_location_paths_options
lib/spack/spack/test/cmd/location.py::test_location_source_dir
lib/spack/spack/test/cmd/location.py::test_location_source_dir_missing
lib/spack/spack/test/cmd/location.py::test_location_spec_errors
lib/spack/spack/test/cmd/location.py::test_location_specified_repo
lib/spack/spack/test/cmd/location.py::test_location_stage_dir
lib/spack/spack/test/cmd/location.py::test_location_stages
lib/spack/spack/test/cmd/location.py::test_location_view_exists
lib/spack/spack/test/cmd/location.py::test_location_view_missing
lib/spack/spack/test/cmd/location.py::test_location_with_active_env
lib/spack/spack/test/cmd/logs.py::test_dump_logs
lib/spack/spack/test/cmd/logs.py::test_logs_cmd_errors
lib/spack/spack/test/cmd/maintainers.py::test_all
lib/spack/spack/test/cmd/maintainers.py::test_all_by_user
lib/spack/spack/test/cmd/maintainers.py::test_maintained
lib/spack/spack/test/cmd/maintainers.py::test_maintainers_list_by_user
lib/spack/spack/test/cmd/maintainers.py::test_maintainers_list_fails
lib/spack/spack/test/cmd/maintainers.py::test_maintainers_list_packages
lib/spack/spack/test/cmd/maintainers.py::test_mutex_args_fail
lib/spack/spack/test/cmd/maintainers.py::test_no_args
lib/spack/spack/test/cmd/maintainers.py::test_no_args_by_user
lib/spack/spack/test/cmd/maintainers.py::test_unmaintained
lib/spack/spack/test/cmd/mark.py::test_mark_all_explicit
lib/spack/spack/test/cmd/mark.py::test_mark_all_implicit
lib/spack/spack/test/cmd/mark.py::test_mark_all_implicit_then_explicit
lib/spack/spack/test/cmd/mark.py::test_mark_mode_required
lib/spack/spack/test/cmd/mark.py::test_mark_one_explicit
lib/spack/spack/test/cmd/mark.py::test_mark_one_implicit
lib/spack/spack/test/cmd/mark.py::test_mark_spec_required
lib/spack/spack/test/cmd/mirror.py::TestMirrorCreate::test_all_specs_with_all_versions_dont_concretize
lib/spack/spack/test/cmd/mirror.py::TestMirrorCreate::test_error_conditions
lib/spack/spack/test/cmd/mirror.py::TestMirrorCreate::test_exclude_specs_from_user
lib/spack/spack/test/cmd/mirror.py::TestMirrorCreate::test_specs_from_cli_are_the_same_as_from_file
lib/spack/spack/test/cmd/mirror.py::TestMirrorCreate::test_versions_per_spec_produces_concrete_specs
lib/spack/spack/test/cmd/mirror.py::test_all_mirror
lib/spack/spack/test/cmd/mirror.py::test_cache_store_atomic_on_failure
lib/spack/spack/test/cmd/mirror.py::test_exclude_file
lib/spack/spack/test/cmd/mirror.py::test_exclude_specs
lib/spack/spack/test/cmd/mirror.py::test_exclude_specs_public_mirror
lib/spack/spack/test/cmd/mirror.py::test_get_all_versions
lib/spack/spack/test/cmd/mirror.py::test_git_mirror
lib/spack/spack/test/cmd/mirror.py::test_git_provenance_relative_to_mirror
lib/spack/spack/test/cmd/mirror.py::test_git_provenance_url_fails_mirror_resolves_commit
lib/spack/spack/test/cmd/mirror.py::test_hg_mirror
lib/spack/spack/test/cmd/mirror.py::test_invalid_yaml_mirror
lib/spack/spack/test/cmd/mirror.py::test_mirror_add_set_autopush
lib/spack/spack/test/cmd/mirror.py::test_mirror_add_set_signed
lib/spack/spack/test/cmd/mirror.py::test_mirror_archive_paths_no_version
lib/spack/spack/test/cmd/mirror.py::test_mirror_cli_parallel_args
lib/spack/spack/test/cmd/mirror.py::test_mirror_crud
lib/spack/spack/test/cmd/mirror.py::test_mirror_destroy
lib/spack/spack/test/cmd/mirror.py::test_mirror_from_env
lib/spack/spack/test/cmd/mirror.py::test_mirror_from_env_parallel
lib/spack/spack/test/cmd/mirror.py::test_mirror_layout_make_alias
lib/spack/spack/test/cmd/mirror.py::test_mirror_matches
lib/spack/spack/test/cmd/mirror.py::test_mirror_name_collision
lib/spack/spack/test/cmd/mirror.py::test_mirror_name_or_url_dir_parsing
lib/spack/spack/test/cmd/mirror.py::test_mirror_nonexisting
lib/spack/spack/test/cmd/mirror.py::test_mirror_remove_by_scope
lib/spack/spack/test/cmd/mirror.py::test_mirror_set_2
lib/spack/spack/test/cmd/mirror.py::test_mirror_skip_placeholder_pkg
lib/spack/spack/test/cmd/mirror.py::test_mirror_skip_unstable
lib/spack/spack/test/cmd/mirror.py::test_mirror_spec_from_env
lib/spack/spack/test/cmd/mirror.py::test_mirror_stats_merge
lib/spack/spack/test/cmd/mirror.py::test_mirror_type
lib/spack/spack/test/cmd/mirror.py::test_mirror_with_url_patches
lib/spack/spack/test/cmd/mirror.py::test_regression_8083
lib/spack/spack/test/cmd/mirror.py::test_roundtrip_mirror
lib/spack/spack/test/cmd/mirror.py::test_spec_matches_filters
lib/spack/spack/test/cmd/mirror.py::test_svn_mirror
lib/spack/spack/test/cmd/mirror.py::test_update_1
lib/spack/spack/test/cmd/mirror.py::test_update_2
lib/spack/spack/test/cmd/mirror.py::test_update_3
lib/spack/spack/test/cmd/mirror.py::test_update_4
lib/spack/spack/test/cmd/mirror.py::test_update_connection_params
lib/spack/spack/test/cmd/mirror.py::test_url_mirror
lib/spack/spack/test/cmd/module.py::test_exit_with_failure
lib/spack/spack/test/cmd/module.py::test_find
lib/spack/spack/test/cmd/module.py::test_find_fails_on_multiple_matches
lib/spack/spack/test/cmd/module.py::test_find_fails_on_non_existing_packages
lib/spack/spack/test/cmd/module.py::test_find_recursive
lib/spack/spack/test/cmd/module.py::test_find_recursive_excluded
lib/spack/spack/test/cmd/module.py::test_loads_recursive_excluded
lib/spack/spack/test/cmd/module.py::test_remove_and_add
lib/spack/spack/test/cmd/module.py::test_setdefault_command
lib/spack/spack/test/cmd/pkg.py::test_group_arguments
lib/spack/spack/test/cmd/pkg.py::test_pkg_add
lib/spack/spack/test/cmd/pkg.py::test_pkg_added
lib/spack/spack/test/cmd/pkg.py::test_pkg_canonical_source
lib/spack/spack/test/cmd/pkg.py::test_pkg_changed
lib/spack/spack/test/cmd/pkg.py::test_pkg_diff
lib/spack/spack/test/cmd/pkg.py::test_pkg_fails_when_not_git_repo
lib/spack/spack/test/cmd/pkg.py::test_pkg_grep
lib/spack/spack/test/cmd/pkg.py::test_pkg_hash
lib/spack/spack/test/cmd/pkg.py::test_pkg_list
lib/spack/spack/test/cmd/pkg.py::test_pkg_removed
lib/spack/spack/test/cmd/pkg.py::test_pkg_source
lib/spack/spack/test/cmd/pkg.py::test_pkg_source_requires_one_arg
lib/spack/spack/test/cmd/print_shell_vars.py::test_print_shell_vars_csh
lib/spack/spack/test/cmd/print_shell_vars.py::test_print_shell_vars_sh
lib/spack/spack/test/cmd/providers.py::test_it_just_fails
lib/spack/spack/test/cmd/providers.py::test_it_just_runs
lib/spack/spack/test/cmd/providers.py::test_provider_lists
lib/spack/spack/test/cmd/python.py::test_python
lib/spack/spack/test/cmd/python.py::test_python_interpreter_path
lib/spack/spack/test/cmd/python.py::test_python_raises
lib/spack/spack/test/cmd/python.py::test_python_version
lib/spack/spack/test/cmd/python.py::test_python_with_module
lib/spack/spack/test/cmd/reindex.py::test_reindex_basic
lib/spack/spack/test/cmd/reindex.py::test_reindex_db_deleted
lib/spack/spack/test/cmd/reindex.py::test_reindex_with_deprecated_packages
lib/spack/spack/test/cmd/resource.py::test_resource_list
lib/spack/spack/test/cmd/resource.py::test_resource_list_only_hashes
lib/spack/spack/test/cmd/resource.py::test_resource_show
lib/spack/spack/test/cmd/spec.py::test_buildcache_status_fn_installed_not_overridden
lib/spack/spack/test/cmd/spec.py::test_buildcache_status_fn_marks_absent_spec
lib/spack/spack/test/cmd/spec.py::test_env_aware_spec
lib/spack/spack/test/cmd/spec.py::test_spec
lib/spack/spack/test/cmd/spec.py::test_spec_concretizer_args
lib/spack/spack/test/cmd/spec.py::test_spec_deptypes_edges
lib/spack/spack/test/cmd/spec.py::test_spec_deptypes_nodes
lib/spack/spack/test/cmd/spec.py::test_spec_format
lib/spack/spack/test/cmd/spec.py::test_spec_json
lib/spack/spack/test/cmd/spec.py::test_spec_parse_cflags_quoting
lib/spack/spack/test/cmd/spec.py::test_spec_parse_dependency_variant_value
lib/spack/spack/test/cmd/spec.py::test_spec_parse_error
lib/spack/spack/test/cmd/spec.py::test_spec_returncode
lib/spack/spack/test/cmd/spec.py::test_spec_unification_from_cli
lib/spack/spack/test/cmd/spec.py::test_spec_version_assigned_git_ref_as_version
lib/spack/spack/test/cmd/spec.py::test_spec_yaml
lib/spack/spack/test/cmd/stage.py::TestDevelopStage::test_develop_stage
lib/spack/spack/test/cmd/stage.py::TestDevelopStage::test_develop_stage_without_reference_link
lib/spack/spack/test/cmd/stage.py::TestDevelopStage::test_sanity_check_develop_path
lib/spack/spack/test/cmd/stage.py::TestStage::test_composite_stage_with_expand_resource
lib/spack/spack/test/cmd/stage.py::TestStage::test_composite_stage_with_expand_resource_default_placement
lib/spack/spack/test/cmd/stage.py::TestStage::test_composite_stage_with_noexpand_resource
lib/spack/spack/test/cmd/stage.py::TestStage::test_create_stage_root
lib/spack/spack/test/cmd/stage.py::TestStage::test_ensure_one_stage_entry
lib/spack/spack/test/cmd/stage.py::TestStage::test_expand_archive
lib/spack/spack/test/cmd/stage.py::TestStage::test_expand_archive_extra_expand
lib/spack/spack/test/cmd/stage.py::TestStage::test_fetch
lib/spack/spack/test/cmd/stage.py::TestStage::test_first_accessible_path
lib/spack/spack/test/cmd/stage.py::TestStage::test_get_stage_root_bad_path
lib/spack/spack/test/cmd/stage.py::TestStage::test_keep_exceptions
lib/spack/spack/test/cmd/stage.py::TestStage::test_keep_without_exceptions
lib/spack/spack/test/cmd/stage.py::TestStage::test_no_keep_with_exceptions
lib/spack/spack/test/cmd/stage.py::TestStage::test_no_keep_without_exceptions
lib/spack/spack/test/cmd/stage.py::TestStage::test_no_search_if_default_succeeds
lib/spack/spack/test/cmd/stage.py::TestStage::test_no_search_mirror_only
lib/spack/spack/test/cmd/stage.py::TestStage::test_noexpand_stage_file
lib/spack/spack/test/cmd/stage.py::TestStage::test_resolve_paths
lib/spack/spack/test/cmd/stage.py::TestStage::test_restage
lib/spack/spack/test/cmd/stage.py::TestStage::test_search_if_default_fails
lib/spack/spack/test/cmd/stage.py::TestStage::test_setup_and_destroy_name_with_tmp
lib/spack/spack/test/cmd/stage.py::TestStage::test_setup_and_destroy_name_without_tmp
lib/spack/spack/test/cmd/stage.py::TestStage::test_setup_and_destroy_no_name_with_tmp
lib/spack/spack/test/cmd/stage.py::TestStage::test_setup_and_destroy_no_name_without_tmp
lib/spack/spack/test/cmd/stage.py::TestStage::test_source_path_available
lib/spack/spack/test/cmd/stage.py::TestStage::test_stage_constructor_no_fetcher
lib/spack/spack/test/cmd/stage.py::TestStage::test_stage_constructor_with_path
lib/spack/spack/test/cmd/stage.py::TestStage::test_stage_purge
lib/spack/spack/test/cmd/stage.py::test_cannot_access
lib/spack/spack/test/cmd/stage.py::test_concretizer_arguments
lib/spack/spack/test/cmd/stage.py::test_override_keep_in_composite_stage
lib/spack/spack/test/cmd/stage.py::test_stage_create_replace_path
lib/spack/spack/test/cmd/stage.py::test_stage_full_env
lib/spack/spack/test/cmd/stage.py::test_stage_path
lib/spack/spack/test/cmd/stage.py::test_stage_path_errors_multiple_specs
lib/spack/spack/test/cmd/stage.py::test_stage_spec
lib/spack/spack/test/cmd/stage.py::test_stage_spec_filters
lib/spack/spack/test/cmd/stage.py::test_stage_with_env_inside_env
lib/spack/spack/test/cmd/stage.py::test_stage_with_env_outside_env
lib/spack/spack/test/cmd/style.py::test_bad_root
lib/spack/spack/test/cmd/style.py::test_case_sensitive_imports
lib/spack/spack/test/cmd/style.py::test_changed_files_all_files
lib/spack/spack/test/cmd/style.py::test_changed_files_from_git_rev_base
lib/spack/spack/test/cmd/style.py::test_changed_no_base
lib/spack/spack/test/cmd/style.py::test_external_root
lib/spack/spack/test/cmd/style.py::test_fix_style
lib/spack/spack/test/cmd/style.py::test_pkg_imports
lib/spack/spack/test/cmd/style.py::test_run_import_check
lib/spack/spack/test/cmd/style.py::test_run_import_check_syntax_error_and_missing
lib/spack/spack/test/cmd/style.py::test_skip_tools
lib/spack/spack/test/cmd/style.py::test_style
lib/spack/spack/test/cmd/style.py::test_style_with_errors
lib/spack/spack/test/cmd/style.py::test_style_with_ruff_format
lib/spack/spack/test/cmd/tags.py::test_tags_all_mock_tag_packages
lib/spack/spack/test/cmd/tags.py::test_tags_all_mock_tags
lib/spack/spack/test/cmd/tags.py::test_tags_bad_options
lib/spack/spack/test/cmd/tags.py::test_tags_installed
lib/spack/spack/test/cmd/tags.py::test_tags_invalid_tag
lib/spack/spack/test/cmd/tags.py::test_tags_no_installed
lib/spack/spack/test/cmd/tags.py::test_tags_no_tags
lib/spack/spack/test/cmd/test.py::test_cdash_output_test_error
lib/spack/spack/test/cmd/test.py::test_cdash_upload_clean_test
lib/spack/spack/test/cmd/test.py::test_junit_output_with_failures
lib/spack/spack/test/cmd/test.py::test_read_old_results
lib/spack/spack/test/cmd/test.py::test_report_filename_for_cdash
lib/spack/spack/test/cmd/test.py::test_test_dirty_flag
lib/spack/spack/test/cmd/test.py::test_test_dup_alias
lib/spack/spack/test/cmd/test.py::test_test_help_cdash
lib/spack/spack/test/cmd/test.py::test_test_help_does_not_show_cdash_options
lib/spack/spack/test/cmd/test.py::test_test_list
lib/spack/spack/test/cmd/test.py::test_test_list_all
lib/spack/spack/test/cmd/test.py::test_test_output
lib/spack/spack/test/cmd/test.py::test_test_output_fails
lib/spack/spack/test/cmd/test.py::test_test_output_multiple_specs
lib/spack/spack/test/cmd/test.py::test_test_package_not_installed
lib/spack/spack/test/cmd/test.py::test_test_results_none
lib/spack/spack/test/cmd/test.py::test_test_results_status
lib/spack/spack/test/cmd/undevelop.py::test_undevelop
lib/spack/spack/test/cmd/undevelop.py::test_undevelop_all
lib/spack/spack/test/cmd/undevelop.py::test_undevelop_nonexistent
lib/spack/spack/test/cmd/uninstall.py::TestUninstallFromEnv::test_basic_env_sanity
lib/spack/spack/test/cmd/uninstall.py::TestUninstallFromEnv::test_uninstall_dependency_shared_between_envs_fail
lib/spack/spack/test/cmd/uninstall.py::TestUninstallFromEnv::test_uninstall_force_and_remove_dependency_shared_between_envs
lib/spack/spack/test/cmd/uninstall.py::TestUninstallFromEnv::test_uninstall_force_dependency_shared_between_envs
lib/spack/spack/test/cmd/uninstall.py::TestUninstallFromEnv::test_uninstall_keep_dependents_dependency_shared_between_envs
lib/spack/spack/test/cmd/uninstall.py::TestUninstallFromEnv::test_uninstall_remove_dependency_shared_between_envs
lib/spack/spack/test/cmd/uninstall.py::test_correct_installed_dependents
lib/spack/spack/test/cmd/uninstall.py::test_force_uninstall_and_reinstall_by_hash
lib/spack/spack/test/cmd/uninstall.py::test_force_uninstall_spec_with_ref_count_not_zero
lib/spack/spack/test/cmd/uninstall.py::test_in_memory_consistency_when_uninstalling
lib/spack/spack/test/cmd/uninstall.py::test_installed_dependents
lib/spack/spack/test/cmd/uninstall.py::test_multiple_matches
lib/spack/spack/test/cmd/uninstall.py::test_recursive_uninstall
lib/spack/spack/test/cmd/uninstall.py::test_uninstall_spec_with_multiple_roots
lib/spack/spack/test/cmd/url.py::test_allowed_archive
lib/spack/spack/test/cmd/url.py::test_get_bad_extension
lib/spack/spack/test/cmd/url.py::test_get_extension
lib/spack/spack/test/cmd/url.py::test_name_parsed_correctly
lib/spack/spack/test/cmd/url.py::test_strip_compression_extension
lib/spack/spack/test/cmd/url.py::test_url_list
lib/spack/spack/test/cmd/url.py::test_url_parse
lib/spack/spack/test/cmd/url.py::test_url_stats
lib/spack/spack/test/cmd/url.py::test_url_strip_version_suffixes
lib/spack/spack/test/cmd/url.py::test_url_summary
lib/spack/spack/test/cmd/url.py::test_url_with_no_version_fails
lib/spack/spack/test/cmd/url.py::test_version_parsed_correctly
lib/spack/spack/test/cmd/verify.py::test_libraries
lib/spack/spack/test/cmd/verify.py::test_single_file_verify_cmd
lib/spack/spack/test/cmd/verify.py::test_single_spec_verify_cmd
lib/spack/spack/test/cmd/verify.py::test_verify_versions
lib/spack/spack/test/cmd/versions.py::test_alpha
lib/spack/spack/test/cmd/versions.py::test_alpha_beta
lib/spack/spack/test/cmd/versions.py::test_alpha_with_dots
lib/spack/spack/test/cmd/versions.py::test_basic_version_satisfaction
lib/spack/spack/test/cmd/versions.py::test_basic_version_satisfaction_in_lists
lib/spack/spack/test/cmd/versions.py::test_boolness_of_versions
lib/spack/spack/test/cmd/versions.py::test_canonicalize_list
lib/spack/spack/test/cmd/versions.py::test_close_numbers
lib/spack/spack/test/cmd/versions.py::test_contains
lib/spack/spack/test/cmd/versions.py::test_date_stamps
lib/spack/spack/test/cmd/versions.py::test_develop
lib/spack/spack/test/cmd/versions.py::test_dotted_numeric_string
lib/spack/spack/test/cmd/versions.py::test_double_alpha
lib/spack/spack/test/cmd/versions.py::test_empty_version_range_raises
lib/spack/spack/test/cmd/versions.py::test_formatted_strings
lib/spack/spack/test/cmd/versions.py::test_get_item
lib/spack/spack/test/cmd/versions.py::test_git_branch_with_slash
lib/spack/spack/test/cmd/versions.py::test_git_hash_comparisons
lib/spack/spack/test/cmd/versions.py::test_git_ref_can_be_assigned_a_version
lib/spack/spack/test/cmd/versions.py::test_git_ref_comparisons
lib/spack/spack/test/cmd/versions.py::test_git_version_accessors
lib/spack/spack/test/cmd/versions.py::test_git_version_repo_attached_after_serialization
lib/spack/spack/test/cmd/versions.py::test_git_versions_store_ref_requests
lib/spack/spack/test/cmd/versions.py::test_git_versions_without_explicit_reference
lib/spack/spack/test/cmd/versions.py::test_in_list
lib/spack/spack/test/cmd/versions.py::test_inclusion_upperbound
lib/spack/spack/test/cmd/versions.py::test_intersect_with_containment
lib/spack/spack/test/cmd/versions.py::test_intersection
lib/spack/spack/test/cmd/versions.py::test_invalid_versions
lib/spack/spack/test/cmd/versions.py::test_isdevelop
lib/spack/spack/test/cmd/versions.py::test_len
lib/spack/spack/test/cmd/versions.py::test_list_highest
lib/spack/spack/test/cmd/versions.py::test_lists_overlap
lib/spack/spack/test/cmd/versions.py::test_new_versions_only
lib/spack/spack/test/cmd/versions.py::test_no_unchecksummed_versions
lib/spack/spack/test/cmd/versions.py::test_no_versions_no_url
lib/spack/spack/test/cmd/versions.py::test_num_alpha_with_no_separator
lib/spack/spack/test/cmd/versions.py::test_nums_and_patch
lib/spack/spack/test/cmd/versions.py::test_overlap_with_containment
lib/spack/spack/test/cmd/versions.py::test_padded_numbers
lib/spack/spack/test/cmd/versions.py::test_patch
lib/spack/spack/test/cmd/versions.py::test_prereleases
lib/spack/spack/test/cmd/versions.py::test_ranges_overlap
lib/spack/spack/test/cmd/versions.py::test_remote_versions
lib/spack/spack/test/cmd/versions.py::test_remote_versions_only
lib/spack/spack/test/cmd/versions.py::test_repr_and_str
lib/spack/spack/test/cmd/versions.py::test_resolved_git_version_is_shown_in_str
lib/spack/spack/test/cmd/versions.py::test_rpm_oddities
lib/spack/spack/test/cmd/versions.py::test_safe_versions
lib/spack/spack/test/cmd/versions.py::test_satisfaction_with_lists
lib/spack/spack/test/cmd/versions.py::test_semver_regex
lib/spack/spack/test/cmd/versions.py::test_str_and_hash_version_range
lib/spack/spack/test/cmd/versions.py::test_string_prefix
lib/spack/spack/test/cmd/versions.py::test_stringify_version
lib/spack/spack/test/cmd/versions.py::test_three_segments
lib/spack/spack/test/cmd/versions.py::test_total_order_versions_and_ranges
lib/spack/spack/test/cmd/versions.py::test_two_segments
lib/spack/spack/test/cmd/versions.py::test_underscores
lib/spack/spack/test/cmd/versions.py::test_union_with_containment
lib/spack/spack/test/cmd/versions.py::test_unresolvable_git_versions_error
lib/spack/spack/test/cmd/versions.py::test_up_to
lib/spack/spack/test/cmd/versions.py::test_version_comparison_with_list_fails
lib/spack/spack/test/cmd/versions.py::test_version_empty_slice
lib/spack/spack/test/cmd/versions.py::test_version_git_vs_base
lib/spack/spack/test/cmd/versions.py::test_version_intersects_satisfies_semantic
lib/spack/spack/test/cmd/versions.py::test_version_list_connected_union_of_disjoint_ranges
lib/spack/spack/test/cmd/versions.py::test_version_list_normalization
lib/spack/spack/test/cmd/versions.py::test_version_list_with_range_and_concrete_version_is_not_concrete
lib/spack/spack/test/cmd/versions.py::test_version_range_nonempty
lib/spack/spack/test/cmd/versions.py::test_version_range_satisfaction
lib/spack/spack/test/cmd/versions.py::test_version_range_satisfaction_in_lists
lib/spack/spack/test/cmd/versions.py::test_version_range_satisfies_means_nonempty_intersection
lib/spack/spack/test/cmd/versions.py::test_version_range_with_prereleases
lib/spack/spack/test/cmd/versions.py::test_version_ranges
lib/spack/spack/test/cmd/versions.py::test_version_wrong_idx_type
lib/spack/spack/test/cmd/versions.py::test_versions_from_git
lib/spack/spack/test/cmd/versions.py::test_versions_no_url
lib/spack/spack/test/cmd/view.py::test_view_extension
lib/spack/spack/test/cmd/view.py::test_view_extension_conflict
lib/spack/spack/test/cmd/view.py::test_view_extension_conflict_ignored
lib/spack/spack/test/cmd/view.py::test_view_extension_remove
lib/spack/spack/test/cmd/view.py::test_view_external
lib/spack/spack/test/cmd/view.py::test_view_fails_with_missing_projections_file
lib/spack/spack/test/cmd/view.py::test_view_files_not_ignored
lib/spack/spack/test/cmd/view.py::test_view_link_type
lib/spack/spack/test/cmd/view.py::test_view_link_type_remove
lib/spack/spack/test/cmd/view.py::test_view_multiple_projections
lib/spack/spack/test/cmd/view.py::test_view_multiple_projections_all_first
lib/spack/spack/test/cmd/view.py::test_view_projections
lib/spack/spack/test/cmd_extensions.py::test_command_with_import
lib/spack/spack/test/cmd_extensions.py::test_duplicate_module_load
lib/spack/spack/test/cmd_extensions.py::test_extension_naming
lib/spack/spack/test/cmd_extensions.py::test_failing_command
lib/spack/spack/test/cmd_extensions.py::test_get_command_paths
lib/spack/spack/test/cmd_extensions.py::test_missing_command
lib/spack/spack/test/cmd_extensions.py::test_missing_command_function
lib/spack/spack/test/cmd_extensions.py::test_multi_extension_search
lib/spack/spack/test/cmd_extensions.py::test_simple_command_extension
lib/spack/spack/test/cmd_extensions.py::test_variable_in_extension_path
lib/spack/spack/test/compilers/conversion.py::test_basic_compiler_conversion
lib/spack/spack/test/compilers/conversion.py::test_compiler_conversion_corrupted_paths
lib/spack/spack/test/compilers/conversion.py::test_compiler_conversion_extra_rpaths
lib/spack/spack/test/compilers/conversion.py::test_compiler_conversion_modules
lib/spack/spack/test/compilers/conversion.py::test_compiler_conversion_with_environment
lib/spack/spack/test/compilers/conversion.py::test_compiler_conversion_with_flags
lib/spack/spack/test/compilers/libraries.py::TestCompilerPropertyDetector::test_compile_dummy_c_source
lib/spack/spack/test/compilers/libraries.py::TestCompilerPropertyDetector::test_compile_dummy_c_source_load_env
lib/spack/spack/test/compilers/libraries.py::TestCompilerPropertyDetector::test_compile_dummy_c_source_no_path
lib/spack/spack/test/compilers/libraries.py::TestCompilerPropertyDetector::test_compile_dummy_c_source_no_verbose_flags
lib/spack/spack/test/compilers/libraries.py::TestCompilerPropertyDetector::test_compiler_environment
lib/spack/spack/test/compilers/libraries.py::TestCompilerPropertyDetector::test_compiler_invalid_module_raises
lib/spack/spack/test/compilers/libraries.py::TestCompilerPropertyDetector::test_implicit_rpaths
lib/spack/spack/test/concretization/compiler_runtimes.py::test_correct_gcc_runtime_is_injected_as_dependency
lib/spack/spack/test/concretization/compiler_runtimes.py::test_external_nodes_do_not_have_runtimes
lib/spack/spack/test/concretization/compiler_runtimes.py::test_multiple_intel_oneapi_compilers_versions
lib/spack/spack/test/concretization/compiler_runtimes.py::test_reusing_specs_with_gcc_runtime
lib/spack/spack/test/concretization/compiler_runtimes.py::test_runtimes_are_not_reused_if_compiler_not_used
lib/spack/spack/test/concretization/compiler_runtimes.py::test_runtimes_can_be_concretized_as_standalone
lib/spack/spack/test/concretization/compiler_runtimes.py::test_views_can_handle_duplicate_runtime_nodes
lib/spack/spack/test/concretization/conditional_dependencies.py::test_conditional_compilers
lib/spack/spack/test/concretization/core.py::TestConcreteSpecsByHash::test_adding_specs
lib/spack/spack/test/concretization/core.py::TestConcretize::test_activating_test_dependencies
lib/spack/spack/test/concretization/core.py::TestConcretize::test_add_microarchitectures_on_explicit_request
lib/spack/spack/test/concretization/core.py::TestConcretize::test_adjusting_default_target_based_on_compiler
lib/spack/spack/test/concretization/core.py::TestConcretize::test_all_patches_applied
lib/spack/spack/test/concretization/core.py::TestConcretize::test_architecture_deep_inheritance
lib/spack/spack/test/concretization/core.py::TestConcretize::test_best_effort_coconcretize
lib/spack/spack/test/concretization/core.py::TestConcretize::test_best_effort_coconcretize_preferences
lib/spack/spack/test/concretization/core.py::TestConcretize::test_can_reuse_concrete_externals_for_dependents
lib/spack/spack/test/concretization/core.py::TestConcretize::test_cannot_reuse_host_incompatible_libc
lib/spack/spack/test/concretization/core.py::TestConcretize::test_coconcretize_reuse_and_virtuals
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_child
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_conflicts_in_package_py
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_flags_from_user_are_grouped
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_inheritance
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_inherited_upwards
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_is_unique
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_match_constraints_when_selected
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_run_dep_link_dep_not_forced
lib/spack/spack/test/concretization/core.py::TestConcretize::test_compiler_version_matches_any_entry_in_packages_yaml
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concrete_specs_are_not_modified_on_reuse
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretization_of_test_dependencies
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_anonymous
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_anonymous_dep
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_dependent_with_singlevalued_variant_type
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_mention_build_dep
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_preferred_version
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_disabled_variant
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_multiple_multivalue_variant
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_multiple_variants
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_multiple_variants_mulitple_sources
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_multivalue_variant
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_one_variant
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_same_variant_from_direct_dep_fail
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_same_variant_in_dependency_fail
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_same_variant_multiple_sources_diamond_dep_fail
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_same_variant_virtual_dependency_fail
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_single_valued_variant
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_specified_variant
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_through_first_level_deps
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_variant_exclude_dependency_fail
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_variant_multiple_deps_not_in_source
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_variant_not_dependencies
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_variant_not_in_source
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_propagate_variant_second_level_dep_not_in_source
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_two_virtuals
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_two_virtuals_with_dual_provider
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_two_virtuals_with_dual_provider_and_a_conflict
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_two_virtuals_with_one_bound
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_two_virtuals_with_two_bound
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_with_provides_when
lib/spack/spack/test/concretization/core.py::TestConcretize::test_concretize_with_restricted_virtual
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conditional_dependencies
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conditional_provides_or_depends_on
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conditional_values_in_conditional_variant
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conditional_values_in_variants
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conditional_variants
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conditional_variants_fail
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conflict_in_all_directives_true
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conflicts_in_spec
lib/spack/spack/test/concretization/core.py::TestConcretize::test_conflicts_show_cores
lib/spack/spack/test/concretization/core.py::TestConcretize::test_correct_external_is_selected_from_packages_yaml
lib/spack/spack/test/concretization/core.py::TestConcretize::test_corrupted_external_does_not_halt_concretization
lib/spack/spack/test/concretization/core.py::TestConcretize::test_cumulative_version_ranges_with_different_length
lib/spack/spack/test/concretization/core.py::TestConcretize::test_delete_version_and_reuse
lib/spack/spack/test/concretization/core.py::TestConcretize::test_dependency_conditional_on_another_dependency_state
lib/spack/spack/test/concretization/core.py::TestConcretize::test_deprecated_versions_not_selected
lib/spack/spack/test/concretization/core.py::TestConcretize::test_different_compilers_get_different_flags
lib/spack/spack/test/concretization/core.py::TestConcretize::test_disable_mixing_allow_compiler_link
lib/spack/spack/test/concretization/core.py::TestConcretize::test_disable_mixing_env
lib/spack/spack/test/concretization/core.py::TestConcretize::test_disable_mixing_is_per_language
lib/spack/spack/test/concretization/core.py::TestConcretize::test_disable_mixing_override_by_package
lib/spack/spack/test/concretization/core.py::TestConcretize::test_disable_mixing_prevents_mixing
lib/spack/spack/test/concretization/core.py::TestConcretize::test_disable_mixing_reuse
lib/spack/spack/test/concretization/core.py::TestConcretize::test_disable_mixing_reuse_and_built
lib/spack/spack/test/concretization/core.py::TestConcretize::test_do_not_invent_new_concrete_versions_unless_necessary
lib/spack/spack/test/concretization/core.py::TestConcretize::test_dont_define_new_version_from_input_if_checksum_required
lib/spack/spack/test/concretization/core.py::TestConcretize::test_dont_select_version_that_brings_more_variants_in
lib/spack/spack/test/concretization/core.py::TestConcretize::test_error_message_for_inconsistent_variants
lib/spack/spack/test/concretization/core.py::TestConcretize::test_errors_on_statically_checked_preconditions
lib/spack/spack/test/concretization/core.py::TestConcretize::test_exclude_specs_from_reuse
lib/spack/spack/test/concretization/core.py::TestConcretize::test_explicit_splice_fails_no_hash
lib/spack/spack/test/concretization/core.py::TestConcretize::test_explicit_splice_fails_nonexistent
lib/spack/spack/test/concretization/core.py::TestConcretize::test_explicit_splice_non_match_nonexistent_succeeds
lib/spack/spack/test/concretization/core.py::TestConcretize::test_explicit_splices
lib/spack/spack/test/concretization/core.py::TestConcretize::test_external_and_virtual
lib/spack/spack/test/concretization/core.py::TestConcretize::test_external_package
lib/spack/spack/test/concretization/core.py::TestConcretize::test_external_package_versions
lib/spack/spack/test/concretization/core.py::TestConcretize::test_external_python_extension_find_dependency_from_config
lib/spack/spack/test/concretization/core.py::TestConcretize::test_external_that_would_require_a_virtual_dependency
lib/spack/spack/test/concretization/core.py::TestConcretize::test_external_with_non_default_variant_as_dependency
lib/spack/spack/test/concretization/core.py::TestConcretize::test_externals_with_platform_explicitly_set
lib/spack/spack/test/concretization/core.py::TestConcretize::test_git_based_version_must_exist_to_use_ref
lib/spack/spack/test/concretization/core.py::TestConcretize::test_git_hash_assigned_version_is_preferred
lib/spack/spack/test/concretization/core.py::TestConcretize::test_git_ref_version_is_equivalent_to_specified_version
lib/spack/spack/test/concretization/core.py::TestConcretize::test_git_ref_version_succeeds_with_unknown_version
lib/spack/spack/test/concretization/core.py::TestConcretize::test_host_compatible_concretization
lib/spack/spack/test/concretization/core.py::TestConcretize::test_include_specs_from_externals_and_libcs
lib/spack/spack/test/concretization/core.py::TestConcretize::test_installed_externals_are_reused
lib/spack/spack/test/concretization/core.py::TestConcretize::test_installed_specs_disregard_conflicts
lib/spack/spack/test/concretization/core.py::TestConcretize::test_installed_version_is_selected_only_for_reuse
lib/spack/spack/test/concretization/core.py::TestConcretize::test_misleading_error_message_on_version
lib/spack/spack/test/concretization/core.py::TestConcretize::test_mixing_compilers_only_affects_subdag
lib/spack/spack/test/concretization/core.py::TestConcretize::test_multivalued_variants_from_cli
lib/spack/spack/test/concretization/core.py::TestConcretize::test_mv_variants_disjoint_sets_from_packages_yaml
lib/spack/spack/test/concretization/core.py::TestConcretize::test_mv_variants_disjoint_sets_from_spec
lib/spack/spack/test/concretization/core.py::TestConcretize::test_newer_dependency_adds_a_transitive_virtual
lib/spack/spack/test/concretization/core.py::TestConcretize::test_no_compilers_for_arch
lib/spack/spack/test/concretization/core.py::TestConcretize::test_no_conflict_in_external_specs
lib/spack/spack/test/concretization/core.py::TestConcretize::test_no_matching_compiler_specs
lib/spack/spack/test/concretization/core.py::TestConcretize::test_no_reuse_when_variant_condition_does_not_hold
lib/spack/spack/test/concretization/core.py::TestConcretize::test_nobuild_package
lib/spack/spack/test/concretization/core.py::TestConcretize::test_non_default_provider_of_multiple_virtuals
lib/spack/spack/test/concretization/core.py::TestConcretize::test_noversion_pkg
lib/spack/spack/test/concretization/core.py::TestConcretize::test_package_with_constraint_not_met_by_external
lib/spack/spack/test/concretization/core.py::TestConcretize::test_patching_dependencies
lib/spack/spack/test/concretization/core.py::TestConcretize::test_preferred_compiler_kept_by_downgrading_target
lib/spack/spack/test/concretization/core.py::TestConcretize::test_provider_must_meet_requirements
lib/spack/spack/test/concretization/core.py::TestConcretize::test_provides_handles_multiple_providers_of_same_version
lib/spack/spack/test/concretization/core.py::TestConcretize::test_regression_issue_4492
lib/spack/spack/test/concretization/core.py::TestConcretize::test_regression_issue_7239
lib/spack/spack/test/concretization/core.py::TestConcretize::test_regression_issue_7705
lib/spack/spack/test/concretization/core.py::TestConcretize::test_regression_issue_7941
lib/spack/spack/test/concretization/core.py::TestConcretize::test_require_targets_are_allowed
lib/spack/spack/test/concretization/core.py::TestConcretize::test_requirements_and_weights
lib/spack/spack/test/concretization/core.py::TestConcretize::test_result_specs_is_not_empty
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_does_not_overwrite_dev_specs
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_from_other_namespace_no_raise
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_installed_packages_when_package_def_changes
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_python_from_cli_and_extension_from_db
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_specs_from_non_available_compilers
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_succeeds_with_config_compatible_os
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_with_flags
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_with_unknown_namespace_dont_raise
lib/spack/spack/test/concretization/core.py::TestConcretize::test_reuse_with_unknown_package_dont_raise
lib/spack/spack/test/concretization/core.py::TestConcretize::test_select_lower_priority_package_from_repository_stack
lib/spack/spack/test/concretization/core.py::TestConcretize::test_simultaneous_concretization_of_specs
lib/spack/spack/test/concretization/core.py::TestConcretize::test_solve_in_rounds_all_unsolved
lib/spack/spack/test/concretization/core.py::TestConcretize::test_spec_flags_maintain_order
lib/spack/spack/test/concretization/core.py::TestConcretize::test_spec_with_build_dep_from_json
lib/spack/spack/test/concretization/core.py::TestConcretize::test_sticky_variant_in_external
lib/spack/spack/test/concretization/core.py::TestConcretize::test_sticky_variant_in_package
lib/spack/spack/test/concretization/core.py::TestConcretize::test_target_compatibility
lib/spack/spack/test/concretization/core.py::TestConcretize::test_target_granularity
lib/spack/spack/test/concretization/core.py::TestConcretize::test_target_ranges_in_conflicts
lib/spack/spack/test/concretization/core.py::TestConcretize::test_transitive_conditional_virtual_dependency
lib/spack/spack/test/concretization/core.py::TestConcretize::test_unsolved_specs_raises_error
lib/spack/spack/test/concretization/core.py::TestConcretize::test_user_can_select_externals_with_require
lib/spack/spack/test/concretization/core.py::TestConcretize::test_variant_not_default
lib/spack/spack/test/concretization/core.py::TestConcretize::test_variant_penalty
lib/spack/spack/test/concretization/core.py::TestConcretize::test_version_badness_more_important_than_default_mv_variants
lib/spack/spack/test/concretization/core.py::TestConcretize::test_version_weight_and_provenance
lib/spack/spack/test/concretization/core.py::TestConcretize::test_versions_in_virtual_dependencies
lib/spack/spack/test/concretization/core.py::TestConcretize::test_virtual_is_fully_expanded_for_callpath
lib/spack/spack/test/concretization/core.py::TestConcretize::test_virtual_is_fully_expanded_for_mpileaks
lib/spack/spack/test/concretization/core.py::TestConcretize::test_virtuals_are_annotated_on_edges
lib/spack/spack/test/concretization/core.py::TestConcretize::test_virtuals_are_reconstructed_on_reuse
lib/spack/spack/test/concretization/core.py::TestConcretize::test_working_around_conflicting_defaults
lib/spack/spack/test/concretization/core.py::TestConcretizeEdges::test_condition_triggered_by_edge_property
lib/spack/spack/test/concretization/core.py::TestConcretizeEdges::test_virtuals_provided_together_but_only_one_required_in_dag
lib/spack/spack/test/concretization/core.py::TestConcretizeSeparately::test_all_extensions_depend_on_same_extendee
lib/spack/spack/test/concretization/core.py::TestConcretizeSeparately::test_build_environment_is_unified
lib/spack/spack/test/concretization/core.py::TestConcretizeSeparately::test_no_multiple_solutions_with_different_edges_same_nodes
lib/spack/spack/test/concretization/core.py::TestConcretizeSeparately::test_pure_build_virtual_dependency
lib/spack/spack/test/concretization/core.py::TestConcretizeSeparately::test_solution_without_cycles
lib/spack/spack/test/concretization/core.py::TestConcretizeSeparately::test_specifying_different_versions_build_deps
lib/spack/spack/test/concretization/core.py::TestConcretizeSeparately::test_two_gmake
lib/spack/spack/test/concretization/core.py::TestConcretizeSeparately::test_two_setuptools
lib/spack/spack/test/concretization/core.py::TestPackageInstallerConstructor::test_capacity_explicit_concurrent_packages
lib/spack/spack/test/concretization/core.py::TestPackageInstallerConstructor::test_capacity_from_config_default_one
lib/spack/spack/test/concretization/core.py::TestPackageInstallerConstructor::test_capacity_from_config_non_zero
lib/spack/spack/test/concretization/core.py::TestPackageInstallerConstructor::test_no_binary_mirrors_forces_source_only
lib/spack/spack/test/concretization/core.py::TestPackageInstallerConstructor::test_no_binary_mirrors_preserves_cache_only
lib/spack/spack/test/concretization/core.py::test_abstract_commit_spec_reuse
lib/spack/spack/test/concretization/core.py::test_activating_variant_for_conditional_language_dependency
lib/spack/spack/test/concretization/core.py::test_build_failure_reported_through_event_loop
lib/spack/spack/test/concretization/core.py::test_build_output_streams_to_frontend
lib/spack/spack/test/concretization/core.py::test_cache_miss_falls_back_to_source_build
lib/spack/spack/test/concretization/core.py::test_capacity_serializes_launches
lib/spack/spack/test/concretization/core.py::test_caret_in_input_cannot_set_transitive_build_dependencies
lib/spack/spack/test/concretization/core.py::test_change_jobs_commands_adjust_parallelism
lib/spack/spack/test/concretization/core.py::test_commit_variant_can_be_reused
lib/spack/spack/test/concretization/core.py::test_commit_variant_enters_the_hash
lib/spack/spack/test/concretization/core.py::test_compiler_attribute_is_tolerated_in_externals
lib/spack/spack/test/concretization/core.py::test_compiler_can_be_built_with_other_compilers
lib/spack/spack/test/concretization/core.py::test_compiler_can_depend_on_themselves_to_build
lib/spack/spack/test/concretization/core.py::test_compiler_match_for_externals_is_taken_into_account
lib/spack/spack/test/concretization/core.py::test_compiler_match_for_externals_with_versions
lib/spack/spack/test/concretization/core.py::test_compiler_selection_when_external_has_variant_penalty
lib/spack/spack/test/concretization/core.py::test_concrete_multi_valued_in_input_specs
lib/spack/spack/test/concretization/core.py::test_concrete_multi_valued_variants_in_depends_on
lib/spack/spack/test/concretization/core.py::test_concrete_multi_valued_variants_in_externals
lib/spack/spack/test/concretization/core.py::test_concrete_multi_valued_variants_in_requirements
lib/spack/spack/test/concretization/core.py::test_concrete_multi_valued_variants_when_args
lib/spack/spack/test/concretization/core.py::test_concrete_specs_skip_prechecks
lib/spack/spack/test/concretization/core.py::test_concretization_cache_asp_canonicalization
lib/spack/spack/test/concretization/core.py::test_concretization_cache_count_cleanup
lib/spack/spack/test/concretization/core.py::test_concretization_cache_reapplies_patches_on_hit
lib/spack/spack/test/concretization/core.py::test_concretization_cache_remove_entry_oserror
lib/spack/spack/test/concretization/core.py::test_concretization_cache_removes_bad_spec_data
lib/spack/spack/test/concretization/core.py::test_concretization_cache_removes_corrupt_gzip
lib/spack/spack/test/concretization/core.py::test_concretization_cache_removes_corrupt_json
lib/spack/spack/test/concretization/core.py::test_concretization_cache_removes_wrong_version
lib/spack/spack/test/concretization/core.py::test_concretization_cache_roundtrip
lib/spack/spack/test/concretization/core.py::test_concretization_cache_roundtrip_result
lib/spack/spack/test/concretization/core.py::test_concretization_cache_skips_automatic_splice
lib/spack/spack/test/concretization/core.py::test_concretization_cache_store_cleans_temp_on_error
lib/spack/spack/test/concretization/core.py::test_concretization_cache_store_skips_spliced_results
lib/spack/spack/test/concretization/core.py::test_concretization_version_order
lib/spack/spack/test/concretization/core.py::test_conflict_with_direct_dependency_on_virtual_provider
lib/spack/spack/test/concretization/core.py::test_default_values_used_if_subset_required_by_dependent
lib/spack/spack/test/concretization/core.py::test_dependency_built_before_dependent
lib/spack/spack/test/concretization/core.py::test_drop_moving_targets
lib/spack/spack/test/concretization/core.py::test_duplicate_compiler_in_externals
lib/spack/spack/test/concretization/core.py::test_errors_when_specifying_externals_with_compilers
lib/spack/spack/test/concretization/core.py::test_explicit_as_set_marks_only_those_specs
lib/spack/spack/test/concretization/core.py::test_explicit_policies_reach_build_requests
lib/spack/spack/test/concretization/core.py::test_external_inline_equivalent_to_yaml
lib/spack/spack/test/concretization/core.py::test_external_node_completion_from_config
lib/spack/spack/test/concretization/core.py::test_external_spec_uses_devnull_log
lib/spack/spack/test/concretization/core.py::test_external_specs_with_dependencies
lib/spack/spack/test/concretization/core.py::test_fail_fast_terminates_running_builds
lib/spack/spack/test/concretization/core.py::test_failed_builds_reach_on_finished
lib/spack/spack/test/concretization/core.py::test_filtering_reused_specs
lib/spack/spack/test/concretization/core.py::test_git_ref_version_can_be_reused
lib/spack/spack/test/concretization/core.py::test_imposed_spec_dependency_duplication
lib/spack/spack/test/concretization/core.py::test_input_analysis_and_conditional_requirements
lib/spack/spack/test/concretization/core.py::test_installed_compiler_and_better_external
lib/spack/spack/test/concretization/core.py::test_installed_from_binary_cache_message_sets_package_attr
lib/spack/spack/test/concretization/core.py::test_installing_external_with_compilers_directly
lib/spack/spack/test/concretization/core.py::test_keyboard_interrupt_terminates_builds_and_flushes_db
lib/spack/spack/test/concretization/core.py::test_mpi_selection_when_external_has_variant_penalty
lib/spack/spack/test/concretization/core.py::test_overwrite_reinstalls_through_event_loop
lib/spack/spack/test/concretization/core.py::test_package_installer_with_injected_ui
lib/spack/spack/test/concretization/core.py::test_parallel_concretization
lib/spack/spack/test/concretization/core.py::test_penalties_for_variant_defined_by_function
lib/spack/spack/test/concretization/core.py::test_preferring_different_compilers_for_different_languages
lib/spack/spack/test/concretization/core.py::test_relationship_git_versions_and_commit_variant
lib/spack/spack/test/concretization/core.py::test_reports_collect_success_failure_and_skips
lib/spack/spack/test/concretization/core.py::test_result_roundtrip
lib/spack/spack/test/concretization/core.py::test_reusable_externals_different_modules
lib/spack/spack/test/concretization/core.py::test_reusable_externals_different_prefix
lib/spack/spack/test/concretization/core.py::test_reusable_externals_different_spec
lib/spack/spack/test/concretization/core.py::test_reusable_externals_match
lib/spack/spack/test/concretization/core.py::test_reusable_externals_match_virtual
lib/spack/spack/test/concretization/core.py::test_reuse_prefers_standard_over_git_versions
lib/spack/spack/test/concretization/core.py::test_reuse_when_input_specifies_build_dep
lib/spack/spack/test/concretization/core.py::test_reuse_when_requiring_build_dep
lib/spack/spack/test/concretization/core.py::test_reuse_with_mixed_compilers
lib/spack/spack/test/concretization/core.py::test_reusing_gcc_same_version_different_libcs
lib/spack/spack/test/concretization/core.py::test_satisfies_conditional_spec
lib/spack/spack/test/concretization/core.py::test_selecting_compiler_with_suffix
lib/spack/spack/test/concretization/core.py::test_selecting_externals_with_compilers_and_versions
lib/spack/spack/test/concretization/core.py::test_selecting_externals_with_compilers_as_root
lib/spack/spack/test/concretization/core.py::test_selecting_reused_sources
lib/spack/spack/test/concretization/core.py::test_set_echo_commands_reach_control_channel
lib/spack/spack/test/concretization/core.py::test_set_echo_unknown_build_is_noop
lib/spack/spack/test/concretization/core.py::test_spec_containing_commit_variant
lib/spack/spack/test/concretization/core.py::test_spec_dict_from_json_invalid_data
lib/spack/spack/test/concretization/core.py::test_spec_dict_roundtrip
lib/spack/spack/test/concretization/core.py::test_spec_filters
lib/spack/spack/test/concretization/core.py::test_spec_parts_on_fresh_compilers
lib/spack/spack/test/concretization/core.py::test_spec_parts_on_reused_compilers
lib/spack/spack/test/concretization/core.py::test_spec_unification
lib/spack/spack/test/concretization/core.py::test_spec_with_commit_interacts_with_lookup
lib/spack/spack/test/concretization/core.py::test_specifying_compilers_with_virtuals_syntax
lib/spack/spack/test/concretization/core.py::test_specifying_direct_dependencies
lib/spack/spack/test/concretization/core.py::test_specs_from_mirror_warns_when_index_missing
lib/spack/spack/test/concretization/core.py::test_state_messages_tolerate_garbage_and_partial_lines
lib/spack/spack/test/concretization/core.py::test_stopped_at_phase_is_not_a_failure
lib/spack/spack/test/concretization/core.py::test_target_requirements
lib/spack/spack/test/concretization/core.py::test_use_compiler_by_hash
lib/spack/spack/test/concretization/core.py::test_using_externals_with_compilers
lib/spack/spack/test/concretization/core.py::test_virtual_gets_multiple_dupes
lib/spack/spack/test/concretization/core.py::test_when_condition_with_direct_dependency_on_virtual_provider
lib/spack/spack/test/concretization/core.py::test_when_possible_above_all
lib/spack/spack/test/concretization/errors.py::test_config_driven_errors
lib/spack/spack/test/concretization/errors.py::test_deprecated_version_error
lib/spack/spack/test/concretization/errors.py::test_error_messages
lib/spack/spack/test/concretization/errors.py::test_input_spec_driven_errors
lib/spack/spack/test/concretization/errors.py::test_internal_error_handling_formatting
lib/spack/spack/test/concretization/errors.py::test_nonexistent_version_error
lib/spack/spack/test/concretization/errors.py::test_package_py_driven_errors
lib/spack/spack/test/concretization/flag_mixing.py::test_dev_mix_flags
lib/spack/spack/test/concretization/flag_mixing.py::test_diamond_dep_flag_mixing
lib/spack/spack/test/concretization/flag_mixing.py::test_flag_injection_different_compilers
lib/spack/spack/test/concretization/flag_mixing.py::test_flag_order_and_grouping
lib/spack/spack/test/concretization/flag_mixing.py::test_mix_spec_and_compiler_cfg
lib/spack/spack/test/concretization/flag_mixing.py::test_mix_spec_and_dependent
lib/spack/spack/test/concretization/flag_mixing.py::test_mix_spec_and_requirements
lib/spack/spack/test/concretization/flag_mixing.py::test_no_flags_from_compiler_used_only_as_library
lib/spack/spack/test/concretization/flag_mixing.py::test_pkg_flags_from_compiler_and_none
lib/spack/spack/test/concretization/flag_mixing.py::test_propagate_and_compiler_cfg
lib/spack/spack/test/concretization/flag_mixing.py::test_propagate_and_pkg_dep
lib/spack/spack/test/concretization/flag_mixing.py::test_propagate_and_require
lib/spack/spack/test/concretization/flag_mixing.py::test_two_dependents_flag_mixing
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_buildable_false
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_buildable_false_all
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_buildable_false_all_true_package
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_buildable_false_all_true_virtual
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_buildable_false_virtual
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_buildable_false_virtual_true_pacakge
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_config_permissions_differ_read_write
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_config_permissions_from_all
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_config_permissions_from_package
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_config_perms_fail_write_gt_read
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_config_set_pkg_property_new
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_config_set_pkg_property_url
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_default_preference_variant_different_type_does_not_error
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_dependencies_cant_make_version_parent_score_better
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_develop
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_external_module
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_external_mpi
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_multivalued_variants_are_lower_priority_than_providers
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_commit_variant
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_providers
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_target
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_truncated
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_undefined_raises
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_variants
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_variants_from_wildcard
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_versions
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_preferred_versions_mixed_version_types
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_sticky_variant_accounts_for_packages_yaml
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_variant_not_flipped_to_pull_externals
lib/spack/spack/test/concretization/preferences.py::TestConcretizePreferences::test_version_preference_cannot_generate_buildable_versions
lib/spack/spack/test/concretization/requirements.py::test_anonymous_spec_cannot_be_used_in_virtual_requirements
lib/spack/spack/test/concretization/requirements.py::test_compiler_in_all_from_internal_scope_warns
lib/spack/spack/test/concretization/requirements.py::test_conditional_requirements_from_packages_yaml
lib/spack/spack/test/concretization/requirements.py::test_conflict_packages_yaml
lib/spack/spack/test/concretization/requirements.py::test_default_and_package_specific_requirements
lib/spack/spack/test/concretization/requirements.py::test_default_requirements_semantic
lib/spack/spack/test/concretization/requirements.py::test_default_requirements_semantic_with_mv_variants
lib/spack/spack/test/concretization/requirements.py::test_default_requirements_with_all
lib/spack/spack/test/concretization/requirements.py::test_external_adds_new_version_that_is_preferred
lib/spack/spack/test/concretization/requirements.py::test_external_spec_completion_with_targets_required
lib/spack/spack/test/concretization/requirements.py::test_forward_multi_valued_variant_using_requires
lib/spack/spack/test/concretization/requirements.py::test_git_user_supplied_reference_satisfaction
lib/spack/spack/test/concretization/requirements.py::test_incompatible_virtual_requirements_raise
lib/spack/spack/test/concretization/requirements.py::test_language_preferences_and_reuse
lib/spack/spack/test/concretization/requirements.py::test_multiple_externals_and_requirement
lib/spack/spack/test/concretization/requirements.py::test_multiple_packages_requirements_are_respected
lib/spack/spack/test/concretization/requirements.py::test_non_existing_variants_under_all
lib/spack/spack/test/concretization/requirements.py::test_one_package_multiple_oneof_groups
lib/spack/spack/test/concretization/requirements.py::test_one_package_multiple_reqs
lib/spack/spack/test/concretization/requirements.py::test_oneof
lib/spack/spack/test/concretization/requirements.py::test_oneof_ordering
lib/spack/spack/test/concretization/requirements.py::test_overriding_preference_with_provider_details
lib/spack/spack/test/concretization/requirements.py::test_penalties_for_language_preferences
lib/spack/spack/test/concretization/requirements.py::test_prefer_when_condition_expands_toolchain
lib/spack/spack/test/concretization/requirements.py::test_preference_adds_new_version
lib/spack/spack/test/concretization/requirements.py::test_preferring_compilers_can_be_overridden
lib/spack/spack/test/concretization/requirements.py::test_require_cflags
lib/spack/spack/test/concretization/requirements.py::test_require_hash
lib/spack/spack/test/concretization/requirements.py::test_require_truncated
lib/spack/spack/test/concretization/requirements.py::test_require_undefined_version
lib/spack/spack/test/concretization/requirements.py::test_requirement_adds_git_hash_version
lib/spack/spack/test/concretization/requirements.py::test_requirement_adds_multiple_new_versions
lib/spack/spack/test/concretization/requirements.py::test_requirement_adds_new_version
lib/spack/spack/test/concretization/requirements.py::test_requirement_adds_version_satisfies
lib/spack/spack/test/concretization/requirements.py::test_requirement_is_successfully_applied
lib/spack/spack/test/concretization/requirements.py::test_requirement_isnt_optional
lib/spack/spack/test/concretization/requirements.py::test_requirements_and_deprecated_versions
lib/spack/spack/test/concretization/requirements.py::test_requirements_conditional_deps
lib/spack/spack/test/concretization/requirements.py::test_requirements_fail_with_custom_message
lib/spack/spack/test/concretization/requirements.py::test_requirements_for_package_that_is_not_needed
lib/spack/spack/test/concretization/requirements.py::test_requirements_on_compilers_and_reuse
lib/spack/spack/test/concretization/requirements.py::test_requirements_on_virtual
lib/spack/spack/test/concretization/requirements.py::test_requirements_on_virtual_and_on_package
lib/spack/spack/test/concretization/requirements.py::test_requires_directive
lib/spack/spack/test/concretization/requirements.py::test_requiring_package_on_multiple_virtuals
lib/spack/spack/test/concretization/requirements.py::test_reuse_oneof
lib/spack/spack/test/concretization/requirements.py::test_skip_requirement_when_default_requirement_condition_cannot_be_met
lib/spack/spack/test/concretization/requirements.py::test_strong_preferences_higher_priority_than_reuse
lib/spack/spack/test/concretization/requirements.py::test_strong_preferences_packages_yaml
lib/spack/spack/test/concretization/requirements.py::test_virtual_requirement_respects_any_of
lib/spack/spack/test/concretization/splicing.py::test_double_splice
lib/spack/spack/test/concretization/splicing.py::test_external_splice_same_name
lib/spack/spack/test/concretization/splicing.py::test_manyvariant_matching_variant_splice
lib/spack/spack/test/concretization/splicing.py::test_spec_reuse
lib/spack/spack/test/concretization/splicing.py::test_splice_build_splice_node
lib/spack/spack/test/concretization/splicing.py::test_splice_installed_hash
lib/spack/spack/test/concretization/splicing.py::test_spliced_build_deps_only_in_build_spec
lib/spack/spack/test/concretization/splicing.py::test_spliced_transitive_dependency
lib/spack/spack/test/concretization/splicing.py::test_virtual_multi_splices_in
lib/spack/spack/test/config_values.py::test_set_install_hash_length
lib/spack/spack/test/config_values.py::test_set_install_hash_length_upper_case
lib/spack/spack/test/container/cli.py::test_bootstrap_phase
lib/spack/spack/test/container/cli.py::test_command
lib/spack/spack/test/container/cli.py::test_listing_possible_os
lib/spack/spack/test/container/docker.py::test_base_images_with_bootstrap
lib/spack/spack/test/container/docker.py::test_build_and_run_images
lib/spack/spack/test/container/docker.py::test_container_os_packages_command
lib/spack/spack/test/container/docker.py::test_custom_base_images
lib/spack/spack/test/container/docker.py::test_ensure_render_works
lib/spack/spack/test/container/docker.py::test_error_message_invalid_os
lib/spack/spack/test/container/docker.py::test_manifest
lib/spack/spack/test/container/docker.py::test_not_stripping_all_symbols
lib/spack/spack/test/container/docker.py::test_packages
lib/spack/spack/test/container/docker.py::test_strip_is_set_from_config
lib/spack/spack/test/container/docker.py::test_using_single_quotes_in_dockerfiles
lib/spack/spack/test/container/images.py::test_build_info
lib/spack/spack/test/container/images.py::test_package_info
lib/spack/spack/test/container/images.py::test_validate
lib/spack/spack/test/container/singularity.py::test_ensure_render_works
lib/spack/spack/test/container/singularity.py::test_not_stripping_all_symbols
lib/spack/spack/test/container/singularity.py::test_singularity_specific_properties
lib/spack/spack/test/cray_manifest.py::test_compiler_from_entry
lib/spack/spack/test/cray_manifest.py::test_convert_validation_error
lib/spack/spack/test/cray_manifest.py::test_failed_translate_compiler_name
lib/spack/spack/test/cray_manifest.py::test_find_external_nonempty_default_manifest_dir
lib/spack/spack/test/cray_manifest.py::test_generate_specs_from_manifest
lib/spack/spack/test/cray_manifest.py::test_manifest_compatibility
lib/spack/spack/test/cray_manifest.py::test_read_cray_manifest
lib/spack/spack/test/cray_manifest.py::test_read_cray_manifest_add_compiler_failure
lib/spack/spack/test/cray_manifest.py::test_read_cray_manifest_twice_no_duplicates
lib/spack/spack/test/cray_manifest.py::test_read_old_manifest_v1_2
lib/spack/spack/test/cray_manifest.py::test_reusable_externals_cray_manifest
lib/spack/spack/test/cray_manifest.py::test_translate_cray_platform_to_linux
lib/spack/spack/test/cray_manifest.py::test_translated_compiler_name
lib/spack/spack/test/cvs_fetch.py::test_cvs_extra_fetch
lib/spack/spack/test/cvs_fetch.py::test_fetch
lib/spack/spack/test/database.py::test_005_db_exists
lib/spack/spack/test/database.py::test_010_all_install_sanity
lib/spack/spack/test/database.py::test_015_write_and_read
lib/spack/spack/test/database.py::test_016_roundtrip_spliced_spec
lib/spack/spack/test/database.py::test_017_write_and_read_without_uuid
lib/spack/spack/test/database.py::test_020_db_sanity
lib/spack/spack/test/database.py::test_025_reindex
lib/spack/spack/test/database.py::test_026_reindex_after_deprecate
lib/spack/spack/test/database.py::test_030_db_sanity_from_another_process
lib/spack/spack/test/database.py::test_040_ref_counts
lib/spack/spack/test/database.py::test_041_ref_counts_deprecate
lib/spack/spack/test/database.py::test_050_basic_query
lib/spack/spack/test/database.py::test_060_remove_and_add_root_package
lib/spack/spack/test/database.py::test_070_remove_and_add_dependency_package
lib/spack/spack/test/database.py::test_080_root_ref_counts
lib/spack/spack/test/database.py::test_090_non_root_ref_counts
lib/spack/spack/test/database.py::test_100_no_write_with_exception_on_remove
lib/spack/spack/test/database.py::test_110_no_write_with_exception_on_install
lib/spack/spack/test/database.py::test_115_reindex_with_packages_not_in_repo
lib/spack/spack/test/database.py::test_add_to_upstream_after_downstream
lib/spack/spack/test/database.py::test_cannot_write_upstream
lib/spack/spack/test/database.py::test_check_parents
lib/spack/spack/test/database.py::test_clear_failure_forced
lib/spack/spack/test/database.py::test_clear_failure_keep
lib/spack/spack/test/database.py::test_consistency_of_dependents_upon_remove
lib/spack/spack/test/database.py::test_database_construction_doesnt_use_globals
lib/spack/spack/test/database.py::test_database_errors_with_just_a_version_key
lib/spack/spack/test/database.py::test_database_installed
lib/spack/spack/test/database.py::test_database_read_works_with_trailing_data
lib/spack/spack/test/database.py::test_database_works_with_empty_dir
lib/spack/spack/test/database.py::test_db_all_hashes
lib/spack/spack/test/database.py::test_default_queries
lib/spack/spack/test/database.py::test_error_message_when_using_too_new_db
lib/spack/spack/test/database.py::test_external_entries_in_db
lib/spack/spack/test/database.py::test_failed_spec_path_error
lib/spack/spack/test/database.py::test_installed_upstream
lib/spack/spack/test/database.py::test_mark_failed
lib/spack/spack/test/database.py::test_missing_upstream_build_dep
lib/spack/spack/test/database.py::test_old_external_entries_prefix
lib/spack/spack/test/database.py::test_prefix_failed
lib/spack/spack/test/database.py::test_prefix_write_lock_error
lib/spack/spack/test/database.py::test_query_by_install_tree
lib/spack/spack/test/database.py::test_query_installed_when_package_unknown
lib/spack/spack/test/database.py::test_query_spec_with_conditional_dependency
lib/spack/spack/test/database.py::test_query_spec_with_non_conditional_virtual_dependency
lib/spack/spack/test/database.py::test_query_unused_specs
lib/spack/spack/test/database.py::test_query_virtual_spec
lib/spack/spack/test/database.py::test_query_with_predicate_fn
lib/spack/spack/test/database.py::test_querying_reindexed_database_specfilev5
lib/spack/spack/test/database.py::test_recursive_upstream_dbs
lib/spack/spack/test/database.py::test_regression_issue_8036
lib/spack/spack/test/database.py::test_reindex_removed_prefix_is_not_installed
lib/spack/spack/test/database.py::test_reindex_when_all_prefixes_are_removed
lib/spack/spack/test/database.py::test_reindex_with_upstreams
lib/spack/spack/test/database.py::test_removed_upstream_dep
lib/spack/spack/test/database.py::test_store_find_accept_string
lib/spack/spack/test/database.py::test_store_find_failures
lib/spack/spack/test/database.py::test_try_read_transaction
lib/spack/spack/test/database.py::test_try_write_transaction
lib/spack/spack/test/database.py::test_try_write_transaction_does_not_flush_on_exception
lib/spack/spack/test/database.py::test_uninstall_by_spec
lib/spack/spack/test/detection.py::test_dedupe_paths
lib/spack/spack/test/detection.py::test_detect_specs_deduplicates_across_prefixes
lib/spack/spack/test/detection.py::test_detection_update_config
lib/spack/spack/test/directives.py::test_conditionally_extends_direct_dep
lib/spack/spack/test/directives.py::test_conditionally_extends_transitive_dep
lib/spack/spack/test/directives.py::test_constraints_from_context
lib/spack/spack/test/directives.py::test_constraints_from_context_are_merged
lib/spack/spack/test/directives.py::test_direct_dependencies_from_when_context_are_retained
lib/spack/spack/test/directives.py::test_directive_descriptor_init
lib/spack/spack/test/directives.py::test_directive_laziness
lib/spack/spack/test/directives.py::test_directives_meta_combine_when
lib/spack/spack/test/directives.py::test_duplicate_exact_range_license
lib/spack/spack/test/directives.py::test_error_on_anonymous_dependency
lib/spack/spack/test/directives.py::test_extends_spec
lib/spack/spack/test/directives.py::test_false_directives_do_not_exist
lib/spack/spack/test/directives.py::test_license_directive
lib/spack/spack/test/directives.py::test_maintainer_directive
lib/spack/spack/test/directives.py::test_overlapping_duplicate_licenses
lib/spack/spack/test/directives.py::test_patched_dependencies_sets_class_attribute
lib/spack/spack/test/directives.py::test_redistribute_directive
lib/spack/spack/test/directives.py::test_redistribute_override_when
lib/spack/spack/test/directives.py::test_true_directives_exist
lib/spack/spack/test/directives.py::test_version_type_validation
lib/spack/spack/test/directory_layout.py::test_find
lib/spack/spack/test/directory_layout.py::test_handle_unknown_package
lib/spack/spack/test/directory_layout.py::test_read_and_write_spec
lib/spack/spack/test/directory_layout.py::test_yaml_directory_layout_build_path
lib/spack/spack/test/directory_layout.py::test_yaml_directory_layout_parameters
lib/spack/spack/test/entry_points.py::test_llnl_util_lang_get_entry_points
lib/spack/spack/test/entry_points.py::test_spack_entry_point_config
lib/spack/spack/test/entry_points.py::test_spack_entry_point_extension
lib/spack/spack/test/environment/mutate.py::test_mutate_from_cli
lib/spack/spack/test/environment/mutate.py::test_mutate_from_cli_all_no_match_spec
lib/spack/spack/test/environment/mutate.py::test_mutate_from_cli_multiple
lib/spack/spack/test/environment/mutate.py::test_mutate_from_cli_no_abstract
lib/spack/spack/test/environment/mutate.py::test_mutate_internals
lib/spack/spack/test/environment/mutate.py::test_mutate_internals_multiple_mutations
lib/spack/spack/test/environment/mutate.py::test_mutate_spec_invalid
lib/spack/spack/test/environment_modifications.py::test_append_flags
lib/spack/spack/test/environment_modifications.py::test_clear
lib/spack/spack/test/environment_modifications.py::test_environment_from_sourcing_files
lib/spack/spack/test/environment_modifications.py::test_exclude_lmod_variables
lib/spack/spack/test/environment_modifications.py::test_exclude_modules_variables
lib/spack/spack/test/environment_modifications.py::test_exclude_paths_from_inspection
lib/spack/spack/test/environment_modifications.py::test_extend
lib/spack/spack/test/environment_modifications.py::test_filter_system_paths
lib/spack/spack/test/environment_modifications.py::test_from_environment_diff
lib/spack/spack/test/environment_modifications.py::test_inspect_path
lib/spack/spack/test/environment_modifications.py::test_path_manipulation
lib/spack/spack/test/environment_modifications.py::test_preserve_environment
lib/spack/spack/test/environment_modifications.py::test_sanitize_literals
lib/spack/spack/test/environment_modifications.py::test_sanitize_regex
lib/spack/spack/test/environment_modifications.py::test_set
lib/spack/spack/test/environment_modifications.py::test_set_path
lib/spack/spack/test/environment_modifications.py::test_source_files
lib/spack/spack/test/environment_modifications.py::test_unix_system_path_manipulation
lib/spack/spack/test/environment_modifications.py::test_unset
lib/spack/spack/test/environment_modifications.py::test_windows_system_path_manipulation
lib/spack/spack/test/error_messages.py::test_diamond_with_pkg_conflict1
lib/spack/spack/test/error_messages.py::test_diamond_with_pkg_conflict2
lib/spack/spack/test/error_messages.py::test_errmsg_requirements_1
lib/spack/spack/test/error_messages.py::test_errmsg_requirements_cfg
lib/spack/spack/test/error_messages.py::test_errmsg_requirements_directives
lib/spack/spack/test/error_messages.py::test_errmsg_requirements_external_mismatch
lib/spack/spack/test/error_messages.py::test_null_variant_for_requested_version
lib/spack/spack/test/error_messages.py::test_prefer_unknown_target_warns
lib/spack/spack/test/error_messages.py::test_require_all_unknown_targets_errors
lib/spack/spack/test/error_messages.py::test_require_mixed_unknown_and_valid_target_warns
lib/spack/spack/test/error_messages.py::test_require_single_unknown_target_errors
lib/spack/spack/test/error_messages.py::test_unknown_concrete_target_in_input_spec
lib/spack/spack/test/error_messages.py::test_version_range_null
lib/spack/spack/test/error_messages.py::test_warns_on_compiler_constraint_in_all
lib/spack/spack/test/externals.py::test_basic_parsing
lib/spack/spack/test/externals.py::test_external_compiler_with_non_compiler_dependency
lib/spack/spack/test/externals.py::test_external_node_completion
lib/spack/spack/test/externals.py::test_external_spec_multi_valued_variant_is_not_changed
lib/spack/spack/test/externals.py::test_external_spec_single_valued_variant_type_is_corrected
lib/spack/spack/test/externals.py::test_external_specs_architecture_completion
lib/spack/spack/test/externals.py::test_external_specs_parser_with_missing_packages
lib/spack/spack/test/externals.py::test_externals_with_dependencies
lib/spack/spack/test/externals.py::test_externals_with_duplicate_id
lib/spack/spack/test/externals.py::test_externals_without_concrete_version
lib/spack/spack/test/fetch_strategy.py::test_fetch_progress_disabled
lib/spack/spack/test/fetch_strategy.py::test_fetch_progress_from_headers
lib/spack/spack/test/fetch_strategy.py::test_fetch_progress_from_headers_disabled
lib/spack/spack/test/fetch_strategy.py::test_fetch_progress_known_size
lib/spack/spack/test/fetch_strategy.py::test_fetch_progress_unknown_size
lib/spack/spack/test/fetch_strategy.py::test_fetchstrategy_bad_url_scheme
lib/spack/spack/test/fetch_strategy.py::test_format_bytes
lib/spack/spack/test/fetch_strategy.py::test_format_speed
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_add_build_system_flags_autotools
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_add_build_system_flags_cmake
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_build_system_flags_autotools
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_build_system_flags_cmake
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_build_system_flags_not_implemented
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_env_flags
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_flag_handler_no_modify_specs
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_inject_flags
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_ld_flags_cmake
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_ld_libs_cmake
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_no_build_system_flags
lib/spack/spack/test/flag_handlers.py::TestFlagHandlers::test_unbound_method
lib/spack/spack/test/gcs_fetch.py::test_gcsfetchstrategy_downloaded
lib/spack/spack/test/git_fetch.py::test_adhoc_version_submodules
lib/spack/spack/test/git_fetch.py::test_bad_git
lib/spack/spack/test/git_fetch.py::test_commit_variant_clone
lib/spack/spack/test/git_fetch.py::test_debug_fetch
lib/spack/spack/test/git_fetch.py::test_fetch
lib/spack/spack/test/git_fetch.py::test_fetch_pkg_attr_submodule_init
lib/spack/spack/test/git_fetch.py::test_get_full_repo
lib/spack/spack/test/git_fetch.py::test_git_extra_fetch
lib/spack/spack/test/git_fetch.py::test_git_sparse_path_have_unique_mirror_projections
lib/spack/spack/test/git_fetch.py::test_git_sparse_paths_partial_clone
lib/spack/spack/test/git_fetch.py::test_gitsubmodule
lib/spack/spack/test/git_fetch.py::test_gitsubmodules_callable
lib/spack/spack/test/git_fetch.py::test_gitsubmodules_delete
lib/spack/spack/test/git_fetch.py::test_gitsubmodules_falsey
lib/spack/spack/test/git_fetch.py::test_needs_stage
lib/spack/spack/test/hg_fetch.py::test_fetch
lib/spack/spack/test/hg_fetch.py::test_hg_extra_fetch
lib/spack/spack/test/hooks/absolutify_elf_sonames.py::test_shared_libraries_visitor
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_checksums_git_commit_only
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_checksums_include_both_sha256_and_git_commit
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_checksums_none_available
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_contains_dependencies
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_dependency_entry_uses_dependency_version_and_checksum
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_dependency_supplier_uses_dependency_package
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_download_location_and_checksum_from_version_metadata
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_download_location_from_git_url
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_download_location_from_package_url
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_download_location_from_package_url_with_different_version
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_external_package_skipped
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_generated_with_post_install
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_has_document_namespace
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_license_and_download_defaults
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_license_declared_from_package_licenses
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_supplier_derived_from_git_url
lib/spack/spack/test/hooks/sbom_generate.py::test_sbom_supplier_prefers_package_supplier
lib/spack/spack/test/installer/posix.py::TestCreateJobserverFifo::test_creates_fifo
lib/spack/spack/test/installer/posix.py::TestCreateJobserverFifo::test_single_job_no_tokens
lib/spack/spack/test/installer/posix.py::TestCreateJobserverFifo::test_writes_correct_tokens
lib/spack/spack/test/installer/posix.py::TestGetJobserverConfig::test_empty_makeflags
lib/spack/spack/test/installer/posix.py::TestGetJobserverConfig::test_fifo_format_new
lib/spack/spack/test/installer/posix.py::TestGetJobserverConfig::test_invalid_format
lib/spack/spack/test/installer/posix.py::TestGetJobserverConfig::test_multiple_flags_last_wins
lib/spack/spack/test/installer/posix.py::TestGetJobserverConfig::test_no_jobserver_flag
lib/spack/spack/test/installer/posix.py::TestGetJobserverConfig::test_pipe_format_new
lib/spack/spack/test/installer/posix.py::TestGetJobserverConfig::test_pipe_format_old
lib/spack/spack/test/installer/posix.py::TestJobServer::test_acquire_tokens
lib/spack/spack/test/installer/posix.py::TestJobServer::test_attaches_to_existing_fifo
lib/spack/spack/test/installer/posix.py::TestJobServer::test_close_removes_created_fifo
lib/spack/spack/test/installer/posix.py::TestJobServer::test_close_warns_when_spack_holds_tokens
lib/spack/spack/test/installer/posix.py::TestJobServer::test_close_warns_when_subprocess_holds_tokens
lib/spack/spack/test/installer/posix.py::TestJobServer::test_connection_objects_exist
lib/spack/spack/test/installer/posix.py::TestJobServer::test_creates_new_jobserver
lib/spack/spack/test/installer/posix.py::TestJobServer::test_decrease_parallelism_at_floor
lib/spack/spack/test/installer/posix.py::TestJobServer::test_decrease_parallelism_no_token_available
lib/spack/spack/test/installer/posix.py::TestJobServer::test_decrease_parallelism_token_available
lib/spack/spack/test/installer/posix.py::TestJobServer::test_file_descriptors_are_inheritable
lib/spack/spack/test/installer/posix.py::TestJobServer::test_has_target_parallelism
lib/spack/spack/test/installer/posix.py::TestJobServer::test_increase_parallelism
lib/spack/spack/test/installer/posix.py::TestJobServer::test_increase_parallelism_not_created
lib/spack/spack/test/installer/posix.py::TestJobServer::test_makeflags_fifo_gmake_44
lib/spack/spack/test/installer/posix.py::TestJobServer::test_makeflags_no_gmake
lib/spack/spack/test/installer/posix.py::TestJobServer::test_makeflags_old_format_gmake_3
lib/spack/spack/test/installer/posix.py::TestJobServer::test_makeflags_pipe_gmake_40
lib/spack/spack/test/installer/posix.py::TestJobServer::test_maybe_discard_tokens_discards_when_available
lib/spack/spack/test/installer/posix.py::TestJobServer::test_maybe_discard_tokens_noop_at_target
lib/spack/spack/test/installer/posix.py::TestJobServer::test_maybe_discard_tokens_noop_on_blocking
lib/spack/spack/test/installer/posix.py::TestJobServer::test_release_discards_token_when_target_below_num
lib/spack/spack/test/installer/posix.py::TestJobServer::test_release_tokens
lib/spack/spack/test/installer/posix.py::TestJobServer::test_release_without_tokens_is_noop
lib/spack/spack/test/installer/posix.py::TestJobServer::test_setup_attaches_to_fifo_from_makeflags
lib/spack/spack/test/installer/posix.py::TestJobServer::test_setup_attaches_to_pipe_from_makeflags
lib/spack/spack/test/installer/posix.py::TestJobServer::test_setup_invalid_pipe_fds_creates_fifo
lib/spack/spack/test/installer/posix.py::TestJobServer::test_update_selector_registers_and_unregisters
lib/spack/spack/test/installer/posix.py::TestOpenExistingJobserverFifo::test_opens_existing_fifo
lib/spack/spack/test/installer/posix.py::TestOpenExistingJobserverFifo::test_returns_none_for_missing_fifo
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_basic_graph_construction
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_cache_only_excludes_build_deps
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_cache_only_includes_build_deps_when_requested
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_diamond_dag_with_shared_dependency
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_empty_graph_all_specs_installed
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_empty_graph_install_package_false_all_deps_installed
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_install_deps_false_with_all_deps_installed
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_install_deps_false_with_uninstalled_deps
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_install_package_only_mode
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_installed_root_excludes_build_deps_even_when_requested
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_multiple_roots
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_overwrite_set_prevents_pruning
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_parent_child_mappings
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_pruning_creates_cartesian_product_of_connections
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_pruning_installed_specs
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_pruning_leaf_node
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_pruning_root_node_with_install_package_false
lib/spack/spack/test/installer/schedule.py::TestBuildGraph::test_pruning_with_shared_dependency_partially_installed
lib/spack/spack/test/installer/schedule.py::TestBuildGraphTestDeps::test_mark_explicit_spec_excludes_build_only_deps
lib/spack/spack/test/installer/schedule.py::TestBuildGraphTestDeps::test_tests_all_includes_test_deps_for_all
lib/spack/spack/test/installer/schedule.py::TestBuildGraphTestDeps::test_tests_false_excludes_test_deps
lib/spack/spack/test/installer/schedule.py::TestBuildGraphTestDeps::test_tests_root_includes_test_deps_for_root
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_expand_build_deps_adds_missing_deps
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_expand_build_deps_does_not_mark_in_graph_spec_as_done
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_expand_build_deps_no_deadlock_on_installed_dep
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_expand_build_deps_reenqueues_original_when_all_deps_installed
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_expand_build_deps_shared_dep_already_in_graph
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_expand_build_deps_skips_installed_in_db
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_expand_build_deps_skips_installed_in_session
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_has_unexpanded_build_deps_false_shared
lib/spack/spack/test/installer/schedule.py::TestExpandBuildDeps::test_has_unexpanded_build_deps_true
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_all_locked_returns_blocked
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_already_installed_yields_newly_installed
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_installed_implicit_explicit_set_produces_db_update
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_missing_in_upstream_is_installed_locally
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_mixed_locked_unlocked
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_no_jobserver_token_returns_empty
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_not_installed_no_running_starts_build
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_overwrite_handled_by_concurrent_process
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_overwrite_installed_spec_is_started
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_overwrite_prefix_mismatch_raises
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_prefix_collision_raises
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_write_locked_read_locked_installed_yields_newly_installed
lib/spack/spack/test/installer/schedule.py::TestScheduleBuilds::test_write_locked_read_locked_not_installed_still_blocked
lib/spack/spack/test/installer/schedule.py::test_cache_miss_expands_build_deps
lib/spack/spack/test/installer/schedule.py::test_expand_build_deps_source_only_includes_nested_build_deps
lib/spack/spack/test/installer/schedule.py::test_nodes_to_roots
lib/spack/spack/test/installer/schedule.py::test_nodes_to_roots_shared_dependency
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_completion_counter
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_failed_state_missing_log_file
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_failed_state_no_log_path
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_failed_state_parses_log_summary
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_on_build_added
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_on_build_removed
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_on_build_removed_resets_tracked
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_on_progress
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_on_resize
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_on_state_changed_failed
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_on_state_changed_transitions
lib/spack/spack/test/installer/ui.py::TestBasicStateManagement::test_print_failure_summaries
lib/spack/spack/test/installer/ui.py::TestBlockedIndicator::test_blocked_message_rendered
lib/spack/spack/test/installer/ui.py::TestBlockedIndicator::test_on_blocked_changed_marks_dirty_once
lib/spack/spack/test/installer/ui.py::TestBuildInfo::test_build_info_creation
lib/spack/spack/test/installer/ui.py::TestBuildInfo::test_build_info_external_package
lib/spack/spack/test/installer/ui.py::TestEdgeCases::test_all_builds_finished
lib/spack/spack/test/installer/ui.py::TestEdgeCases::test_empty_build_list
lib/spack/spack/test/installer/ui.py::TestEdgeCases::test_finalize_forces_overview_mode
lib/spack/spack/test/installer/ui.py::TestEdgeCases::test_no_header_with_finalize
lib/spack/spack/test/installer/ui.py::TestEdgeCases::test_on_progress_rounds_correctly
lib/spack/spack/test/installer/ui.py::TestHandleInput::test_parallelism_keys
lib/spack/spack/test/installer/ui.py::TestHandleInput::test_search_keys
lib/spack/spack/test/installer/ui.py::TestHandleInput::test_toggle_and_navigation_keys
lib/spack/spack/test/installer/ui.py::TestHeadlessMode::test_on_headless_changed_transitions
lib/spack/spack/test/installer/ui.py::TestHeadlessMode::test_on_state_changed_non_tty_suppressed_when_headless
lib/spack/spack/test/installer/ui.py::TestHeadlessMode::test_print_logs_suppressed_when_headless
lib/spack/spack/test/installer/ui.py::TestHeadlessMode::test_refresh_interval_modes
lib/spack/spack/test/installer/ui.py::TestHeadlessMode::test_render_suppressed_when_headless
lib/spack/spack/test/installer/ui.py::TestHeadlessMode::test_render_works_after_headless_cleared
lib/spack/spack/test/installer/ui.py::TestLineRendering::test_external_indicator
lib/spack/spack/test/installer/ui.py::TestLineRendering::test_failed_line_shows_log_path
lib/spack/spack/test/installer/ui.py::TestLineRendering::test_fetch_progress_rendered
lib/spack/spack/test/installer/ui.py::TestLineRendering::test_line_truncated_to_terminal_width
lib/spack/spack/test/installer/ui.py::TestLineRendering::test_non_tty_running_build_static_indicator
lib/spack/spack/test/installer/ui.py::TestLogFollowing::test_can_navigate_to_failed_build
lib/spack/spack/test/installer/ui.py::TestLogFollowing::test_navigate_to_failed_build_without_summary
lib/spack/spack/test/installer/ui.py::TestLogFollowing::test_navigation_skips_finished_build
lib/spack/spack/test/installer/ui.py::TestLogFollowing::test_print_logs_discarded_when_in_overview_mode
lib/spack/spack/test/installer/ui.py::TestLogFollowing::test_print_logs_discarded_when_not_tracked
lib/spack/spack/test/installer/ui.py::TestLogFollowing::test_print_logs_when_following
lib/spack/spack/test/installer/ui.py::TestNavigation::test_get_next_basic
lib/spack/spack/test/installer/ui.py::TestNavigation::test_get_next_fallback_when_tracked_filtered_out
lib/spack/spack/test/installer/ui.py::TestNavigation::test_get_next_no_matching
lib/spack/spack/test/installer/ui.py::TestNavigation::test_get_next_previous
lib/spack/spack/test/installer/ui.py::TestNavigation::test_get_next_skips_finished
lib/spack/spack/test/installer/ui.py::TestNavigation::test_get_next_with_filter
lib/spack/spack/test/installer/ui.py::TestNavigationIntegration::test_next_backward_navigation
lib/spack/spack/test/installer/ui.py::TestNavigationIntegration::test_next_cycles_through_builds
lib/spack/spack/test/installer/ui.py::TestNavigationIntegration::test_next_does_nothing_when_no_builds
lib/spack/spack/test/installer/ui.py::TestNavigationIntegration::test_next_does_nothing_when_same_build
lib/spack/spack/test/installer/ui.py::TestNavigationIntegration::test_next_switches_from_overview_to_logs
lib/spack/spack/test/installer/ui.py::TestOutputRendering::test_cursor_movement_vs_newlines
lib/spack/spack/test/installer/ui.py::TestOutputRendering::test_no_output_when_not_dirty
lib/spack/spack/test/installer/ui.py::TestOutputRendering::test_non_tty_output
lib/spack/spack/test/installer/ui.py::TestOutputRendering::test_render_throttling
lib/spack/spack/test/installer/ui.py::TestOutputRendering::test_tty_output_contains_ansi
lib/spack/spack/test/installer/ui.py::TestSearchAndFilter::test_enter_search_mode
lib/spack/spack/test/installer/ui.py::TestSearchAndFilter::test_is_displayed_filters_by_hash
lib/spack/spack/test/installer/ui.py::TestSearchAndFilter::test_is_displayed_filters_by_name
lib/spack/spack/test/installer/ui.py::TestSearchAndFilter::test_search_input_backspace
lib/spack/spack/test/installer/ui.py::TestSearchAndFilter::test_search_input_escape
lib/spack/spack/test/installer/ui.py::TestSearchAndFilter::test_search_input_printable
lib/spack/spack/test/installer/ui.py::TestSearchFilteringIntegration::test_clearing_search_shows_all_builds
lib/spack/spack/test/installer/ui.py::TestSearchFilteringIntegration::test_search_input_enter_navigates_to_next
lib/spack/spack/test/installer/ui.py::TestSearchFilteringIntegration::test_search_mode_filters_displayed_builds
lib/spack/spack/test/installer/ui.py::TestSearchFilteringIntegration::test_search_mode_with_navigation
lib/spack/spack/test/installer/ui.py::TestStdinReader::test_ansi_stripping
lib/spack/spack/test/installer/ui.py::TestStdinReader::test_basic_ascii
lib/spack/spack/test/installer/ui.py::TestStdinReader::test_multibyte_utf8
lib/spack/spack/test/installer/ui.py::TestStdinReader::test_oserror_returns_empty
lib/spack/spack/test/installer/ui.py::TestTargetJobs::test_header_shows_arrow_when_pending
lib/spack/spack/test/installer/ui.py::TestTargetJobs::test_header_shows_target_jobs
lib/spack/spack/test/installer/ui.py::TestTargetJobs::test_on_jobs_changed_marks_dirty
lib/spack/spack/test/installer/ui.py::TestTargetJobs::test_on_jobs_changed_same_value_no_dirty
lib/spack/spack/test/installer/ui.py::TestTerminalSizes::test_large_terminal_no_truncation
lib/spack/spack/test/installer/ui.py::TestTerminalSizes::test_narrow_terminal_short_header
lib/spack/spack/test/installer/ui.py::TestTerminalSizes::test_small_terminal_truncation
lib/spack/spack/test/installer/ui.py::TestTerminalUIColor::test_non_tty_failed_color_true_emits_red
lib/spack/spack/test/installer/ui.py::TestTerminalUIColor::test_non_tty_finished_color_false_no_ansi
lib/spack/spack/test/installer/ui.py::TestTerminalUIColor::test_non_tty_finished_color_true_emits_green
lib/spack/spack/test/installer/ui.py::TestTerminalUIVerbose::test_verbose_does_not_track_when_already_tracking
lib/spack/spack/test/installer/ui.py::TestTerminalUIVerbose::test_verbose_print_logs_tracked
lib/spack/spack/test/installer/ui.py::TestTerminalUIVerbose::test_verbose_print_logs_untracked
lib/spack/spack/test/installer/ui.py::TestTerminalUIVerbose::test_verbose_switches_on_finish
lib/spack/spack/test/installer/ui.py::TestTerminalUIVerbose::test_verbose_tracks_first_build
lib/spack/spack/test/installer/ui.py::TestTerminalUIVerbose::test_verbose_tty_no_effect
lib/spack/spack/test/installer/ui.py::TestTimeBasedBehavior::test_failed_packages_not_cleaned_up
lib/spack/spack/test/installer/ui.py::TestTimeBasedBehavior::test_finished_package_cleanup
lib/spack/spack/test/installer/ui.py::TestTimeBasedBehavior::test_no_redraw_when_nothing_changed
lib/spack/spack/test/installer/ui.py::TestTimeBasedBehavior::test_spinner_updates
lib/spack/spack/test/installer/ui.py::TestToggle::test_on_state_changed_finished_triggers_toggle_when_tracking
lib/spack/spack/test/installer/ui.py::TestToggle::test_partial_line_newline_on_toggle_and_next
lib/spack/spack/test/installer/ui.py::TestToggle::test_prefix_padding_filter_in_status
lib/spack/spack/test/installer/ui.py::TestToggle::test_print_logs_filters_padding
lib/spack/spack/test/installer/ui.py::TestToggle::test_toggle_from_logs_returns_to_overview
lib/spack/spack/test/installer/ui.py::TestToggle::test_toggle_from_overview_calls_next
lib/spack/spack/test/link_paths.py::test_cce_link_paths
lib/spack/spack/test/link_paths.py::test_clang4_link_paths
lib/spack/spack/test/link_paths.py::test_clang_apple_ld_link_paths
lib/spack/spack/test/link_paths.py::test_gcc7_link_paths
lib/spack/spack/test/link_paths.py::test_icc16_link_paths
lib/spack/spack/test/link_paths.py::test_nag_link_paths
lib/spack/spack/test/link_paths.py::test_nag_mixed_gcc_gnu_ld_link_paths
lib/spack/spack/test/link_paths.py::test_obscure_parsing_rules
lib/spack/spack/test/link_paths.py::test_xl_link_paths
lib/spack/spack/test/llnl/util/file_list.py::TestHeaderList::test_add
lib/spack/spack/test/llnl/util/file_list.py::TestHeaderList::test_flags
lib/spack/spack/test/llnl/util/file_list.py::TestHeaderList::test_get_item
lib/spack/spack/test/llnl/util/file_list.py::TestHeaderList::test_joined_and_str
lib/spack/spack/test/llnl/util/file_list.py::TestHeaderList::test_paths_manipulation
lib/spack/spack/test/llnl/util/file_list.py::TestHeaderList::test_repr
lib/spack/spack/test/llnl/util/file_list.py::TestLibraryList::test_add
lib/spack/spack/test/llnl/util/file_list.py::TestLibraryList::test_flags
lib/spack/spack/test/llnl/util/file_list.py::TestLibraryList::test_get_item
lib/spack/spack/test/llnl/util/file_list.py::TestLibraryList::test_joined_and_str
lib/spack/spack/test/llnl/util/file_list.py::TestLibraryList::test_paths_manipulation
lib/spack/spack/test/llnl/util/file_list.py::TestLibraryList::test_repr
lib/spack/spack/test/llnl/util/file_list.py::test_library_type_search
lib/spack/spack/test/llnl/util/file_list.py::test_searching_order
lib/spack/spack/test/main.py::test_add_command_line_scope_env
lib/spack/spack/test/main.py::test_add_command_line_scopes
lib/spack/spack/test/main.py::test_bad_command_line_scopes
lib/spack/spack/test/main.py::test_env_substitution_via_main_entrypoint
lib/spack/spack/test/main.py::test_get_version_bad_git
lib/spack/spack/test/main.py::test_get_version_no_git
lib/spack/spack/test/main.py::test_get_version_no_repo
lib/spack/spack/test/main.py::test_git_sha_output
lib/spack/spack/test/main.py::test_include_cfg
lib/spack/spack/test/main.py::test_include_duplicate_source
lib/spack/spack/test/main.py::test_include_recurse_diamond
lib/spack/spack/test/main.py::test_include_recurse_limit
lib/spack/spack/test/main.py::test_main_calls_get_version
lib/spack/spack/test/main.py::test_unrecognized_top_level_flag
lib/spack/spack/test/main.py::test_version_git_fails
lib/spack/spack/test/main.py::test_version_git_nonsense_output
lib/spack/spack/test/make_executable.py::test_construct_from_pathlib
lib/spack/spack/test/make_executable.py::test_exe_disallows_callable_as_output
lib/spack/spack/test/make_executable.py::test_exe_disallows_str_split_as_input
lib/spack/spack/test/make_executable.py::test_exe_fail
lib/spack/spack/test/make_executable.py::test_exe_not_exist
lib/spack/spack/test/make_executable.py::test_exe_success
lib/spack/spack/test/make_executable.py::test_exe_timeout
lib/spack/spack/test/make_executable.py::test_make_explicit
lib/spack/spack/test/make_executable.py::test_make_jobs_env
lib/spack/spack/test/make_executable.py::test_make_jobserver
lib/spack/spack/test/make_executable.py::test_make_jobserver_not_supported
lib/spack/spack/test/make_executable.py::test_make_normal
lib/spack/spack/test/make_executable.py::test_make_one_job
lib/spack/spack/test/make_executable.py::test_make_parallel_disabled
lib/spack/spack/test/make_executable.py::test_make_parallel_false
lib/spack/spack/test/make_executable.py::test_make_parallel_precedence
lib/spack/spack/test/make_executable.py::test_read_unicode
lib/spack/spack/test/make_executable.py::test_which
lib/spack/spack/test/make_executable.py::test_which_relative_path_with_slash
lib/spack/spack/test/make_executable.py::test_which_with_slash_ignores_path
lib/spack/spack/test/module_parsing.py::test_get_argument_from_module_line
lib/spack/spack/test/module_parsing.py::test_get_path_from_empty_module
lib/spack/spack/test/module_parsing.py::test_get_path_from_module_contents
lib/spack/spack/test/module_parsing.py::test_get_path_from_module_faked
lib/spack/spack/test/module_parsing.py::test_lmod_quote_parsing
lib/spack/spack/test/module_parsing.py::test_module_function_change_env
lib/spack/spack/test/module_parsing.py::test_module_function_change_env_with_module_src_cmd
lib/spack/spack/test/module_parsing.py::test_module_function_change_env_without_moduleshome_no_module_src_cmd
lib/spack/spack/test/module_parsing.py::test_module_function_no_change
lib/spack/spack/test/module_parsing.py::test_pkg_dir_from_module_name
lib/spack/spack/test/modules/common.py::test_check_module_set_name
lib/spack/spack/test/modules/common.py::test_get_module_upstream
lib/spack/spack/test/modules/common.py::test_load_installed_package_not_in_repo
lib/spack/spack/test/modules/common.py::test_modules_default_symlink
lib/spack/spack/test/modules/common.py::test_modules_written_with_proper_permissions
lib/spack/spack/test/modules/common.py::test_update_dictionary_extending_list
lib/spack/spack/test/modules/common.py::test_upstream_module_index
lib/spack/spack/test/modules/lmod.py::TestLmod::test_alter_environment
lib/spack/spack/test/modules/lmod.py::TestLmod::test_autoload_all
lib/spack/spack/test/modules/lmod.py::TestLmod::test_autoload_direct
lib/spack/spack/test/modules/lmod.py::TestLmod::test_compiler_built_with_core_compiler_is_in_core
lib/spack/spack/test/modules/lmod.py::TestLmod::test_compiler_language_virtuals
lib/spack/spack/test/modules/lmod.py::TestLmod::test_compilers_provided_different_name
lib/spack/spack/test/modules/lmod.py::TestLmod::test_conflicts
lib/spack/spack/test/modules/lmod.py::TestLmod::test_exclude
lib/spack/spack/test/modules/lmod.py::TestLmod::test_external_configure_args
lib/spack/spack/test/modules/lmod.py::TestLmod::test_file_layout
lib/spack/spack/test/modules/lmod.py::TestLmod::test_guess_core_compilers
lib/spack/spack/test/modules/lmod.py::TestLmod::test_help_message
lib/spack/spack/test/modules/lmod.py::TestLmod::test_hide_implicits
lib/spack/spack/test/modules/lmod.py::TestLmod::test_inconsistent_conflict_in_modules_yaml
lib/spack/spack/test/modules/lmod.py::TestLmod::test_layout_for_specs_compiled_with_core_compilers
lib/spack/spack/test/modules/lmod.py::TestLmod::test_manpath_setup
lib/spack/spack/test/modules/lmod.py::TestLmod::test_modules_no_arch
lib/spack/spack/test/modules/lmod.py::TestLmod::test_modules_relative_to_view
lib/spack/spack/test/modules/lmod.py::TestLmod::test_naming_scheme_compat
lib/spack/spack/test/modules/lmod.py::TestLmod::test_no_core_compilers
lib/spack/spack/test/modules/lmod.py::TestLmod::test_no_hash
lib/spack/spack/test/modules/lmod.py::TestLmod::test_only_generic_microarchitectures_in_root
lib/spack/spack/test/modules/lmod.py::TestLmod::test_override_template_in_modules_yaml
lib/spack/spack/test/modules/lmod.py::TestLmod::test_override_template_in_package
lib/spack/spack/test/modules/lmod.py::TestLmod::test_prepend_path_separator
lib/spack/spack/test/modules/lmod.py::TestLmod::test_projections_all_hierarchical
lib/spack/spack/test/modules/lmod.py::TestLmod::test_projections_all_non_hierarchical
lib/spack/spack/test/modules/lmod.py::TestLmod::test_projections_specific_hierarchical
lib/spack/spack/test/modules/lmod.py::TestLmod::test_projections_specific_non_hierarchical
lib/spack/spack/test/modules/lmod.py::TestLmod::test_setenv_raw_value
lib/spack/spack/test/modules/lmod.py::TestLmod::test_simple_case
lib/spack/spack/test/modules/tcl.py::TestTcl::test_alter_environment
lib/spack/spack/test/modules/tcl.py::TestTcl::test_autoload_all
lib/spack/spack/test/modules/tcl.py::TestTcl::test_autoload_direct
lib/spack/spack/test/modules/tcl.py::TestTcl::test_autoload_with_constraints
lib/spack/spack/test/modules/tcl.py::TestTcl::test_compiler_language_virtuals
lib/spack/spack/test/modules/tcl.py::TestTcl::test_compilers_provided_different_name
lib/spack/spack/test/modules/tcl.py::TestTcl::test_conflicts
lib/spack/spack/test/modules/tcl.py::TestTcl::test_exclude
lib/spack/spack/test/modules/tcl.py::TestTcl::test_extend_context
lib/spack/spack/test/modules/tcl.py::TestTcl::test_file_layout
lib/spack/spack/test/modules/tcl.py::TestTcl::test_guess_core_compilers
lib/spack/spack/test/modules/tcl.py::TestTcl::test_help_message
lib/spack/spack/test/modules/tcl.py::TestTcl::test_hide_implicits
lib/spack/spack/test/modules/tcl.py::TestTcl::test_hide_implicits_no_arg
lib/spack/spack/test/modules/tcl.py::TestTcl::test_hide_implicits_with_arg
lib/spack/spack/test/modules/tcl.py::TestTcl::test_hierarchical_conditional_modulepath_tcl_syntax
lib/spack/spack/test/modules/tcl.py::TestTcl::test_inconsistent_conflict_in_modules_yaml
lib/spack/spack/test/modules/tcl.py::TestTcl::test_invalid_naming_scheme
lib/spack/spack/test/modules/tcl.py::TestTcl::test_invalid_token_in_env_name
lib/spack/spack/test/modules/tcl.py::TestTcl::test_layout_for_specs_compiled_with_core_compilers
lib/spack/spack/test/modules/tcl.py::TestTcl::test_manpath_setup
lib/spack/spack/test/modules/tcl.py::TestTcl::test_module_index
lib/spack/spack/test/modules/tcl.py::TestTcl::test_modules_no_arch
lib/spack/spack/test/modules/tcl.py::TestTcl::test_naming_scheme_compat
lib/spack/spack/test/modules/tcl.py::TestTcl::test_no_core_compilers
lib/spack/spack/test/modules/tcl.py::TestTcl::test_no_hash
lib/spack/spack/test/modules/tcl.py::TestTcl::test_only_generic_microarchitectures_in_root
lib/spack/spack/test/modules/tcl.py::TestTcl::test_override_config
lib/spack/spack/test/modules/tcl.py::TestTcl::test_override_template_in_modules_yaml
lib/spack/spack/test/modules/tcl.py::TestTcl::test_override_template_in_package
lib/spack/spack/test/modules/tcl.py::TestTcl::test_prepend_path_separator
lib/spack/spack/test/modules/tcl.py::TestTcl::test_prerequisites_all
lib/spack/spack/test/modules/tcl.py::TestTcl::test_prerequisites_direct
lib/spack/spack/test/modules/tcl.py::TestTcl::test_projections_all_hierarchical
lib/spack/spack/test/modules/tcl.py::TestTcl::test_projections_all_non_hierarchical
lib/spack/spack/test/modules/tcl.py::TestTcl::test_projections_specific_hierarchical
lib/spack/spack/test/modules/tcl.py::TestTcl::test_projections_specific_non_hierarchical
lib/spack/spack/test/modules/tcl.py::TestTcl::test_setenv_raw_value
lib/spack/spack/test/modules/tcl.py::TestTcl::test_setup_environment
lib/spack/spack/test/modules/tcl.py::TestTcl::test_simple_case
lib/spack/spack/test/modules/tcl.py::TestTcl::test_suffix_does_not_propagate_to_dependents
lib/spack/spack/test/modules/tcl.py::TestTcl::test_suffixes
lib/spack/spack/test/modules/tcl.py::TestTcl::test_suffixes_format
lib/spack/spack/test/multimethod.py::test_multimethod_calls
lib/spack/spack/test/multimethod.py::test_multimethod_calls_and_inheritance
lib/spack/spack/test/multimethod.py::test_no_version_match
lib/spack/spack/test/multimethod.py::test_target_match
lib/spack/spack/test/namespace_trie.py::test_add_multiple
lib/spack/spack/test/namespace_trie.py::test_add_none_multiple
lib/spack/spack/test/namespace_trie.py::test_add_none_single
lib/spack/spack/test/namespace_trie.py::test_add_single
lib/spack/spack/test/namespace_trie.py::test_add_three
lib/spack/spack/test/oci/image.py::test_digest
lib/spack/spack/test/oci/image.py::test_name_parsing
lib/spack/spack/test/oci/image.py::test_parsing_failure
lib/spack/spack/test/oci/image.py::test_url_with_scheme
lib/spack/spack/test/oci/integration_test.py::test_best_effort_upload
lib/spack/spack/test/oci/integration_test.py::test_buildcache_push_command
lib/spack/spack/test/oci/integration_test.py::test_buildcache_push_with_base_image_command
lib/spack/spack/test/oci/integration_test.py::test_buildcache_tag
lib/spack/spack/test/oci/integration_test.py::test_uploading_with_base_image_in_docker_image_manifest_v2_format
lib/spack/spack/test/oci/urlopen.py::test_auth_method_we_cannot_handle_is_error
lib/spack/spack/test/oci/urlopen.py::test_automatic_oci_basic_authentication
lib/spack/spack/test/oci/urlopen.py::test_automatic_oci_bearer_authentication
lib/spack/spack/test/oci/urlopen.py::test_copy_missing_layers
lib/spack/spack/test/oci/urlopen.py::test_default_credentials_provider
lib/spack/spack/test/oci/urlopen.py::test_get_basic_challenge
lib/spack/spack/test/oci/urlopen.py::test_get_bearer_challenge
lib/spack/spack/test/oci/urlopen.py::test_image_from_mirror
lib/spack/spack/test/oci/urlopen.py::test_image_from_mirror_with_http_scheme
lib/spack/spack/test/oci/urlopen.py::test_image_reference_invalid
lib/spack/spack/test/oci/urlopen.py::test_image_reference_str
lib/spack/spack/test/oci/urlopen.py::test_invalid_www_authenticate
lib/spack/spack/test/oci/urlopen.py::test_list_tags
lib/spack/spack/test/oci/urlopen.py::test_manifest_index
lib/spack/spack/test/oci/urlopen.py::test_oci_registry_upload
lib/spack/spack/test/oci/urlopen.py::test_parse_www_authenticate
lib/spack/spack/test/oci/urlopen.py::test_registry_with_short_lived_bearer_tokens
lib/spack/spack/test/oci/urlopen.py::test_retry
lib/spack/spack/test/oci/urlopen.py::test_wrong_bearer_token_returned_by_auth_server
lib/spack/spack/test/oci/urlopen.py::test_wrong_credentials
lib/spack/spack/test/old_installer.py::test_build_request_basics
lib/spack/spack/test/old_installer.py::test_build_request_deptypes
lib/spack/spack/test/old_installer.py::test_build_request_errors
lib/spack/spack/test/old_installer.py::test_build_request_strings
lib/spack/spack/test/old_installer.py::test_build_task_basics
lib/spack/spack/test/old_installer.py::test_build_task_errors
lib/spack/spack/test/old_installer.py::test_build_task_strings
lib/spack/spack/test/old_installer.py::test_check_before_phase_error
lib/spack/spack/test/old_installer.py::test_check_deps_status_external
lib/spack/spack/test/old_installer.py::test_check_deps_status_install_failure
lib/spack/spack/test/old_installer.py::test_check_deps_status_upstream
lib/spack/spack/test/old_installer.py::test_check_deps_status_write_locked
lib/spack/spack/test/old_installer.py::test_check_last_phase_error
lib/spack/spack/test/old_installer.py::test_cleanup_all_tasks
lib/spack/spack/test/old_installer.py::test_cleanup_failed_err
lib/spack/spack/test/old_installer.py::test_clear_failures_errs
lib/spack/spack/test/old_installer.py::test_clear_failures_success
lib/spack/spack/test/old_installer.py::test_combine_phase_logs
lib/spack/spack/test/old_installer.py::test_combine_phase_logs_does_not_care_about_encoding
lib/spack/spack/test/old_installer.py::test_dump_packages_deps_errs
lib/spack/spack/test/old_installer.py::test_dump_packages_deps_ok
lib/spack/spack/test/old_installer.py::test_ensure_locked_err
lib/spack/spack/test/old_installer.py::test_ensure_locked_have
lib/spack/spack/test/old_installer.py::test_ensure_locked_new_lock
lib/spack/spack/test/old_installer.py::test_ensure_locked_new_warn
lib/spack/spack/test/old_installer.py::test_fake_install
lib/spack/spack/test/old_installer.py::test_get_dependent_ids
lib/spack/spack/test/old_installer.py::test_hms
lib/spack/spack/test/old_installer.py::test_install_fail_fast_on_detect
lib/spack/spack/test/old_installer.py::test_install_fail_fast_on_except
lib/spack/spack/test/old_installer.py::test_install_fail_multi
lib/spack/spack/test/old_installer.py::test_install_fail_on_interrupt
lib/spack/spack/test/old_installer.py::test_install_fail_single
lib/spack/spack/test/old_installer.py::test_install_failed
lib/spack/spack/test/old_installer.py::test_install_failed_not_fast
lib/spack/spack/test/old_installer.py::test_install_from_cache_errors
lib/spack/spack/test/old_installer.py::test_install_from_cache_ok
lib/spack/spack/test/old_installer.py::test_install_implicit
lib/spack/spack/test/old_installer.py::test_install_lock_failures
lib/spack/spack/test/old_installer.py::test_install_lock_installed_requeue
lib/spack/spack/test/old_installer.py::test_install_msg
lib/spack/spack/test/old_installer.py::test_install_read_locked_requeue
lib/spack/spack/test/old_installer.py::test_install_skip_patch
lib/spack/spack/test/old_installer.py::test_install_task_requeue_build_specs
lib/spack/spack/test/old_installer.py::test_install_uninstalled_deps
lib/spack/spack/test/old_installer.py::test_installer_ensure_ready_errors
lib/spack/spack/test/old_installer.py::test_installer_init_requests
lib/spack/spack/test/old_installer.py::test_installer_prune_built_build_deps
lib/spack/spack/test/old_installer.py::test_installer_repr
lib/spack/spack/test/old_installer.py::test_installer_str
lib/spack/spack/test/old_installer.py::test_installing_task_use_cache
lib/spack/spack/test/old_installer.py::test_overwrite_install_backup_failure
lib/spack/spack/test/old_installer.py::test_overwrite_install_backup_success
lib/spack/spack/test/old_installer.py::test_overwrite_install_does_install_build_deps
lib/spack/spack/test/old_installer.py::test_package_id_err
lib/spack/spack/test/old_installer.py::test_package_id_ok
lib/spack/spack/test/old_installer.py::test_prepare_for_install_on_installed
lib/spack/spack/test/old_installer.py::test_print_install_test_log_failures
lib/spack/spack/test/old_installer.py::test_print_install_test_log_skipped
lib/spack/spack/test/old_installer.py::test_process_binary_cache_tarball_tar
lib/spack/spack/test/old_installer.py::test_process_external_package_module
lib/spack/spack/test/old_installer.py::test_push_task_skip_processed
lib/spack/spack/test/old_installer.py::test_release_lock_write_n_exception
lib/spack/spack/test/old_installer.py::test_requeue_task
lib/spack/spack/test/old_installer.py::test_rewire_task_no_tarball
lib/spack/spack/test/old_installer.py::test_setup_install_dir_grp
lib/spack/spack/test/old_installer.py::test_single_external_implicit_install
lib/spack/spack/test/old_installer.py::test_term_status_line
lib/spack/spack/test/old_installer.py::test_try_install_from_binary_cache
lib/spack/spack/test/old_installer.py::test_update_failed_no_dependent_task
lib/spack/spack/test/optional_deps.py::test_default_variant
lib/spack/spack/test/package_class.py::test_cache_extra_sources
lib/spack/spack/test/package_class.py::test_cache_extra_sources_fails
lib/spack/spack/test/package_class.py::test_deserialize_preserves_package_attribute
lib/spack/spack/test/package_class.py::test_git_provenance_cant_resolve_commit
lib/spack/spack/test/package_class.py::test_git_provenance_commit_version
lib/spack/spack/test/package_class.py::test_git_provenance_find_commit_ls_remote
lib/spack/spack/test/package_class.py::test_package_exes_and_libs
lib/spack/spack/test/package_class.py::test_package_fetcher_fails
lib/spack/spack/test/package_class.py::test_package_license
lib/spack/spack/test/package_class.py::test_package_preferred_version
lib/spack/spack/test/package_class.py::test_package_subscript
lib/spack/spack/test/package_class.py::test_package_test_no_compilers
lib/spack/spack/test/package_class.py::test_package_tester_fails
lib/spack/spack/test/package_class.py::test_package_url_and_urls
lib/spack/spack/test/package_class.py::test_package_version_fails
lib/spack/spack/test/package_class.py::test_possible_dependencies
lib/spack/spack/test/package_class.py::test_possible_dependencies_missing
lib/spack/spack/test/package_class.py::test_possible_dependencies_virtual
lib/spack/spack/test/package_class.py::test_possible_dependencies_with_multiple_classes
lib/spack/spack/test/packages.py::TestPackage::test_import_package
lib/spack/spack/test/packages.py::TestPackage::test_inheritance_of_directives
lib/spack/spack/test/packages.py::TestPackage::test_inheritance_of_patches
lib/spack/spack/test/packages.py::TestPackage::test_load_package
lib/spack/spack/test/packages.py::TestPackage::test_nonexisting_package_filename
lib/spack/spack/test/packages.py::TestPackage::test_package_class_names
lib/spack/spack/test/packages.py::TestPackage::test_package_filename
lib/spack/spack/test/packages.py::TestPackage::test_package_name
lib/spack/spack/test/packages.py::test_bundle_patch_directive
lib/spack/spack/test/packages.py::test_bundle_version_checksum
lib/spack/spack/test/packages.py::test_commit_variant_finds_matches_for_commit_versions
lib/spack/spack/test/packages.py::test_custom_cmake_prefix_path
lib/spack/spack/test/packages.py::test_fetch_options
lib/spack/spack/test/packages.py::test_fetcher_errors
lib/spack/spack/test/packages.py::test_fetcher_url
lib/spack/spack/test/packages.py::test_git_url_top_level_conflicts
lib/spack/spack/test/packages.py::test_git_url_top_level_git_versions
lib/spack/spack/test/packages.py::test_git_url_top_level_url_versions
lib/spack/spack/test/packages.py::test_package_can_depend_on_commit_of_dependency
lib/spack/spack/test/packages.py::test_package_can_have_sparse_checkout_properties
lib/spack/spack/test/packages.py::test_package_can_have_sparse_checkout_properties_with_commit_version
lib/spack/spack/test/packages.py::test_package_can_have_sparse_checkout_properties_with_gitversion
lib/spack/spack/test/packages.py::test_package_condtional_variants_may_depend_on_commit
lib/spack/spack/test/packages.py::test_package_deprecated_version
lib/spack/spack/test/packages.py::test_package_version_can_have_sparse_checkout_properties
lib/spack/spack/test/packages.py::test_pkg_name_can_only_be_derived_when_package_module
lib/spack/spack/test/packages.py::test_rpath_args
lib/spack/spack/test/packages.py::test_spack_package_api_versioning
lib/spack/spack/test/packages.py::test_url_for_version_with_no_urls
lib/spack/spack/test/packages.py::test_url_for_version_with_only_overrides
lib/spack/spack/test/packages.py::test_url_for_version_with_only_overrides_with_gaps
lib/spack/spack/test/packages.py::test_urls_for_versions
lib/spack/spack/test/packaging.py::test_buildcache
lib/spack/spack/test/packaging.py::test_fetch_external_package_is_noop
lib/spack/spack/test/packaging.py::test_fetch_without_code_is_noop
lib/spack/spack/test/packaging.py::test_macho_relocation_with_changing_projection
lib/spack/spack/test/packaging.py::test_manual_download
lib/spack/spack/test/packaging.py::test_relocate_links
lib/spack/spack/test/packaging.py::test_relocate_text
lib/spack/spack/test/packaging.py::test_replace_paths
lib/spack/spack/test/patch.py::test_conditional_patched_dependencies
lib/spack/spack/test/patch.py::test_conditional_patched_deps_with_conditions
lib/spack/spack/test/patch.py::test_equality
lib/spack/spack/test/patch.py::test_invalid_from_dict
lib/spack/spack/test/patch.py::test_invalid_level
lib/spack/spack/test/patch.py::test_multiple_patched_dependencies
lib/spack/spack/test/patch.py::test_nested_directives
lib/spack/spack/test/patch.py::test_patch_failure_develop_spec_exits_gracefully
lib/spack/spack/test/patch.py::test_patch_failure_restages
lib/spack/spack/test/patch.py::test_patch_in_spec
lib/spack/spack/test/patch.py::test_patch_lookup_for_shadowed_package
lib/spack/spack/test/patch.py::test_patch_mixed_versions_subset_constraint
lib/spack/spack/test/patch.py::test_patch_no_file
lib/spack/spack/test/patch.py::test_patch_no_sha256
lib/spack/spack/test/patch.py::test_patch_order
lib/spack/spack/test/patch.py::test_patched_dependency
lib/spack/spack/test/patch.py::test_sha256_setter
lib/spack/spack/test/patch.py::test_stale_patch_cache_falls_back_to_fresh
lib/spack/spack/test/patch.py::test_url_patch
lib/spack/spack/test/patch.py::test_write_and_read_sub_dags_with_patched_deps
lib/spack/spack/test/permissions.py::test_chmod_real_entries_ignores_suid_sgid
lib/spack/spack/test/permissions.py::test_chmod_rejects_group_writable_suid
lib/spack/spack/test/permissions.py::test_chmod_rejects_world_writable_sgid
lib/spack/spack/test/permissions.py::test_chmod_rejects_world_writable_suid
lib/spack/spack/test/projections.py::test_projection_expansion
lib/spack/spack/test/provider_index.py::test_copy
lib/spack/spack/test/provider_index.py::test_equal
lib/spack/spack/test/provider_index.py::test_mpi_providers
lib/spack/spack/test/provider_index.py::test_provider_index_round_trip
lib/spack/spack/test/provider_index.py::test_providers_for_simple
lib/spack/spack/test/provider_index.py::test_remove_providers
lib/spack/spack/test/relocate.py::test_fixup_macos_rpaths
lib/spack/spack/test/relocate.py::test_relocate_elf_binaries_absolute_paths
lib/spack/spack/test/relocate.py::test_relocate_text_bin
lib/spack/spack/test/relocate.py::test_relocate_text_bin_raise_if_new_prefix_is_longer
lib/spack/spack/test/relocate.py::test_relocate_text_bin_with_message
lib/spack/spack/test/relocate_text.py::test_inplace_text_replacement
lib/spack/spack/test/relocate_text.py::test_ordered_replacement
lib/spack/spack/test/relocate_text.py::test_relocate_text_filters_redundant_entries
lib/spack/spack/test/relocate_text.py::test_text_relocation_regex_is_safe
lib/spack/spack/test/relocate_text.py::test_utf8_paths_to_single_binary_regex
lib/spack/spack/test/reporters.py::test_cdash_reporter_truncates_build_name_if_too_long
lib/spack/spack/test/reporters.py::test_reporters_extract_basics
lib/spack/spack/test/reporters.py::test_reporters_extract_missing_desc
lib/spack/spack/test/reporters.py::test_reporters_extract_no_parts
lib/spack/spack/test/reporters.py::test_reporters_extract_skipped
lib/spack/spack/test/reporters.py::test_reporters_report_for_package_no_stdout
lib/spack/spack/test/reporters.py::test_reporters_skip_new
lib/spack/spack/test/rewiring.py::test_rewire_bin
lib/spack/spack/test/rewiring.py::test_rewire_db
lib/spack/spack/test/rewiring.py::test_rewire_not_installed_fails
lib/spack/spack/test/rewiring.py::test_rewire_virtual
lib/spack/spack/test/rewiring.py::test_rewire_writes_new_metadata
lib/spack/spack/test/rewiring.py::test_uninstall_rewired_spec
lib/spack/spack/test/s3_fetch.py::test_s3fetchstrategy_downloaded
lib/spack/spack/test/sandbox.py::test_enable_sandbox_paths
lib/spack/spack/test/sandbox.py::test_landlock_sandbox_network_args
lib/spack/spack/test/sandbox.py::test_landlock_sandbox_syscall_args
lib/spack/spack/test/sandbox.py::test_sandbox_network_blocking_requires_abi_v4
lib/spack/spack/test/sbang.py::test_install_group_sbang
lib/spack/spack/test/sbang.py::test_install_sbang_too_long
lib/spack/spack/test/sbang.py::test_install_user_sbang
lib/spack/spack/test/sbang.py::test_sbang_handles_non_utf8_files
lib/spack/spack/test/sbang.py::test_sbang_hook_handles_non_writable_files_preserving_permissions
lib/spack/spack/test/sbang.py::test_sbang_hook_skips_nonexecutable_blobs
lib/spack/spack/test/sbang.py::test_shebang_exceeds_spack_shebang_limit
lib/spack/spack/test/sbang.py::test_shebang_handles_non_writable_files
lib/spack/spack/test/sbang.py::test_shebang_handling
lib/spack/spack/test/sbang.py::test_shebang_interpreter_regex
lib/spack/spack/test/schema.py::test_deprecated_properties
lib/spack/spack/test/schema.py::test_env_schema_update_wrong_type
lib/spack/spack/test/schema.py::test_list_merge_order
lib/spack/spack/test/schema.py::test_module_suffixes
lib/spack/spack/test/schema.py::test_ordereddict_merge_order
lib/spack/spack/test/schema.py::test_spack_schemas_are_valid
lib/spack/spack/test/schema.py::test_validate_spec
lib/spack/spack/test/spack_yaml.py::test_config_blame
lib/spack/spack/test/spack_yaml.py::test_config_blame_defaults
lib/spack/spack/test/spack_yaml.py::test_config_blame_with_override
lib/spack/spack/test/spack_yaml.py::test_deepcopy_to_native
lib/spack/spack/test/spack_yaml.py::test_dict_order
lib/spack/spack/test/spack_yaml.py::test_line_numbers
lib/spack/spack/test/spack_yaml.py::test_parse
lib/spack/spack/test/spack_yaml.py::test_round_trip_configuration
lib/spack/spack/test/spack_yaml.py::test_sorted_dict
lib/spack/spack/test/spack_yaml.py::test_yaml_aliases
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_canonical_deptype
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_concretize_deptypes
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_conflicting_package_constraints
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_construct_spec_with_deptypes
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_contains
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_copy_concretized
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_copy_dependencies
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_copy_deptypes
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_copy_simple
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_copy_through_spec_build_interface
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_dependents_and_dependencies_are_correct
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_deptype_traversal
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_edge_traversals
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_equal
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_getitem_exceptional_paths
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_getitem_query
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_hash_bits
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_invalid_dep
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_invalid_literal_spec
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_query_dependency_edges
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_query_dependents_edges
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_spec_tree_respect_deptypes
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_traversal
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_traversal_directions
lib/spack/spack/test/spec_dag.py::TestSpecDag::test_unsatisfiable_cases
lib/spack/spack/test/spec_dag.py::test_adding_same_deptype_with_the_same_name_raises
lib/spack/spack/test/spec_dag.py::test_addition_of_different_deptypes_in_multiple_calls
lib/spack/spack/test/spec_dag.py::test_conditional_dep_with_user_constraints
lib/spack/spack/test/spec_dag.py::test_getitem_finds_transitive_virtual
lib/spack/spack/test/spec_dag.py::test_getitem_sticks_to_subdag
lib/spack/spack/test/spec_dag.py::test_indexing_prefers_direct_or_transitive_link_deps
lib/spack/spack/test/spec_dag.py::test_installed_deps
lib/spack/spack/test/spec_dag.py::test_specify_preinstalled_dep
lib/spack/spack/test/spec_dag.py::test_synthetic_construction_bootstrapping
lib/spack/spack/test/spec_dag.py::test_synthetic_construction_of_split_dependencies_from_same_package
lib/spack/spack/test/spec_dag.py::test_test_deptype
lib/spack/spack/test/spec_dag.py::test_tree_cover_nodes_reduce_deptype
lib/spack/spack/test/spec_format.py::test_all_variants_all_hidden
lib/spack/spack/test/spec_format.py::test_all_variants_mixed_styles
lib/spack/spack/test/spec_format.py::test_all_variants_some_hidden
lib/spack/spack/test/spec_format.py::test_architecture_os_dim
lib/spack/spack/test/spec_format.py::test_architecture_os_hidden
lib/spack/spack/test/spec_format.py::test_architecture_platform_hidden
lib/spack/spack/test/spec_format.py::test_architecture_style_fn_receives_correct_part
lib/spack/spack/test/spec_format.py::test_architecture_target_hidden
lib/spack/spack/test/spec_format.py::test_architecture_target_highlight
lib/spack/spack/test/spec_format.py::test_single_variant_style_dim
lib/spack/spack/test/spec_format.py::test_single_variant_style_hidden
lib/spack/spack/test/spec_format.py::test_single_variant_style_highlight
lib/spack/spack/test/spec_format.py::test_single_variant_style_normal_uses_variant_color
lib/spack/spack/test/spec_format.py::test_version_style_dim
lib/spack/spack/test/spec_format.py::test_version_style_hidden
lib/spack/spack/test/spec_format.py::test_version_style_highlight
lib/spack/spack/test/spec_format.py::test_version_style_normal_uses_default_color
lib/spack/spack/test/spec_list.py::TestSpecList::test_exclusion_with_conditional_dependencies
lib/spack/spack/test/spec_list.py::TestSpecList::test_mock_spec_list
lib/spack/spack/test/spec_list.py::TestSpecList::test_spec_list_add
lib/spack/spack/test/spec_list.py::TestSpecList::test_spec_list_constraint_ordering
lib/spack/spack/test/spec_list.py::TestSpecList::test_spec_list_exclude_with_abstract_hashes
lib/spack/spack/test/spec_list.py::TestSpecList::test_spec_list_extension
lib/spack/spack/test/spec_list.py::TestSpecList::test_spec_list_matrix_exclude
lib/spack/spack/test/spec_list.py::TestSpecList::test_spec_list_nested_matrices
lib/spack/spack/test/spec_list.py::TestSpecList::test_spec_list_recursion_specs_as_constraints
lib/spack/spack/test/spec_list.py::TestSpecList::test_spec_list_remove
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_abstract_satisfies_with_lhs_provider_rhs_virtual
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_abstract_spec_prefix_error
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_abstract_specs_can_constrain_each_other
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_abstract_specs_with_propagation
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_adaptor_optflags
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_basic_satisfies_conditional_dep
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_concrete_checks_on_virtual_names_dont_need_repo
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_concrete_contains_does_not_consult_repo
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_concrete_satisfies_does_not_consult_repo
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_concrete_specs_which_do_not_satisfy_abstract
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_concrete_specs_which_satisfies_abstract
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_concrete_specs_which_satisfy_abstract
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_conditional_dependencies_satisfies
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_constrain_compiler_flags
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_constrain_specs_by_hash
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_constraining_abstract_specs_with_empty_intersection
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_copy_satisfies_transitive
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_dep_index
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_error_message_unknown_variant
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_errors_in_variant_directive
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_exceptional_paths_for_constructor
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_forwarding_of_architecture_attributes
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_indirect_unsatisfied_single_valued_variant
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_intersectable_concrete_specs_must_have_the_same_hash
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_intersects_virtual
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_intersects_virtual_providers
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_lhs_is_changed_when_constraining
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_lhs_is_not_changed_when_constraining
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_mismatched_constrain_spec_by_hash
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_multivalued_variant_1
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_multivalued_variant_2
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_multivalued_variant_3
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_multivalued_variant_4
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_multivalued_variant_5
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_propagate_reserved_variant_names
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_satisfied_namespace
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_satisfies_dependencies_ordered
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_satisfies_single_valued_variant
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_self_index
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_spec_format_null_attributes
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_spec_formatting
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_spec_formatting_bad_formats
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_spec_formatting_sigil_mismatches
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_spec_formatting_spaces_in_key
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_spec_override
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_spec_override_with_nonexisting_variant
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_spec_override_with_variant_not_in_init_spec
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_dict
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_dict_roundtrip
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_input_unchanged
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_intransitive_complex
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_subsequent
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_swap_names
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_swap_names_mismatch_virtuals
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_transitive_complex
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_splice_with_cached_hashes
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_target_constraints
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_unsatisfiable_virtual_deps_bindings
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_unsatisfied_single_valued_variant
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_virtual_deps_bindings
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_virtual_index
lib/spack/spack/test/spec_semantics.py::TestSpecSemantics::test_wildcard_is_invalid_variant_value
lib/spack/spack/test/spec_semantics.py::test_abstract_contains_semantic
lib/spack/spack/test/spec_semantics.py::test_abstract_hash_intersects_and_satisfies
lib/spack/spack/test/spec_semantics.py::test_abstract_provider_in_spec
lib/spack/spack/test/spec_semantics.py::test_attribute_existence_in_satisfies
lib/spack/spack/test/spec_semantics.py::test_call_dag_hash_on_old_dag_hash_spec
lib/spack/spack/test/spec_semantics.py::test_comparison_after_breaking_hash_change
lib/spack/spack/test/spec_semantics.py::test_comparison_multivalued_variants
lib/spack/spack/test/spec_semantics.py::test_concretize_partial_old_dag_hash_spec
lib/spack/spack/test/spec_semantics.py::test_constrain
lib/spack/spack/test/spec_semantics.py::test_constrain_dependencies_copies
lib/spack/spack/test/spec_semantics.py::test_constrain_symbolically
lib/spack/spack/test/spec_semantics.py::test_edge_equality_accounts_for_when_condition
lib/spack/spack/test/spec_semantics.py::test_edge_equality_does_not_depend_on_virtual_order
lib/spack/spack/test/spec_semantics.py::test_equality_discriminate_on_propagation
lib/spack/spack/test/spec_semantics.py::test_highlighting_spec_parts
lib/spack/spack/test/spec_semantics.py::test_intersects_and_satisfies
lib/spack/spack/test/spec_semantics.py::test_intersects_and_satisfies_on_concretized_spec
lib/spack/spack/test/spec_semantics.py::test_is_extension_after_round_trip_to_dict
lib/spack/spack/test/spec_semantics.py::test_long_spec
lib/spack/spack/test/spec_semantics.py::test_malformed_spec_dict
lib/spack/spack/test/spec_semantics.py::test_mark_concrete_roundtrip_preserves_hashes
lib/spack/spack/test/spec_semantics.py::test_merge_anonymous_spec_with_named_spec
lib/spack/spack/test/spec_semantics.py::test_old_format_strings_trigger_error
lib/spack/spack/test/spec_semantics.py::test_package_hash_affects_dunder_and_dag_hash
lib/spack/spack/test/spec_semantics.py::test_satisfies_and_subscript_with_compilers
lib/spack/spack/test/spec_semantics.py::test_spec_canonical_comparison_form
lib/spack/spack/test/spec_semantics.py::test_spec_dict_hashless_dep
lib/spack/spack/test/spec_semantics.py::test_spec_format_path
lib/spack/spack/test/spec_semantics.py::test_spec_format_path_posix
lib/spack/spack/test/spec_semantics.py::test_spec_format_path_windows
lib/spack/spack/test/spec_semantics.py::test_spec_format_with_compiler_adaptors
lib/spack/spack/test/spec_semantics.py::test_spec_installed
lib/spack/spack/test/spec_semantics.py::test_spec_ordering
lib/spack/spack/test/spec_semantics.py::test_spec_trim
lib/spack/spack/test/spec_semantics.py::test_specs_equality
lib/spack/spack/test/spec_semantics.py::test_specs_semantics_on_self
lib/spack/spack/test/spec_semantics.py::test_update_virtuals
lib/spack/spack/test/spec_semantics.py::test_virtual_queries_work_for_strings_and_lists
lib/spack/spack/test/spec_syntax.py::test_ambiguous_hash
lib/spack/spack/test/spec_syntax.py::test_cli_spec_roundtrip
lib/spack/spack/test/spec_syntax.py::test_compare_abstract_specs
lib/spack/spack/test/spec_syntax.py::test_dep_spec_by_hash
lib/spack/spack/test/spec_syntax.py::test_disambiguate_hash_by_spec
lib/spack/spack/test/spec_syntax.py::test_error_conditions
lib/spack/spack/test/spec_syntax.py::test_error_reporting
lib/spack/spack/test/spec_syntax.py::test_external_spec_hash_can_be_looked_up
lib/spack/spack/test/spec_syntax.py::test_git_ref_spec_equivalences
lib/spack/spack/test/spec_syntax.py::test_invalid_hash
lib/spack/spack/test/spec_syntax.py::test_invalid_hash_dep
lib/spack/spack/test/spec_syntax.py::test_multiple_specs_with_hash
lib/spack/spack/test/spec_syntax.py::test_nonexistent_hash
lib/spack/spack/test/spec_syntax.py::test_parse_filename_missing_slash_as_spec
lib/spack/spack/test/spec_syntax.py::test_parse_multiple_edge_attributes
lib/spack/spack/test/spec_syntax.py::test_parse_multiple_specs
lib/spack/spack/test/spec_syntax.py::test_parse_one_or_raise_error_message
lib/spack/spack/test/spec_syntax.py::test_parse_single_spec
lib/spack/spack/test/spec_syntax.py::test_parse_specfile_dependency
lib/spack/spack/test/spec_syntax.py::test_parse_specfile_relative_paths
lib/spack/spack/test/spec_syntax.py::test_parse_specfile_relative_subdir_path
lib/spack/spack/test/spec_syntax.py::test_parse_specfile_simple
lib/spack/spack/test/spec_syntax.py::test_parse_toolchain
lib/spack/spack/test/spec_syntax.py::test_platform_is_none_if_not_present
lib/spack/spack/test/spec_syntax.py::test_spec_by_hash
lib/spack/spack/test/spec_syntax.py::test_spec_by_hash_tokens
lib/spack/spack/test/spec_syntax.py::test_specfile_error_conditions_windows
lib/spack/spack/test/spec_syntax.py::test_specfile_parsing
lib/spack/spack/test/spec_yaml.py::test_anchorify_1
lib/spack/spack/test/spec_yaml.py::test_anchorify_2
lib/spack/spack/test/spec_yaml.py::test_dict_roundtrip_for_abstract_specs_with_partial_arch
lib/spack/spack/test/spec_yaml.py::test_direct_edges_and_round_tripping_to_dict
lib/spack/spack/test/spec_yaml.py::test_invalid_json_spec
lib/spack/spack/test/spec_yaml.py::test_invalid_yaml_spec
lib/spack/spack/test/spec_yaml.py::test_legacy_yaml
lib/spack/spack/test/spec_yaml.py::test_load_json_specfiles
lib/spack/spack/test/spec_yaml.py::test_load_specfile_with_no_nodes
lib/spack/spack/test/spec_yaml.py::test_ordered_read_not_required_for_consistent_dag_hash
lib/spack/spack/test/spec_yaml.py::test_pickle_preserves_identity_and_prefix
lib/spack/spack/test/spec_yaml.py::test_pickle_roundtrip_for_abstract_specs
lib/spack/spack/test/spec_yaml.py::test_read_spec_from_signed_json
lib/spack/spack/test/spec_yaml.py::test_roundtrip_concrete_specs
lib/spack/spack/test/spec_yaml.py::test_save_dependency_spec_jsons_subset
lib/spack/spack/test/spec_yaml.py::test_specfile_alias_is_updated
lib/spack/spack/test/spec_yaml.py::test_specfile_reader_for_invalid_version
lib/spack/spack/test/spec_yaml.py::test_using_ordered_dict
lib/spack/spack/test/spec_yaml.py::test_wire_spec_nodes_missing_build_spec_hash
lib/spack/spack/test/spec_yaml.py::test_wire_spec_nodes_missing_dep_hash
lib/spack/spack/test/spec_yaml.py::test_yaml_subdag
lib/spack/spack/test/svn_fetch.py::test_fetch
lib/spack/spack/test/svn_fetch.py::test_svn_extra_fetch
lib/spack/spack/test/tag.py::test_tag_equal
lib/spack/spack/test/tag.py::test_tag_get_all_available
lib/spack/spack/test/tag.py::test_tag_get_available
lib/spack/spack/test/tag.py::test_tag_get_installed_packages
lib/spack/spack/test/tag.py::test_tag_index_round_trip
lib/spack/spack/test/tag.py::test_tag_merge
lib/spack/spack/test/tag.py::test_tag_no_tags
lib/spack/spack/test/tag.py::test_tag_not_dict
lib/spack/spack/test/tag.py::test_tag_update_package
lib/spack/spack/test/tengine.py::TestContext::test_to_dict
lib/spack/spack/test/tengine.py::TestTengineEnvironment::test_template_retrieval
lib/spack/spack/test/test_suite.py::test_check_special_outputs
lib/spack/spack/test/test_suite.py::test_embedded_test_part_status
lib/spack/spack/test/test_suite.py::test_find_required_file
lib/spack/spack/test/test_suite.py::test_get_test_suite
lib/spack/spack/test/test_suite.py::test_get_test_suite_no_name
lib/spack/spack/test/test_suite.py::test_get_test_suite_too_many
lib/spack/spack/test/test_suite.py::test_package_copy_test_files_fails
lib/spack/spack/test/test_suite.py::test_package_copy_test_files_skips
lib/spack/spack/test/test_suite.py::test_packagetest_fails
lib/spack/spack/test/test_suite.py::test_process_test_parts
lib/spack/spack/test/test_suite.py::test_test_ensure_stage
lib/spack/spack/test/test_suite.py::test_test_external
lib/spack/spack/test/test_suite.py::test_test_function_names
lib/spack/spack/test/test_suite.py::test_test_functions_pkgless
lib/spack/spack/test/test_suite.py::test_test_log_name
lib/spack/spack/test/test_suite.py::test_test_not_installed
lib/spack/spack/test/test_suite.py::test_test_part_fail
lib/spack/spack/test/test_suite.py::test_test_part_missing_exe
lib/spack/spack/test/test_suite.py::test_test_part_missing_exe_fail_fast
lib/spack/spack/test/test_suite.py::test_test_part_pass
lib/spack/spack/test/test_suite.py::test_test_part_skip
lib/spack/spack/test/test_suite.py::test_test_spec_passes
lib/spack/spack/test/test_suite.py::test_test_spec_run_once
lib/spack/spack/test/test_suite.py::test_test_stage_caches
lib/spack/spack/test/test_suite.py::test_test_virtuals
lib/spack/spack/test/test_suite.py::test_write_test_result
lib/spack/spack/test/test_suite.py::test_write_tested_status
lib/spack/spack/test/test_suite.py::test_write_tested_status_no_repeats
lib/spack/spack/test/traverse.py::test_all_orders_traverse_the_same_edges
lib/spack/spack/test/traverse.py::test_all_orders_traverse_the_same_nodes
lib/spack/spack/test/traverse.py::test_breadth_firsrt_traversal_deptype_with_builddeps
lib/spack/spack/test/traverse.py::test_breadth_first_deptype_traversal
lib/spack/spack/test/traverse.py::test_breadth_first_traversal
lib/spack/spack/test/traverse.py::test_breadth_first_traversal_deptype_full
lib/spack/spack/test/traverse.py::test_breadth_first_traversal_deptype_run
lib/spack/spack/test/traverse.py::test_breadth_first_traversal_multiple_input_specs
lib/spack/spack/test/traverse.py::test_breadth_first_traversal_reverse
lib/spack/spack/test/traverse.py::test_breadth_first_versus_depth_first_printing
lib/spack/spack/test/traverse.py::test_breadth_first_versus_depth_first_tree
lib/spack/spack/test/traverse.py::test_mixed_depth_visitor
lib/spack/spack/test/traverse.py::test_topo_is_bfs_for_trees
lib/spack/spack/test/traverse.py::test_traverse_edges_topo
lib/spack/spack/test/traverse.py::test_traverse_nodes_no_deps
lib/spack/spack/test/traverse.py::test_traverse_nodes_topo
lib/spack/spack/test/traverse.py::test_tree_traversal_with_key
lib/spack/spack/test/url_fetch.py::test_archive_file_errors
lib/spack/spack/test/url_fetch.py::test_candidate_urls
lib/spack/spack/test/url_fetch.py::test_fetch
lib/spack/spack/test/url_fetch.py::test_fetch_curl_options
lib/spack/spack/test/url_fetch.py::test_fetch_options
lib/spack/spack/test/url_fetch.py::test_from_list_url
lib/spack/spack/test/url_fetch.py::test_hash_detection
lib/spack/spack/test/url_fetch.py::test_missing_curl
lib/spack/spack/test/url_fetch.py::test_new_version_from_list_url
lib/spack/spack/test/url_fetch.py::test_nosource_from_list_url
lib/spack/spack/test/url_fetch.py::test_unknown_hash
lib/spack/spack/test/url_fetch.py::test_url_check_curl_errors
lib/spack/spack/test/url_fetch.py::test_url_extra_fetch
lib/spack/spack/test/url_fetch.py::test_url_fetch_text_curl_failures
lib/spack/spack/test/url_fetch.py::test_url_fetch_text_urllib_web_error
lib/spack/spack/test/url_fetch.py::test_url_fetch_text_without_url
lib/spack/spack/test/url_fetch.py::test_url_missing_curl
lib/spack/spack/test/url_fetch.py::test_url_with_status_bar
lib/spack/spack/test/url_fetch.py::test_urlfetchstrategy_bad_url
lib/spack/spack/test/url_parse.py::test_no_version
lib/spack/spack/test/url_parse.py::test_url_parse_name_and_version
lib/spack/spack/test/url_parse.py::test_url_parse_offset
lib/spack/spack/test/url_parse.py::test_url_strip_name_suffixes
lib/spack/spack/test/url_substitution.py::test_url_substitution
lib/spack/spack/test/util/archive.py::test_can_tell_if_archive_has_git
lib/spack/spack/test/util/archive.py::test_get_commits_from_archive
lib/spack/spack/test/util/archive.py::test_gzip_compressed_tarball_is_reproducible
lib/spack/spack/test/util/archive.py::test_reproducible_tarfile_from_prefix_path_to_name
lib/spack/spack/test/util/argparsewriter.py::test_format_not_overridden
lib/spack/spack/test/util/compression.py::test_file_type_check_does_not_advance_stream
lib/spack/spack/test/util/compression.py::test_native_unpacking
lib/spack/spack/test/util/compression.py::test_system_unpacking
lib/spack/spack/test/util/compression.py::test_unallowed_extension
lib/spack/spack/test/util/editor.py::test_editor
lib/spack/spack/test/util/editor.py::test_editor_both_bad
lib/spack/spack/test/util/editor.py::test_editor_gvim_special_case
lib/spack/spack/test/util/editor.py::test_editor_no_visual
lib/spack/spack/test/util/editor.py::test_editor_no_visual_with_args
lib/spack/spack/test/util/editor.py::test_editor_precedence
lib/spack/spack/test/util/editor.py::test_editor_visual_bad
lib/spack/spack/test/util/editor.py::test_exec_fn_executable
lib/spack/spack/test/util/editor.py::test_find_exe_from_env_var
lib/spack/spack/test/util/editor.py::test_find_exe_from_env_var_bad_path
lib/spack/spack/test/util/editor.py::test_find_exe_from_env_var_no_editor
lib/spack/spack/test/util/editor.py::test_find_exe_from_env_var_with_args
lib/spack/spack/test/util/editor.py::test_no_editor
lib/spack/spack/test/util/elf.py::test_broken_elf
lib/spack/spack/test/util/elf.py::test_drop_redundant_rpath
lib/spack/spack/test/util/elf.py::test_elf_get_and_replace_rpaths_and_pt_interp
lib/spack/spack/test/util/elf.py::test_elf_invalid_e_shnum
lib/spack/spack/test/util/elf.py::test_elf_parsing_shared_linking
lib/spack/spack/test/util/elf.py::test_only_header
lib/spack/spack/test/util/elf.py::test_parser_doesnt_deal_with_nonzero_offset
lib/spack/spack/test/util/file_cache.py::test_bad_cache_permissions
lib/spack/spack/test/util/file_cache.py::test_delete_is_idempotent
lib/spack/spack/test/util/file_cache.py::test_failed_write_and_read_cache_file
lib/spack/spack/test/util/file_cache.py::test_read_before_init
lib/spack/spack/test/util/file_cache.py::test_write_and_read_cache_file
lib/spack/spack/test/util/file_cache.py::test_write_and_remove_cache_file
lib/spack/spack/test/util/filesystem.py::TestCopy::test_dir_dest
lib/spack/spack/test/util/filesystem.py::TestCopy::test_file_dest
lib/spack/spack/test/util/filesystem.py::TestCopy::test_glob_src
lib/spack/spack/test/util/filesystem.py::TestCopy::test_multiple_src_file_dest
lib/spack/spack/test/util/filesystem.py::TestCopy::test_non_existing_src
lib/spack/spack/test/util/filesystem.py::TestCopyTree::test_existing_dir
lib/spack/spack/test/util/filesystem.py::TestCopyTree::test_glob_src
lib/spack/spack/test/util/filesystem.py::TestCopyTree::test_non_existing_dir
lib/spack/spack/test/util/filesystem.py::TestCopyTree::test_non_existing_src
lib/spack/spack/test/util/filesystem.py::TestCopyTree::test_parent_dir
lib/spack/spack/test/util/filesystem.py::TestCopyTree::test_symlinks_false
lib/spack/spack/test/util/filesystem.py::TestCopyTree::test_symlinks_true
lib/spack/spack/test/util/filesystem.py::TestCopyTree::test_symlinks_true_ignore
lib/spack/spack/test/util/filesystem.py::TestInstall::test_dir_dest
lib/spack/spack/test/util/filesystem.py::TestInstall::test_file_dest
lib/spack/spack/test/util/filesystem.py::TestInstall::test_glob_src
lib/spack/spack/test/util/filesystem.py::TestInstall::test_multiple_src_file_dest
lib/spack/spack/test/util/filesystem.py::TestInstall::test_non_existing_src
lib/spack/spack/test/util/filesystem.py::TestInstallTree::test_allow_broken_symlinks
lib/spack/spack/test/util/filesystem.py::TestInstallTree::test_existing_dir
lib/spack/spack/test/util/filesystem.py::TestInstallTree::test_glob_src
lib/spack/spack/test/util/filesystem.py::TestInstallTree::test_non_existing_dir
lib/spack/spack/test/util/filesystem.py::TestInstallTree::test_non_existing_src
lib/spack/spack/test/util/filesystem.py::TestInstallTree::test_parent_dir
lib/spack/spack/test/util/filesystem.py::TestInstallTree::test_symlinks_false
lib/spack/spack/test/util/filesystem.py::TestInstallTree::test_symlinks_true
lib/spack/spack/test/util/filesystem.py::test_chgrp_dont_set_group_if_already_set
lib/spack/spack/test/util/filesystem.py::test_computation_of_header_directories
lib/spack/spack/test/util/filesystem.py::test_content_of_files_with_same_name
lib/spack/spack/test/util/filesystem.py::test_edit_in_place_through_temporary_file
lib/spack/spack/test/util/filesystem.py::test_filesummary
lib/spack/spack/test/util/filesystem.py::test_filter_files_multiple
lib/spack/spack/test/util/filesystem.py::test_filter_files_start_stop
lib/spack/spack/test/util/filesystem.py::test_filter_files_with_different_encodings
lib/spack/spack/test/util/filesystem.py::test_find_first_file
lib/spack/spack/test/util/filesystem.py::test_find_input_types
lib/spack/spack/test/util/filesystem.py::test_find_max_depth
lib/spack/spack/test/util/filesystem.py::test_find_max_depth_multiple_and_repeated_entry_points
lib/spack/spack/test/util/filesystem.py::test_find_max_depth_relative
lib/spack/spack/test/util/filesystem.py::test_find_max_depth_symlinks
lib/spack/spack/test/util/filesystem.py::test_find_path_glob_matches
lib/spack/spack/test/util/filesystem.py::test_headers_directory_setter
lib/spack/spack/test/util/filesystem.py::test_is_nonsymlink_exe_with_shebang
lib/spack/spack/test/util/filesystem.py::test_keep_modification_time
lib/spack/spack/test/util/filesystem.py::test_max_depth_and_recursive_errors
lib/spack/spack/test/util/filesystem.py::test_move_transaction_commit
lib/spack/spack/test/util/filesystem.py::test_move_transaction_rollback
lib/spack/spack/test/util/filesystem.py::test_multiple_patterns
lib/spack/spack/test/util/filesystem.py::test_partition_path
lib/spack/spack/test/util/filesystem.py::test_paths_containing_libs
lib/spack/spack/test/util/filesystem.py::test_prefixes
lib/spack/spack/test/util/filesystem.py::test_recursive_search_of_headers_from_prefix
lib/spack/spack/test/util/filesystem.py::test_remove_linked_tree_doesnt_change_file_permission
lib/spack/spack/test/util/filesystem.py::test_rename_dest_exists
lib/spack/spack/test/util/filesystem.py::test_safe_remove
lib/spack/spack/test/util/filesystem.py::test_temp_cwd_changes_restores_and_removes_dir
lib/spack/spack/test/util/filesystem.py::test_temp_cwd_cleanup_args
lib/spack/spack/test/util/filesystem.py::test_temp_cwd_restores_working_dir_on_exception
lib/spack/spack/test/util/filesystem.py::test_temporary_dir_context_manager
lib/spack/spack/test/util/filesystem.py::test_visit_directory_tree_follow_all
lib/spack/spack/test/util/filesystem.py::test_visit_directory_tree_follow_dirs
lib/spack/spack/test/util/filesystem.py::test_visit_directory_tree_follow_none
lib/spack/spack/test/util/filesystem.py::test_windows_sfn
lib/spack/spack/test/util/filesystem.py::test_write_tmp_and_move_binary_mode
lib/spack/spack/test/util/filesystem.py::test_write_tmp_and_move_failure_keeps_destination
lib/spack/spack/test/util/filesystem.py::test_write_tmp_and_move_permissions
lib/spack/spack/test/util/filesystem.py::test_write_tmp_and_move_replaces_and_cleans_up
lib/spack/spack/test/util/filesystem_symlink.py::test_symlink_dir
lib/spack/spack/test/util/filesystem_symlink.py::test_symlink_file
lib/spack/spack/test/util/filesystem_symlink.py::test_symlink_link_already_exists
lib/spack/spack/test/util/filesystem_symlink.py::test_symlink_source_not_exists
lib/spack/spack/test/util/filesystem_symlink.py::test_symlink_src_not_relative_to_link
lib/spack/spack/test/util/filesystem_symlink.py::test_symlink_src_relative_to_link
lib/spack/spack/test/util/filesystem_symlink.py::test_symlink_win_dir
lib/spack/spack/test/util/filesystem_symlink.py::test_symlink_win_file
lib/spack/spack/test/util/filesystem_symlink.py::test_windows_create_hard_link
lib/spack/spack/test/util/filesystem_symlink.py::test_windows_create_junction
lib/spack/spack/test/util/filesystem_symlink.py::test_windows_create_link_dir
lib/spack/spack/test/util/filesystem_symlink.py::test_windows_create_link_file
lib/spack/spack/test/util/filesystem_symlink.py::test_windows_read_link
lib/spack/spack/test/util/git.py::test_extract_git_version
lib/spack/spack/test/util/git.py::test_git_exe_conditional_option
lib/spack/spack/test/util/git.py::test_git_init_fetch_ommissions
lib/spack/spack/test/util/git.py::test_git_not_found
lib/spack/spack/test/util/git.py::test_init_git_repo
lib/spack/spack/test/util/git.py::test_mock_git_exe
lib/spack/spack/test/util/git.py::test_modified_files
lib/spack/spack/test/util/git.py::test_pull_checkout_branch
lib/spack/spack/test/util/git.py::test_pull_checkout_commit_any_remote
lib/spack/spack/test/util/git.py::test_pull_checkout_commit_specific_remote
lib/spack/spack/test/util/git.py::test_pull_checkout_tag
lib/spack/spack/test/util/lang.py::TestPriorityOrderedMapping::test_iteration_order
lib/spack/spack/test/util/lang.py::TestPriorityOrderedMapping::test_reverse_iteration
lib/spack/spack/test/util/lang.py::test_class_level_constant_value
lib/spack/spack/test/util/lang.py::test_dedupe
lib/spack/spack/test/util/lang.py::test_deprecated_property
lib/spack/spack/test/util/lang.py::test_fnmatch_multiple
lib/spack/spack/test/util/lang.py::test_grouped_exception
lib/spack/spack/test/util/lang.py::test_grouped_exception_base_type
lib/spack/spack/test/util/lang.py::test_key_ordering
lib/spack/spack/test/util/lang.py::test_load_modules_from_file
lib/spack/spack/test/util/lang.py::test_match_predicate
lib/spack/spack/test/util/lang.py::test_memoized
lib/spack/spack/test/util/lang.py::test_memoized_unhashable
lib/spack/spack/test/util/lang.py::test_pretty_date
lib/spack/spack/test/util/lang.py::test_pretty_duration
lib/spack/spack/test/util/lang.py::test_pretty_seconds
lib/spack/spack/test/util/lang.py::test_pretty_string_to_date
lib/spack/spack/test/util/lang.py::test_pretty_string_to_date_delta
lib/spack/spack/test/util/lang.py::test_singleton_instantiation_attr_failure
lib/spack/spack/test/util/lang.py::test_uniq
lib/spack/spack/test/util/ld_so_conf.py::test_host_dynamic_linker_search_paths
lib/spack/spack/test/util/ld_so_conf.py::test_ld_so_conf_parsing
lib/spack/spack/test/util/link_tree.py::test_destination_merge_visitor_always_errors_on_symlinked_dirs
lib/spack/spack/test/util/link_tree.py::test_destination_merge_visitor_file_dir_clashes
lib/spack/spack/test/util/link_tree.py::test_dst_visitor_file_dir
lib/spack/spack/test/util/link_tree.py::test_dst_visitor_file_file
lib/spack/spack/test/util/link_tree.py::test_ignore
lib/spack/spack/test/util/link_tree.py::test_merge_to_existing_directory
lib/spack/spack/test/util/link_tree.py::test_merge_to_new_directory
lib/spack/spack/test/util/link_tree.py::test_merge_to_new_directory_relative
lib/spack/spack/test/util/link_tree.py::test_merge_with_empty_directories
lib/spack/spack/test/util/link_tree.py::test_projection_dirs_created
lib/spack/spack/test/util/link_tree.py::test_source_merge_visitor_cant_be_cyclical
lib/spack/spack/test/util/link_tree.py::test_source_merge_visitor_deals_with_dangling_symlinks
lib/spack/spack/test/util/link_tree.py::test_source_merge_visitor_does_not_follow_symlinked_dirs_at_depth
lib/spack/spack/test/util/link_tree.py::test_source_merge_visitor_handles_same_file_gracefully
lib/spack/spack/test/util/link_tree.py::test_source_visitor_dir_dir
lib/spack/spack/test/util/link_tree.py::test_source_visitor_file_dir
lib/spack/spack/test/util/link_tree.py::test_source_visitor_file_file
lib/spack/spack/test/util/link_tree.py::test_unique_subdir_optimization
lib/spack/spack/test/util/link_tree.py::test_unique_subdir_optimization_disabled
lib/spack/spack/test/util/lock_base.py::test_disable_locking
lib/spack/spack/test/util/lock_base.py::test_lock_checks_group
lib/spack/spack/test/util/lock_base.py::test_lock_checks_user
lib/spack/spack/test/util/lock_unix.py::test_acquire_after_fork
lib/spack/spack/test/util/lock_unix.py::test_attempts_str
lib/spack/spack/test/util/lock_unix.py::test_complex_acquire_and_release_chain
lib/spack/spack/test/util/lock_unix.py::test_downgrade_write_fails
lib/spack/spack/test/util/lock_unix.py::test_downgrade_write_okay
lib/spack/spack/test/util/lock_unix.py::test_lock_debug_output
lib/spack/spack/test/util/lock_unix.py::test_lock_in_current_directory
lib/spack/spack/test/util/lock_unix.py::test_lock_str
lib/spack/spack/test/util/lock_unix.py::test_lock_with_no_parent_directory
lib/spack/spack/test/util/lock_unix.py::test_nested_reads
lib/spack/spack/test/util/lock_unix.py::test_nested_write_transaction
lib/spack/spack/test/util/lock_unix.py::test_poll_interval_generator
lib/spack/spack/test/util/lock_unix.py::test_poll_lock_exception
lib/spack/spack/test/util/lock_unix.py::test_read_after_write_does_not_accidentally_downgrade
lib/spack/spack/test/util/lock_unix.py::test_read_lock_no_lockfile
lib/spack/spack/test/util/lock_unix.py::test_read_lock_on_read_only_lockfile
lib/spack/spack/test/util/lock_unix.py::test_read_lock_read_only_dir_writable_lockfile
lib/spack/spack/test/util/lock_unix.py::test_read_lock_timeout_on_write
lib/spack/spack/test/util/lock_unix.py::test_read_lock_timeout_on_write_2
lib/spack/spack/test/util/lock_unix.py::test_read_lock_timeout_on_write_3
lib/spack/spack/test/util/lock_unix.py::test_read_lock_timeout_on_write_ranges
lib/spack/spack/test/util/lock_unix.py::test_read_lock_timeout_on_write_ranges_2
lib/spack/spack/test/util/lock_unix.py::test_read_lock_timeout_on_write_ranges_3
lib/spack/spack/test/util/lock_unix.py::test_release_write_downgrades_to_shared
lib/spack/spack/test/util/lock_unix.py::test_transaction
lib/spack/spack/test/util/lock_unix.py::test_transaction_with_exception
lib/spack/spack/test/util/lock_unix.py::test_try_acquire_read
lib/spack/spack/test/util/lock_unix.py::test_try_acquire_write
lib/spack/spack/test/util/lock_unix.py::test_try_transaction
lib/spack/spack/test/util/lock_unix.py::test_try_transaction_blocked
lib/spack/spack/test/util/lock_unix.py::test_try_transaction_nested
lib/spack/spack/test/util/lock_unix.py::test_try_transaction_with_exception
lib/spack/spack/test/util/lock_unix.py::test_upgrade_read_fails
lib/spack/spack/test/util/lock_unix.py::test_upgrade_read_okay
lib/spack/spack/test/util/lock_unix.py::test_upgrade_read_to_write
lib/spack/spack/test/util/lock_unix.py::test_upgrade_read_to_write_fails_with_readonly_file
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_read
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_read_2
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_read_3
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_read_ranges
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_read_ranges_2
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_read_ranges_3
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_read_ranges_4
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_read_ranges_5
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_write
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_write_2
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_write_3
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_write_ranges
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_write_ranges_2
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_write_ranges_3
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_on_write_ranges_4
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_with_multiple_readers_2_1
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_with_multiple_readers_2_1_ranges
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_with_multiple_readers_2_2
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_with_multiple_readers_2_3_ranges
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_with_multiple_readers_3_1
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_with_multiple_readers_3_1_ranges
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_with_multiple_readers_3_2
lib/spack/spack/test/util/lock_unix.py::test_write_lock_timeout_with_multiple_readers_3_2_ranges
lib/spack/spack/test/util/log_parser.py::TestOptimizeRegexes::test_escaping
lib/spack/spack/test/util/log_parser.py::TestOptimizeRegexes::test_groups_by_first_char
lib/spack/spack/test/util/log_parser.py::TestOptimizeRegexes::test_semantics_preserved
lib/spack/spack/test/util/log_parser.py::TestOptimizeRegexes::test_singletons_unchanged
lib/spack/spack/test/util/log_parser.py::test_log_parser
lib/spack/spack/test/util/log_parser.py::test_log_parser_non_utf8_bytes
lib/spack/spack/test/util/log_parser.py::test_log_parser_preserves_leading_whitespace
lib/spack/spack/test/util/log_parser.py::test_log_parser_stream
lib/spack/spack/test/util/log_parser.py::test_make_log_context_merges_overlapping_events
lib/spack/spack/test/util/log_parser.py::test_make_log_context_warning_in_error_context_keeps_yellow
lib/spack/spack/test/util/log_parser.py::test_tail_only
lib/spack/spack/test/util/log_parser.py::test_tail_overlapping_with_error
lib/spack/spack/test/util/log_parser.py::test_tail_renders_as_plain_context
lib/spack/spack/test/util/module_cmd.py::test_load_module_failure
lib/spack/spack/test/util/module_cmd.py::test_load_module_success
lib/spack/spack/test/util/package_hash.py::test_all_same_but_archive_hash
lib/spack/spack/test/util/package_hash.py::test_all_same_but_install
lib/spack/spack/test/util/package_hash.py::test_all_same_but_name
lib/spack/spack/test/util/package_hash.py::test_all_same_but_patch_contents
lib/spack/spack/test/util/package_hash.py::test_all_same_but_patches_to_apply
lib/spack/spack/test/util/package_hash.py::test_content_hash_all_same_but_archive_hash
lib/spack/spack/test/util/package_hash.py::test_content_hash_all_same_but_patch_contents
lib/spack/spack/test/util/package_hash.py::test_content_hash_cannot_get_details_from_ast
lib/spack/spack/test/util/package_hash.py::test_content_hash_different_variants
lib/spack/spack/test/util/package_hash.py::test_content_hash_not_concretized
lib/spack/spack/test/util/package_hash.py::test_content_hash_parse_dynamic_function_call
lib/spack/spack/test/util/package_hash.py::test_different_variants
lib/spack/spack/test/util/package_hash.py::test_hash
lib/spack/spack/test/util/package_hash.py::test_multimethod_resolution
lib/spack/spack/test/util/package_hash.py::test_package_hash_consistency
lib/spack/spack/test/util/package_hash.py::test_remove_all_directives
lib/spack/spack/test/util/package_hash.py::test_remove_complex_package_logic_filtered
lib/spack/spack/test/util/package_hash.py::test_remove_docstrings
lib/spack/spack/test/util/package_hash.py::test_remove_spack_attributes
lib/spack/spack/test/util/path.py::TestPathPadding::test_longest_prefix_re
lib/spack/spack/test/util/path.py::TestPathPadding::test_no_substitution
lib/spack/spack/test/util/path.py::TestPathPadding::test_padding_substitution
lib/spack/spack/test/util/path.py::TestPathPadding::test_partial_substitution
lib/spack/spack/test/util/path.py::TestPathPadding::test_short_substitution
lib/spack/spack/test/util/path.py::test_output_filtering
lib/spack/spack/test/util/path.py::test_pad_on_path_sep_boundary
lib/spack/spack/test/util/path.py::test_path_debug_padded_filter
lib/spack/spack/test/util/path.py::test_sanitize_filename
lib/spack/spack/test/util/prefix.py::test_multilevel_attributes
lib/spack/spack/test/util/prefix.py::test_prefix_attributes
lib/spack/spack/test/util/prefix.py::test_prefix_join
lib/spack/spack/test/util/prefix.py::test_string_like_behavior
lib/spack/spack/test/util/remote_file_cache.py::test_rfc_local_file_unix
lib/spack/spack/test/util/remote_file_cache.py::test_rfc_local_file_windows
lib/spack/spack/test/util/remote_file_cache.py::test_rfc_local_path_bad_scheme
lib/spack/spack/test/util/remote_file_cache.py::test_rfc_remote_local_path
lib/spack/spack/test/util/remote_file_cache.py::test_rfc_remote_local_path_no_dest
lib/spack/spack/test/util/string.py::test_comma_and_or
lib/spack/spack/test/util/string.py::test_plural
lib/spack/spack/test/util/string.py::test_quote
lib/spack/spack/test/util/timer.py::test_null_timer
lib/spack/spack/test/util/timer.py::test_stopping_unstarted_timer_is_no_error
lib/spack/spack/test/util/timer.py::test_timer
lib/spack/spack/test/util/timer.py::test_timer_stop_stops_all
lib/spack/spack/test/util/timer.py::test_timer_write
lib/spack/spack/test/util/tty/colify.py::test_fixed_column_table
lib/spack/spack/test/util/tty/colify.py::test_variable_width_columns
lib/spack/spack/test/util/tty/color.py::test_cescape_at_sign_roundtrip
lib/spack/spack/test/util/tty/color.py::test_cescape_multiple_at_signs_roundtrip
lib/spack/spack/test/util/tty/color.py::test_color_wrap
lib/spack/spack/test/util/tty/color.py::test_colorize_top_level_consecutive_escaped_ats
lib/spack/spack/test/util/tty/log.py::test_log_output_with_control_codes
lib/spack/spack/test/util/tty/log.py::test_log_output_with_filter
lib/spack/spack/test/util/tty/log.py::test_log_output_with_filter_and_append
lib/spack/spack/test/util/tty/log.py::test_log_python_output_and_echo_output
lib/spack/spack/test/util/tty/log.py::test_log_python_output_with_echo
lib/spack/spack/test/util/tty/log.py::test_log_python_output_with_invalid_utf8
lib/spack/spack/test/util/tty/log.py::test_log_python_output_without_echo
lib/spack/spack/test/util/tty/log.py::test_log_subproc_and_echo_output
lib/spack/spack/test/util/tty/log.py::test_nested_logging_contexts
lib/spack/spack/test/util/tty/tty.py::test_get_timestamp
lib/spack/spack/test/util/tty/tty.py::test_info
lib/spack/spack/test/util/tty/tty.py::test_msg
lib/spack/spack/test/util/unparse/unparse.py::test_annotations
lib/spack/spack/test/util/unparse/unparse.py::test_async_comp_and_gen_in_async_function
lib/spack/spack/test/util/unparse/unparse.py::test_async_comprehension
lib/spack/spack/test/util/unparse/unparse.py::test_async_for
lib/spack/spack/test/util/unparse/unparse.py::test_async_function_def
lib/spack/spack/test/util/unparse/unparse.py::test_async_generator_expression
lib/spack/spack/test/util/unparse/unparse.py::test_async_with
lib/spack/spack/test/util/unparse/unparse.py::test_async_with_as
lib/spack/spack/test/util/unparse/unparse.py::test_attribute_on_int
lib/spack/spack/test/util/unparse/unparse.py::test_bytes
lib/spack/spack/test/util/unparse/unparse.py::test_chained_comparisons
lib/spack/spack/test/util/unparse/unparse.py::test_class_decorators
lib/spack/spack/test/util/unparse/unparse.py::test_class_definition
lib/spack/spack/test/util/unparse/unparse.py::test_complex_f_string
lib/spack/spack/test/util/unparse/unparse.py::test_core_lib_files
lib/spack/spack/test/util/unparse/unparse.py::test_del_statement
lib/spack/spack/test/util/unparse/unparse.py::test_dict_comprehension
lib/spack/spack/test/util/unparse/unparse.py::test_dict_with_unpacking
lib/spack/spack/test/util/unparse/unparse.py::test_elifs
lib/spack/spack/test/util/unparse/unparse.py::test_for_else
lib/spack/spack/test/util/unparse/unparse.py::test_formatted_value
lib/spack/spack/test/util/unparse/unparse.py::test_fstrings
lib/spack/spack/test/util/unparse/unparse.py::test_fstrings_complicated
lib/spack/spack/test/util/unparse/unparse.py::test_function_arguments
lib/spack/spack/test/util/unparse/unparse.py::test_huge_float
lib/spack/spack/test/util/unparse/unparse.py::test_imaginary_literals
lib/spack/spack/test/util/unparse/unparse.py::test_import_many
lib/spack/spack/test/util/unparse/unparse.py::test_integer_parens
lib/spack/spack/test/util/unparse/unparse.py::test_joined_str
lib/spack/spack/test/util/unparse/unparse.py::test_joined_str_361
lib/spack/spack/test/util/unparse/unparse.py::test_lambda_parentheses
lib/spack/spack/test/util/unparse/unparse.py::test_match_literal
lib/spack/spack/test/util/unparse/unparse.py::test_min_int30
lib/spack/spack/test/util/unparse/unparse.py::test_negative_zero
lib/spack/spack/test/util/unparse/unparse.py::test_nonlocal
lib/spack/spack/test/util/unparse/unparse.py::test_parser_modes
lib/spack/spack/test/util/unparse/unparse.py::test_raise_from
lib/spack/spack/test/util/unparse/unparse.py::test_relative_import
lib/spack/spack/test/util/unparse/unparse.py::test_set_comprehension
lib/spack/spack/test/util/unparse/unparse.py::test_set_literal
lib/spack/spack/test/util/unparse/unparse.py::test_shifts
lib/spack/spack/test/util/unparse/unparse.py::test_simple_fstring
lib/spack/spack/test/util/unparse/unparse.py::test_starred_assignment
lib/spack/spack/test/util/unparse/unparse.py::test_subscript_with_tuple
lib/spack/spack/test/util/unparse/unparse.py::test_subscript_without_tuple
lib/spack/spack/test/util/unparse/unparse.py::test_try_except_finally
lib/spack/spack/test/util/unparse/unparse.py::test_tstrings
lib/spack/spack/test/util/unparse/unparse.py::test_unary_parens
lib/spack/spack/test/util/unparse/unparse.py::test_variable_annotation
lib/spack/spack/test/util/unparse/unparse.py::test_while_else
lib/spack/spack/test/util/unparse/unparse.py::test_with_as
lib/spack/spack/test/util/unparse/unparse.py::test_with_simple
lib/spack/spack/test/util/unparse/unparse.py::test_with_two_items
lib/spack/spack/test/util/util_gpg.py::test_gpg_capabilities_case_insensitvie
lib/spack/spack/test/util/util_gpg.py::test_gpg_key_algorithm
lib/spack/spack/test/util/util_gpg.py::test_gpg_key_type
lib/spack/spack/test/util/util_gpg.py::test_gpg_trust_case_insensitive
lib/spack/spack/test/util/util_gpg.py::test_gpg_trust_ownertrust
lib/spack/spack/test/util/util_gpg.py::test_parse_gpg_output_case_one
lib/spack/spack/test/util/util_gpg.py::test_parse_gpg_output_case_three
lib/spack/spack/test/util/util_gpg.py::test_parse_gpg_output_case_two
lib/spack/spack/test/util/util_gpg.py::test_really_long_gnupghome_dir
lib/spack/spack/test/util/util_gpg.py::test_trust_secret_key_file
lib/spack/spack/test/util/util_url.py::test_default_download_name
lib/spack/spack/test/util/util_url.py::test_default_download_name_dot_dot
lib/spack/spack/test/util/util_url.py::test_parse_link_rel_next
lib/spack/spack/test/util/util_url.py::test_relative_path_to_file_url
lib/spack/spack/test/util/util_url.py::test_url_join_absolute
lib/spack/spack/test/util/util_url.py::test_url_join_resolve_href
lib/spack/spack/test/util/util_url.py::test_url_join_up
lib/spack/spack/test/util/util_url.py::test_url_local_file_path
lib/spack/spack/test/util/util_url.py::test_url_local_file_path_no_file_scheme
lib/spack/spack/test/variant.py::TestBoolValuedVariant::test_constrain
lib/spack/spack/test/variant.py::TestBoolValuedVariant::test_initialization
lib/spack/spack/test/variant.py::TestBoolValuedVariant::test_intersects
lib/spack/spack/test/variant.py::TestBoolValuedVariant::test_satisfies
lib/spack/spack/test/variant.py::TestBoolValuedVariant::test_yaml_entry
lib/spack/spack/test/variant.py::TestMultiValuedVariant::test_constrain
lib/spack/spack/test/variant.py::TestMultiValuedVariant::test_initialization
lib/spack/spack/test/variant.py::TestMultiValuedVariant::test_intersects
lib/spack/spack/test/variant.py::TestMultiValuedVariant::test_satisfies
lib/spack/spack/test/variant.py::TestMultiValuedVariant::test_yaml_entry
lib/spack/spack/test/variant.py::TestSingleValuedVariant::test_constrain
lib/spack/spack/test/variant.py::TestSingleValuedVariant::test_initialization
lib/spack/spack/test/variant.py::TestSingleValuedVariant::test_intersects
lib/spack/spack/test/variant.py::TestSingleValuedVariant::test_satisfies
lib/spack/spack/test/variant.py::TestSingleValuedVariant::test_yaml_entry
lib/spack/spack/test/variant.py::TestVariant::test_callable_validator
lib/spack/spack/test/variant.py::TestVariant::test_representation
lib/spack/spack/test/variant.py::TestVariant::test_str
lib/spack/spack/test/variant.py::TestVariant::test_validation
lib/spack/spack/test/variant.py::TestVariantMapTest::test_copy
lib/spack/spack/test/variant.py::TestVariantMapTest::test_invalid_values
lib/spack/spack/test/variant.py::TestVariantMapTest::test_satisfies_and_constrain
lib/spack/spack/test/variant.py::TestVariantMapTest::test_set_item
lib/spack/spack/test/variant.py::TestVariantMapTest::test_str
lib/spack/spack/test/variant.py::TestVariantMapTest::test_substitute
lib/spack/spack/test/variant.py::test_abstract_variant_constrain_abstract_abstract
lib/spack/spack/test/variant.py::test_abstract_variant_constrain_abstract_concrete_fail
lib/spack/spack/test/variant.py::test_abstract_variant_constrain_abstract_concrete_ok
lib/spack/spack/test/variant.py::test_abstract_variant_constrain_concrete_abstract_fail
lib/spack/spack/test/variant.py::test_abstract_variant_constrain_concrete_abstract_ok
lib/spack/spack/test/variant.py::test_abstract_variant_constrain_concrete_concrete_fail
lib/spack/spack/test/variant.py::test_abstract_variant_constrain_concrete_concrete_ok
lib/spack/spack/test/variant.py::test_abstract_variant_intersects_abstract_abstract
lib/spack/spack/test/variant.py::test_abstract_variant_intersects_abstract_concrete
lib/spack/spack/test/variant.py::test_abstract_variant_intersects_concrete_abstract
lib/spack/spack/test/variant.py::test_abstract_variant_intersects_concrete_concrete
lib/spack/spack/test/variant.py::test_abstract_variant_satisfies_abstract_abstract
lib/spack/spack/test/variant.py::test_abstract_variant_satisfies_abstract_concrete
lib/spack/spack/test/variant.py::test_abstract_variant_satisfies_concrete_abstract
lib/spack/spack/test/variant.py::test_abstract_variant_satisfies_concrete_concrete
lib/spack/spack/test/variant.py::test_concretize_variant_default_with_multiple_defs
lib/spack/spack/test/variant.py::test_conditional_value_comparable_to_bool
lib/spack/spack/test/variant.py::test_constrain_narrowing
lib/spack/spack/test/variant.py::test_disjoint_set_fluent_methods
lib/spack/spack/test/variant.py::test_disjoint_set_initialization
lib/spack/spack/test/variant.py::test_disjoint_set_initialization_errors
lib/spack/spack/test/variant.py::test_from_node_dict
lib/spack/spack/test/variant.py::test_patches_variant
lib/spack/spack/test/variant.py::test_prevalidate_variant_value
lib/spack/spack/test/variant.py::test_strict_invalid_variant_values
lib/spack/spack/test/variant.py::test_substitute_abstract_variants_failure
lib/spack/spack/test/variant.py::test_substitute_abstract_variants_narrowing
lib/spack/spack/test/variant.py::test_variant_definitions
lib/spack/spack/test/variant.py::test_wild_card_valued_variants_equivalent_to_str
lib/spack/spack/test/verification.py::test_check_chmod_manifest_entry
lib/spack/spack/test/verification.py::test_check_prefix_manifest
lib/spack/spack/test/verification.py::test_dir_manifest_entry
lib/spack/spack/test/verification.py::test_file_manifest_entry
lib/spack/spack/test/verification.py::test_link_manifest_entry
lib/spack/spack/test/verification.py::test_single_file_verification
lib/spack/spack/test/views.py::test_remove_extensions_ordered
lib/spack/spack/test/views.py::test_view_no_dir_symlinks
lib/spack/spack/test/views.py::test_view_unique_subdir_becomes_dir_symlink
lib/spack/spack/test/views.py::test_view_with_spec_not_contributing_files
lib/spack/spack/test/web.py::test_detailed_http_error_pickle
lib/spack/spack/test/web.py::test_etag_parser
lib/spack/spack/test/web.py::test_find_exotic_versions_of_archive_2
lib/spack/spack/test/web.py::test_find_exotic_versions_of_archive_3
lib/spack/spack/test/web.py::test_find_versions_of_archive_0
lib/spack/spack/test/web.py::test_find_versions_of_archive_1
lib/spack/spack/test/web.py::test_find_versions_of_archive_2
lib/spack/spack/test/web.py::test_find_versions_of_archive_3
lib/spack/spack/test/web.py::test_find_versions_of_archive_with_fragment
lib/spack/spack/test/web.py::test_find_versions_of_archive_with_javascript
lib/spack/spack/test/web.py::test_gather_s3_information
lib/spack/spack/test/web.py::test_get_header
lib/spack/spack/test/web.py::test_list_url
lib/spack/spack/test/web.py::test_push_to_url_s3
lib/spack/spack/test/web.py::test_push_to_url_s3_if_match
lib/spack/spack/test/web.py::test_remove_s3_url
lib/spack/spack/test/web.py::test_retry
lib/spack/spack/test/web.py::test_retry_on_transient_error
lib/spack/spack/test/web.py::test_retry_on_transient_error_non_oserror
lib/spack/spack/test/web.py::test_retry_on_transient_error_reuse
lib/spack/spack/test/web.py::test_s3_url_exists
lib/spack/spack/test/web.py::test_s3_url_parsing
lib/spack/spack/test/web.py::test_spider
lib/spack/spack/test/web.py::test_spider_no_response
lib/spack/spack/test/web.py::test_ssl_curl_cert_file
lib/spack/spack/test/web.py::test_ssl_urllib
By default, pytest captures the output of all unit tests, and it will print any captured output for failed tests.
Sometimes it is helpful to see your output interactively while the tests run (e.g., if you add print statements to unit tests).
To see the output live, use the -s argument to pytest:
$ spack unit-test -s --list-long lib/spack/spack/test/architecture.py::test_platform
Unit tests are crucial to making sure bugs are not introduced into Spack. If you are modifying core Spack libraries or adding new functionality, please add new unit tests for your feature and consider strengthening existing tests. You will likely be asked to do this if you submit a pull request to the Spack project on GitHub. Check out the pytest documentation and feel free to ask for guidance on how to write tests!
Style Tests¶
Spack uses Ruff for code formatting and linting, and mypy for type checking. In order to limit the number of PRs that were mostly style changes, we decided to enforce PEP 8 conformance. Your PR needs to comply with PEP 8 in order to be accepted, and if it modifies the Spack library, it needs to successfully type-check with mypy as well.
Testing for compliance with Spack’s style is easy.
Simply run the spack style command:
$ spack style
To automatically fix formatting and linting issues, use the --fix flag:
$ spack style --fix
spack style has a couple advantages over running the tools by hand:
It only tests files that you have modified since branching off of
develop.It works regardless of what directory you are in.
It automatically adds approved exemptions from style checks. For example, URLs are often longer than 99 characters, so we exempt them from line length checks. We also exempt certain import-related checks in
package.pyfiles (e.g.,from spack.package import *).
If all is well, you’ll see something like this:
$ spack style
==> Running style checks on spack
selected: import, ruff-format, ruff-check, mypy
==> Checking Files:
var/spack/repos/builtin/packages/hdf5/package.py
var/spack/repos/builtin/packages/hdf/package.py
var/spack/repos/builtin/packages/netcdf/package.py
==> Running import checks
import checks were clean
==> Running ruff-format checks
ruff-format checks were clean
==> Running ruff-check checks
ruff-check checks were clean
==> Running mypy checks
mypy checks were clean
==> spack style checks were clean
However, if you are not compliant with PEP 8, Ruff will report errors:
$ spack style
==> Running style checks on spack
var/spack/repos/builtin/packages/netcdf/package.py:26:1: F401 'os' imported but unused
var/spack/repos/builtin/packages/netcdf/package.py:61:1: E303 too many blank lines (2)
var/spack/repos/builtin/packages/netcdf/package.py:106:100: E501 line too long (105 > 99 characters)
Most of the error messages are straightforward, but if you do not understand what they mean, just ask questions about them when you submit your PR.
The line numbers will change if you add or delete lines, so simply run spack style again to update them.
Many errors can be automatically fixed by running spack style --fix.
Tip
Try fixing style errors in reverse order.
This eliminates the need for multiple runs of spack style just to re-compute line numbers and makes it much easier to fix errors directly off of the CI output.
Documentation Tests¶
Spack uses Sphinx to build its documentation. In order to prevent things like broken links and missing imports, we added documentation tests that build the documentation and fail if there are any warning or error messages.
Building the documentation requires several dependencies:
sphinx
sphinxcontrib-programoutput
sphinx-rtd-theme
graphviz
git
mercurial
subversion
All of these can be installed with Spack, e.g.:
$ spack install py-sphinx py-sphinxcontrib-programoutput py-sphinx-rtd-theme graphviz git mercurial subversion
Warning
Sphinx has several required dependencies.
If you are using a Python from Spack and you installed py-sphinx and friends, you need to make them available to your Python interpreter.
The easiest way to do this is to run:
$ spack load py-sphinx py-sphinx-rtd-theme py-sphinxcontrib-programoutput
so that all of the dependencies are added to PYTHONPATH.
If you see an error message like:
Extension error:
Could not import extension sphinxcontrib.programoutput (exception: No module named sphinxcontrib.programoutput)
make: *** [html] Error 1
that means Sphinx could not find py-sphinxcontrib-programoutput in your PYTHONPATH.
Once all of the dependencies are installed, you can try building the documentation:
$ cd path/to/spack/lib/spack/docs/
$ make clean
$ make
If you see any warning or error messages, you will have to correct those before your PR is accepted. If you are editing the documentation, you should be running the documentation tests to make sure there are no errors. Documentation changes can result in some obfuscated warning messages. If you do not understand what they mean, feel free to ask when you submit your PR.
Glossary and Index¶
The documentation maintains a glossary of Spack terminology and a general index.
Every glossary term is indexed automatically, so .. index:: directives in the documentation pages must not repeat a glossary term verbatim; instead they carry a descriptive subentry (single: environment; activating) placed at the most specific section.
The full set of indexing conventions is documented in a comment at the top of lib/spack/docs/glossary.rst — please follow it when adding index entries or glossary terms.
GitLab CI¶
Build Cache Stacks¶
Spack welcomes the contribution of software stacks of interest to the community. These stacks are used to test package recipes and generate publicly available build caches. Spack uses GitLab CI for managing the orchestration of build jobs.
GitLab Entry Point¶
Add a stack entry point to share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml.
There are two stages required for each new stack: the generation stage and the build stage.
The generate stage is defined using the job template .generate configured with environment variables defining the name of the stack in SPACK_CI_STACK_NAME, the platform (SPACK_TARGET_PLATFORM) and architecture (SPACK_TARGET_ARCH) configuration, and the tags associated with the class of runners to build on.
Note
The SPACK_CI_STACK_NAME must match the name of the directory containing the stack’s spack.yaml file.
Note
The platform and architecture variables are specified in order to select the correct configurations from the generic configurations used in Spack CI. The configurations currently available are:
.cray_rhel_zen4.cray_sles_zen4.darwin_aarch64.darwin_x86_64.linux_aarch64.linux_icelake.linux_neoverse_n1.linux_neoverse_v1.linux_neoverse_v2.linux_skylake.linux_x86_64.linux_x86_64_v4
New configurations can be added to accommodate new platforms and architectures.
The build stage is defined as a trigger job that consumes the GitLab CI pipeline generated in the generate stage for this stack.
Build stage jobs use the .build job template, which handles the basic configuration.
An example entry point for a new stack called my-super-cool-stack
.my-super-cool-stack:
extends: [".linux_x86_64_v3"]
variables:
SPACK_CI_STACK_NAME: my-super-cool-stack
tags: ["all", "tags", "your", "job", "needs"]
my-super-cool-stack-generate:
extends: [".generate", ".my-super-cool-stack"]
image: my-super-cool-stack-image:0.0.1
my-super-cool-stack-build:
extends: [".build", ".my-super-cool-stack"]
trigger:
include:
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
job: my-super-cool-stack-generate
strategy: depend
needs:
- artifacts: true
job: my-super-cool-stack-generate
Stack Configuration¶
The stack configuration is a Spack environment file with two additional sections added.
Stack configurations should be located in share/spack/gitlab/cloud_pipelines/stacks/<stack_name>/spack.yaml.
The ci section is generally used to define stack-specific mappings such as image or tags.
For more information on what can go into the ci section, refer to the docs on pipelines.
The cdash section is used for defining where to upload the results of builds.
Spack configures most of the details for posting pipeline results to cdash.spack.io.
The only requirement in the stack configuration is to define a build-group that is unique; this is usually the long name of the stack.
An example stack that builds zlib.
spack:
view: false
packages:
all:
require: ["%gcc", "target=x86_64_v3"]
specs:
- zlib
ci:
pipeline-gen:
- build-job:
image: my-super-cool-stack-image:0.0.1
cdash:
build-group: My Super Cool Stack
Note
The image used in the *-generate job must match exactly the image used in the build-job.
When the images do not match, the build job may fail.
Registering Runners¶
Contributing computational resources to Spack’s CI build farm is one way to help expand the capabilities and offerings of the public Spack build caches. Currently, Spack utilizes Linux runners from AWS, Google, and the University of Oregon (UO).
Runners require four key pieces:
Runner Registration Token
Accurate tags
OIDC Authentication script
GPG keys
Minimum GitLab Runner Version: 16.1.0 Installation instructions
Registration Token¶
The first step to contribute new runners is to open an issue in the Spack infrastructure project. This will be reported to the Spack infrastructure team, who will guide users through the process of registering new runners for Spack CI.
The information needed to register a runner is the motivation for the new resources, a semi-detailed description of the runner, and finally the point of contact for maintaining the software on the runner.
The point of contact will then work with the infrastructure team to obtain runner registration token(s) for interacting with Spack’s GitLab instance. Once the runner is active, this point of contact will also be responsible for updating the GitLab runner software to keep pace with Spack’s GitLab.
Tagging¶
In the initial stages of runner registration, it is important to exclude the special tag spack.
This will prevent the new runner(s) from being picked up for production CI jobs while it is configured and evaluated.
Once it is determined that the runner is ready for production use, the spack tag will be added.
Because GitLab has no concept of tag exclusion, runners that provide specialized resources also require specialized tags.
For example, a basic CPU-only x86_64 runner may have a tag x86_64 associated with it.
However, a runner containing a CUDA-capable GPU may have the tag x86_64-cuda to denote that it should only be used for packages that will benefit from a CUDA-capable resource.
OIDC¶
Spack runners use OIDC authentication for connecting to the appropriate AWS bucket, which is used for coordinating the communication of binaries between build jobs.
In order to configure OIDC authentication, Spack CI runners use a Python script with minimal dependencies.
This script can be configured for runners as seen here using the pre_build_script.
[[runners]]
pre_build_script = """
echo 'Executing Spack pre-build setup script'
for cmd in "${PY3:-}" python3 python; do
if command -v > /dev/null "$cmd"; then
export PY3="$(command -v "$cmd")"
break
fi
done
if [ -z "${PY3:-}" ]; then
echo "Unable to find python3 executable"
exit 1
fi
$PY3 -c "import urllib.request; urllib.request.urlretrieve('https://raw.githubusercontent.com/spack/spack-infrastructure/main/scripts/gitlab_runner_pre_build/pre_build.py', 'pre_build.py')"
$PY3 pre_build.py > envvars
. ./envvars
rm -f envvars
unset GITLAB_OIDC_TOKEN
"""
GPG Keys¶
Runners that may be utilized for protected CI require the registration of an intermediate signing key that can be used to sign packages.
For more information on package signing, read Key Architecture.
Coverage¶
Spack uses Codecov to generate and report unit test coverage. This helps us tell what percentage of lines of code in Spack are covered by unit tests. Although code covered by unit tests can still contain bugs, it is much less error-prone than code that is not covered by unit tests.
Codecov provides browser extensions for Google Chrome and Firefox. These extensions integrate with GitHub and allow you to see coverage line-by-line when viewing the Spack repository. If you are new to Spack, a great way to get started is to write unit tests to increase coverage!
Unlike with CI on GitHub Actions, Codecov tests are not required to pass in order for your PR to be merged. If you modify core Spack libraries, we would greatly appreciate unit tests that cover these changed lines. Otherwise, we have no way of knowing whether or not your changes introduce a bug. If you make substantial changes to the core, we may request unit tests to increase coverage.
Note
If the only files you modified are package files, we do not care about coverage on your PR.
You may notice that the Codecov tests fail even though you did not modify any core files.
This means that Spack’s overall coverage has increased since you branched off of develop.
This is a good thing!
If you really want to get the Codecov tests to pass, you can rebase off of the latest develop, but again, this is not required.
Git Workflows¶
Spack is still in the beta stages of development.
Most of our users run off of the develop branch, and fixes and new features are constantly being merged.
So, how do you keep up-to-date with upstream while maintaining your own local differences and contributing PRs to Spack?
Branching¶
The easiest way to contribute a pull request is to make all of your changes on new branches.
Make sure your develop branch is up-to-date and create a new branch off of it:
$ git checkout develop
$ git pull upstream develop
$ git branch <descriptive_branch_name>
$ git checkout <descriptive_branch_name>
Here we assume that the local develop branch tracks the upstream develop branch of Spack.
This is not a requirement, and you could also do the same with remote branches.
But for some, it is more convenient to have a local branch that tracks upstream.
Normally, we prefer that commits pertaining to a package <package-name> have a message in the format <package-name>: descriptive message.
It is important to add a descriptive message so that others who might be looking at your changes later (in a year or maybe two) can understand the rationale behind them.
Now, you can make your changes while keeping the develop branch clean.
Edit a few files and commit them by running:
$ git add <files_to_be_part_of_the_commit>
$ git commit --message <descriptive_message_of_this_particular_commit>
Next, push it to your remote fork and create a PR:
$ git push origin <descriptive_branch_name> --set-upstream
GitHub provides a tutorial on how to file a pull request.
When you send the request, make develop the destination branch.
If you need this change immediately and do not have time to wait for your PR to be merged, you can always work on this branch. But if you have multiple PRs, another option is to maintain a “Frankenstein” branch that combines all of your other branches:
$ git co develop
$ git branch <your_modified_develop_branch>
$ git checkout <your_modified_develop_branch>
$ git merge <descriptive_branch_name>
This can be done with each new PR you submit.
Just make sure to keep this local branch up-to-date with the upstream develop branch too.
Cherry-Picking¶
What if you made some changes to your local modified develop branch and already committed them, but later decided to contribute them to Spack?
You can use cherry-picking to create a new branch with only these commits.
First, check out your local modified develop branch:
$ git checkout <your_modified_develop_branch>
Now, get the hashes of the commits you want from the output of git log:
$ git log
Next, create a new branch off of the upstream develop branch and copy the commits that you want in your PR:
$ git checkout develop
$ git pull upstream develop
$ git branch <descriptive_branch_name>
$ git checkout <descriptive_branch_name>
$ git cherry-pick <hash>
$ git push origin <descriptive_branch_name> --set-upstream
Now you can create a PR from the web interface of GitHub. The net result is as follows:
You patched your local version of Spack and can use it further.
You “cherry-picked” these changes into a standalone branch and submitted it as a PR upstream.
Should you have several commits to contribute, you could follow the same procedure by getting hashes of all of them and cherry-picking them to the PR branch.
Note
It is important that whenever you change something that might be of importance upstream, create a pull request as soon as possible. Do not wait for weeks or months to do this, because:
you might forget why you modified certain files.
it could get difficult to isolate this change into a standalone, clean PR.
Rebasing¶
Other developers are constantly making contributions to Spack, possibly on the same files that your PR changed.
If their PR is merged before yours, it can create a merge conflict.
This means that your PR can no longer be automatically merged without a chance of breaking your changes.
In this case, you will be asked to rebase on top of the latest upstream develop branch.
First, make sure your develop branch is up-to-date:
$ git checkout develop
$ git pull upstream develop
Now, we need to switch to the branch you submitted for your PR and rebase it on top of develop:
$ git checkout <descriptive_branch_name>
$ git rebase develop
Git will likely ask you to resolve conflicts. Edit the file that it says cannot be merged automatically and resolve the conflict. Then, run:
$ git add <file_that_could_not_be_merged>
$ git rebase --continue
You may have to repeat this process multiple times until all conflicts are resolved. Once this is done, simply force push your rebased branch to your remote fork:
$ git push --force origin <descriptive_branch_name>
Rebasing with cherry-pick¶
You can also perform a rebase using cherry-pick.
First, create a temporary backup branch:
$ git checkout <descriptive_branch_name>
$ git branch tmp
If anything goes wrong, you can always go back to your tmp branch.
Now, look at the logs and save the hashes of any commits you would like to keep:
$ git log
Next, go back to the original branch and reset it to develop.
Before doing so, make sure that your local develop branch is up-to-date with upstream:
$ git checkout develop
$ git pull upstream develop
$ git checkout <descriptive_branch_name>
$ git reset --hard develop
Now you can cherry-pick relevant commits:
$ git cherry-pick <hash1>
$ git cherry-pick <hash2>
Push the modified branch to your fork:
$ git push --force origin <descriptive_branch_name>
If everything looks good, delete the backup branch:
$ git branch --delete --force tmp
Re-writing History¶
Sometimes you may end up on a branch that has diverged so much from develop that it cannot easily be rebased.
If the current commit history is more of an experimental nature and only the net result is important, you may rewrite the history.
First, merge upstream develop and reset your branch to it.
On the branch in question, run:
$ git merge develop
$ git reset develop
At this point, your branch will point to the same commit as develop, and thereby the two are indistinguishable.
However, all the files that were previously modified will stay as such.
In other words, you do not lose the changes you made.
Changes can be reviewed by looking at diffs:
$ git status
$ git diff
The next step is to rewrite the history by adding files and creating commits:
$ git add <files_to_be_part_of_commit>
$ git commit --message <descriptive_message>
After all changed files are committed, you can push the branch to your fork and create a PR:
$ git push origin --set-upstream