summaryrefslogtreecommitdiffstats
path: root/src/test_setup.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-07-30 22:32:56 (GMT)
committerSteven Knight <knight@baldmt.com>2004-07-30 22:32:56 (GMT)
commitd292a3c5d016908d53587675bbe02c032a5a7a28 (patch)
treef59b7025a29a357bed7170848520cc7575c5ab8b /src/test_setup.py
parentcd46401690172d1b2d2b9cc3a78379f9af041e85 (diff)
downloadSCons-d292a3c5d016908d53587675bbe02c032a5a7a28.zip
SCons-d292a3c5d016908d53587675bbe02c032a5a7a28.tar.gz
SCons-d292a3c5d016908d53587675bbe02c032a5a7a28.tar.bz2
Change the copyright statement to reflect ownership by the foundation. Add and fix statements where needed. Update scripts accordingly.
Diffstat (limited to 'src/test_setup.py')
-rw-r--r--src/test_setup.py153
1 files changed, 153 insertions, 0 deletions
diff --git a/src/test_setup.py b/src/test_setup.py
new file mode 100644
index 0000000..799be78
--- /dev/null
+++ b/src/test_setup.py
@@ -0,0 +1,153 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test how the setup.py script installs SCons (specifically, its libraries).
+
+Note that this is an installation test, not a functional test, so the
+name of this script doesn't end in *Tests.py.
+"""
+
+import os
+import os.path
+import shutil
+import string
+import sys
+
+import TestSCons
+
+python = TestSCons.python
+
+class MyTestSCons(TestSCons.TestSCons):
+ def installed(self, lib):
+ lines = string.split(self.stdout(), '\n')
+ return ('Installed SCons library modules into %s' % lib) in lines
+
+try:
+ cwd = os.environ['SCONS_CWD']
+except KeyError:
+ cwd = os.getcwd()
+
+#try:
+# version = os.environ['SCONS_VERSION']
+#except KeyError:
+# version = '__VERSION__'
+version = '0.95'
+
+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')
+
+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)
+
+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 --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))
+
+# 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))
+
+# 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))
+
+# 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))
+
+shutil.rmtree(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))
+
+shutil.rmtree(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.fail_test(string.find(test.stderr(),
+ "you'll have to change the search path yourself")
+ != -1)
+
+# All done.
+test.pass_test()