diff options
author | William Deegan <bill@baddogconsulting.com> | 2020-12-20 23:37:56 (GMT) |
---|---|---|
committer | William Deegan <bill@baddogconsulting.com> | 2020-12-20 23:37:56 (GMT) |
commit | 78292be9cbb471101e6ed4ec5f6da0161730c656 (patch) | |
tree | e0ef841cc870866c5af965411b9222c455d8d3e7 /test/TEMPFILE | |
parent | 2b583646718acda52481b71f15c9a6723fb3eb81 (diff) | |
parent | 97dbf8d22b518a8f67cf670f8e3449990f3f5813 (diff) | |
download | SCons-78292be9cbb471101e6ed4ec5f6da0161730c656.zip SCons-78292be9cbb471101e6ed4ec5f6da0161730c656.tar.gz SCons-78292be9cbb471101e6ed4ec5f6da0161730c656.tar.bz2 |
Merge remote-tracking branch 'upstream/master' into reimplement_soname_soversion
Diffstat (limited to 'test/TEMPFILE')
-rw-r--r-- | test/TEMPFILE/TEMPFILE-actionlist.py | 53 | ||||
-rw-r--r-- | test/TEMPFILE/TEMPFILEDIR.py | 74 | ||||
-rw-r--r-- | test/TEMPFILE/TEMPFILEPREFIX.py | 108 | ||||
-rw-r--r-- | test/TEMPFILE/TEMPFILESUFFIX.py | 108 | ||||
-rw-r--r-- | test/TEMPFILE/fixture/SConstruct-tempfile-actionlist | 6 | ||||
-rw-r--r-- | test/TEMPFILE/fixture/SConstruct.tempfiledir | 17 |
6 files changed, 366 insertions, 0 deletions
diff --git a/test/TEMPFILE/TEMPFILE-actionlist.py b/test/TEMPFILE/TEMPFILE-actionlist.py new file mode 100644 index 0000000..d66b217 --- /dev/null +++ b/test/TEMPFILE/TEMPFILE-actionlist.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# +# Copyright The SCons Foundation +# +# 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. +# + +""" +Verify that using $TEMPFILE in multiple actions in a +list invokes each command in the list. +""" + +import TestSCons + +test = TestSCons.TestSCons(match=TestSCons.match_re) +test.file_fixture('fixture/SConstruct-tempfile-actionlist', 'SConstruct') + +test.write('file.input', "file.input\n") + +test.run(arguments='-n -Q .', + stdout="""\ +Using tempfile \\S+ for command line: +xxx.py -otempfile file.input +xxx.py @\\S+ +Using tempfile \\S+ for command line: +yyy.py -ofile.output tempfile +yyy.py @\\S+ +""") + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/TEMPFILE/TEMPFILEDIR.py b/test/TEMPFILE/TEMPFILEDIR.py new file mode 100644 index 0000000..b528be3 --- /dev/null +++ b/test/TEMPFILE/TEMPFILEDIR.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# +# 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. + +""" +Verify that setting the $TEMPFILEDIR variable will cause +the generated tempfile used for long command lines to be created in specified directory. +And if not specified in one of TMPDIR, TEMP or TMP (based on os' normal usage of such) +""" +from re import escape +import tempfile +import TestSCons +from TestCmd import IS_WINDOWS + +test = TestSCons.TestSCons(match=TestSCons.match_re) + +test.file_fixture('fixture/SConstruct.tempfiledir', 'SConstruct') + +expected_output = r"""Using tempfile __WORKDIR__/my_temp_files/\S+ for command line: +xxx.py foo.out foo.in +xxx.py @__WORKDIR__/my_temp_files/\S+ +Using tempfile __TEMPDIR__/\S+ for command line: +xxx.py global_foo.out foo.in +xxx.py @__TEMPDIR__/\S+ +""" + +if IS_WINDOWS: + expected_output = expected_output.replace('/','\\\\') +wd_escaped = escape(test.workdir) +td_escaped = escape(tempfile.gettempdir()) +expected_output =expected_output.replace("__WORKDIR__", wd_escaped) +expected_output = expected_output.replace("__TEMPDIR__", td_escaped) + +test.write('foo.in', "foo.in\n") + +test.run(arguments='-n -Q .', + stdout=expected_output) +# """\ +# Using tempfile \\S+ for command line: +# xxx.py foo.out foo.in +# xxx.py \\S+ +# """) +# +# try: +# tempfile = test.stdout().splitlines()[0].split()[2] +# except IndexError: +# test.fail_test("Unexpected output couldn't find tempfile") +# +# dirname = os.path.basename(os.path.dirname(tempfile)) +# test.fail_test('my_temp_files' != dirname, message="Temp file not created in \"my_temp_files\" directory") +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/TEMPFILE/TEMPFILEPREFIX.py b/test/TEMPFILE/TEMPFILEPREFIX.py new file mode 100644 index 0000000..62ac814 --- /dev/null +++ b/test/TEMPFILE/TEMPFILEPREFIX.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python +# +# 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. + +""" +Verify that setting the $TEMPFILEPREFIX variable will cause +it to appear at the front of name of the generated tempfile +used for long command lines. +""" + + +import TestSCons + +test = TestSCons.TestSCons(match = TestSCons.match_re) + +test.write('SConstruct', """ +import os +env = Environment( + BUILDCOM = '${TEMPFILE("xxx.py $TARGET $SOURCES")}', + MAXLINELENGTH = 16, + TEMPFILEPREFIX = '-via', +) +env.AppendENVPath('PATH', os.curdir) +env.Command('foo.out', 'foo.in', '$BUILDCOM') +""") + +test.write('foo.in', "foo.in\n") + +test.run(arguments = '-n -Q .', + stdout = """\ +Using tempfile \\S+ for command line: +xxx.py foo.out foo.in +xxx.py -via\\S+ +""") + +test.write('SConstruct', """ +import os + +def print_cmd_line(s, targets, sources, env): + pass + +env = Environment( + BUILDCOM = '${TEMPFILE("xxx.py $TARGET $SOURCES")}', + MAXLINELENGTH = 16, + TEMPFILEPREFIX = '-via', + PRINT_CMD_LINE_FUNC=print_cmd_line +) +env.AppendENVPath('PATH', os.curdir) +env.Command('foo.out', 'foo.in', '$BUILDCOM') +""") + +test.run(arguments = '-n -Q .', + stdout = """""") + +test.write('SConstruct', """ +import os +from SCons.Platform import TempFileMunge + +class TestTempFileMunge(TempFileMunge): + + def __init__(self, cmd, cmdstr = None): + super(TestTempFileMunge, self).__init__(cmd, cmdstr) + + def _print_cmd_str(self, target, source, env, cmdstr): + super(TestTempFileMunge, self)._print_cmd_str(target, source, None, cmdstr) + +env = Environment( + TEMPFILE = TestTempFileMunge, + BUILDCOM = '${TEMPFILE("xxx.py $TARGET $SOURCES")}', + MAXLINELENGTH = 16, + TEMPFILEPREFIX = '-via', + +) +env.AppendENVPath('PATH', os.curdir) +env.Command('foo.out', 'foo.in', '$BUILDCOM') +""") + +test.run(arguments = '-n -Q .', + stdout = """\ +Using tempfile \\S+ for command line: +xxx.py foo.out foo.in +xxx.py -via\\S+ +""") + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/TEMPFILE/TEMPFILESUFFIX.py b/test/TEMPFILE/TEMPFILESUFFIX.py new file mode 100644 index 0000000..bd4cf09 --- /dev/null +++ b/test/TEMPFILE/TEMPFILESUFFIX.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python +# +# 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. + +""" +Verify that setting the $TEMPFILESUFFIX variable will cause +it to appear at the end of name of the generated tempfile +used for long command lines. +""" + + +import TestSCons + +test = TestSCons.TestSCons(match=TestSCons.match_re) + +test.write('SConstruct', """ +import os +env = Environment( + BUILDCOM = '${TEMPFILE("xxx.py $TARGET $SOURCES")}', + MAXLINELENGTH = 16, + TEMPFILESUFFIX = '.foo', +) +env.AppendENVPath('PATH', os.curdir) +env.Command('foo.out', 'foo.in', '$BUILDCOM') +""") + +test.write('foo.in', "foo.in\n") + +test.run(arguments = '-n -Q .', + stdout = """\ +Using tempfile \\S+ for command line: +xxx.py foo.out foo.in +xxx.py \\S+ +""") + +test.write('SConstruct', """ +import os + +def print_cmd_line(s, targets, sources, env): + pass + +env = Environment( + BUILDCOM = '${TEMPFILE("xxx.py $TARGET $SOURCES")}', + MAXLINELENGTH = 16, + TEMPFILESUFFIX = '.foo', + PRINT_CMD_LINE_FUNC=print_cmd_line +) +env.AppendENVPath('PATH', os.curdir) +env.Command('foo.out', 'foo.in', '$BUILDCOM') +""") + +test.run(arguments = '-n -Q .', + stdout = """""") + +test.write('SConstruct', """ +import os +from SCons.Platform import TempFileMunge + +class TestTempFileMunge(TempFileMunge): + + def __init__(self, cmd, cmdstr = None): + super(TestTempFileMunge, self).__init__(cmd, cmdstr) + + def _print_cmd_str(self, target, source, env, cmdstr): + super(TestTempFileMunge, self)._print_cmd_str(target, source, None, cmdstr) + +env = Environment( + TEMPFILE = TestTempFileMunge, + BUILDCOM = '${TEMPFILE("xxx.py $TARGET $SOURCES")}', + MAXLINELENGTH = 16, + TEMPFILESUFFIX = '.foo', + +) +env.AppendENVPath('PATH', os.curdir) +env.Command('foo.out', 'foo.in', '$BUILDCOM') +""") + +test.run(arguments = '-n -Q .', + stdout = """\ +Using tempfile \\S+ for command line: +xxx.py foo.out foo.in +xxx.py \\S+ +""") + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/TEMPFILE/fixture/SConstruct-tempfile-actionlist b/test/TEMPFILE/fixture/SConstruct-tempfile-actionlist new file mode 100644 index 0000000..07b6345 --- /dev/null +++ b/test/TEMPFILE/fixture/SConstruct-tempfile-actionlist @@ -0,0 +1,6 @@ +DefaultEnvironment(tools=[]) +env = Environment(tools=[], + BUILDCOM=['${TEMPFILE("xxx.py -otempfile $SOURCE")}', + '${TEMPFILE("yyy.py -o$TARGET tempfile")}'], + MAXLINELENGTH=1) +env.Command('file.output', 'file.input', '$BUILDCOM') diff --git a/test/TEMPFILE/fixture/SConstruct.tempfiledir b/test/TEMPFILE/fixture/SConstruct.tempfiledir new file mode 100644 index 0000000..ea26c27 --- /dev/null +++ b/test/TEMPFILE/fixture/SConstruct.tempfiledir @@ -0,0 +1,17 @@ +import os + +my_temp_dir = os.path.join(os.getcwd(), 'my_temp_files') + +env = Environment( + BUILDCOM='${TEMPFILE("xxx.py $TARGET $SOURCES")}', + MAXLINELENGTH=16, + TEMPFILEDIR=my_temp_dir, +) +env.AppendENVPath('PATH', os.curdir) +env.Command('foo.out', 'foo.in', '$BUILDCOM') + +plain_env = Environment( + BUILDCOM='${TEMPFILE("xxx.py $TARGET $SOURCES")}', + MAXLINELENGTH=16, +) +plain_env.Command('global_foo.out', 'foo.in', '$BUILDCOM') |