repo: generalize "swap" context manager to also accept paths
The method is now called "use_repositories" and makes it clear in the docstring that it accepts as arguments either Repo objects or paths. Since there was some duplication between this contextmanager and "use_repo" in the testing framework, remove the latter and use spack.repo.use_repositories across the entire code base. Make a few adjustment to MockPackageMultiRepo, since it was stating in the docstring that it was supposed to mock spack.repo.Repo and was instead mocking spack.repo.RepoPath.
This commit is contained in:
		 Massimiliano Culpo
					Massimiliano Culpo
				
			
				
					committed by
					
						 Todd Gamblin
						Todd Gamblin
					
				
			
			
				
	
			
			
			 Todd Gamblin
						Todd Gamblin
					
				
			
						parent
						
							0007ed72c3
						
					
				
				
					commit
					1a8963b0f4
				
			| @@ -1259,23 +1259,6 @@ def set_path(repo): | |||||||
|     return append |     return append | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @contextlib.contextmanager |  | ||||||
| def swap(repo_path): |  | ||||||
|     """Temporarily use another RepoPath.""" |  | ||||||
|     global path |  | ||||||
| 
 |  | ||||||
|     # swap out _path for repo_path |  | ||||||
|     saved = path |  | ||||||
|     remove_from_meta = set_path(repo_path) |  | ||||||
| 
 |  | ||||||
|     yield |  | ||||||
| 
 |  | ||||||
|     # restore _path and sys.meta_path |  | ||||||
|     if remove_from_meta: |  | ||||||
|         sys.meta_path.remove(repo_path) |  | ||||||
|     path = saved |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @contextlib.contextmanager | @contextlib.contextmanager | ||||||
| def additional_repository(repository): | def additional_repository(repository): | ||||||
|     """Adds temporarily a repository to the default one. |     """Adds temporarily a repository to the default one. | ||||||
| @@ -1288,6 +1271,34 @@ def additional_repository(repository): | |||||||
|     path.remove(repository) |     path.remove(repository) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @contextlib.contextmanager | ||||||
|  | def use_repositories(*paths_and_repos): | ||||||
|  |     """Use the repositories passed as arguments within the context manager. | ||||||
|  | 
 | ||||||
|  |     Args: | ||||||
|  |         *paths_and_repos: paths to the repositories to be used, or | ||||||
|  |             already constructed Repo objects | ||||||
|  | 
 | ||||||
|  |     Returns: | ||||||
|  |         Corresponding RepoPath object | ||||||
|  |     """ | ||||||
|  |     global path | ||||||
|  | 
 | ||||||
|  |     # Construct a temporary RepoPath object from | ||||||
|  |     temporary_repositories = RepoPath(*paths_and_repos) | ||||||
|  | 
 | ||||||
|  |     # Swap the current repository out | ||||||
|  |     saved = path | ||||||
|  |     remove_from_meta = set_path(temporary_repositories) | ||||||
|  | 
 | ||||||
|  |     yield temporary_repositories | ||||||
|  | 
 | ||||||
|  |     # Restore _path and sys.meta_path | ||||||
|  |     if remove_from_meta: | ||||||
|  |         sys.meta_path.remove(temporary_repositories) | ||||||
|  |     path = saved | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class RepoError(spack.error.SpackError): | class RepoError(spack.error.SpackError): | ||||||
|     """Superclass for repository-related errors.""" |     """Superclass for repository-related errors.""" | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -73,7 +73,7 @@ def test_specs_staging(config): | |||||||
|     b = mock_repo.add_package('b', [d, e], [default, default]) |     b = mock_repo.add_package('b', [d, e], [default, default]) | ||||||
|     mock_repo.add_package('a', [b, c], [default, default]) |     mock_repo.add_package('a', [b, c], [default, default]) | ||||||
| 
 | 
 | ||||||
|     with repo.swap(mock_repo): |     with repo.use_repositories(mock_repo): | ||||||
|         spec_a = Spec('a') |         spec_a = Spec('a') | ||||||
|         spec_a.concretize() |         spec_a.concretize() | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -330,7 +330,7 @@ def test_env_status_broken_view( | |||||||
|         # switch to a new repo that doesn't include the installed package |         # switch to a new repo that doesn't include the installed package | ||||||
|         # test that Spack detects the missing package and warns the user |         # test that Spack detects the missing package and warns the user | ||||||
|         new_repo = MockPackageMultiRepo() |         new_repo = MockPackageMultiRepo() | ||||||
|         with spack.repo.swap(new_repo): |         with spack.repo.use_repositories(new_repo): | ||||||
|             output = env('status') |             output = env('status') | ||||||
|             assert 'In environment test' in output |             assert 'In environment test' in output | ||||||
|             assert 'Environment test includes out of date' in output |             assert 'Environment test includes out of date' in output | ||||||
| @@ -351,7 +351,7 @@ def test_env_activate_broken_view( | |||||||
|     # switch to a new repo that doesn't include the installed package |     # switch to a new repo that doesn't include the installed package | ||||||
|     # test that Spack detects the missing package and fails gracefully |     # test that Spack detects the missing package and fails gracefully | ||||||
|     new_repo = MockPackageMultiRepo() |     new_repo = MockPackageMultiRepo() | ||||||
|     with spack.repo.swap(new_repo): |     with spack.repo.use_repositories(new_repo): | ||||||
|         with pytest.raises(SpackCommandError): |         with pytest.raises(SpackCommandError): | ||||||
|             env('activate', '--sh', 'test') |             env('activate', '--sh', 'test') | ||||||
| 
 | 
 | ||||||
| @@ -929,7 +929,7 @@ def test_read_old_lock_and_write_new(tmpdir): | |||||||
|     y = mock_repo.add_package('y', [], []) |     y = mock_repo.add_package('y', [], []) | ||||||
|     mock_repo.add_package('x', [y], [build_only]) |     mock_repo.add_package('x', [y], [build_only]) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         x = Spec('x') |         x = Spec('x') | ||||||
|         x.concretize() |         x.concretize() | ||||||
| 
 | 
 | ||||||
| @@ -960,7 +960,7 @@ def test_read_old_lock_creates_backup(tmpdir): | |||||||
|     mock_repo = MockPackageMultiRepo() |     mock_repo = MockPackageMultiRepo() | ||||||
|     y = mock_repo.add_package('y', [], []) |     y = mock_repo.add_package('y', [], []) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         y = Spec('y') |         y = Spec('y') | ||||||
|         y.concretize() |         y.concretize() | ||||||
| 
 | 
 | ||||||
| @@ -997,7 +997,7 @@ def noop(*args): | |||||||
|         pass |         pass | ||||||
|     setattr(mock_repo, 'dump_provenance', noop) |     setattr(mock_repo, 'dump_provenance', noop) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         x_spec = Spec('x') |         x_spec = Spec('x') | ||||||
|         x_concretized = x_spec.concretized() |         x_concretized = x_spec.concretized() | ||||||
| 
 | 
 | ||||||
| @@ -1038,7 +1038,7 @@ def noop(*args): | |||||||
|         pass |         pass | ||||||
|     setattr(mock_repo, 'dump_provenance', noop) |     setattr(mock_repo, 'dump_provenance', noop) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         y_spec = Spec('y ^z@3') |         y_spec = Spec('y ^z@3') | ||||||
|         y_concretized = y_spec.concretized() |         y_concretized = y_spec.concretized() | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ | |||||||
| 
 | 
 | ||||||
| import spack.main | import spack.main | ||||||
| import spack.modules | import spack.modules | ||||||
| from spack.test.conftest import use_store, use_configuration, use_repo | from spack.test.conftest import use_store, use_configuration | ||||||
| 
 | 
 | ||||||
| module = spack.main.SpackCommand('module') | module = spack.main.SpackCommand('module') | ||||||
| 
 | 
 | ||||||
| @@ -23,7 +23,7 @@ def ensure_module_files_are_there( | |||||||
|     module = spack.main.SpackCommand('module') |     module = spack.main.SpackCommand('module') | ||||||
|     with use_store(mock_store): |     with use_store(mock_store): | ||||||
|         with use_configuration(mock_configuration): |         with use_configuration(mock_configuration): | ||||||
|             with use_repo(mock_repo_path): |             with spack.repo.use_repositories(mock_repo_path): | ||||||
|                 module('tcl', 'refresh', '-y') |                 module('tcl', 'refresh', '-y') | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -82,7 +82,7 @@ def mock_pkg_git_repo(tmpdir_factory): | |||||||
|         git('-c', 'commit.gpgsign=false', 'commit', |         git('-c', 'commit.gpgsign=false', 'commit', | ||||||
|             '-m', 'change pkg-b, remove pkg-c, add pkg-d') |             '-m', 'change pkg-b, remove pkg-c, add pkg-d') | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         yield mock_repo_packages |         yield mock_repo_packages | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -304,7 +304,7 @@ def test_architecture_deep_inheritance(self, mock_targets): | |||||||
|         barpkg = mock_repo.add_package('barpkg', [bazpkg], [default_dep]) |         barpkg = mock_repo.add_package('barpkg', [bazpkg], [default_dep]) | ||||||
|         mock_repo.add_package('foopkg', [barpkg], [default_dep]) |         mock_repo.add_package('foopkg', [barpkg], [default_dep]) | ||||||
| 
 | 
 | ||||||
|         with spack.repo.swap(mock_repo): |         with spack.repo.use_repositories(mock_repo): | ||||||
|             spec = Spec('foopkg %gcc@4.5.0 os=CNL target=nocona' + |             spec = Spec('foopkg %gcc@4.5.0 os=CNL target=nocona' + | ||||||
|                         ' ^barpkg os=SuSE11 ^bazpkg os=be') |                         ' ^barpkg os=SuSE11 ^bazpkg os=be') | ||||||
|             spec.concretize() |             spec.concretize() | ||||||
|   | |||||||
| @@ -382,19 +382,12 @@ def use_store(store): | |||||||
|     spack.store.store = saved |     spack.store.store = saved | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @contextlib.contextmanager |  | ||||||
| def use_repo(repo): |  | ||||||
|     """Context manager to swap out the global Spack repo path.""" |  | ||||||
|     with spack.repo.swap(repo): |  | ||||||
|         yield |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # | # | ||||||
| # Test-specific fixtures | # Test-specific fixtures | ||||||
| # | # | ||||||
| @pytest.fixture(scope='session') | @pytest.fixture(scope='session') | ||||||
| def mock_repo_path(): | def mock_repo_path(): | ||||||
|     yield spack.repo.RepoPath(spack.paths.mock_packages_path) |     yield spack.repo.Repo(spack.paths.mock_packages_path) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def _pkg_install_fn(pkg, spec, prefix): | def _pkg_install_fn(pkg, spec, prefix): | ||||||
| @@ -411,15 +404,15 @@ def mock_pkg_install(monkeypatch): | |||||||
| @pytest.fixture(scope='function') | @pytest.fixture(scope='function') | ||||||
| def mock_packages(mock_repo_path, mock_pkg_install): | def mock_packages(mock_repo_path, mock_pkg_install): | ||||||
|     """Use the 'builtin.mock' repository instead of 'builtin'""" |     """Use the 'builtin.mock' repository instead of 'builtin'""" | ||||||
|     with use_repo(mock_repo_path): |     with spack.repo.use_repositories(mock_repo_path) as mock_repo: | ||||||
|         yield mock_repo_path |         yield mock_repo | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @pytest.fixture(scope='function') | @pytest.fixture(scope='function') | ||||||
| def mutable_mock_repo(mock_repo_path): | def mutable_mock_repo(mock_repo_path): | ||||||
|     """Function-scoped mock packages, for tests that need to modify them.""" |     """Function-scoped mock packages, for tests that need to modify them.""" | ||||||
|     mock_repo_path = spack.repo.RepoPath(spack.paths.mock_packages_path) |     mock_repo = spack.repo.Repo(spack.paths.mock_packages_path) | ||||||
|     with use_repo(mock_repo_path): |     with spack.repo.use_repositories(mock_repo) as mock_repo_path: | ||||||
|         yield mock_repo_path |         yield mock_repo_path | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -643,7 +636,7 @@ def mock_store(tmpdir_factory, mock_repo_path, mock_configuration, | |||||||
|     if not os.path.exists(str(store_cache.join('.spack-db'))): |     if not os.path.exists(str(store_cache.join('.spack-db'))): | ||||||
|         with use_configuration(mock_configuration): |         with use_configuration(mock_configuration): | ||||||
|             with use_store(store): |             with use_store(store): | ||||||
|                 with use_repo(mock_repo_path): |                 with spack.repo.use_repositories(mock_repo_path): | ||||||
|                     _populate(store.db) |                     _populate(store.db) | ||||||
|         store_path.copy(store_cache, mode=True, stat=True) |         store_path.copy(store_cache, mode=True, stat=True) | ||||||
| 
 | 
 | ||||||
| @@ -673,7 +666,7 @@ def mutable_mock_store(tmpdir_factory, mock_repo_path, mock_configuration, | |||||||
|     if not os.path.exists(str(store_cache.join('.spack-db'))): |     if not os.path.exists(str(store_cache.join('.spack-db'))): | ||||||
|         with use_configuration(mock_configuration): |         with use_configuration(mock_configuration): | ||||||
|             with use_store(store): |             with use_store(store): | ||||||
|                 with use_repo(mock_repo_path): |                 with spack.repo.use_repositories(mock_repo_path): | ||||||
|                     _populate(store.db) |                     _populate(store.db) | ||||||
|         store_path.copy(store_cache, mode=True, stat=True) |         store_path.copy(store_cache, mode=True, stat=True) | ||||||
| 
 | 
 | ||||||
| @@ -1249,8 +1242,7 @@ def mock_test_repo(tmpdir_factory): | |||||||
|     namespace: mock_test_repo |     namespace: mock_test_repo | ||||||
| """) | """) | ||||||
| 
 | 
 | ||||||
|     repo = spack.repo.RepoPath(str(repodir)) |     with spack.repo.use_repositories(str(repodir)) as repo: | ||||||
|     with spack.repo.swap(repo): |  | ||||||
|         yield repo, repodir |         yield repo, repodir | ||||||
| 
 | 
 | ||||||
|     shutil.rmtree(str(repodir)) |     shutil.rmtree(str(repodir)) | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ def test_installed_upstream(upstream_and_downstream_db): | |||||||
|     y = mock_repo.add_package('y', [z], [default]) |     y = mock_repo.add_package('y', [z], [default]) | ||||||
|     mock_repo.add_package('w', [x, y], [default, default]) |     mock_repo.add_package('w', [x, y], [default, default]) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         spec = spack.spec.Spec('w') |         spec = spack.spec.Spec('w') | ||||||
|         spec.concretize() |         spec.concretize() | ||||||
| 
 | 
 | ||||||
| @@ -122,7 +122,7 @@ def test_removed_upstream_dep(upstream_and_downstream_db): | |||||||
|     z = mock_repo.add_package('z', [], []) |     z = mock_repo.add_package('z', [], []) | ||||||
|     mock_repo.add_package('y', [z], [default]) |     mock_repo.add_package('y', [z], [default]) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         spec = spack.spec.Spec('y') |         spec = spack.spec.Spec('y') | ||||||
|         spec.concretize() |         spec.concretize() | ||||||
| 
 | 
 | ||||||
| @@ -155,7 +155,7 @@ def test_add_to_upstream_after_downstream(upstream_and_downstream_db): | |||||||
|     mock_repo = MockPackageMultiRepo() |     mock_repo = MockPackageMultiRepo() | ||||||
|     mock_repo.add_package('x', [], []) |     mock_repo.add_package('x', [], []) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         spec = spack.spec.Spec('x') |         spec = spack.spec.Spec('x') | ||||||
|         spec.concretize() |         spec.concretize() | ||||||
| 
 | 
 | ||||||
| @@ -197,7 +197,7 @@ def test_cannot_write_upstream(tmpdir_factory, test_store, gen_mock_layout): | |||||||
|     upstream_dbs = spack.store._construct_upstream_dbs_from_install_roots( |     upstream_dbs = spack.store._construct_upstream_dbs_from_install_roots( | ||||||
|         [roots[1]], _test=True) |         [roots[1]], _test=True) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         spec = spack.spec.Spec('x') |         spec = spack.spec.Spec('x') | ||||||
|         spec.concretize() |         spec.concretize() | ||||||
| 
 | 
 | ||||||
| @@ -216,7 +216,7 @@ def test_recursive_upstream_dbs(tmpdir_factory, test_store, gen_mock_layout): | |||||||
|     y = mock_repo.add_package('y', [z], [default]) |     y = mock_repo.add_package('y', [z], [default]) | ||||||
|     mock_repo.add_package('x', [y], [default]) |     mock_repo.add_package('x', [y], [default]) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         spec = spack.spec.Spec('x') |         spec = spack.spec.Spec('x') | ||||||
|         spec.concretize() |         spec.concretize() | ||||||
|         db_c = spack.database.Database(roots[2]) |         db_c = spack.database.Database(roots[2]) | ||||||
| @@ -694,7 +694,7 @@ def test_115_reindex_with_packages_not_in_repo(mutable_database): | |||||||
|     # Dont add any package definitions to this repository, the idea is that |     # Dont add any package definitions to this repository, the idea is that | ||||||
|     # packages should not have to be defined in the repository once they |     # packages should not have to be defined in the repository once they | ||||||
|     # are installed |     # are installed | ||||||
|     with spack.repo.swap(MockPackageMultiRepo()): |     with spack.repo.use_repositories(MockPackageMultiRepo()): | ||||||
|         spack.store.store.reindex() |         spack.store.store.reindex() | ||||||
|         _check_db_sanity(mutable_database) |         _check_db_sanity(mutable_database) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -194,7 +194,7 @@ def test_handle_unknown_package(layout_and_dir, config, mock_packages): | |||||||
|         layout.create_install_directory(spec) |         layout.create_install_directory(spec) | ||||||
|         installed_specs[spec] = layout.path_for_spec(spec) |         installed_specs[spec] = layout.path_for_spec(spec) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_db): |     with spack.repo.use_repositories(mock_db): | ||||||
|         # Now check that even without the package files, we know |         # Now check that even without the package files, we know | ||||||
|         # enough to read a spec from the spec file. |         # enough to read a spec from the spec file. | ||||||
|         for spec, path in installed_specs.items(): |         for spec, path in installed_specs.items(): | ||||||
|   | |||||||
| @@ -474,14 +474,14 @@ def _conc_spec(compiler): | |||||||
|     assert packages |     assert packages | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def test_dump_packages_deps_ok(install_mockery, tmpdir, mock_repo_path): | def test_dump_packages_deps_ok(install_mockery, tmpdir, mock_packages): | ||||||
|     """Test happy path for dump_packages with dependencies.""" |     """Test happy path for dump_packages with dependencies.""" | ||||||
| 
 | 
 | ||||||
|     spec_name = 'simple-inheritance' |     spec_name = 'simple-inheritance' | ||||||
|     spec = spack.spec.Spec(spec_name).concretized() |     spec = spack.spec.Spec(spec_name).concretized() | ||||||
|     inst.dump_packages(spec, str(tmpdir)) |     inst.dump_packages(spec, str(tmpdir)) | ||||||
| 
 | 
 | ||||||
|     repo = mock_repo_path.repos[0] |     repo = mock_packages.repos[0] | ||||||
|     dest_pkg = repo.filename_for_package_name(spec_name) |     dest_pkg = repo.filename_for_package_name(spec_name) | ||||||
|     assert os.path.isfile(dest_pkg) |     assert os.path.isfile(dest_pkg) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -73,7 +73,7 @@ def test_repo_getpkg_names_and_classes(): | |||||||
| def test_get_all_mock_packages(): | def test_get_all_mock_packages(): | ||||||
|     """Get the mock packages once each too.""" |     """Get the mock packages once each too.""" | ||||||
|     db = spack.repo.RepoPath(spack.paths.mock_packages_path) |     db = spack.repo.RepoPath(spack.paths.mock_packages_path) | ||||||
|     with spack.repo.swap(db): |     with spack.repo.use_repositories(db): | ||||||
|         check_repo() |         check_repo() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -75,7 +75,7 @@ def test_test_deptype(): | |||||||
|     y = mock_repo.add_package('y', [z], [test_only]) |     y = mock_repo.add_package('y', [z], [test_only]) | ||||||
|     w = mock_repo.add_package('w', [x, y], [test_only, default]) |     w = mock_repo.add_package('w', [x, y], [test_only, default]) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         spec = Spec('w') |         spec = Spec('w') | ||||||
|         spec.concretize(tests=(w.name,)) |         spec.concretize(tests=(w.name,)) | ||||||
| 
 | 
 | ||||||
| @@ -114,7 +114,7 @@ def test_installed_deps(): | |||||||
|     b = mock_repo.add_package('b', [d, e], [default, default]) |     b = mock_repo.add_package('b', [d, e], [default, default]) | ||||||
|     mock_repo.add_package('a', [b, c], [default, default]) |     mock_repo.add_package('a', [b, c], [default, default]) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         c_spec = Spec('c') |         c_spec = Spec('c') | ||||||
|         c_spec.concretize() |         c_spec.concretize() | ||||||
|         assert c_spec['d'].version == spack.version.Version('2') |         assert c_spec['d'].version == spack.version.Version('2') | ||||||
| @@ -143,7 +143,7 @@ def test_specify_preinstalled_dep(): | |||||||
|     b = mock_repo.add_package('b', [c], [default]) |     b = mock_repo.add_package('b', [c], [default]) | ||||||
|     mock_repo.add_package('a', [b], [default]) |     mock_repo.add_package('a', [b], [default]) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         b_spec = Spec('b') |         b_spec = Spec('b') | ||||||
|         b_spec.concretize() |         b_spec.concretize() | ||||||
|         for spec in b_spec.traverse(): |         for spec in b_spec.traverse(): | ||||||
| @@ -186,7 +186,7 @@ def test_conditional_dep_with_user_constraints(spec_str, expr_str, expected): | |||||||
|     } |     } | ||||||
|     mock_repo.add_package('x', [y], [default], conditions=x_on_y_conditions) |     mock_repo.add_package('x', [y], [default], conditions=x_on_y_conditions) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         spec = Spec(spec_str) |         spec = Spec(spec_str) | ||||||
|         spec.concretize() |         spec.concretize() | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -315,7 +315,7 @@ def test_save_dependency_spec_yamls_subset(tmpdir, config): | |||||||
|     b = mock_repo.add_package('b', [d, e], [default, default]) |     b = mock_repo.add_package('b', [d, e], [default, default]) | ||||||
|     mock_repo.add_package('a', [b, c], [default, default]) |     mock_repo.add_package('a', [b, c], [default, default]) | ||||||
| 
 | 
 | ||||||
|     with repo.swap(mock_repo): |     with repo.use_repositories(mock_repo): | ||||||
|         spec_a = Spec('a') |         spec_a = Spec('a') | ||||||
|         spec_a.concretize() |         spec_a.concretize() | ||||||
|         b_spec = spec_a['b'] |         b_spec = spec_a['b'] | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ def builtin_and_mock_packages(): | |||||||
|     repo_dirs = [spack.paths.packages_path, spack.paths.mock_packages_path] |     repo_dirs = [spack.paths.packages_path, spack.paths.mock_packages_path] | ||||||
|     path = RepoPath(*repo_dirs) |     path = RepoPath(*repo_dirs) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(path): |     with spack.repo.use_repositories(path): | ||||||
|         yield |         yield | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ def test_mock_package_possible_dependencies(): | |||||||
|     b = mock_repo.add_package('b', [d]) |     b = mock_repo.add_package('b', [d]) | ||||||
|     a = mock_repo.add_package('a', [b, c]) |     a = mock_repo.add_package('a', [b, c]) | ||||||
| 
 | 
 | ||||||
|     with spack.repo.swap(mock_repo): |     with spack.repo.use_repositories(mock_repo): | ||||||
|         assert set(a.possible_dependencies()) == set(['a', 'b', 'c', 'd', 'e']) |         assert set(a.possible_dependencies()) == set(['a', 'b', 'c', 'd', 'e']) | ||||||
|         assert set(b.possible_dependencies()) == set(['b', 'd', 'e']) |         assert set(b.possible_dependencies()) == set(['b', 'd', 'e']) | ||||||
|         assert set(c.possible_dependencies()) == set(['c', 'd', 'e']) |         assert set(c.possible_dependencies()) == set(['c', 'd', 'e']) | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ | |||||||
| import ordereddict_backport | import ordereddict_backport | ||||||
| 
 | 
 | ||||||
| import spack.util.naming | import spack.util.naming | ||||||
|  | import spack.provider_index | ||||||
| from spack.dependency import Dependency | from spack.dependency import Dependency | ||||||
| from spack.spec import Spec | from spack.spec import Spec | ||||||
| from spack.version import Version | from spack.version import Version | ||||||
| @@ -80,6 +81,8 @@ class MockPackageMultiRepo(object): | |||||||
| 
 | 
 | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|         self.spec_to_pkg = {} |         self.spec_to_pkg = {} | ||||||
|  |         self.namespace = '' | ||||||
|  |         self.full_namespace = 'spack.pkg.mock' | ||||||
| 
 | 
 | ||||||
|     def get(self, spec): |     def get(self, spec): | ||||||
|         if not isinstance(spec, spack.spec.Spec): |         if not isinstance(spec, spack.spec.Spec): | ||||||
| @@ -171,3 +174,7 @@ class MockPackage(MockPackageBase): | |||||||
|         self.spec_to_pkg["mockrepo." + name] = mock_package |         self.spec_to_pkg["mockrepo." + name] = mock_package | ||||||
| 
 | 
 | ||||||
|         return mock_package |         return mock_package | ||||||
|  | 
 | ||||||
|  |     @property | ||||||
|  |     def provider_index(self): | ||||||
|  |         return spack.provider_index.ProviderIndex() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user