summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authoralalazo <massimiliano.culpo@googlemail.com>2016-03-02 12:52:38 +0100
committeralalazo <massimiliano.culpo@googlemail.com>2016-03-02 12:52:38 +0100
commit726b350689bf6da7b82eec170001adc8100beb71 (patch)
treeb5cfa93630dbf8be25bcfd247c2451a284101485 /lib
parent6f42dd556d1ead8e7cad9788004dc33c11240564 (diff)
downloadspack-726b350689bf6da7b82eec170001adc8100beb71.tar.gz
spack-726b350689bf6da7b82eec170001adc8100beb71.tar.bz2
spack-726b350689bf6da7b82eec170001adc8100beb71.tar.xz
spack-726b350689bf6da7b82eec170001adc8100beb71.zip
test : fixed failing unit tests
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/mirror.py53
-rw-r--r--lib/spack/spack/stage.py7
-rw-r--r--lib/spack/spack/test/configure_guess.py12
-rw-r--r--lib/spack/spack/test/git_fetch.py31
-rw-r--r--lib/spack/spack/test/hg_fetch.py31
-rw-r--r--lib/spack/spack/test/link_tree.py6
-rw-r--r--lib/spack/spack/test/mirror.py74
-rw-r--r--lib/spack/spack/test/svn_fetch.py31
8 files changed, 124 insertions, 121 deletions
diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py
index fa29e20803..bc8870926f 100644
--- a/lib/spack/spack/mirror.py
+++ b/lib/spack/spack/mirror.py
@@ -168,32 +168,33 @@ def create(path, specs, **kwargs):
pkg = spec.package
tty.msg("Adding package {pkg} to mirror".format(pkg=spec.format("$_$@")))
try:
- for ii, stage in enumerate(pkg.stage):
- fetcher = stage.fetcher
- if ii == 0:
- # create a subdirectory for the current package@version
- archive_path = os.path.abspath(join_path(mirror_root, mirror_archive_path(spec, fetcher)))
- name = spec.format("$_$@")
- else:
- resource = stage.resource
- archive_path = join_path(subdir, suggest_archive_basename(resource))
- name = "{resource} ({pkg}).".format(resource=resource.name, pkg=spec.format("$_$@"))
- subdir = os.path.dirname(archive_path)
- mkdirp(subdir)
-
- if os.path.exists(archive_path):
- tty.msg("{name} : already added".format(name=name))
- else:
- everything_already_exists = False
- fetcher.fetch()
- if not kwargs.get('no_checksum', False):
- fetcher.check()
- tty.msg("{name} : checksum passed".format(name=name))
-
- # Fetchers have to know how to archive their files. Use
- # that to move/copy/create an archive in the mirror.
- fetcher.archive(archive_path)
- tty.msg("{name} : added".format(name=name))
+ with pkg.stage:
+ for ii, stage in enumerate(pkg.stage):
+ fetcher = stage.fetcher
+ if ii == 0:
+ # create a subdirectory for the current package@version
+ archive_path = os.path.abspath(join_path(mirror_root, mirror_archive_path(spec, fetcher)))
+ name = spec.format("$_$@")
+ else:
+ resource = stage.resource
+ archive_path = join_path(subdir, suggest_archive_basename(resource))
+ name = "{resource} ({pkg}).".format(resource=resource.name, pkg=spec.format("$_$@"))
+ subdir = os.path.dirname(archive_path)
+ mkdirp(subdir)
+
+ if os.path.exists(archive_path):
+ tty.msg("{name} : already added".format(name=name))
+ else:
+ everything_already_exists = False
+ fetcher.fetch()
+ if not kwargs.get('no_checksum', False):
+ fetcher.check()
+ tty.msg("{name} : checksum passed".format(name=name))
+
+ # Fetchers have to know how to archive their files. Use
+ # that to move/copy/create an archive in the mirror.
+ fetcher.archive(archive_path)
+ tty.msg("{name} : added".format(name=name))
if everything_already_exists:
present.append(spec)
diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py
index 96b1eaf3f2..956d1c8706 100644
--- a/lib/spack/spack/stage.py
+++ b/lib/spack/spack/stage.py
@@ -404,10 +404,13 @@ class StageComposite:
return self[0].path
def __enter__(self):
- return self[0].__enter__()
+ for item in self:
+ item.__enter__()
+ return self
def __exit__(self, exc_type, exc_val, exc_tb):
- return self[0].__exit__(exc_type, exc_val, exc_tb)
+ for item in reversed(self):
+ item.__exit__(exc_type, exc_val, exc_tb)
def chdir_to_source(self):
return self[0].chdir_to_source()
diff --git a/lib/spack/spack/test/configure_guess.py b/lib/spack/spack/test/configure_guess.py
index a4e8565b62..bc2332acc2 100644
--- a/lib/spack/spack/test/configure_guess.py
+++ b/lib/spack/spack/test/configure_guess.py
@@ -52,8 +52,6 @@ class InstallTest(unittest.TestCase):
def tearDown(self):
shutil.rmtree(self.tmpdir, ignore_errors=True)
- if self.stage:
- self.stage.destroy()
os.chdir(self.orig_dir)
@@ -64,12 +62,12 @@ class InstallTest(unittest.TestCase):
url = 'file://' + join_path(os.getcwd(), 'archive.tar.gz')
print url
- self.stage = Stage(url)
- self.stage.fetch()
+ with Stage(url) as stage:
+ stage.fetch()
- guesser = ConfigureGuesser()
- guesser(self.stage)
- self.assertEqual(system, guesser.build_system)
+ guesser = ConfigureGuesser()
+ guesser(stage)
+ self.assertEqual(system, guesser.build_system)
def test_python(self):
diff --git a/lib/spack/spack/test/git_fetch.py b/lib/spack/spack/test/git_fetch.py
index d84433176a..caa076823e 100644
--- a/lib/spack/spack/test/git_fetch.py
+++ b/lib/spack/spack/test/git_fetch.py
@@ -76,26 +76,27 @@ class GitFetchTest(MockPackagesTest):
"""
self.pkg.versions[ver('git')] = args
- self.pkg.do_stage()
- self.assert_rev(rev)
+ with self.pkg.stage:
+ self.pkg.do_stage()
+ self.assert_rev(rev)
- file_path = join_path(self.pkg.stage.source_path, test_file)
- self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
- self.assertTrue(os.path.isfile(file_path))
+ file_path = join_path(self.pkg.stage.source_path, test_file)
+ self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
+ self.assertTrue(os.path.isfile(file_path))
- os.unlink(file_path)
- self.assertFalse(os.path.isfile(file_path))
+ os.unlink(file_path)
+ self.assertFalse(os.path.isfile(file_path))
- untracked_file = 'foobarbaz'
- touch(untracked_file)
- self.assertTrue(os.path.isfile(untracked_file))
- self.pkg.do_restage()
- self.assertFalse(os.path.isfile(untracked_file))
+ untracked_file = 'foobarbaz'
+ touch(untracked_file)
+ self.assertTrue(os.path.isfile(untracked_file))
+ self.pkg.do_restage()
+ self.assertFalse(os.path.isfile(untracked_file))
- self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
- self.assertTrue(os.path.isfile(file_path))
+ self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
+ self.assertTrue(os.path.isfile(file_path))
- self.assert_rev(rev)
+ self.assert_rev(rev)
def test_fetch_master(self):
diff --git a/lib/spack/spack/test/hg_fetch.py b/lib/spack/spack/test/hg_fetch.py
index bbcb64e4c1..75aa7ab17e 100644
--- a/lib/spack/spack/test/hg_fetch.py
+++ b/lib/spack/spack/test/hg_fetch.py
@@ -68,26 +68,27 @@ class HgFetchTest(MockPackagesTest):
"""
self.pkg.versions[ver('hg')] = args
- self.pkg.do_stage()
- self.assertEqual(self.repo.get_rev(), rev)
+ with self.pkg.stage:
+ self.pkg.do_stage()
+ self.assertEqual(self.repo.get_rev(), rev)
- file_path = join_path(self.pkg.stage.source_path, test_file)
- self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
- self.assertTrue(os.path.isfile(file_path))
+ file_path = join_path(self.pkg.stage.source_path, test_file)
+ self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
+ self.assertTrue(os.path.isfile(file_path))
- os.unlink(file_path)
- self.assertFalse(os.path.isfile(file_path))
+ os.unlink(file_path)
+ self.assertFalse(os.path.isfile(file_path))
- untracked = 'foobarbaz'
- touch(untracked)
- self.assertTrue(os.path.isfile(untracked))
- self.pkg.do_restage()
- self.assertFalse(os.path.isfile(untracked))
+ untracked = 'foobarbaz'
+ touch(untracked)
+ self.assertTrue(os.path.isfile(untracked))
+ self.pkg.do_restage()
+ self.assertFalse(os.path.isfile(untracked))
- self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
- self.assertTrue(os.path.isfile(file_path))
+ self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
+ self.assertTrue(os.path.isfile(file_path))
- self.assertEqual(self.repo.get_rev(), rev)
+ self.assertEqual(self.repo.get_rev(), rev)
def test_fetch_default(self):
diff --git a/lib/spack/spack/test/link_tree.py b/lib/spack/spack/test/link_tree.py
index 886b7ef4c5..7b67e873dd 100644
--- a/lib/spack/spack/test/link_tree.py
+++ b/lib/spack/spack/test/link_tree.py
@@ -38,6 +38,8 @@ class LinkTreeTest(unittest.TestCase):
def setUp(self):
self.stage = Stage('link-tree-test')
+ # FIXME : possibly this test needs to be refactored to avoid the explicit call to __enter__ and __exit__
+ self.stage.__enter__()
with working_dir(self.stage.path):
touchp('source/1')
@@ -51,10 +53,8 @@ class LinkTreeTest(unittest.TestCase):
source_path = os.path.join(self.stage.path, 'source')
self.link_tree = LinkTree(source_path)
-
def tearDown(self):
- if self.stage:
- self.stage.destroy()
+ self.stage.__exit__(None, None, None)
def check_file_link(self, filename):
diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py
index f83cc8090c..9e2c631978 100644
--- a/lib/spack/spack/test/mirror.py
+++ b/lib/spack/spack/test/mirror.py
@@ -74,14 +74,14 @@ class MirrorTest(MockPackagesTest):
def check_mirror(self):
- stage = Stage('spack-mirror-test')
- mirror_root = join_path(stage.path, 'test-mirror')
+ with Stage('spack-mirror-test') as stage:
+ mirror_root = join_path(stage.path, 'test-mirror')
+
+ # register mirror with spack config
+ mirrors = { 'spack-mirror-test' : 'file://' + mirror_root }
+ spack.config.update_config('mirrors', mirrors)
- # register mirror with spack config
- mirrors = { 'spack-mirror-test' : 'file://' + mirror_root }
- spack.config.update_config('mirrors', mirrors)
- try:
os.chdir(stage.path)
spack.mirror.create(
mirror_root, self.repos, no_checksum=True)
@@ -97,38 +97,36 @@ class MirrorTest(MockPackagesTest):
files = os.listdir(subdir)
self.assertEqual(len(files), 1)
- # Now try to fetch each package.
- for name, mock_repo in self.repos.items():
- spec = Spec(name).concretized()
- pkg = spec.package
-
- pkg._stage = None
- saved_checksum_setting = spack.do_checksum
- try:
- # Stage the archive from the mirror and cd to it.
- spack.do_checksum = False
- pkg.do_stage(mirror_only=True)
-
- # Compare the original repo with the expanded archive
- original_path = mock_repo.path
- if 'svn' in name:
- # have to check out the svn repo to compare.
- original_path = join_path(mock_repo.path, 'checked_out')
- svn('checkout', mock_repo.url, original_path)
-
- dcmp = dircmp(original_path, pkg.stage.source_path)
-
- # make sure there are no new files in the expanded tarball
- self.assertFalse(dcmp.right_only)
-
- # and that all original files are present.
- self.assertTrue(all(l in exclude for l in dcmp.left_only))
-
- finally:
- spack.do_checksum = saved_checksum_setting
- pkg.do_clean()
- finally:
- stage.destroy()
+ # Now try to fetch each package.
+ for name, mock_repo in self.repos.items():
+ spec = Spec(name).concretized()
+ pkg = spec.package
+
+ saved_checksum_setting = spack.do_checksum
+ with pkg.stage:
+ try:
+ # Stage the archive from the mirror and cd to it.
+ spack.do_checksum = False
+ pkg.do_stage(mirror_only=True)
+
+ # Compare the original repo with the expanded archive
+ original_path = mock_repo.path
+ if 'svn' in name:
+ # have to check out the svn repo to compare.
+ original_path = join_path(mock_repo.path, 'checked_out')
+ svn('checkout', mock_repo.url, original_path)
+
+ dcmp = dircmp(original_path, pkg.stage.source_path)
+
+ # make sure there are no new files in the expanded tarball
+ self.assertFalse(dcmp.right_only)
+
+ # and that all original files are present.
+ self.assertTrue(all(l in exclude for l in dcmp.left_only))
+
+ finally:
+ spack.do_checksum = saved_checksum_setting
+ pkg.do_clean()
def test_git_mirror(self):
diff --git a/lib/spack/spack/test/svn_fetch.py b/lib/spack/spack/test/svn_fetch.py
index 454a7f1d1f..6ac9e2f343 100644
--- a/lib/spack/spack/test/svn_fetch.py
+++ b/lib/spack/spack/test/svn_fetch.py
@@ -82,26 +82,27 @@ class SvnFetchTest(MockPackagesTest):
"""
self.pkg.versions[ver('svn')] = args
- self.pkg.do_stage()
- self.assert_rev(rev)
+ with self.pkg.stage:
+ self.pkg.do_stage()
+ self.assert_rev(rev)
- file_path = join_path(self.pkg.stage.source_path, test_file)
- self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
- self.assertTrue(os.path.isfile(file_path))
+ file_path = join_path(self.pkg.stage.source_path, test_file)
+ self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
+ self.assertTrue(os.path.isfile(file_path))
- os.unlink(file_path)
- self.assertFalse(os.path.isfile(file_path))
+ os.unlink(file_path)
+ self.assertFalse(os.path.isfile(file_path))
- untracked = 'foobarbaz'
- touch(untracked)
- self.assertTrue(os.path.isfile(untracked))
- self.pkg.do_restage()
- self.assertFalse(os.path.isfile(untracked))
+ untracked = 'foobarbaz'
+ touch(untracked)
+ self.assertTrue(os.path.isfile(untracked))
+ self.pkg.do_restage()
+ self.assertFalse(os.path.isfile(untracked))
- self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
- self.assertTrue(os.path.isfile(file_path))
+ self.assertTrue(os.path.isdir(self.pkg.stage.source_path))
+ self.assertTrue(os.path.isfile(file_path))
- self.assert_rev(rev)
+ self.assert_rev(rev)
def test_fetch_default(self):