diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2014-08-25 15:33:13 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2014-08-25 15:33:13 +0200 |
commit | f762ee6d16ccdd40317608b11e685e2f17c06f22 (patch) | |
tree | 8424afe37359fbcde2e014eda338869947e11c2e /src/engine/SCons/Platform | |
parent | 02292cfec56d773f3e3e8607f5b7f76f97c9c874 (diff) | |
parent | 16bc58049adac72cb1f398d9f89e42757bb4a22f (diff) |
Merge tag 'upstream/2.3.3'
Upstream version 2.3.3
Diffstat (limited to 'src/engine/SCons/Platform')
-rw-r--r-- | src/engine/SCons/Platform/PlatformTests.py | 51 | ||||
-rw-r--r-- | src/engine/SCons/Platform/__init__.py | 5 | ||||
-rw-r--r-- | src/engine/SCons/Platform/aix.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/cygwin.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/darwin.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/hpux.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/irix.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/os2.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/posix.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/sunos.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/win32.py | 2 |
11 files changed, 60 insertions, 14 deletions
diff --git a/src/engine/SCons/Platform/PlatformTests.py b/src/engine/SCons/Platform/PlatformTests.py index 94a697b..de8ad2c 100644 --- a/src/engine/SCons/Platform/PlatformTests.py +++ b/src/engine/SCons/Platform/PlatformTests.py @@ -21,22 +21,24 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/PlatformTests.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/PlatformTests.py 2014/08/24 12:12:31 garyo" import SCons.compat import collections -import sys import unittest import TestUnit import SCons.Errors import SCons.Platform +import SCons.Environment +import SCons.Action class Environment(collections.UserDict): def Detect(self, cmd): return cmd + def AppendENVPath(self, key, value): pass @@ -117,9 +119,52 @@ class PlatformTestCase(unittest.TestCase): SCons.Platform.Platform()(env) assert env != {}, env +class TempFileMungeTestCase(unittest.TestCase): + def test_MAXLINELENGTH(self): + """ Test different values for MAXLINELENGTH with the same + size command string to ensure that the temp file mechanism + kicks in only at MAXLINELENGTH+1, or higher + """ + # Init class with cmd, such that the fully expanded + # string reads "a test command line". + # Note, how we're using a command string here that is + # actually longer than the substituted one. This is to ensure + # that the TempFileMunge class internally really takes the + # length of the expanded string into account. + defined_cmd = "a $VERY $OVERSIMPLIFIED line" + t = SCons.Platform.TempFileMunge(defined_cmd) + env = SCons.Environment.SubstitutionEnvironment(tools=[]) + # Setting the line length high enough... + env['MAXLINELENGTH'] = 1024 + env['VERY'] = 'test' + env['OVERSIMPLIFIED'] = 'command' + expanded_cmd = env.subst(defined_cmd) + # Call the tempfile munger + cmd = t(None,None,env,0) + assert cmd == defined_cmd, cmd + # Let MAXLINELENGTH equal the string's length + env['MAXLINELENGTH'] = len(expanded_cmd) + cmd = t(None,None,env,0) + assert cmd == defined_cmd, cmd + # Finally, let the actual tempfile mechanism kick in + # Disable printing of actions... + old_actions = SCons.Action.print_actions + SCons.Action.print_actions = 0 + env['MAXLINELENGTH'] = len(expanded_cmd)-1 + cmd = t(None,None,env,0) + # ...and restoring its setting. + SCons.Action.print_actions = old_actions + assert cmd != defined_cmd, cmd if __name__ == "__main__": - suite = unittest.makeSuite(PlatformTestCase, 'test_') + suite = unittest.TestSuite() + + tclasses = [ PlatformTestCase, + TempFileMungeTestCase ] + for tclass in tclasses: + names = unittest.getTestCaseNames(tclass, 'test_') + suite.addTests(list(map(tclass, names))) + TestUnit.run(suite) # Local Variables: diff --git a/src/engine/SCons/Platform/__init__.py b/src/engine/SCons/Platform/__init__.py index f8d8041..8ccfd73 100644 --- a/src/engine/SCons/Platform/__init__.py +++ b/src/engine/SCons/Platform/__init__.py @@ -42,7 +42,7 @@ their own platform definition. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/__init__.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/__init__.py 2014/08/24 12:12:31 garyo" import SCons.compat @@ -173,6 +173,7 @@ class TempFileMunge(object): length = 0 for c in cmd: length += len(c) + length += len(cmd) - 1 if length <= maxline: return self.cmd @@ -187,7 +188,7 @@ class TempFileMunge(object): (fd, tmp) = tempfile.mkstemp('.lnk', text=True) native_tmp = SCons.Util.get_native_path(os.path.normpath(tmp)) - if env['SHELL'] and env['SHELL'] == 'sh': + if env.get('SHELL',None) == 'sh': # The sh shell will try to escape the backslashes in the # path, so unescape them. native_tmp = native_tmp.replace('\\', r'\\\\') diff --git a/src/engine/SCons/Platform/aix.py b/src/engine/SCons/Platform/aix.py index 4d9ea92..e3e1e30 100644 --- a/src/engine/SCons/Platform/aix.py +++ b/src/engine/SCons/Platform/aix.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/aix.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/aix.py 2014/08/24 12:12:31 garyo" import os import subprocess diff --git a/src/engine/SCons/Platform/cygwin.py b/src/engine/SCons/Platform/cygwin.py index 781f12d..b3a892a 100644 --- a/src/engine/SCons/Platform/cygwin.py +++ b/src/engine/SCons/Platform/cygwin.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/cygwin.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/cygwin.py 2014/08/24 12:12:31 garyo" import posix from SCons.Platform import TempFileMunge diff --git a/src/engine/SCons/Platform/darwin.py b/src/engine/SCons/Platform/darwin.py index bf61000..c0b576e 100644 --- a/src/engine/SCons/Platform/darwin.py +++ b/src/engine/SCons/Platform/darwin.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/darwin.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/darwin.py 2014/08/24 12:12:31 garyo" import posix import os diff --git a/src/engine/SCons/Platform/hpux.py b/src/engine/SCons/Platform/hpux.py index 9e5fe6a..fa019bc 100644 --- a/src/engine/SCons/Platform/hpux.py +++ b/src/engine/SCons/Platform/hpux.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/hpux.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/hpux.py 2014/08/24 12:12:31 garyo" import posix diff --git a/src/engine/SCons/Platform/irix.py b/src/engine/SCons/Platform/irix.py index 4287f97..21a527f 100644 --- a/src/engine/SCons/Platform/irix.py +++ b/src/engine/SCons/Platform/irix.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/irix.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/irix.py 2014/08/24 12:12:31 garyo" import posix diff --git a/src/engine/SCons/Platform/os2.py b/src/engine/SCons/Platform/os2.py index 93b7b95..943d1fe 100644 --- a/src/engine/SCons/Platform/os2.py +++ b/src/engine/SCons/Platform/os2.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/os2.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/os2.py 2014/08/24 12:12:31 garyo" import win32 def generate(env): diff --git a/src/engine/SCons/Platform/posix.py b/src/engine/SCons/Platform/posix.py index eb4f6c9..161d0c1 100644 --- a/src/engine/SCons/Platform/posix.py +++ b/src/engine/SCons/Platform/posix.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/posix.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/posix.py 2014/08/24 12:12:31 garyo" import errno import os diff --git a/src/engine/SCons/Platform/sunos.py b/src/engine/SCons/Platform/sunos.py index a9d3001..fd5acf2 100644 --- a/src/engine/SCons/Platform/sunos.py +++ b/src/engine/SCons/Platform/sunos.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/sunos.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/sunos.py 2014/08/24 12:12:31 garyo" import posix diff --git a/src/engine/SCons/Platform/win32.py b/src/engine/SCons/Platform/win32.py index 6511f12..80d1658 100644 --- a/src/engine/SCons/Platform/win32.py +++ b/src/engine/SCons/Platform/win32.py @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/win32.py 2014/07/05 09:42:21 garyo" +__revision__ = "src/engine/SCons/Platform/win32.py 2014/08/24 12:12:31 garyo" import os import os.path |