diff options
Diffstat (limited to 'lib/spack/spack/test/llnl/util/link_tree.py')
-rw-r--r-- | lib/spack/spack/test/llnl/util/link_tree.py | 65 |
1 files changed, 50 insertions, 15 deletions
diff --git a/lib/spack/spack/test/llnl/util/link_tree.py b/lib/spack/spack/test/llnl/util/link_tree.py index 884e950778..6b00afb3fe 100644 --- a/lib/spack/spack/test/llnl/util/link_tree.py +++ b/lib/spack/spack/test/llnl/util/link_tree.py @@ -38,9 +38,11 @@ def link_tree(stage): return LinkTree(source_path) -def check_file_link(filename): +def check_file_link(filename, expected_target): assert os.path.isfile(filename) assert os.path.islink(filename) + assert (os.path.abspath(os.path.realpath(filename)) == + os.path.abspath(expected_target)) def check_dir(filename): @@ -51,13 +53,46 @@ def test_merge_to_new_directory(stage, link_tree): with working_dir(stage.path): link_tree.merge('dest') - check_file_link('dest/1') - check_file_link('dest/a/b/2') - check_file_link('dest/a/b/3') - check_file_link('dest/c/4') - check_file_link('dest/c/d/5') - check_file_link('dest/c/d/6') - check_file_link('dest/c/d/e/7') + check_file_link('dest/1', 'source/1') + check_file_link('dest/a/b/2', 'source/a/b/2') + check_file_link('dest/a/b/3', 'source/a/b/3') + check_file_link('dest/c/4', 'source/c/4') + check_file_link('dest/c/d/5', 'source/c/d/5') + check_file_link('dest/c/d/6', 'source/c/d/6') + check_file_link('dest/c/d/e/7', 'source/c/d/e/7') + + assert os.path.isabs(os.readlink('dest/1')) + assert os.path.isabs(os.readlink('dest/a/b/2')) + assert os.path.isabs(os.readlink('dest/a/b/3')) + assert os.path.isabs(os.readlink('dest/c/4')) + assert os.path.isabs(os.readlink('dest/c/d/5')) + assert os.path.isabs(os.readlink('dest/c/d/6')) + assert os.path.isabs(os.readlink('dest/c/d/e/7')) + + link_tree.unmerge('dest') + + assert not os.path.exists('dest') + + +def test_merge_to_new_directory_relative(stage, link_tree): + with working_dir(stage.path): + link_tree.merge('dest', relative=True) + + check_file_link('dest/1', 'source/1') + check_file_link('dest/a/b/2', 'source/a/b/2') + check_file_link('dest/a/b/3', 'source/a/b/3') + check_file_link('dest/c/4', 'source/c/4') + check_file_link('dest/c/d/5', 'source/c/d/5') + check_file_link('dest/c/d/6', 'source/c/d/6') + check_file_link('dest/c/d/e/7', 'source/c/d/e/7') + + assert not os.path.isabs(os.readlink('dest/1')) + assert not os.path.isabs(os.readlink('dest/a/b/2')) + assert not os.path.isabs(os.readlink('dest/a/b/3')) + assert not os.path.isabs(os.readlink('dest/c/4')) + assert not os.path.isabs(os.readlink('dest/c/d/5')) + assert not os.path.isabs(os.readlink('dest/c/d/6')) + assert not os.path.isabs(os.readlink('dest/c/d/e/7')) link_tree.unmerge('dest') @@ -72,13 +107,13 @@ def test_merge_to_existing_directory(stage, link_tree): link_tree.merge('dest') - check_file_link('dest/1') - check_file_link('dest/a/b/2') - check_file_link('dest/a/b/3') - check_file_link('dest/c/4') - check_file_link('dest/c/d/5') - check_file_link('dest/c/d/6') - check_file_link('dest/c/d/e/7') + check_file_link('dest/1', 'source/1') + check_file_link('dest/a/b/2', 'source/a/b/2') + check_file_link('dest/a/b/3', 'source/a/b/3') + check_file_link('dest/c/4', 'source/c/4') + check_file_link('dest/c/d/5', 'source/c/d/5') + check_file_link('dest/c/d/6', 'source/c/d/6') + check_file_link('dest/c/d/e/7', 'source/c/d/e/7') assert os.path.isfile('dest/x') assert os.path.isfile('dest/a/b/y') |