summaryrefslogtreecommitdiffstats
path: root/src/test_setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/test_setup.py')
-rw-r--r--src/test_setup.py158
1 files changed, 89 insertions, 69 deletions
diff --git a/src/test_setup.py b/src/test_setup.py
index 4198af6..ab5b651 100644
--- a/src/test_setup.py
+++ b/src/test_setup.py
@@ -25,7 +25,7 @@
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
"""
-Test how the setup.py script installs SCons (specifically, its libraries).
+Test how the setup.py script installs SCons.
Note that this is an installation test, not a functional test, so the
name of this script doesn't end in *Tests.py.
@@ -37,114 +37,134 @@ import shutil
import string
import sys
+#try:
+# version = os.environ['SCONS_VERSION']
+#except KeyError:
+# version = '__VERSION__'
+version = '0.96'
+
+scons_version = 'scons-%s' % version
+
import TestSCons
python = TestSCons.python
class MyTestSCons(TestSCons.TestSCons):
- def installed(self, lib):
+
+ scripts = [
+ 'scons',
+ 'sconsign',
+ ]
+
+ man_pages = [
+ 'scons.1',
+ 'sconsign.1',
+ ]
+
+ def __init__(self):
+ TestSCons.TestSCons.__init__(self)
+ self.root = self.workpath('root')
+ self.prefix = self.root + sys.prefix
+
+ self.lib_dir = os.path.join(self.prefix, 'lib')
+ self.standard_lib = os.path.join(self.lib_dir,
+ 'python%s' % sys.version[:3],
+ 'site-packages/')
+ self.standalone_lib = os.path.join(self.lib_dir, 'scons')
+ self.version_lib = os.path.join(self.lib_dir, scons_version)
+
+ self.bin_dir = os.path.join(self.prefix, 'bin')
+
+ self.man_dir = os.path.join(self.prefix, 'man', 'man1')
+
+ def run(self, *args, **kw):
+ kw['chdir'] = scons_version
+ kw['program'] = python
+ kw['stderr'] = None
+ return apply(TestSCons.TestSCons.run, (self,)+args, kw)
+
+ def must_have_installed_lib(self, lib):
lines = string.split(self.stdout(), '\n')
- return ('Installed SCons library modules into %s' % lib) in lines
+ line = 'Installed SCons library modules into %s' % lib
+ self.fail_test(not line in lines)
+
+ def must_have_installed_scripts(self):
+ lines = string.split(self.stdout(), '\n')
+ line = 'Installed SCons scripts into %s' % self.bin_dir
+ self.fail_test(not line in lines)
+ for script in self.scripts:
+ self.must_exist([self.bin_dir, script])
+
+ def must_have_installed_man_pages(self):
+ lines = string.split(self.stdout(), '\n')
+ line = 'Installed SCons man pages into %s' % self.man_dir
+ self.fail_test(not line in lines)
+ for mp in self.man_pages:
+ self.must_exist([self.man_dir, mp])
try:
cwd = os.environ['SCONS_CWD']
except KeyError:
cwd = os.getcwd()
-#try:
-# version = os.environ['SCONS_VERSION']
-#except KeyError:
-# version = '__VERSION__'
-version = '0.96'
-
-scons_version = 'scons-%s' % version
-
tar_gz = os.path.join(cwd, 'build', 'dist', '%s.tar.gz' % scons_version)
-test = MyTestSCons()
-
if not os.path.isfile(tar_gz):
print "Did not find an SCons package `%s'." % tar_gz
print "Cannot test package installation."
test.no_result(1)
-test.subdir('root', 'prefix')
-
-root = test.workpath('root')
-prefix = test.workpath('prefix')
+test = MyTestSCons()
-lib_dir = os.path.join(root + sys.prefix, 'lib')
-standard_lib = os.path.join(lib_dir,
- 'python%s' % sys.version[:3],
- 'site-packages/')
-standalone_lib = os.path.join(lib_dir, 'scons')
-version_lib = os.path.join(lib_dir, scons_version)
+test.subdir(test.root)
+# Unpack the .tar.gz file. This should create the scons_version/
+# subdirectory from which we execute the setup.py script therein.
os.system("gunzip -c %s | tar xf -" % tar_gz)
-# Verify that a virgin installation installs the standalone library.
-test.run(chdir = scons_version,
- program = python,
- arguments = 'setup.py install --root=%s' % root,
- stderr = None)
-test.fail_test(not test.installed(standalone_lib))
+# Verify that a virgin installation installs the standalone library,
+# the scripts and the man pages.
+test.run(arguments = 'setup.py install --root=%s' % test.root)
+test.must_have_installed_lib(test.standalone_lib)
+test.must_have_installed_scripts()
+test.must_have_installed_man_pages()
# Verify that --standard-lib installs into the Python standard library.
-test.run(chdir = scons_version,
- program = python,
- arguments = 'setup.py install --root=%s --standard-lib' % root,
- stderr = None)
-lines = string.split(test.stdout(), '\n')
-test.fail_test(not test.installed(standard_lib))
+test.run(arguments = 'setup.py install --root=%s --standard-lib' % test.root)
+test.must_have_installed_lib(test.standard_lib)
# Verify that --standalone-lib installs the standalone library.
-test.run(chdir = scons_version,
- program = python,
- arguments = 'setup.py install --root=%s --standalone-lib' % root,
- stderr = None)
-test.fail_test(not test.installed(standalone_lib))
+test.run(arguments = 'setup.py install --root=%s --standalone-lib' % test.root)
+test.must_have_installed_lib(test.standalone_lib)
# Verify that --version-lib installs into a version-specific library directory.
-test.run(chdir = scons_version,
- program = python,
- arguments = 'setup.py install --root=%s --version-lib' % root,
- stderr = None)
-test.fail_test(not test.installed(version_lib))
+test.run(arguments = 'setup.py install --root=%s --version-lib' % test.root)
+test.must_have_installed_lib(test.version_lib)
# Now that all of the libraries are in place,
# verify that a default installation finds the version-specific library first.
-test.run(chdir = scons_version,
- program = python,
- arguments = 'setup.py install --root=%s' % root,
- stderr = None)
-test.fail_test(not test.installed(version_lib))
+test.run(arguments = 'setup.py install --root=%s' % test.root)
+test.must_have_installed_lib(test.version_lib)
-shutil.rmtree(version_lib)
+shutil.rmtree(test.version_lib)
# Now with only the standard and standalone libraries in place,
# verify that a default installation finds the standalone library first.
-test.run(chdir = scons_version,
- program = python,
- arguments = 'setup.py install --root=%s' % root,
- stderr = None)
-test.fail_test(not test.installed(standalone_lib))
+test.run(arguments = 'setup.py install --root=%s' % test.root)
+test.must_have_installed_lib(test.standalone_lib)
-shutil.rmtree(standalone_lib)
+shutil.rmtree(test.standalone_lib)
# Now with only the standard libraries in place,
# verify that a default installation installs the standard library.
-test.run(chdir = scons_version,
- program = python,
- arguments = 'setup.py install --root=%s' % root,
- stderr = None)
-test.fail_test(not test.installed(standard_lib))
-
-# Verify that we're not warning about the directory in which
-# we've installed the modules when using a non-standard prefix.
-test.run(chdir = scons_version,
- program = python,
- arguments = 'setup.py install --prefix=%s' % prefix,
- stderr = None)
+test.run(arguments = 'setup.py install --root=%s' % test.root)
+test.must_have_installed_lib(test.standard_lib)
+
+# Verify that we don't warn about the directory in which we've
+# installed the modules when using a non-standard prefix.
+other_prefix = test.workpath('other-prefix')
+test.subdir(other_prefix)
+test.run(arguments = 'setup.py install --prefix=%s' % other_prefix)
test.fail_test(string.find(test.stderr(),
"you'll have to change the search path yourself")
!= -1)