summaryrefslogtreecommitdiffstats
path: root/test/MSVC/VSWHERE.py
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2020-04-23 00:17:24 (GMT)
committerWilliam Deegan <bill@baddogconsulting.com>2020-04-23 00:17:24 (GMT)
commit7ec2c76c12d1254c2c31a20d15ae5c39540adb3e (patch)
treec870c537ec237f22efff5a20071f9b16d4940e9b /test/MSVC/VSWHERE.py
parent3fed7a63425265d3151f52515fdbd4f62867e57d (diff)
downloadSCons-7ec2c76c12d1254c2c31a20d15ae5c39540adb3e.zip
SCons-7ec2c76c12d1254c2c31a20d15ae5c39540adb3e.tar.gz
SCons-7ec2c76c12d1254c2c31a20d15ae5c39540adb3e.tar.bz2
Add system test for setting and retrieving VSWHERE
Diffstat (limited to 'test/MSVC/VSWHERE.py')
-rw-r--r--test/MSVC/VSWHERE.py101
1 files changed, 101 insertions, 0 deletions
diff --git a/test/MSVC/VSWHERE.py b/test/MSVC/VSWHERE.py
new file mode 100644
index 0000000..0d6b991
--- /dev/null
+++ b/test/MSVC/VSWHERE.py
@@ -0,0 +1,101 @@
+#!/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 the ability to configure the $VSWHERE construction variable.
+Also test that vswhere.exe is found and sets VSWHERE to the correct values
+"""
+import os.path
+import TestSCons
+
+_python_ = TestSCons._python_
+
+test = TestSCons.TestSCons()
+test.verbose_set(1)
+
+test.skip_if_not_msvc()
+test.dir_fixture('VSWHERE-fixture')
+
+test.run(arguments=".")
+
+# Now grab info out of stdout
+lines = test.stdout().splitlines()
+
+# Debug code
+# print("LINES:\n%s" % lines)
+
+default_locations = []
+detected_path = None
+env_path = None
+for l in lines:
+ if 'VSWHERE_PATH' in l:
+ path = l.strip().split('=')[-1]
+ default_locations.append(path)
+ elif 'VSWHERE-detect' in l:
+ detected_path = l.strip().split('=')[-1]
+ elif 'VSWHERE-env' in l:
+ env_path = l.strip().split('=')[-1]
+
+# Debug code
+# print("VPP:%s" % default_locations)
+# print("V-D:%s" % detected_path)
+# print("V-E:%s" % env_path)
+
+
+test.fail_test(len(default_locations) == 0,
+ message='No default vswhere.exe locations found')
+test.fail_test(
+ detected_path is None, message='No vswhere.exe detected in default paths :%s' % default_locations)
+test.fail_test(detected_path not in default_locations,
+ message='detected path [%s] not in default locations[%s]' % (detected_path, default_locations))
+
+expected_env_path = os.path.join(test.workdir, 'vswhere.exe')
+test.fail_test(env_path != expected_env_path,
+ message='VSWHERE not\n\t%s\n\t but\n\t%s' % (expected_env_path, env_path))
+
+
+test.pass_test()
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
+
+expected = r"""
+PS C:\Users\Bill\AppData\Local\Temp\testcmd.11256.1ae1_as5> py -3.8 C:\Users\Bill\devel\scons\git\scons-2\scripts\scons.py
+scons: Reading SConscript files ...
+VSWHERE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe
+VSWHERE_PATH=C:\Program Files\Microsoft Visual Studio\Installer\vswhere.exe
+VSWHERE_PATH=C:\ProgramData\chocolatey\bin\vswhere.exe
+VSWHERE-detect=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe
+Copy("C:\Users\Bill\AppData\Local\Temp\testcmd.11256.1ae1_as5\vswhere.exe", "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe")
+VSWHERE-env=C:\Users\Bill\AppData\Local\Temp\testcmd.11256.1ae1_as5\vswhere.exe
+scons: done reading SConscript files.
+scons: Building targets ...
+scons: `.' is up to date.
+scons: done building targets.
+"""