Source code for spack.test.util.prefix

# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

"""Tests various features of :py:class:`spack.util.prefix.Prefix`"""

import os

from spack.util.prefix import Prefix


[docs]def test_prefix_attributes(): """Test normal prefix attributes like ``prefix.bin``""" prefix = Prefix(os.sep + "usr") assert prefix.bin == os.sep + os.path.join("usr", "bin") assert prefix.lib == os.sep + os.path.join("usr", "lib") assert prefix.include == os.sep + os.path.join("usr", "include")
[docs]def test_prefix_join(): """Test prefix join ``prefix.join(...)``""" prefix = Prefix(os.sep + "usr") a1 = prefix.join("a_{0}".format(1)).lib64 a2 = prefix.join("a-{0}".format(1)).lib64 a3 = prefix.join("a.{0}".format(1)).lib64 assert a1 == os.sep + os.path.join("usr", "a_1", "lib64") assert a2 == os.sep + os.path.join("usr", "a-1", "lib64") assert a3 == os.sep + os.path.join("usr", "a.1", "lib64") assert isinstance(a1, Prefix) assert isinstance(a2, Prefix) assert isinstance(a3, Prefix) p1 = prefix.bin.join("executable.sh") p2 = prefix.share.join("pkg-config").join("foo.pc") p3 = prefix.join("dashed-directory").foo assert p1 == os.sep + os.path.join("usr", "bin", "executable.sh") assert p2 == os.sep + os.path.join("usr", "share", "pkg-config", "foo.pc") assert p3 == os.sep + os.path.join("usr", "dashed-directory", "foo") assert isinstance(p1, Prefix) assert isinstance(p2, Prefix) assert isinstance(p3, Prefix)
[docs]def test_multilevel_attributes(): """Test attributes of attributes, like ``prefix.share.man``""" prefix = Prefix(os.sep + "usr" + os.sep) assert prefix.share.man == os.sep + os.path.join("usr", "share", "man") assert prefix.man.man8 == os.sep + os.path.join("usr", "man", "man8") assert prefix.foo.bar.baz == os.sep + os.path.join("usr", "foo", "bar", "baz") share = prefix.share assert isinstance(share, Prefix) assert share.man == os.sep + os.path.join("usr", "share", "man")
[docs]def test_string_like_behavior(): """Test string-like behavior of the prefix object""" prefix = Prefix("/usr") assert prefix == "/usr" assert isinstance(prefix, str) assert prefix + "/bin" == "/usr/bin" assert "--prefix=%s" % prefix == "--prefix=/usr" assert "--prefix={0}".format(prefix) == "--prefix=/usr" assert prefix.find("u", 1) assert prefix.upper() == "/USR" assert prefix.lstrip("/") == "usr"