diff options
Diffstat (limited to 'src/test_setup.py')
-rw-r--r-- | src/test_setup.py | 158 |
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) |