diff --git a/lib/spack/spack/test/cmd/view.py b/lib/spack/spack/test/cmd/view.py index b4f3275172..a52edff786 100644 --- a/lib/spack/spack/test/cmd/view.py +++ b/lib/spack/spack/test/cmd/view.py @@ -85,6 +85,31 @@ def test_view_extension_remove( assert not os.path.exists(os.path.join(viewpath, 'bin', 'extension1')) +def test_view_extension_conflict( + tmpdir, builtin_mock, mock_archive, mock_fetch, config, + install_mockery): + install('extendee') + install('extension1@1.0') + install('extension1@2.0') + viewpath = str(tmpdir.mkdir('view')) + view('symlink', viewpath, 'extension1@1.0') + output = view('symlink', viewpath, 'extension1@2.0') + assert 'Package conflict detected' in output + + +def test_view_extension_conflict_ignored( + tmpdir, builtin_mock, mock_archive, mock_fetch, config, + install_mockery): + install('extendee') + install('extension1@1.0') + install('extension1@2.0') + viewpath = str(tmpdir.mkdir('view')) + view('symlink', viewpath, 'extension1@1.0') + view('symlink', viewpath, '-i', 'extension1@2.0') + with open(os.path.join(viewpath, 'bin', 'extension1'), 'r') as fin: + assert fin.read() == '1.0' + + def test_view_extension_global_activation( tmpdir, builtin_mock, mock_archive, mock_fetch, config, install_mockery): diff --git a/var/spack/repos/builtin.mock/packages/extension1/package.py b/var/spack/repos/builtin.mock/packages/extension1/package.py index c9837bde90..e36b2ad1d1 100644 --- a/var/spack/repos/builtin.mock/packages/extension1/package.py +++ b/var/spack/repos/builtin.mock/packages/extension1/package.py @@ -39,5 +39,5 @@ class Extension1(Package): def install(self, spec, prefix): mkdirp(prefix.bin) - with open(os.path.join(prefix.bin, 'extension1'), 'w+'): - pass + with open(os.path.join(prefix.bin, 'extension1'), 'w+') as fout: + fout.write(str(spec.version)) diff --git a/var/spack/repos/builtin.mock/packages/extension2/package.py b/var/spack/repos/builtin.mock/packages/extension2/package.py index 5616d4c3ca..de2545250b 100644 --- a/var/spack/repos/builtin.mock/packages/extension2/package.py +++ b/var/spack/repos/builtin.mock/packages/extension2/package.py @@ -40,5 +40,5 @@ class Extension2(Package): def install(self, spec, prefix): mkdirp(prefix.bin) - with open(os.path.join(prefix.bin, 'extension2'), 'w+'): - pass + with open(os.path.join(prefix.bin, 'extension2'), 'w+') as fout: + fout.write(str(spec.version))