summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-08-20 04:13:59 (GMT)
committerSteven Knight <knight@baldmt.com>2005-08-20 04:13:59 (GMT)
commit3a5d4f0de360edb40bc68af414b275849ca92690 (patch)
tree27a3ab63f74f7693bb5954d60dae2cb0a09cb937 /test
parent39df5bda1a547cb8b70cf8a71e6b7fa8a43df723 (diff)
downloadSCons-3a5d4f0de360edb40bc68af414b275849ca92690.zip
SCons-3a5d4f0de360edb40bc68af414b275849ca92690.tar.gz
SCons-3a5d4f0de360edb40bc68af414b275849ca92690.tar.bz2
Have Visual Studio echo that we're using SCons to build things, to work around a quoting issue. (Shannon Mann)
Diffstat (limited to 'test')
-rw-r--r--test/Case.py10
-rw-r--r--test/Configure.py6
-rw-r--r--test/IDL/midl.py3
-rw-r--r--test/MSVC/msvc.py3
-rw-r--r--test/MSVS/vs-6.0.py285
-rw-r--r--test/MSVS/vs-7.0.py259
-rw-r--r--test/MSVS/vs-7.1.py270
-rw-r--r--test/bad-drive.py3
-rw-r--r--test/mingw.py3
-rw-r--r--test/msvs.py422
-rw-r--r--test/timestamp-fallback.py6
-rw-r--r--test/win32pathmadness.py27
12 files changed, 854 insertions, 443 deletions
diff --git a/test/Case.py b/test/Case.py
index b6f2a93..dd782ab 100644
--- a/test/Case.py
+++ b/test/Case.py
@@ -64,18 +64,18 @@ void bar() {
""")
if sys.platform in ['cygwin', 'win32']:
- print "Using case-insensitive filesystem, testing for failure"
+ sys.stdout.write("Using case-insensitive filesystem, testing for failure\n")
+ sys.stdout.flush()
test.run(stderr = None, status = None)
test.fail_test(string.split(test.stderr(), '\n')[0] ==
"scons: *** Multiple ways to build the same target were specified for: foo.o")
- test.pass_test()
-
else:
- print "Not using case-insensitive filesystem, testing for success"
+ sys.stdout.write("Not using case-insensitive filesystem, testing for success\n")
+ sys.stdout.flush()
test.run()
test.run(program = test.workpath('main' + _exe), stdout = "foo\nbar\n")
- test.pass_test()
+test.pass_test()
diff --git a/test/Configure.py b/test/Configure.py
index 83155bb..2512907 100644
--- a/test/Configure.py
+++ b/test/Configure.py
@@ -916,9 +916,6 @@ scons: Configure: creating config.h
print test.stdout()
print "---------------------------------------------------------"
test.fail_test()
-
-
- test.pass_test()
finally:
pass
@@ -927,3 +924,6 @@ finally:
#print test.read( test.workpath(work_dir, 'config.log'))
#print "-------------build/config.log------------"
#print test.read( test.workpath('build/config.log' ))
+
+
+test.pass_test()
diff --git a/test/IDL/midl.py b/test/IDL/midl.py
index a41ac01..1de9640 100644
--- a/test/IDL/midl.py
+++ b/test/IDL/midl.py
@@ -34,7 +34,8 @@ import time
test = TestSCons.TestSCons(match = TestCmd.match_re)
if sys.platform != 'win32':
- test.pass_test()
+ msg = "Skipping test on non-Windows platform '%s'\n" % sys.platform
+ test.skip_test(msg)
#####
# Test the basics
diff --git a/test/MSVC/msvc.py b/test/MSVC/msvc.py
index c3a9fdc..dd0f5ca 100644
--- a/test/MSVC/msvc.py
+++ b/test/MSVC/msvc.py
@@ -34,7 +34,8 @@ import time
test = TestSCons.TestSCons(match = TestCmd.match_re)
if sys.platform != 'win32':
- test.pass_test()
+ msg = "Skipping Visual C/C++ test on non-Windows platform '%s'\n" % sys.platform
+ test.skip_test(msg)
#####
# Test the basics
diff --git a/test/MSVS/vs-6.0.py b/test/MSVS/vs-6.0.py
new file mode 100644
index 0000000..b993aad
--- /dev/null
+++ b/test/MSVS/vs-6.0.py
@@ -0,0 +1,285 @@
+#!/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__"
+
+import os
+import os.path
+import string
+import sys
+
+import TestCmd
+import TestSCons
+
+test = TestSCons.TestSCons(match = TestCmd.match_re)
+
+if sys.platform != 'win32':
+ msg = "Skipping Visual Studio test on non-Windows platform '%s'\n" % sys.platform
+ test.skip_test(msg)
+
+if not '6.0' in test.msvs_versions():
+ msg = "Visual Studio 6 not installed; skipping test.\n"
+ test.skip_test(msg)
+
+def diff_section(expect, actual):
+ i = 0
+ for x, y in zip(expect, actual):
+ if x != y:
+ return "Actual did not match expect at char %d:\n" \
+ " Expect: %s\n" \
+ " Actual: %s\n" \
+ % (i, repr(expect[i-20:i+40]), repr(actual[i-20:i+40]))
+ i = i + 1
+ return "Actual matched the expected output???"
+
+expected_dspfile = '''\
+# Microsoft Developer Studio Project File - Name="Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) External Target" 0x0106
+
+CFG=Test - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Test.mak" CFG="Test - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Test - Win32 Release" (based on "Win32 (x86) External Target")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF "$(CFG)" == "Test - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "<WORKPATH>"
+# PROP BASE Intermediate_Dir "<WORKPATH>"
+# PROP BASE Cmd_Line "echo Starting SCons && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
+# PROP BASE Rebuild_Opt "-c && echo Starting SCons && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
+# PROP BASE Target_File "<WORKPATH>\Test.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "<WORKPATH>"
+# PROP Intermediate_Dir "<WORKPATH>"
+# PROP Cmd_Line "echo Starting SCons && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
+# PROP Rebuild_Opt "-c && echo Starting SCons && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
+# PROP Target_File "<WORKPATH>\Test.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ENDIF
+
+# Begin Target
+
+# Name "Test - Win32 Release"
+
+!IF "$(CFG)" == "Test - Win32 Release"
+
+!ENDIF
+
+# Begin Group " Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;l;y;def;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE="test.c"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE="sdk.h"
+# End Source File
+# End Group
+# Begin Group "Local Headers"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE="test.h"
+# End Source File
+# End Group
+# Begin Group "Other Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="readme.txt"
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE="test.rc"
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE="<WORKPATH>\SConstruct"
+# End Source File
+# End Target
+# End Project
+'''
+
+expected_dswfile = '''\
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "Test"="<WORKPATH>\Test.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+'''
+
+
+
+test.write('SConstruct','''
+env=Environment(MSVS_VERSION = '6.0')
+
+testsrc = ['test.c']
+testincs = ['sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.dsp',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+''')
+
+test.run(arguments="Test.dsp")
+
+test.must_exist(test.workpath('Test.dsp'))
+dsp = test.read('Test.dsp', 'r')
+expect = test.msvs_substitute(expected_dspfile, '6.0')
+# don't compare the pickled data
+assert dsp[:len(expect)] == expect, diff_section(expect, dsp)
+
+test.must_exist(test.workpath('Test.dsw'))
+dsw = test.read('Test.dsw', 'r')
+expect = test.msvs_substitute(expected_dswfile, '6.0')
+assert dsw == expect, diff_section(expect, dsw)
+
+test.run(arguments='-c .')
+
+test.must_not_exist(test.workpath('Test.dsp'))
+test.must_not_exist(test.workpath('Test.dsw'))
+
+test.run(arguments='Test.dsp')
+
+test.must_exist(test.workpath('Test.dsp'))
+test.must_exist(test.workpath('Test.dsw'))
+
+test.run(arguments='-c Test.dsw')
+
+test.must_not_exist(test.workpath('Test.dsp'))
+test.must_not_exist(test.workpath('Test.dsw'))
+
+
+
+test.write('SConstruct','''
+env=Environment(MSVS_VERSION = '6.0')
+
+env.MSVSProject(target = 'Test.dsp',
+ srcs = ['test.c'],
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+
+env.Program('test.c')
+''')
+
+test.write('test.c', r"""
+int
+main(int argc, char *argv)
+{
+ printf("test.c\n");
+ exit (0);
+}
+""")
+
+# Let SCons figure out the Visual Studio environment variables for us and
+# print out a statement that we can exec to suck them into our external
+# environment so we can execute msdev and really try to build something.
+
+test.run(arguments = '-n -q -Q -f -', stdin = """\
+env = Environment(tools = ['msvc'])
+print "os.environ.update(%s)" % repr(env['ENV'])
+""")
+
+exec(test.stdout())
+
+test.run(arguments='Test.dsp')
+
+test.run(program=['msdev'],
+ arguments=['Test.dsp', '/MAKE', 'test - Win32 Release'])
+
+test.run(program=test.workpath('test'), stdout = "test.c\n")
+
+
+
+test.pass_test()
diff --git a/test/MSVS/vs-7.0.py b/test/MSVS/vs-7.0.py
new file mode 100644
index 0000000..bbc7585
--- /dev/null
+++ b/test/MSVS/vs-7.0.py
@@ -0,0 +1,259 @@
+#!/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__"
+
+import os
+import os.path
+import sys
+
+import TestCmd
+import TestSCons
+
+test = TestSCons.TestSCons(match = TestCmd.match_re)
+
+if sys.platform != 'win32':
+ msg = "Skipping Visual Studio test on non-Windows platform '%s'\n" % sys.platform
+ test.skip_test(msg)
+
+if not '7.0' in test.msvs_versions():
+ msg = "Visual Studio 7.0 not installed; skipping test.\n"
+ test.skip_test(msg)
+
+def diff_section(expect, actual):
+ i = 0
+ for x, y in zip(expect, actual):
+ if x != y:
+ return "Actual did not match expect at char %d:\n" \
+ " Expect: %s\n" \
+ " Actual: %s\n" \
+ % (i, repr(expect[i-20:i+40]), repr(actual[i-20:i+40]))
+ i = i + 1
+ return "Actual matched the expected output???"
+
+expected_slnfile = """\
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcproj", "{SLNGUID}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {SLNGUID}.Release.ActiveCfg = Release|Win32
+ {SLNGUID}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
+"""
+
+expected_vcprojfile = """\
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.00"
+ Name="Test"
+ SccProjectName=""
+ SccLocalPath=""
+ Keyword="MakeFileProj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="<WORKPATH>"
+ IntermediateDirectory="<WORKPATH>"
+ ConfigurationType="0"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="echo Starting SCons &amp;&amp; <PYTHON> -c "<SCONS_SCRIPT_MAIN_XML>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
+ CleanCommandLine="echo Starting SCons &amp;&amp; <PYTHON> -c "<SCONS_SCRIPT_MAIN_XML>" -C <WORKPATH> -f SConstruct -c <WORKPATH>\Test.exe"
+ RebuildCommandLine="echo Starting SCons &amp;&amp; <PYTHON> -c "<SCONS_SCRIPT_MAIN_XML>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
+ Output="<WORKPATH>\Test.exe"/>
+ </Configuration>
+ </Configurations>
+ <Files>
+ <Filter
+ Name=" Source Files"
+ Filter="cpp;c;cxx;l;y;def;odl;idl;hpj;bat">
+ <File
+ RelativePath="test.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="sdk.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Local Headers"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="test.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Other Files"
+ Filter="">
+ <File
+ RelativePath="readme.txt">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+ <File
+ RelativePath="test.rc">
+ </File>
+ </Filter>
+ <File
+ RelativePath="<WORKPATH>\SConstruct">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
+"""
+
+test.write('SConstruct', """\
+env=Environment(MSVS_VERSION = '7.0')
+
+testsrc = ['test.cpp']
+testincs = ['sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.vcproj',
+ slnguid = '{SLNGUID}',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+""")
+
+test.run(arguments="Test.vcproj")
+
+test.must_exist(test.workpath('Test.vcproj'))
+vcproj = test.read('Test.vcproj', 'r')
+expect = test.msvs_substitute(expected_vcprojfile, '7.0')
+# don't compare the pickled data
+assert vcproj[:len(expect)] == expect, diff_section(expect, vcproj)
+
+test.must_exist(test.workpath('Test.sln'))
+sln = test.read('Test.sln', 'r')
+expect = test.msvs_substitute(expected_slnfile, '7.0')
+# don't compare the pickled data
+assert sln[:len(expect)] == expect, diff_section(expect, sln)
+
+test.run(arguments='-c .')
+
+test.must_not_exist(test.workpath('Test.vcproj'))
+test.must_not_exist(test.workpath('Test.sln'))
+
+test.run(arguments='Test.vcproj')
+
+test.must_exist(test.workpath('Test.vcproj'))
+test.must_exist(test.workpath('Test.sln'))
+
+test.run(arguments='-c Test.sln')
+
+test.must_not_exist(test.workpath('Test.vcproj'))
+test.must_not_exist(test.workpath('Test.sln'))
+
+
+
+# Test that running SCons with $PYTHON_ROOT in the environment
+# changes the .vcproj output as expected.
+os.environ['PYTHON_ROOT'] = 'xyzzy'
+
+test.run(arguments='Test.vcproj')
+
+python = os.path.join('$(PYTHON_ROOT)', os.path.split(sys.executable)[1])
+
+test.must_exist(test.workpath('Test.vcproj'))
+vcproj = test.read('Test.vcproj', 'r')
+expect = test.msvs_substitute(expected_vcprojfile, '7.0', python=python)
+# don't compare the pickled data
+assert vcproj[:len(expect)] == expect, diff_section(expect, vcproj)
+
+os.environ['PYTHON_ROOT'] = ''
+
+
+
+test.write('SConstruct', """\
+env=Environment(MSVS_VERSION = '7.0')
+
+env.MSVSProject(target = 'Test.vcproj',
+ srcs = ['test.c'],
+ buildtarget = 'test.exe',
+ variant = 'Release')
+
+env.Program('test.c')
+""")
+
+test.write('test.c', r"""
+int
+main(int argc, char *argv)
+{
+ printf("test.c\n");
+ exit (0);
+}
+""")
+
+# Let SCons figure out the Visual Studio environment variables for us and
+# print out a statement that we can exec to suck them into our external
+# environment so we can execute devenv and really try to build something.
+
+test.run(arguments = '-n -q -Q -f -', stdin = """\
+env = Environment(tools = ['msvc'])
+print "os.environ.update(%s)" % repr(env['ENV'])
+""")
+
+exec(test.stdout())
+
+test.run(arguments='Test.vcproj')
+
+test.run(program=['devenv'],
+ arguments=['Test.sln', '/build', 'Release'])
+
+test.run(program=test.workpath('test'), stdout = "test.c\n")
+
+
+
+test.pass_test()
diff --git a/test/MSVS/vs-7.1.py b/test/MSVS/vs-7.1.py
new file mode 100644
index 0000000..894ec01
--- /dev/null
+++ b/test/MSVS/vs-7.1.py
@@ -0,0 +1,270 @@
+#!/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__"
+
+import os
+import os.path
+import string
+import sys
+
+import TestCmd
+import TestSCons
+
+test = TestSCons.TestSCons(match = TestCmd.match_re)
+
+if sys.platform != 'win32':
+ msg = "Skipping Visual Studio test on non-Windows platform '%s'\n" % sys.platform
+ test.skip_test(msg)
+
+if not '7.1' in test.msvs_versions():
+ msg = "Visual Studio 7.1 not installed; skipping test.\n"
+ test.skip_test(msg)
+
+def diff_section(expect, actual):
+ i = 0
+ for x, y in zip(expect, actual):
+ if x != y:
+ return "Actual did not match expect at char %d:\n" \
+ " Expect: %s\n" \
+ " Actual: %s\n" \
+ % (i, repr(expect[i-20:i+40]), repr(actual[i-20:i+40]))
+ i = i + 1
+ return "Actual matched the expected output???"
+
+expected_slnfile = """\
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcproj", "{SLNGUID}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {SLNGUID}.Release.ActiveCfg = Release|Win32
+ {SLNGUID}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
+"""
+
+expected_vcprojfile = """\
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="Test"
+ SccProjectName=""
+ SccLocalPath=""
+ Keyword="MakeFileProj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="<WORKPATH>"
+ IntermediateDirectory="<WORKPATH>"
+ ConfigurationType="0"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="echo Starting SCons &amp;&amp; <PYTHON> -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
+ CleanCommandLine="echo Starting SCons &amp;&amp; <PYTHON> -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C <WORKPATH> -f SConstruct -c <WORKPATH>\Test.exe"
+ RebuildCommandLine="echo Starting SCons &amp;&amp; <PYTHON> -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
+ Output="<WORKPATH>\Test.exe"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name=" Source Files"
+ Filter="cpp;c;cxx;l;y;def;odl;idl;hpj;bat">
+ <File
+ RelativePath="test.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="sdk.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Local Headers"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="test.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Other Files"
+ Filter="">
+ <File
+ RelativePath="readme.txt">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+ <File
+ RelativePath="test.rc">
+ </File>
+ </Filter>
+ <File
+ RelativePath="<WORKPATH>\SConstruct">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
+"""
+
+test.write('SConstruct', """\
+env=Environment(MSVS_VERSION = '7.1')
+
+testsrc = ['test.cpp']
+testincs = ['sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.vcproj',
+ slnguid = '{SLNGUID}',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+""")
+
+test.run(arguments="Test.vcproj")
+
+test.must_exist(test.workpath('Test.vcproj'))
+vcproj = test.read('Test.vcproj', 'r')
+expect = test.msvs_substitute(expected_vcprojfile, '7.1')
+# don't compare the pickled data
+assert vcproj[:len(expect)] == expect, diff_section(expect, vcproj)
+
+
+test.must_exist(test.workpath('Test.sln'))
+sln = test.read('Test.sln', 'r')
+expect = test.msvs_substitute(expected_slnfile, '7.1')
+# don't compare the pickled data
+assert sln[:len(expect)] == expect, diff_section(expect, sln)
+
+test.run(arguments='-c .')
+
+test.must_not_exist(test.workpath('Test.vcproj'))
+test.must_not_exist(test.workpath('Test.sln'))
+
+test.run(arguments='Test.vcproj')
+
+test.must_exist(test.workpath('Test.vcproj'))
+test.must_exist(test.workpath('Test.sln'))
+
+test.run(arguments='-c Test.sln')
+
+test.must_not_exist(test.workpath('Test.vcproj'))
+test.must_not_exist(test.workpath('Test.sln'))
+
+
+
+
+# Test that running SCons with $PYTHON_ROOT in the environment
+# changes the .vcproj output as expected.
+os.environ['PYTHON_ROOT'] = 'xyzzy'
+
+test.run(arguments='Test.vcproj')
+
+python = os.path.join('$(PYTHON_ROOT)', os.path.split(sys.executable)[1])
+
+test.must_exist(test.workpath('Test.vcproj'))
+vcproj = test.read('Test.vcproj', 'r')
+expect = test.msvs_substitute(expected_vcprojfile, '7.1', python=python)
+# don't compare the pickled data
+assert vcproj[:len(expect)] == expect, diff_section(expect, vcproj)
+
+os.environ['PYTHON_ROOT'] = ''
+
+
+
+test.write('SConstruct', """\
+env=Environment(MSVS_VERSION = '7.1')
+
+env.MSVSProject(target = 'foo.vcproj',
+ srcs = ['foo.c'],
+ buildtarget = 'foo.exe',
+ variant = 'Release')
+
+t = env.Program('foo.c')
+print "t =", t[0]
+print "t =", t[0].abspath
+import sys
+print sys.argv
+""")
+
+test.write('foo.c', r"""
+int
+main(int argc, char *argv)
+{
+ printf("test.c\n");
+ exit (0);
+}
+""")
+
+# Let SCons figure out the Visual Studio environment variables for us and
+# print out a statement that we can exec to suck them into our external
+# environment so we can execute devenv and really try to build something.
+
+test.run(arguments = '-n -q -Q -f -', stdin = """\
+env = Environment(tools = ['msvc'])
+print "os.environ.update(%s)" % repr(env['ENV'])
+""")
+
+exec(test.stdout())
+
+test.run(arguments='foo.vcproj')
+
+test.vcproj_sys_path('foo.vcproj')
+
+test.run(program=['devenv'],
+ arguments=['foo.sln', '/build', 'Release'])
+
+test.run(program=test.workpath('foo'), stdout = "test.c\n")
+
+
+
+test.pass_test()
diff --git a/test/bad-drive.py b/test/bad-drive.py
index 1b733a5..35b3b38 100644
--- a/test/bad-drive.py
+++ b/test/bad-drive.py
@@ -40,7 +40,8 @@ import TestSCons
test = TestSCons.TestSCons()
if sys.platform != 'win32':
- test.pass_test()
+ msg = "Skipping drive-letter test on non-Windows platform '%s'\n" % sys.platform
+ test.skip_test(msg)
bad_drive = None
for i in range(len(string.uppercase)-1, -1, -1):
diff --git a/test/mingw.py b/test/mingw.py
index 6db5cc1..d2039b5 100644
--- a/test/mingw.py
+++ b/test/mingw.py
@@ -40,7 +40,8 @@ test = TestSCons.TestSCons(match = TestCmd.match_re_dotall)
# MinGW is win32 only:
if sys.platform != 'win32':
- test.pass_test()
+ msg = "Skipping mingw test on non-Windows platform '%s'\n" % sys.platform
+ test.skip_test(msg)
# This test requires MingW to be installed:
test.write('SConstruct',"""
diff --git a/test/msvs.py b/test/msvs.py
deleted file mode 100644
index 9dfd6f7..0000000
--- a/test/msvs.py
+++ /dev/null
@@ -1,422 +0,0 @@
-#!/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__"
-
-import os
-import os.path
-import re
-import string
-import sys
-import time
-
-import TestCmd
-import TestSCons
-
-expected_dspfile = '''\
-# Microsoft Developer Studio Project File - Name="Test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) External Target" 0x0106
-
-CFG=Test - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "Test.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "Test.mak" CFG="Test - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Test - Win32 Release" (based on "Win32 (x86) External Target")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF "$(CFG)" == "Test - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "<WORKPATH>"
-# PROP BASE Intermediate_Dir "<WORKPATH>"
-# PROP BASE Cmd_Line ""<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
-# PROP BASE Rebuild_Opt "-c && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
-# PROP BASE Target_File "<WORKPATH>\Test.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "<WORKPATH>"
-# PROP Intermediate_Dir "<WORKPATH>"
-# PROP Cmd_Line ""<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
-# PROP Rebuild_Opt "-c && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe"
-# PROP Target_File "<WORKPATH>\Test.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ENDIF
-
-# Begin Target
-
-# Name "Test - Win32 Release"
-
-!IF "$(CFG)" == "Test - Win32 Release"
-
-!ENDIF
-
-# Begin Group " Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;l;y;def;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="test.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE="sdk.h"
-# End Source File
-# End Group
-# Begin Group "Local Headers"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE="test.h"
-# End Source File
-# End Group
-# Begin Group "Other Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE="readme.txt"
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE="test.rc"
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE="<WORKPATH>\SConstruct"
-# End Source File
-# End Target
-# End Project
-'''
-
-expected_dswfile = '''\
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "Test"="<WORKPATH>\Test.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-'''
-
-expected_slnfile = '''\
-Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcproj", "{SLNGUID}"
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- ConfigName.0 = Release
- EndGlobalSection
- GlobalSection(ProjectDependencies) = postSolution
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {SLNGUID}.Release.ActiveCfg = Release|Win32
- {SLNGUID}.Release.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
-'''
-
-expected_vcprojfile = '''\
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.00"
- Name="Test"
- SccProjectName=""
- SccLocalPath=""
- Keyword="MakeFileProj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="<WORKPATH>"
- IntermediateDirectory="<WORKPATH>"
- ConfigurationType="0"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCNMakeTool"
- BuildCommandLine="<PYTHON> -c "<SCONS_SCRIPT_MAIN_XML>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe
-"
- CleanCommandLine="<PYTHON> -c "<SCONS_SCRIPT_MAIN_XML>" -C <WORKPATH> -f SConstruct -c <WORKPATH>\Test.exe"
- RebuildCommandLine="<PYTHON> -c "<SCONS_SCRIPT_MAIN_XML>" -C <WORKPATH> -f SConstruct <WORKPATH>\Test.exe
-"
- Output="<WORKPATH>\Test.exe"/>
- </Configuration>
- </Configurations>
- <Files>
- <Filter
- Name=" Source Files"
- Filter="cpp;c;cxx;l;y;def;odl;idl;hpj;bat">
- <File
- RelativePath="test.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl">
- <File
- RelativePath="sdk.h">
- </File>
- </Filter>
- <Filter
- Name="Local Headers"
- Filter="h;hpp;hxx;hm;inl">
- <File
- RelativePath="test.h">
- </File>
- </Filter>
- <Filter
- Name="Other Files"
- Filter="">
- <File
- RelativePath="readme.txt">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
- <File
- RelativePath="test.rc">
- </File>
- </Filter>
- <File
- RelativePath="<WORKPATH>\SConstruct">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
-'''
-
-test = TestSCons.TestSCons(match = TestCmd.match_re)
-
-if sys.platform != 'win32':
- test.pass_test()
-
-test.run(arguments = '-q -Q -f -', stdin = "import SCons; print SCons.__version__")
-version = test.stdout()[:-1]
-
-exec_script_main = "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-%s'), join(sys.prefix, 'scons-%s'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons') ] + sys.path; import SCons.Script; SCons.Script.main()" % (version, version)
-exec_script_main_xml = string.replace(exec_script_main, "'", "&apos;")
-
-def substitute(input, workpath=test.workpath(), python=sys.executable):
- result = string.replace(input, r'<WORKPATH>', workpath)
- result = string.replace(result, r'<PYTHON>', python)
- result = string.replace(result, r'<SCONS_SCRIPT_MAIN>', exec_script_main)
- result = string.replace(result, r'<SCONS_SCRIPT_MAIN_XML>', exec_script_main_xml)
- return result
-
-####
-# Determine which environments are installed on the test machine.
-test.write('SConstruct','''
-env = Environment()
-
-f = open('versions','w')
-f.write('versions = ' + str(env['MSVS']['VERSIONS']))
-f.close()
-''')
-
-test.run()
-versions = []
-execfile(test.workpath('versions'))
-
-#####
-# Test v6.0 output
-
-if '6.0' in versions:
- test.write('SConstruct','''
-env=Environment(MSVS_VERSION = '6.0')
-
-testsrc = ['test.cpp']
-testincs = ['sdk.h']
-testlocalincs = ['test.h']
-testresources = ['test.rc']
-testmisc = ['readme.txt']
-
-env.MSVSProject(target = 'Test.dsp',
- srcs = testsrc,
- incs = testincs,
- localincs = testlocalincs,
- resources = testresources,
- misc = testmisc,
- buildtarget = 'Test.exe',
- variant = 'Release')
- ''')
-
- test.run(arguments="Test.dsp")
-
- test.fail_test(not os.path.exists(test.workpath('Test.dsp')))
- dsp = test.read('Test.dsp', 'r')
- expect = substitute(expected_dspfile)
- # don't compare the pickled data
- assert dsp[:len(expect)] == expect
-
- test.fail_test(not os.path.exists(test.workpath('Test.dsw')))
- dsw = test.read('Test.dsw', 'r')
- expect = substitute(expected_dswfile)
- assert dsw == expect
-
- test.run(arguments='-c .')
-
- test.fail_test(os.path.exists(test.workpath('Test.dsp')))
- test.fail_test(os.path.exists(test.workpath('Test.dsw')))
-
- test.run(arguments='Test.dsp')
-
- test.fail_test(not os.path.exists(test.workpath('Test.dsp')))
- test.fail_test(not os.path.exists(test.workpath('Test.dsw')))
-
- test.run(arguments='-c Test.dsw')
-
- test.fail_test(os.path.exists(test.workpath('Test.dsp')))
- test.fail_test(os.path.exists(test.workpath('Test.dsw')))
-
-#####
-# Test .NET output
-
-if '7.0' in versions:
- test.write('SConstruct','''
-env=Environment(MSVS_VERSION = '7.0')
-
-testsrc = ['test.cpp']
-testincs = ['sdk.h']
-testlocalincs = ['test.h']
-testresources = ['test.rc']
-testmisc = ['readme.txt']
-
-env.MSVSProject(target = 'Test.vcproj',
- slnguid = '{SLNGUID}',
- srcs = testsrc,
- incs = testincs,
- localincs = testlocalincs,
- resources = testresources,
- misc = testmisc,
- buildtarget = 'Test.exe',
- variant = 'Release')
- ''')
-
- test.run(arguments="Test.vcproj")
-
- test.fail_test(not os.path.exists(test.workpath('Test.vcproj')))
- test.read('Test.vcproj', 'r')
- expect = substitute(expected_vcprojfile)
- # don't compare the pickled data
- assert vcproj[:len(expect)] == expect
-
- test.fail_test(not os.path.exists(test.workpath('Test.sln')))
- sln = test.read('Test.sln', 'r')
- expect = substitute(expected_slnfile)
- # don't compare the pickled data
- assert sln[:len(expect)] == expect
-
- test.run(arguments='-c .')
-
- test.fail_test(os.path.exists(test.workpath('Test.vcproj')))
- test.fail_test(os.path.exists(test.workpath('Test.sln')))
-
- test.run(arguments='Test.vcproj')
-
- test.fail_test(not os.path.exists(test.workpath('Test.vcproj')))
- test.fail_test(not os.path.exists(test.workpath('Test.sln')))
-
- test.run(arguments='-c Test.sln')
-
- test.fail_test(os.path.exists(test.workpath('Test.vcproj')))
- test.fail_test(os.path.exists(test.workpath('Test.sln')))
-
- # Test that running SCons with $PYTHON_ROOT in the environment
- # changes the .vcproj output as expected.
- os.environ['PYTHON_ROOT'] = 'xyzzy'
-
- test.run(arguments='Test.vcproj')
-
- python = os.path.join('$(PYTHON_ROOT)', os.path.split(sys.executable)[1])
-
- test.fail_test(not os.path.exists(test.workpath('Test.vcproj')))
- test.read('Test.vcproj', 'r')
- expect = substitute(expected_vcprojfile, python=python)
- # don't compare the pickled data
- assert vcproj[:len(expect)] == expect
-
-test.pass_test()
diff --git a/test/timestamp-fallback.py b/test/timestamp-fallback.py
index e1a27f8..288f8d8 100644
--- a/test/timestamp-fallback.py
+++ b/test/timestamp-fallback.py
@@ -38,9 +38,9 @@ except ImportError:
pass
else:
if desc[2] == imp.C_BUILTIN:
- print "The 'md5' module is built in to this version of Python."
- print "Cannot test falling back to timestamps."
- test.pass_test(1);
+ msg = "The 'md5' module is built in to this version of Python.\n" + \
+ "Cannot test falling back to timestamps.\n"
+ test.skip_test(msg)
test.write('md5.py', r"""
raise ImportError
diff --git a/test/win32pathmadness.py b/test/win32pathmadness.py
index ea40c66..df350eb 100644
--- a/test/win32pathmadness.py
+++ b/test/win32pathmadness.py
@@ -39,7 +39,8 @@ import os.path
test = TestSCons.TestSCons(match=TestCmd.match_re)
if sys.platform != 'win32':
- test.pass_test()
+ msg = "Skipping Windows path tests on non-Windows platform '%s'\n" % sys.platform
+ test.skip_test(msg)
test.subdir('src', 'build', 'include', 'src2')
@@ -86,17 +87,31 @@ int blat(void);
int bar(void);
""")
-drive,rest = os.path.splitdrive(test.workpath('src'))
-upper = os.path.join(string.upper(drive),rest)
-lower = os.path.join(string.lower(drive),rest)
+drive, rest = os.path.splitdrive(test.workpath('src'))
-test.run(chdir=upper)
-test.run(chdir=lower, stdout=test.wrap_stdout("""\
+drive_upper = string.upper(drive)
+drive_lower = string.lower(drive)
+rest_upper = rest[0] + string.upper(rest[1]) + rest[2:]
+rest_lower = rest[0] + string.lower(rest[1]) + rest[2:]
+
+combinations = [
+ os.path.join(drive_upper, rest_upper),
+ os.path.join(drive_upper, rest_lower),
+ os.path.join(drive_lower, rest_upper),
+ os.path.join(drive_lower, rest_lower),
+]
+
+test.run(chdir=combinations[0])
+
+for dir in combinations[1:]:
+ test.run(chdir=dir, stdout=test.wrap_stdout("""\
scons: .* is up to date.
scons: .* is up to date.
scons: .* is up to date.
"""))
+
+
test.write('SConstruct', """
env=Environment()
env.StaticLibrary('a', 'a.c')