From 0403a0850946fda51738a3be88b884ffdfddf10f Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 27 Apr 2017 00:36:35 +0200 Subject: link_tree: ported to pytest (#4008) --- lib/spack/spack/test/link_tree.py | 187 ++++++++++++++++++++------------------ 1 file changed, 98 insertions(+), 89 deletions(-) diff --git a/lib/spack/spack/test/link_tree.py b/lib/spack/spack/test/link_tree.py index 5d0a7430b6..9fb4e8216e 100644 --- a/lib/spack/spack/test/link_tree.py +++ b/lib/spack/spack/test/link_tree.py @@ -23,121 +23,130 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import os -import unittest +import pytest from llnl.util.filesystem import * from llnl.util.link_tree import LinkTree - from spack.stage import Stage -class LinkTreeTest(unittest.TestCase): - """Tests Spack's LinkTree class.""" +@pytest.fixture() +def stage(): + """Creates a stage with the directory structure for the tests.""" + s = Stage('link-tree-test') + s.create() + + with working_dir(s.path): + touchp('source/1') + touchp('source/a/b/2') + touchp('source/a/b/3') + touchp('source/c/4') + touchp('source/c/d/5') + touchp('source/c/d/6') + touchp('source/c/d/e/7') + + yield s + + s.destroy() + + +@pytest.fixture() +def link_tree(stage): + """Return a properly initialized LinkTree instance.""" + source_path = os.path.join(stage.path, 'source') + return LinkTree(source_path) + + +def check_file_link(filename): + assert os.path.isfile(filename) + assert os.path.islink(filename) + + +def check_dir(filename): + assert os.path.isdir(filename) + - def setUp(self): - self.stage = Stage('link-tree-test') - self.stage.create() +def test_merge_to_new_directory(stage, link_tree): + with working_dir(stage.path): + link_tree.merge('dest') - with working_dir(self.stage.path): - touchp('source/1') - touchp('source/a/b/2') - touchp('source/a/b/3') - touchp('source/c/4') - touchp('source/c/d/5') - touchp('source/c/d/6') - touchp('source/c/d/e/7') + 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') - source_path = os.path.join(self.stage.path, 'source') - self.link_tree = LinkTree(source_path) + link_tree.unmerge('dest') - def tearDown(self): - self.stage.destroy() + assert not os.path.exists('dest') - def check_file_link(self, filename): - self.assertTrue(os.path.isfile(filename)) - self.assertTrue(os.path.islink(filename)) - def check_dir(self, filename): - self.assertTrue(os.path.isdir(filename)) +def test_merge_to_existing_directory(stage, link_tree): + with working_dir(stage.path): - def test_merge_to_new_directory(self): - with working_dir(self.stage.path): - self.link_tree.merge('dest') + touchp('dest/x') + touchp('dest/a/b/y') - self.check_file_link('dest/1') - self.check_file_link('dest/a/b/2') - self.check_file_link('dest/a/b/3') - self.check_file_link('dest/c/4') - self.check_file_link('dest/c/d/5') - self.check_file_link('dest/c/d/6') - self.check_file_link('dest/c/d/e/7') + link_tree.merge('dest') - self.link_tree.unmerge('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') - self.assertFalse(os.path.exists('dest')) + assert os.path.isfile('dest/x') + assert os.path.isfile('dest/a/b/y') - def test_merge_to_existing_directory(self): - with working_dir(self.stage.path): + link_tree.unmerge('dest') - touchp('dest/x') - touchp('dest/a/b/y') + assert os.path.isfile('dest/x') + assert os.path.isfile('dest/a/b/y') - self.link_tree.merge('dest') + assert not os.path.isfile('dest/1') + assert not os.path.isfile('dest/a/b/2') + assert not os.path.isfile('dest/a/b/3') + assert not os.path.isfile('dest/c/4') + assert not os.path.isfile('dest/c/d/5') + assert not os.path.isfile('dest/c/d/6') + assert not os.path.isfile('dest/c/d/e/7') - self.check_file_link('dest/1') - self.check_file_link('dest/a/b/2') - self.check_file_link('dest/a/b/3') - self.check_file_link('dest/c/4') - self.check_file_link('dest/c/d/5') - self.check_file_link('dest/c/d/6') - self.check_file_link('dest/c/d/e/7') - self.assertTrue(os.path.isfile('dest/x')) - self.assertTrue(os.path.isfile('dest/a/b/y')) +def test_merge_with_empty_directories(stage, link_tree): + with working_dir(stage.path): + mkdirp('dest/f/g') + mkdirp('dest/a/b/h') - self.link_tree.unmerge('dest') + link_tree.merge('dest') + link_tree.unmerge('dest') - self.assertTrue(os.path.isfile('dest/x')) - self.assertTrue(os.path.isfile('dest/a/b/y')) + assert not os.path.exists('dest/1') + assert not os.path.exists('dest/a/b/2') + assert not os.path.exists('dest/a/b/3') + assert not os.path.exists('dest/c/4') + assert not os.path.exists('dest/c/d/5') + assert not os.path.exists('dest/c/d/6') + assert not os.path.exists('dest/c/d/e/7') - self.assertFalse(os.path.isfile('dest/1')) - self.assertFalse(os.path.isfile('dest/a/b/2')) - self.assertFalse(os.path.isfile('dest/a/b/3')) - self.assertFalse(os.path.isfile('dest/c/4')) - self.assertFalse(os.path.isfile('dest/c/d/5')) - self.assertFalse(os.path.isfile('dest/c/d/6')) - self.assertFalse(os.path.isfile('dest/c/d/e/7')) + assert os.path.isdir('dest/a/b/h') + assert os.path.isdir('dest/f/g') - def test_merge_with_empty_directories(self): - with working_dir(self.stage.path): - mkdirp('dest/f/g') - mkdirp('dest/a/b/h') - self.link_tree.merge('dest') - self.link_tree.unmerge('dest') +def test_ignore(stage, link_tree): + with working_dir(stage.path): + touchp('source/.spec') + touchp('dest/.spec') - self.assertFalse(os.path.exists('dest/1')) - self.assertFalse(os.path.exists('dest/a/b/2')) - self.assertFalse(os.path.exists('dest/a/b/3')) - self.assertFalse(os.path.exists('dest/c/4')) - self.assertFalse(os.path.exists('dest/c/d/5')) - self.assertFalse(os.path.exists('dest/c/d/6')) - self.assertFalse(os.path.exists('dest/c/d/e/7')) + link_tree.merge('dest', ignore=lambda x: x == '.spec') + link_tree.unmerge('dest', ignore=lambda x: x == '.spec') - self.assertTrue(os.path.isdir('dest/a/b/h')) - self.assertTrue(os.path.isdir('dest/f/g')) + assert not os.path.exists('dest/1') + assert not os.path.exists('dest/a') + assert not os.path.exists('dest/c') - def test_ignore(self): - with working_dir(self.stage.path): - touchp('source/.spec') - touchp('dest/.spec') - - self.link_tree.merge('dest', ignore=lambda x: x == '.spec') - self.link_tree.unmerge('dest', ignore=lambda x: x == '.spec') - - self.assertFalse(os.path.exists('dest/1')) - self.assertFalse(os.path.exists('dest/a')) - self.assertFalse(os.path.exists('dest/c')) - - self.assertTrue(os.path.isfile('source/.spec')) - self.assertTrue(os.path.isfile('dest/.spec')) + assert os.path.isfile('source/.spec') + assert os.path.isfile('dest/.spec') -- cgit v1.2.3-70-g09d2