diff options
Diffstat (limited to 'lib/spack/spack/test/package_class.py')
-rw-r--r-- | lib/spack/spack/test/package_class.py | 146 |
1 files changed, 77 insertions, 69 deletions
diff --git a/lib/spack/spack/test/package_class.py b/lib/spack/spack/test/package_class.py index 15fd1237fb..87cb9a009a 100644 --- a/lib/spack/spack/test/package_class.py +++ b/lib/spack/spack/test/package_class.py @@ -23,62 +23,60 @@ import spack.repo @pytest.fixture(scope="module") def mpi_names(mock_repo_path): - return [spec.name for spec in mock_repo_path.providers_for('mpi')] + return [spec.name for spec in mock_repo_path.providers_for("mpi")] @pytest.fixture() def mpileaks_possible_deps(mock_packages, mpi_names): possible = { - 'callpath': set(['dyninst'] + mpi_names), - 'low-priority-provider': set(), - 'dyninst': set(['libdwarf', 'libelf']), - 'fake': set(), - 'libdwarf': set(['libelf']), - 'libelf': set(), - 'mpich': set(), - 'mpich2': set(), - 'mpileaks': set(['callpath'] + mpi_names), - 'multi-provider-mpi': set(), - 'zmpi': set(['fake']), + "callpath": set(["dyninst"] + mpi_names), + "low-priority-provider": set(), + "dyninst": set(["libdwarf", "libelf"]), + "fake": set(), + "libdwarf": set(["libelf"]), + "libelf": set(), + "mpich": set(), + "mpich2": set(), + "mpileaks": set(["callpath"] + mpi_names), + "multi-provider-mpi": set(), + "zmpi": set(["fake"]), } return possible def test_possible_dependencies(mock_packages, mpileaks_possible_deps): - pkg_cls = spack.repo.path.get_pkg_class('mpileaks') + pkg_cls = spack.repo.path.get_pkg_class("mpileaks") expanded_possible_deps = pkg_cls.possible_dependencies(expand_virtuals=True) assert mpileaks_possible_deps == expanded_possible_deps assert { - 'callpath': {'dyninst', 'mpi'}, - 'dyninst': {'libdwarf', 'libelf'}, - 'libdwarf': {'libelf'}, - 'libelf': set(), - 'mpi': set(), - 'mpileaks': {'callpath', 'mpi'}, + "callpath": {"dyninst", "mpi"}, + "dyninst": {"libdwarf", "libelf"}, + "libdwarf": {"libelf"}, + "libelf": set(), + "mpi": set(), + "mpileaks": {"callpath", "mpi"}, } == pkg_cls.possible_dependencies(expand_virtuals=False) def test_possible_direct_dependencies(mock_packages, mpileaks_possible_deps): - pkg_cls = spack.repo.path.get_pkg_class('mpileaks') + pkg_cls = spack.repo.path.get_pkg_class("mpileaks") deps = pkg_cls.possible_dependencies(transitive=False, expand_virtuals=False) assert { - 'callpath': set(), - 'mpi': set(), - 'mpileaks': {'callpath', 'mpi'}, + "callpath": set(), + "mpi": set(), + "mpileaks": {"callpath", "mpi"}, } == deps def test_possible_dependencies_virtual(mock_packages, mpi_names): expected = dict( - (name, set(spack.repo.path.get_pkg_class(name).dependencies)) - for name in mpi_names + (name, set(spack.repo.path.get_pkg_class(name).dependencies)) for name in mpi_names ) # only one mock MPI has a dependency - expected['fake'] = set() + expected["fake"] = set() - assert expected == spack.package_base.possible_dependencies( - "mpi", transitive=False) + assert expected == spack.package_base.possible_dependencies("mpi", transitive=False) def test_possible_dependencies_missing(mock_packages): @@ -89,36 +87,37 @@ def test_possible_dependencies_missing(mock_packages): def test_possible_dependencies_with_deptypes(mock_packages): - dtbuild1 = spack.repo.path.get_pkg_class('dtbuild1') + dtbuild1 = spack.repo.path.get_pkg_class("dtbuild1") assert { - 'dtbuild1': {'dtrun2', 'dtlink2'}, - 'dtlink2': set(), - 'dtrun2': set(), - } == dtbuild1.possible_dependencies(deptype=('link', 'run')) + "dtbuild1": {"dtrun2", "dtlink2"}, + "dtlink2": set(), + "dtrun2": set(), + } == dtbuild1.possible_dependencies(deptype=("link", "run")) assert { - 'dtbuild1': {'dtbuild2', 'dtlink2'}, - 'dtbuild2': set(), - 'dtlink2': set(), - } == dtbuild1.possible_dependencies(deptype=('build')) + "dtbuild1": {"dtbuild2", "dtlink2"}, + "dtbuild2": set(), + "dtlink2": set(), + } == dtbuild1.possible_dependencies(deptype=("build")) assert { - 'dtbuild1': {'dtlink2'}, - 'dtlink2': set(), - } == dtbuild1.possible_dependencies(deptype=('link')) + "dtbuild1": {"dtlink2"}, + "dtlink2": set(), + } == dtbuild1.possible_dependencies(deptype=("link")) -def test_possible_dependencies_with_multiple_classes( - mock_packages, mpileaks_possible_deps): - pkgs = ['dt-diamond', 'mpileaks'] +def test_possible_dependencies_with_multiple_classes(mock_packages, mpileaks_possible_deps): + pkgs = ["dt-diamond", "mpileaks"] expected = mpileaks_possible_deps.copy() - expected.update({ - 'dt-diamond': set(['dt-diamond-left', 'dt-diamond-right']), - 'dt-diamond-left': set(['dt-diamond-bottom']), - 'dt-diamond-right': set(['dt-diamond-bottom']), - 'dt-diamond-bottom': set(), - }) + expected.update( + { + "dt-diamond": set(["dt-diamond-left", "dt-diamond-right"]), + "dt-diamond-left": set(["dt-diamond-bottom"]), + "dt-diamond-right": set(["dt-diamond-bottom"]), + "dt-diamond-bottom": set(), + } + ) assert expected == spack.package_base.possible_dependencies(*pkgs) @@ -138,20 +137,29 @@ def setup_install_test(source_paths, install_test_root): fs.mkdirp(path) -@pytest.mark.parametrize('spec,sources,extras,expect', [ - ('a', - ['example/a.c'], # Source(s) - ['example/a.c'], # Extra test source - ['example/a.c']), # Test install dir source(s) - ('b', - ['test/b.cpp', 'test/b.hpp', 'example/b.txt'], # Source(s) - ['test'], # Extra test source - ['test/b.cpp', 'test/b.hpp']), # Test install dir source - ('c', - ['examples/a.py', 'examples/b.py', 'examples/c.py', 'tests/d.py'], - ['examples/b.py', 'tests'], - ['examples/b.py', 'tests/d.py']), -]) +@pytest.mark.parametrize( + "spec,sources,extras,expect", + [ + ( + "a", + ["example/a.c"], # Source(s) + ["example/a.c"], # Extra test source + ["example/a.c"], + ), # Test install dir source(s) + ( + "b", + ["test/b.cpp", "test/b.hpp", "example/b.txt"], # Source(s) + ["test"], # Extra test source + ["test/b.cpp", "test/b.hpp"], + ), # Test install dir source + ( + "c", + ["examples/a.py", "examples/b.py", "examples/c.py", "tests/d.py"], + ["examples/b.py", "tests"], + ["examples/b.py", "tests/d.py"], + ), + ], +) def test_cache_extra_sources(install_mockery, spec, sources, extras, expect): """Test the package's cache extra test sources helper function.""" s = spack.spec.Spec(spec).concretized() @@ -161,10 +169,10 @@ def test_cache_extra_sources(install_mockery, spec, sources, extras, expect): srcs = [fs.join_path(source_path, src) for src in sources] setup_install_test(srcs, s.package.install_test_root) - emsg_dir = 'Expected {0} to be a directory' - emsg_file = 'Expected {0} to be a file' + emsg_dir = "Expected {0} to be a directory" + emsg_file = "Expected {0} to be a file" for src in srcs: - assert os.path.exists(src), 'Expected {0} to exist'.format(src) + assert os.path.exists(src), "Expected {0} to exist".format(src) if os.path.splitext(src)[1]: assert os.path.isfile(src), emsg_file.format(src) else: @@ -176,16 +184,16 @@ def test_cache_extra_sources(install_mockery, spec, sources, extras, expect): exp_dests = [fs.join_path(s.package.install_test_root, e) for e in expect] poss_dests = set(src_dests) | set(exp_dests) - msg = 'Expected {0} to{1} exist' + msg = "Expected {0} to{1} exist" for pd in poss_dests: if pd in exp_dests: - assert os.path.exists(pd), msg.format(pd, '') + assert os.path.exists(pd), msg.format(pd, "") if os.path.splitext(pd)[1]: assert os.path.isfile(pd), emsg_file.format(pd) else: assert os.path.isdir(pd), emsg_dir.format(pd) else: - assert not os.path.exists(pd), msg.format(pd, ' not') + assert not os.path.exists(pd), msg.format(pd, " not") # Perform a little cleanup shutil.rmtree(os.path.dirname(source_path)) |