summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussel Winder <russel@winder.org.uk>2012-09-16 18:11:28 +0100
committerRussel Winder <russel@winder.org.uk>2012-09-16 18:11:28 +0100
commitdf70c4137a21fc80a7eba9d41d64b1a3f1c24481 (patch)
tree0beda9bd3fd997deb44de2c0fde9ad2ed0163efd
parentaf7cd2d0efa55c0659c78b06e31fa91fcecacb47 (diff)
parentbfca4fd4b80657cc63149d9648f7309a84b4d07f (diff)
downloadscons-df70c4137a21fc80a7eba9d41d64b1a3f1c24481.tar.gz
Merge mainline tip.
-rw-r--r--QMTest/TestCmdTests.py8
-rw-r--r--QMTest/TestCommon.py48
-rw-r--r--QMTest/TestCommonTests.py210
-rw-r--r--QMTest/TestSCons.py12
-rw-r--r--src/CHANGES.txt4
-rw-r--r--src/engine/SCons/SubstTests.py2
-rw-r--r--src/engine/SCons/Tool/JavaCommon.py4
-rw-r--r--src/engine/SCons/Tool/gettext.py7
-rw-r--r--src/engine/SCons/Tool/javacTests.py6
-rw-r--r--src/engine/SCons/Tool/msvsTests.py11
-rw-r--r--src/engine/SCons/Tool/tex.py52
-rw-r--r--test/AS/AS.py13
-rw-r--r--test/AS/ASFLAGS.py10
-rw-r--r--test/AS/ASPP.py13
-rw-r--r--test/AS/ASPPFLAGS.py10
-rw-r--r--test/CC/CC.py10
-rw-r--r--test/CXX/CXX.py12
-rw-r--r--test/Errors/execute-a-directory.py7
-rw-r--r--test/FindSourceFiles.py12
-rw-r--r--test/Fortran/common.py6
-rwxr-xr-xtest/TEX/biblatex.py3
-rw-r--r--test/TEX/newglossary.py158
-rw-r--r--test/packaging/option--package-type.py7
-rw-r--r--test/packaging/rpm/cleanup.py6
-rw-r--r--test/packaging/rpm/internationalization.py17
-rw-r--r--test/packaging/rpm/multipackage.py12
-rw-r--r--test/packaging/rpm/package.py8
-rw-r--r--test/packaging/rpm/tagging.py8
-rw-r--r--test/runtest/aegis/batch-output.py78
-rw-r--r--test/scons-time/func/funcglob.py (renamed from test/scons-time/func/glob.py)0
-rw-r--r--test/scons-time/mem/memglob.py (renamed from test/scons-time/mem/glob.py)0
-rw-r--r--test/scons-time/obj/objglob.py (renamed from test/scons-time/obj/glob.py)0
-rw-r--r--test/scons-time/time/timeglob.py (renamed from test/scons-time/time/glob.py)0
33 files changed, 600 insertions, 154 deletions
diff --git a/QMTest/TestCmdTests.py b/QMTest/TestCmdTests.py
index 357413f2..1fe328cc 100644
--- a/QMTest/TestCmdTests.py
+++ b/QMTest/TestCmdTests.py
@@ -551,8 +551,8 @@ result = TestCmd.TestCmd.context_diff(['a\\n', 'b\\n', 'c\\n', 'e\\n', 'f1\\n'],
['a\\n', 'c\\n', 'd\\n', 'e\\n', 'f2\\n'])
result = list(result)
expect = [
- '*** \\n',
- '--- \\n',
+ '*** \\n',
+ '--- \\n',
'***************\\n',
'*** 1,5 ****\\n',
' a\\n',
@@ -580,8 +580,8 @@ result = TestCmd.TestCmd.unified_diff(['a\\n', 'b\\n', 'c\\n', 'e\\n', 'f1\\n'],
['a\\n', 'c\\n', 'd\\n', 'e\\n', 'f2\\n'])
result = list(result)
expect = [
- '--- \\n',
- '+++ \\n',
+ '--- \\n',
+ '+++ \\n',
'@@ -1,5 +1,5 @@\\n',
' a\\n',
'-b\\n',
diff --git a/QMTest/TestCommon.py b/QMTest/TestCommon.py
index c6772260..90aaed25 100644
--- a/QMTest/TestCommon.py
+++ b/QMTest/TestCommon.py
@@ -99,6 +99,7 @@ import copy
import os
import stat
import sys
+import glob
try:
from collections import UserList
@@ -204,6 +205,14 @@ else:
def is_List(e):
return isinstance(e, (list, UserList))
+def is_Tuple(e):
+ return isinstance(e, tuple)
+
+def is_Sequence(e):
+ return (not hasattr(e, "strip") and
+ hasattr(e, "__getitem__") or
+ hasattr(e, "__iter__"))
+
def is_writable(f):
mode = os.stat(f)[stat.ST_MODE]
return mode & stat.S_IWUSR
@@ -422,6 +431,26 @@ class TestCommon(TestCmd):
print "Missing files: `%s'" % "', `".join(missing)
self.fail_test(missing)
+ def must_exist_one_of(self, files):
+ """Ensures that at least one of the specified file(s) exists.
+ The filenames can be given as a list, where each entry may be
+ a single path string, or a tuple of folder names and the final
+ filename that get concatenated.
+ Supports wildcard names like 'foo-1.2.3-*.rpm'.
+ Exits FAILED if none of the files exists.
+ """
+ missing = []
+ for x in files:
+ if is_List(x) or is_Tuple(x):
+ xpath = os.path.join(*x)
+ else:
+ xpath = is_Sequence(x) and os.path.join(x) or x
+ if glob.glob(xpath):
+ return
+ missing.append(xpath)
+ print "Missing one of: `%s'" % "', `".join(missing)
+ self.fail_test(missing)
+
def must_match(self, file, expect, mode = 'rb'):
"""Matches the contents of the specified file (first argument)
against the expected contents (second argument). The expected
@@ -498,6 +527,25 @@ class TestCommon(TestCmd):
print "Unexpected files exist: `%s'" % "', `".join(existing)
self.fail_test(existing)
+ def must_not_exist_any_of(self, files):
+ """Ensures that none of the specified file(s) exists.
+ The filenames can be given as a list, where each entry may be
+ a single path string, or a tuple of folder names and the final
+ filename that get concatenated.
+ Supports wildcard names like 'foo-1.2.3-*.rpm'.
+ Exits FAILED if any of the files exists.
+ """
+ existing = []
+ for x in files:
+ if is_List(x) or is_Tuple(x):
+ xpath = os.path.join(*x)
+ else:
+ xpath = is_Sequence(x) and os.path.join(x) or x
+ if glob.glob(xpath):
+ existing.append(xpath)
+ if existing:
+ print "Unexpected files exist: `%s'" % "', `".join(existing)
+ self.fail_test(existing)
def must_not_be_writable(self, *files):
"""Ensures that the specified file(s) exist and are not writable.
diff --git a/QMTest/TestCommonTests.py b/QMTest/TestCommonTests.py
index a19fc83e..30b7d6a3 100644
--- a/QMTest/TestCommonTests.py
+++ b/QMTest/TestCommonTests.py
@@ -991,7 +991,111 @@ class must_exist_TestCase(TestCommonTestCase):
stderr = run_env.stderr()
assert stderr == "PASSED\n", stderr
+class must_exist_one_of_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_exist_one_of(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_exist_one_of(['file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_exist_one_of(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_exist_one_of(['file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Missing one of: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_files_specified_as_list(self):
+ """Test must_exist_one_of(): files specified as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_exist_one_of(['file2', 'file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_files_specified_with_wildcards(self):
+ """Test must_exist_one_of(): files specified with wildcards"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file7', "file7\\n")
+ tc.must_exist_one_of(['file?'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_given_as_list(self):
+ """Test must_exist_one_of(): file given as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_exist_one_of(['file2',
+ ['sub', 'file1']])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+ def test_file_given_as_sequence(self):
+ """Test must_exist_one_of(): file given as sequence"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_exist_one_of(['file2',
+ ('sub', 'file1')])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
class must_match_TestCase(TestCommonTestCase):
def test_success(self):
@@ -1532,6 +1636,110 @@ class must_not_exist_TestCase(TestCommonTestCase):
stderr = run_env.stderr()
assert stderr.find("FAILED") != -1, stderr
+class must_not_exist_any_of_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_not_exist_any_of(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_not_exist_any_of(['file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_not_exist_any_of(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_not_exist_any_of(['file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Unexpected files exist: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_files_specified_as_list(self):
+ """Test must_not_exist_any_of(): files specified as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_not_exist_any_of(['file2', 'file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_files_specified_with_wildcards(self):
+ """Test must_not_exist_any_of(): files specified with wildcards"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file7', "file7\\n")
+ tc.must_not_exist_any_of(['files?'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_given_as_list(self):
+ """Test must_not_exist_any_of(): file given as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_not_exist_any_of(['file2',
+ ['sub', 'files*']])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_given_as_sequence(self):
+ """Test must_not_exist_any_of(): file given as sequence"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_not_exist_any_of(['file2',
+ ('sub', 'files?')])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
class run_TestCase(TestCommonTestCase):
def test_argument_handling(self):
@@ -2102,12 +2310,14 @@ if __name__ == "__main__":
must_contain_exactly_lines_TestCase,
must_contain_lines_TestCase,
must_exist_TestCase,
+ must_exist_one_of_TestCase,
must_match_TestCase,
must_not_be_writable_TestCase,
must_not_contain_TestCase,
must_not_contain_any_line_TestCase,
must_not_contain_lines_TestCase,
must_not_exist_TestCase,
+ must_not_exist_any_of_TestCase,
run_TestCase,
start_TestCase,
skip_test_TestCase,
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py
index 360a799b..de4a39b9 100644
--- a/QMTest/TestSCons.py
+++ b/QMTest/TestSCons.py
@@ -698,13 +698,13 @@ class TestSCons(TestCommon):
import sys
if not version:
version=''
- frame = '/System/Library/Frameworks/JavaVM.framework/Headers/jni.h'
+ jni_dirs = ['/System/Library/Frameworks/JavaVM.framework/Headers/jni.h',
+ '/usr/lib/jvm/default-java/include/jni.h']
else:
- frame = '/System/Library/Frameworks/JavaVM.framework/Versions/%s*/Headers/jni.h'%version
- jni_dirs = ['/usr/lib/jvm/java-*-sun-%s*/include/jni.h'%version,
- '/usr/java/jdk%s*/include/jni.h'%version,
- frame,
- ]
+ jni_dirs = ['/System/Library/Frameworks/JavaVM.framework/Versions/%s*/Headers/jni.h'%version]
+ jni_dirs.extend(['/usr/lib/jvm/java-*-sun-%s*/include/jni.h'%version,
+ '/usr/lib/jvm/java-%s*-openjdk/include/jni.h'%version,
+ '/usr/java/jdk%s*/include/jni.h'%version])
dirs = self.paths(jni_dirs)
if not dirs:
return None
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index 01a2aa2c..7f9242f3 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -23,6 +23,10 @@ RELEASE 2.X.X -
From Gary Oberbrunner:
- Fix MSVS solution generation for VS11, and fixed tests.
+ From Rob Managan:
+ - Updated the TeX builder to support the \newglossary command
+ in LaTeX's glossaries package and the files it creates.
+
RELEASE 2.2.0 - Mon, 05 Aug 2012 15:37:48 +0000
From dubcanada on Bitbucket:
diff --git a/src/engine/SCons/SubstTests.py b/src/engine/SCons/SubstTests.py
index 45685289..420fd739 100644
--- a/src/engine/SCons/SubstTests.py
+++ b/src/engine/SCons/SubstTests.py
@@ -554,6 +554,8 @@ class scons_subst_TestCase(SubstTestCase):
"TypeError `'NoneType' object is unsubscriptable' trying to evaluate `${NONE[2]}'",
# Python 2.7 and later
"TypeError `'NoneType' object is not subscriptable' trying to evaluate `${NONE[2]}'",
+ # Python 2.7 and later under Fedora
+ "TypeError `'NoneType' object has no attribute '__getitem__'' trying to evaluate `${NONE[2]}'",
]
assert str(e) in expect, e
else:
diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py
index c64d2546..156ef975 100644
--- a/src/engine/SCons/Tool/JavaCommon.py
+++ b/src/engine/SCons/Tool/JavaCommon.py
@@ -64,7 +64,7 @@ if java_parsing:
interfaces, and anonymous inner classes."""
def __init__(self, version=default_java_version):
- if not version in ('1.1', '1.2', '1.3','1.4', '1.5', '1.6',
+ if not version in ('1.1', '1.2', '1.3','1.4', '1.5', '1.6', '1.7',
'5', '6'):
msg = "Java version %s not supported" % version
raise NotImplementedError(msg)
@@ -171,7 +171,7 @@ if java_parsing:
if self.version in ('1.1', '1.2', '1.3', '1.4'):
clazz = self.listClasses[0]
self.listOutputs.append('%s$%d' % (clazz, self.nextAnon))
- elif self.version in ('1.5', '1.6', '5', '6'):
+ elif self.version in ('1.5', '1.6', '1.7', '5', '6'):
self.stackAnonClassBrackets.append(self.brackets)
className = []
className.extend(self.listClasses)
diff --git a/src/engine/SCons/Tool/gettext.py b/src/engine/SCons/Tool/gettext.py
index dd336b69..6031e49f 100644
--- a/src/engine/SCons/Tool/gettext.py
+++ b/src/engine/SCons/Tool/gettext.py
@@ -40,6 +40,9 @@ def exists(env):
from SCons.Tool.GettextCommon \
import _xgettext_exists, _msginit_exists, \
_msgmerge_exists, _msgfmt_exists
- return _xgettext_exists(env) and _msginit_exists(env) \
- and _msgmerge_exists(env) and _msgfmt_exists(env)
+ try:
+ return _xgettext_exists(env) and _msginit_exists(env) \
+ and _msgmerge_exists(env) and _msgfmt_exists(env)
+ except:
+ return False
#############################################################################
diff --git a/src/engine/SCons/Tool/javacTests.py b/src/engine/SCons/Tool/javacTests.py
index fc7f2716..4631c8a1 100644
--- a/src/engine/SCons/Tool/javacTests.py
+++ b/src/engine/SCons/Tool/javacTests.py
@@ -73,18 +73,18 @@ class pathoptTestCase(unittest.TestCase):
DummyNode('/foo'))
def test_list_node(self):
- self.assert_pathopt(['-foopath', '/foo:/bar'],
+ self.assert_pathopt(['-foopath', os.pathsep.join(['/foo','/bar'])],
['/foo', DummyNode('/bar')])
def test_default_str(self):
self.assert_pathopt_default(
- ['-foopath', '/foo:/bar:/baz'],
+ ['-foopath', os.pathsep.join(['/foo','/bar','/baz'])],
['/foo', '/bar'],
'/baz')
def test_default_list(self):
self.assert_pathopt_default(
- ['-foopath', '/foo:/bar:/baz'],
+ ['-foopath', os.pathsep.join(['/foo','/bar','/baz'])],
['/foo', '/bar'],
['/baz'])
diff --git a/src/engine/SCons/Tool/msvsTests.py b/src/engine/SCons/Tool/msvsTests.py
index 495fc243..232963cb 100644
--- a/src/engine/SCons/Tool/msvsTests.py
+++ b/src/engine/SCons/Tool/msvsTests.py
@@ -551,11 +551,12 @@ class msvsTestCase(unittest.TestCase):
debug("Testing for default version %s"%self.default_version)
env = DummyEnv()
v1 = get_default_version(env)
- assert env['MSVS_VERSION'] == self.default_version, \
- ("env['MSVS_VERSION'] != self.default_version",self.default_version, env['MSVS_VERSION'])
- assert env['MSVS']['VERSION'] == self.default_version, \
- ("env['MSVS']['VERSION'] != self.default_version",self.default_version, env['MSVS']['VERSION'])
- assert v1 == self.default_version, (self.default_version, v1)
+ if v1:
+ assert env['MSVS_VERSION'] == self.default_version, \
+ ("env['MSVS_VERSION'] != self.default_version",self.default_version, env['MSVS_VERSION'])
+ assert env['MSVS']['VERSION'] == self.default_version, \
+ ("env['MSVS']['VERSION'] != self.default_version",self.default_version, env['MSVS']['VERSION'])
+ assert v1 == self.default_version, (self.default_version, v1)
env = DummyEnv({'MSVS_VERSION':'7.0'})
v2 = get_default_version(env)
diff --git a/src/engine/SCons/Tool/tex.py b/src/engine/SCons/Tool/tex.py
index ce0a51f3..06957552 100644
--- a/src/engine/SCons/Tool/tex.py
+++ b/src/engine/SCons/Tool/tex.py
@@ -100,6 +100,10 @@ makeglossary_re = re.compile(r"^[^%\n]*\\makeglossary", re.MULTILINE)
makeglossaries_re = re.compile(r"^[^%\n]*\\makeglossaries", re.MULTILINE)
makeacronyms_re = re.compile(r"^[^%\n]*\\makeglossaries", re.MULTILINE)
beamer_re = re.compile(r"^[^%\n]*\\documentclass\{beamer\}", re.MULTILINE)
+regex = r'^[^%\n]*\\newglossary\s*\[([^\]]+)\]?\s*\{([^}]*)\}\s*\{([^}]*)\}\s*\{([^}]*)\}\s*\{([^}]*)\}'
+newglossary_re = re.compile(regex, re.MULTILINE)
+
+newglossary_suffix = []
# search to find all files included by Latex
include_re = re.compile(r'^[^%\n]*\\(?:include|input){([^}]*)}', re.MULTILINE)
@@ -137,6 +141,9 @@ MakeGlossaryAction = None
# An action to run MakeIndex (for acronyms) on a file.
MakeAcronymsAction = None
+# An action to run MakeIndex (for newglossary commands) on a file.
+MakeNewGlossaryAction = None
+
# Used as a return value of modify_env_var if the variable is not set.
_null = SCons.Scanner.LaTeX._null
@@ -232,7 +239,8 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
saved_hashes = {}
suffix_nodes = {}
- for suffix in all_suffixes:
+
+ for suffix in all_suffixes+sum(newglossary_suffix, []):
theNode = env.fs.File(targetbase + suffix)
suffix_nodes[suffix] = theNode
saved_hashes[suffix] = theNode.get_csig()
@@ -410,6 +418,21 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
'alg')
return result
+ # Now decide if latex will need to be run again due to newglossary command.
+ for ig in range(len(newglossary_suffix)):
+ if check_MD5(suffix_nodes[newglossary_suffix[ig][2]],newglossary_suffix[ig][2]) or (count == 1):
+ # We must run makeindex
+ if Verbose:
+ print "Need to run makeindex for newglossary"
+ newglfile = suffix_nodes[newglossary_suffix[ig][2]]
+ MakeNewGlossaryAction = SCons.Action.Action("$MAKENEWGLOSSARY ${SOURCE.filebase}%s -s ${SOURCE.filebase}.ist -t ${SOURCE.filebase}%s -o ${SOURCE.filebase}%s" % (newglossary_suffix[ig][2],newglossary_suffix[ig][0],newglossary_suffix[ig][1]), "$MAKENEWGLOSSARYCOMSTR")
+
+ result = MakeNewGlossaryAction(newglfile, newglfile, env)
+ if result != 0:
+ check_file_error_message('%s (newglossary)' % env['MAKENEWGLOSSARY'],
+ newglossary_suffix[ig][0])
+ return result
+
# Now decide if latex needs to be run yet again to resolve warnings.
if warning_rerun_re.search(logContent):
must_rerun_latex = True
@@ -595,9 +618,23 @@ def ScanFiles(theFile, target, paths, file_tests, file_tests_search, env, graphi
for i in range(len(file_tests_search)):
if file_tests[i][0] is None:
+ if Verbose:
+ print "scan i ",i," files_tests[i] ",file_tests[i], file_tests[i][1]
file_tests[i][0] = file_tests_search[i].search(content)
if Verbose and file_tests[i][0]:
- print " found match for ",file_tests[i][-1][-1]
+ print " found match for ",file_tests[i][1][-1]
+ # for newglossary insert the suffixes in file_tests[i]
+ if file_tests[i][0] and file_tests[i][1][-1] == 'newglossary':
+ findresult = file_tests_search[i].findall(content)
+ for l in range(len(findresult)) :
+ (file_tests[i][1]).insert(0,'.'+findresult[l][3])
+ (file_tests[i][1]).insert(0,'.'+findresult[l][2])
+ (file_tests[i][1]).insert(0,'.'+findresult[l][0])
+ suffix_list = ['.'+findresult[l][0],'.'+findresult[l][2],'.'+findresult[l][3] ]
+ newglossary_suffix.append(suffix_list)
+ if Verbose:
+ print " new suffixes for newglossary ",newglossary_suffix
+
incResult = includeOnly_re.search(content)
if incResult:
@@ -676,7 +713,8 @@ def tex_emitter_core(target, source, env, graphics_extensions):
makeglossary_re,
makeglossaries_re,
makeacronyms_re,
- beamer_re ]
+ beamer_re,
+ newglossary_re ]
# set up list with the file suffixes that need emitting
# when a feature is found
file_tests_suff = [['.aux','aux_file'],
@@ -693,7 +731,9 @@ def tex_emitter_core(target, source, env, graphics_extensions):
['.glo', '.gls', '.glg','glossary'],
['.glo', '.gls', '.glg','glossaries'],
['.acn', '.acr', '.alg','acronyms'],
- ['.nav', '.snm', '.out', '.toc','beamer'] ]
+ ['.nav', '.snm', '.out', '.toc','beamer'],
+ ['newglossary',] ]
+ # for newglossary the suffixes are added as we find the command
# build the list of lists
file_tests = []
for i in range(len(file_tests_search)):
@@ -722,6 +762,7 @@ def tex_emitter_core(target, source, env, graphics_extensions):
if Verbose:
print "search path ",paths
+ # scan all sources for side effect files
aux_files = []
file_tests = ScanFiles(source[0], target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir, aux_files)
@@ -917,6 +958,9 @@ def generate_common(env):
env['MAKENCLFLAGS'] = '-s ${MAKENCLSTYLE} -t ${SOURCE.filebase}.nlg'
env['MAKENCLCOM'] = CDCOM + '${TARGET.dir} && $MAKENCL ${SOURCE.filebase}.nlo $MAKENCLFLAGS -o ${SOURCE.filebase}.nls'
+ env['MAKENEWGLOSSARY'] = 'makeindex'
+ env['MAKENEWGLOSSARYCOM'] = CDCOM + '${TARGET.dir} && $MAKENEWGLOSSARY '
+
def exists(env):
generate_darwin(env)
return env.Detect('tex')
diff --git a/test/AS/AS.py b/test/AS/AS.py
index 38ea6552..e0ffbf4a 100644
--- a/test/AS/AS.py
+++ b/test/AS/AS.py
@@ -47,7 +47,11 @@ import sys
args = sys.argv[1:]
while args:
a = args[0]
- if a[0] != '/':
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
+ if not a[0] in '/-':
break
args = args[1:]
if a[:5].lower() == '/out:': out = a[5:]
@@ -65,15 +69,16 @@ args = sys.argv[1:]
inf = None
while args:
a = args[0]
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
args = args[1:]
if not a[0] in "/-":
if not inf:
inf = a
continue
if a[:3] == '/Fo': out = a[3:]
- if a == '-o':
- out = args[0]
- args = args[1:]
infile = open(inf, 'rb')
outfile = open(out, 'wb')
for l in infile.readlines():
diff --git a/test/AS/ASFLAGS.py b/test/AS/ASFLAGS.py
index 4f89c2ce..024cea31 100644
--- a/test/AS/ASFLAGS.py
+++ b/test/AS/ASFLAGS.py
@@ -45,7 +45,11 @@ import sys
args = sys.argv[1:]
while args:
a = args[0]
- if a[0] != '/':
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
+ if not a[0] in '/-':
break
args = args[1:]
if a[:5].lower() == '/out:': out = a[5:]
@@ -64,6 +68,10 @@ inf = None
optstring = ''
while args:
a = args[0]
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
args = args[1:]
if not a[0] in '/-':
if not inf:
diff --git a/test/AS/ASPP.py b/test/AS/ASPP.py
index db699f87..67f40715 100644
--- a/test/AS/ASPP.py
+++ b/test/AS/ASPP.py
@@ -42,7 +42,11 @@ import sys
args = sys.argv[1:]
while args:
a = args[0]
- if a[0] != '/':
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
+ if not a[0] in '/-':
break
args = args[1:]
if a[:5].lower() == '/out:': out = a[5:]
@@ -60,15 +64,16 @@ args = sys.argv[1:]
inf = None
while args:
a = args[0]
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
args = args[1:]
if not a[0] in "/-":
if not inf:
inf = a
continue
if a[:3] == '/Fo': out = a[3:]
- if a == '-o':
- out = args[0]
- args = args[1:]
infile = open(inf, 'rb')
outfile = open(out, 'wb')
for l in infile.readlines():
diff --git a/test/AS/ASPPFLAGS.py b/test/AS/ASPPFLAGS.py
index f27d0ad1..f8e70a93 100644
--- a/test/AS/ASPPFLAGS.py
+++ b/test/AS/ASPPFLAGS.py
@@ -45,7 +45,11 @@ import sys
args = sys.argv[1:]
while args:
a = args[0]
- if a[0] != '/':
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
+ if not a[0] in '/-':
break
args = args[1:]
if a[:5].lower() == '/out:': out = a[5:]
@@ -64,6 +68,10 @@ inf = None
optstring = ''
while args:
a = args[0]
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
args = args[1:]
if not a[0] in '/-':
if not inf:
diff --git a/test/CC/CC.py b/test/CC/CC.py
index 2c66040a..dd93674e 100644
--- a/test/CC/CC.py
+++ b/test/CC/CC.py
@@ -42,7 +42,11 @@ import sys
args = sys.argv[1:]
while args:
a = args[0]
- if a[0] != '/':
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
+ if not a[0] in '/-':
break
args = args[1:]
if a[:5].lower() == '/out:': out = a[5:]
@@ -60,6 +64,10 @@ args = sys.argv[1:]
inf = None
while args:
a = args[0]
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
args = args[1:]
if a[0] != '/':
if not inf:
diff --git a/test/CXX/CXX.py b/test/CXX/CXX.py
index 1e338a65..cd354ae7 100644
--- a/test/CXX/CXX.py
+++ b/test/CXX/CXX.py
@@ -42,7 +42,11 @@ import sys
args = sys.argv[1:]
while args:
a = args[0]
- if a[0] != '/':
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
+ if not a[0] in '/-':
break
args = args[1:]
if a[:5].lower() == '/out:': out = a[5:]
@@ -60,8 +64,12 @@ args = sys.argv[1:]
inf = None
while args:
a = args[0]
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
args = args[1:]
- if a[0] != '/':
+ if not a[0] in '/-':
if not inf:
inf = a
continue
diff --git a/test/Errors/execute-a-directory.py b/test/Errors/execute-a-directory.py
index 55d6844c..1b679c6e 100644
--- a/test/Errors/execute-a-directory.py
+++ b/test/Errors/execute-a-directory.py
@@ -84,6 +84,11 @@ is_a_directory = """\
scons: *** [%s] Error %s
"""
+Is_a_directory = """\
+%s: Is a directory
+scons: *** [%s] Error %s
+"""
+
test.description_set("Incorrect STDERR:\n%s\n" % test.stderr())
if os.name == 'nt':
errs = [
@@ -101,7 +106,7 @@ else:
errs = [
cannot_execute % (not_executable, 'f3', 126),
is_a_directory % (test.workdir, 'f3', 126),
- Permission_denied % (test.workdir, 'f3', 126),
+ Is_a_directory % (test.workdir, 'f3', 126),
Permission_denied % (test.workdir, 'f3', 126),
]
test.must_contain_any_line(test.stderr(), errs)
diff --git a/test/FindSourceFiles.py b/test/FindSourceFiles.py
index b08cbbd5..3ba542bd 100644
--- a/test/FindSourceFiles.py
+++ b/test/FindSourceFiles.py
@@ -32,11 +32,17 @@ import TestSCons
test = TestSCons.TestSCons()
+package_format = "src_tarbz2"
+if not test.where_is('tar'):
+ if not test.where_is('zip'):
+ test.skip_test("neither 'tar' nor 'zip' found; skipping test\n")
+ package_format = "src_zip"
+
# Quite complex, but real-life test.
# 0. Setup VariantDir, "var", without duplication. The "src" is source dir.
# 1. Generate souce file var/foo.c from src/foo.c.in. Define program foo.
# 2. Gather all sources necessary to create '.' node and create source
-# tarball. We expect 'src/foo.c.in' file within tarbal, and no content
+# tarball. We expect 'src/foo.c.in' file within tarball, and no content
# under 'var' directory.
test.subdir('src')
@@ -45,10 +51,10 @@ VariantDir(src_dir = 'src', variant_dir = 'var', duplicate = 0)
env = Environment(tools = ['default','textfile','packaging'])
SConscript(['var/SConscript'], exports = 'env')
sources = env.FindSourceFiles('.')
-pkg = env.Package( NAME = 'foo', VERSION = '1.0', PACKAGETYPE = 'src_tarbz2',
+pkg = env.Package( NAME = 'foo', VERSION = '1.0', PACKAGETYPE = '%s',
source = sources )
Ignore( '.', pkg )
-""")
+""" % package_format)
test.write('src/SConscript', """
Import('env')
diff --git a/test/Fortran/common.py b/test/Fortran/common.py
index b48c83b6..6763ef4b 100644
--- a/test/Fortran/common.py
+++ b/test/Fortran/common.py
@@ -38,7 +38,11 @@ import sys
args = sys.argv[1:]
while args:
a = args[0]
- if a[0] != '/':
+ if a == '-o':
+ out = args[1]
+ args = args[2:]
+ continue
+ if not a[0] in '/-':
break
args = args[1:]
if a[:5].lower() == '/out:': out = a[5:]
diff --git a/test/TEX/biblatex.py b/test/TEX/biblatex.py
index 35c3997d..d0663f70 100755
--- a/test/TEX/biblatex.py
+++ b/test/TEX/biblatex.py
@@ -25,7 +25,7 @@
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
"""
-Test creation of a Tex document that uses the multibib oackage
+Test creation of a Tex document that uses the multibib package
Test courtesy Rob Managan.
"""
@@ -88,7 +88,6 @@ files = [
'biblatextest.aux',
'biblatextest.bbl',
'biblatextest.blg',
- 'biblatextest-blx.bib',
'biblatextest.fls',
'biblatextest.log',
'biblatextest.pdf',
diff --git a/test/TEX/newglossary.py b/test/TEX/newglossary.py
new file mode 100644
index 00000000..12c68a73
--- /dev/null
+++ b/test/TEX/newglossary.py
@@ -0,0 +1,158 @@
+#!/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__"
+
+"""
+Validate that use of \newglossary in TeX source files causes SCons to
+be aware of the necessary created glossary files.
+
+Test configuration contributed by Robert Managan.
+"""
+
+import os
+import TestSCons
+
+test = TestSCons.TestSCons()
+
+latex = test.where_is('latex')
+
+if not latex:
+ test.skip_test("Could not find latex; skipping test(s).\n")
+
+gloss = os.system('kpsewhich glossaries.sty')
+if not gloss==0:
+ test.skip_test("glossaries.sty not installed; skipping test(s).\n")
+
+test.write('SConstruct', """\
+import os
+env = Environment()
+env.PDF('newglossary', 'newglossary.tex')
+""")
+
+test.write('newglossary.tex', r"""
+\documentclass{report}
+
+% for glossary
+\newlength{\symcol}
+\newlength{\symw}
+\newcommand{\symtab}[1]{\setlength{\symcol}{1.3cm}\settowidth{\symw}{\ensuremath{#1}}\advance\symcol by -\symw\hspace{\symcol}}
+\newcommand{\newsym}[5]{\newglossaryentry{#1}{name=\ensuremath{#2},description={\symtab{#2}{#4}},parent={#5},sort={#3}}}
+\newcommand{\newacronymf}[3]{\newglossaryentry{#1}{name={#2},description={#3},first={#2}}}
+
+\usepackage[acronym]{glossaries}
+\newglossary[symlog]{symbol}{symi}{symo}{Symbols}
+\newglossaryentry{nix}{
+ name={Nix},
+ description={Version 5}
+}
+\newglossary[deflog]{definition}{defi}{defo}{Definitions}
+\newglossaryentry{defPower}{name=Ddyn,type={definition},description={def of 1 dynamic power consumption},sort={DP}}
+
+\newacronym{gnu}{GNU}{GNU's Not UNIX}
+\makeglossaries
+\glstoctrue
+%\loadglsentries[\acronymtype]{chapters/acronyms}
+\loadglsentries[symbol]{symbols}
+%\loadglsentries[definition]{defns}
+
+
+\begin{document}
+
+Here is a symbol: \gls{dynPower} and a glossary entry \gls{mel}
+
+Acronyms \gls{gnu} and glossary entries \gls{nix}.
+
+a definition \gls{defPower}
+
+\glossarystyle{index}
+\printglossary[type=symbol]
+\printglossary[type=acronym]
+\printglossary[type=main]
+\printglossary[type=definition]
+\glossarystyle{super}
+
+\end{document}""")
+
+
+test.write('symbols.tex', r"""
+\newglossaryentry{mel}{name={Microelectronic Fundamentals},description={\nopostdesc},sort=d}
+\newsym{dynPower}{P_{dyn}}{P}{Dynamic power consumption}{mel}
+
+%\newcommand{\newsym}[5]{\newglossaryentry{#1}{name=\ensuremath{#2},description={\symtab{#2}{#4}},parent={#5},sort={#3}}}
+""")
+
+test.run(arguments = '.', stderr=None)
+
+test.must_exist(test.workpath('newglossary.acn'))
+test.must_exist(test.workpath('newglossary.acr'))
+test.must_exist(test.workpath('newglossary.alg'))
+test.must_exist(test.workpath('newglossary.aux'))
+test.must_exist(test.workpath('newglossary.defi'))
+test.must_exist(test.workpath('newglossary.deflog'))
+test.must_exist(test.workpath('newglossary.defo'))
+test.must_exist(test.workpath('newglossary.fls'))
+test.must_exist(test.workpath('newglossary.glg'))
+test.must_exist(test.workpath('newglossary.glo'))
+test.must_exist(test.workpath('newglossary.gls'))
+test.must_exist(test.workpath('newglossary.ist'))
+test.must_exist(test.workpath('newglossary.log'))
+test.must_exist(test.workpath('newglossary.pdf'))
+test.must_exist(test.workpath('newglossary.symi'))
+test.must_exist(test.workpath('newglossary.symlog'))
+test.must_exist(test.workpath('newglossary.symo'))
+
+test.run(arguments = '-c .')
+
+x = "Could not remove 'newglossary.aux': No such file or directory"
+test.must_not_contain_any_line(test.stdout(), [x])
+
+test.must_not_exist(test.workpath('newglossary.acn'))
+test.must_not_exist(test.workpath('newglossary.acr'))
+test.must_not_exist(test.workpath('newglossary.alg'))
+test.must_not_exist(test.workpath('newglossary.defi'))
+test.must_not_exist(test.workpath('newglossary.deflog'))
+test.must_not_exist(test.workpath('newglossary.defo'))
+test.must_not_exist(test.workpath('newglossary.aux'))
+test.must_not_exist(test.workpath('newglossary.fls'))
+test.must_not_exist(test.workpath('newglossary.glg'))
+test.must_not_exist(test.workpath('newglossary.glo'))
+test.must_not_exist(test.workpath('newglossary.gls'))
+test.must_not_exist(test.workpath('newglossary.ist'))
+test.must_not_exist(test.workpath('newglossary.log'))
+test.must_not_exist(test.workpath('newglossary.pdf'))
+test.must_not_exist(test.workpath('newglossary.symi'))
+test.must_not_exist(test.workpath('newglossary.symlog'))
+test.must_not_exist(test.workpath('newglossary.symo'))
+
+test.pass_test()
+
+
+
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/test/packaging/option--package-type.py b/test/packaging/option--package-type.py
index c1d6720d..2a898ff0 100644
--- a/test/packaging/option--package-type.py
+++ b/test/packaging/option--package-type.py
@@ -30,7 +30,6 @@ Test the --package-type option.
import TestSCons
-machine = TestSCons.machine
_python_ = TestSCons._python_
test = TestSCons.TestSCons()
@@ -68,12 +67,12 @@ env.Package( NAME = 'foo',
""" % locals())
src_rpm = 'foo-1.2.3-0.src.rpm'
-machine_rpm = 'foo-1.2.3-0.%s.rpm' % machine
+machine_rpm = 'foo-1.2.3-0.*.rpm'
test.run(arguments='package PACKAGETYPE=rpm', stderr = None)
test.must_exist( src_rpm )
-test.must_exist( machine_rpm )
+test.must_exist_one_of( [machine_rpm] )
test.must_not_exist( 'bin/main.c' )
test.must_not_exist( '/bin/main.c' )
@@ -81,7 +80,7 @@ test.run(arguments='-c package PACKAGETYPE=rpm', stderr = None)
test.run(arguments='package --package-type=rpm', stderr = None)
test.must_exist( src_rpm )
-test.must_exist( machine_rpm )
+test.must_exist_one_of( [machine_rpm] )
test.must_not_exist( 'bin/main.c' )
test.must_not_exist( '/bin/main.c' )
diff --git a/test/packaging/rpm/cleanup.py b/test/packaging/rpm/cleanup.py
index 7ae5473b..91feba16 100644
--- a/test/packaging/rpm/cleanup.py
+++ b/test/packaging/rpm/cleanup.py
@@ -30,9 +30,7 @@ Assert that files created by the RPM packager will be removed by 'scons -c'.
import TestSCons
-machine = TestSCons.machine
_python_ = TestSCons._python_
-
test = TestSCons.TestSCons()
scons = test.program
@@ -90,9 +88,9 @@ test.up_to_date( arguments='.' )
test.run( arguments='-c .' )
src_rpm = 'foo-1.2.3-0.src.rpm'
-machine_rpm = 'foo-1.2.3-0.%s.rpm' % machine
+machine_rpm = 'foo-1.2.3-0.*.rpm'
-test.must_not_exist( machine_rpm )
+test.must_not_exist_any_of( [machine_rpm] )
test.must_not_exist( src_rpm )
test.must_not_exist( 'foo-1.2.3.tar.gz' )
test.must_not_exist( 'foo-1.2.3.spec' )
diff --git a/test/packaging/rpm/internationalization.py b/test/packaging/rpm/internationalization.py
index e9fcc128..4b75de4c 100644
--- a/test/packaging/rpm/internationalization.py
+++ b/test/packaging/rpm/internationalization.py
@@ -32,10 +32,10 @@ These are x-rpm-Group, description, summary and the lang_xx file tag.
"""
import os
+import glob
import TestSCons
-machine = TestSCons.machine
_python_ = TestSCons._python_
test = TestSCons.TestSCons()
@@ -95,29 +95,30 @@ env.Alias ( 'install', prog )
test.run(arguments='', stderr = None)
src_rpm = 'foo-1.2.3-0.src.rpm'
-machine_rpm = 'foo-1.2.3-0.%s.rpm' % machine
+machine_rpm = 'foo-1.2.3-0.*.rpm'
test.must_exist( src_rpm )
-test.must_exist( machine_rpm )
+test.must_exist_one_of( [machine_rpm] )
test.must_not_exist( 'bin/main' )
+machine_rpm_path = glob.glob(machine_rpm)[0].lstrip('./')
cmd = 'rpm -qp --queryformat \'%%{GROUP}-%%{SUMMARY}-%%{DESCRIPTION}\' %s'
os.environ['LANGUAGE'] = 'de'
-out = os.popen( cmd % test.workpath(machine_rpm) ).read()
+out = os.popen( cmd % test.workpath(machine_rpm_path) ).read()
test.fail_test( out != 'Applikation/büro-hallo-das sollte wirklich lang sein' )
os.environ['LANGUAGE'] = 'fr'
-out = os.popen( cmd % test.workpath(machine_rpm) ).read()
+out = os.popen( cmd % test.workpath(machine_rpm_path) ).read()
test.fail_test( out != 'Application/bureau-bonjour-ceci devrait être vraiment long' )
os.environ['LANGUAGE'] = 'en'
-out = os.popen( cmd % test.workpath(machine_rpm) ).read()
+out = os.popen( cmd % test.workpath(machine_rpm_path) ).read()
test.fail_test( out != 'Application/office-hello-this should be really long' )
os.environ['LC_ALL'] = 'ae'
-out = os.popen( cmd % test.workpath(machine_rpm) ).read()
+out = os.popen( cmd % test.workpath(machine_rpm_path) ).read()
test.fail_test( out != 'Application/office-hello-this should be really long' )
#
@@ -176,7 +177,7 @@ env.Alias ( 'install', [ prog, man_pages ] )
test.run(arguments='--install-sandbox=blubb install', stderr = None)
test.must_exist( src_rpm )
-test.must_exist( machine_rpm )
+test.must_exist_one_of( [machine_rpm] )
test.pass_test()
diff --git a/test/packaging/rpm/multipackage.py b/test/packaging/rpm/multipackage.py
index c3f1f4e2..4807a207 100644
--- a/test/packaging/rpm/multipackage.py
+++ b/test/packaging/rpm/multipackage.py
@@ -30,9 +30,9 @@ from one SCons environment.
"""
import os
+import glob
import TestSCons
-machine = TestSCons.machine
_python_ = TestSCons._python_
test = TestSCons.TestSCons()
@@ -98,18 +98,18 @@ env.Alias( 'install', prog )
test.run(arguments='', stderr = None)
src_rpm = 'foo-1.2.3-0.src.rpm'
-machine_rpm = 'foo-1.2.3-0.%s.rpm' % machine
+machine_rpm = 'foo-1.2.3-0.*.rpm'
src_rpm2 = 'foo2-1.2.3-0.src.rpm'
-machine_rpm2 = 'foo2-1.2.3-0.%s.rpm' % machine
+machine_rpm2 = 'foo2-1.2.3-0.*.rpm'
-test.must_exist( machine_rpm )
+test.must_exist_one_of( [machine_rpm] )
test.must_exist( src_rpm )
-test.must_exist( machine_rpm2 )
+test.must_exist_one_of( [machine_rpm2] )
test.must_exist( src_rpm2 )
test.must_not_exist( 'bin/main' )
-test.fail_test( not os.popen('rpm -qpl %s' % machine_rpm).read()=='/bin/main\n')
+test.fail_test( not os.popen('rpm -qpl %s' % glob.glob(machine_rpm)[0].lstrip('./')).read()=='/bin/main\n')
test.fail_test( not os.popen('rpm -qpl %s' % src_rpm).read()=='foo-1.2.3.spec\nfoo-1.2.3.tar.gz\n')
test.pass_test()
diff --git a/test/packaging/rpm/package.py b/test/packaging/rpm/package.py
index 14da4bb2..b1abaab5 100644
--- a/test/packaging/rpm/package.py
+++ b/test/packaging/rpm/package.py
@@ -29,9 +29,9 @@ Test the ability to create a really simple rpm package.
"""
import os
+import glob
import TestSCons
-machine = TestSCons.machine
_python_ = TestSCons._python_
test = TestSCons.TestSCons()
@@ -83,12 +83,12 @@ env.Alias( 'install', prog )
test.run(arguments='', stderr = None)
src_rpm = 'foo-1.2.3-0.src.rpm'
-machine_rpm = 'foo-1.2.3-0.%s.rpm' % machine
+machine_rpm = 'foo-1.2.3-0.*.rpm'
-test.must_exist( machine_rpm )
+test.must_exist_one_of( [machine_rpm] )
test.must_exist( src_rpm )
test.must_not_exist( 'bin/main' )
-test.fail_test( not os.popen('rpm -qpl %s' % machine_rpm).read()=='/bin/main\n')
+test.fail_test( not os.popen('rpm -qpl %s' % glob.glob(machine_rpm)[0].lstrip('./')).read()=='/bin/main\n')
test.fail_test( not os.popen('rpm -qpl %s' % src_rpm).read()=='foo-1.2.3.spec\nfoo-1.2.3.tar.gz\n')
test.pass_test()
diff --git a/test/packaging/rpm/tagging.py b/test/packaging/rpm/tagging.py
index 6a242c6e..4d6c76e2 100644
--- a/test/packaging/rpm/tagging.py
+++ b/test/packaging/rpm/tagging.py
@@ -29,10 +29,10 @@ Test the ability to add file tags
"""
import os
+import glob
import TestSCons
-machine = TestSCons.machine
_python_ = TestSCons._python_
test = TestSCons.TestSCons()
@@ -88,11 +88,11 @@ env.Package( NAME = 'foo',
test.run(arguments='', stderr = None)
src_rpm = 'foo-1.2.3-0.src.rpm'
-machine_rpm = 'foo-1.2.3-0.%s.rpm' % machine
+machine_rpm = 'foo-1.2.3-0.*.rpm'
-test.must_exist( machine_rpm )
+test.must_exist_one_of( [machine_rpm] )
test.must_exist( src_rpm )
-test.fail_test( not os.popen('rpm -qpl %s' % machine_rpm).read()=='/bin/main\n')
+test.fail_test( not os.popen('rpm -qpl %s' % glob.glob(machine_rpm)[0].lstrip('./')).read()=='/bin/main\n')
test.fail_test( not os.popen('rpm -qpl %s' % src_rpm).read()=='foo-1.2.3.spec\nfoo-1.2.3.tar.gz\n')
expect = '(0755, root, users) /bin/main'
diff --git a/test/runtest/aegis/batch-output.py b/test/runtest/aegis/batch-output.py
deleted file mode 100644
index e371defc..00000000
--- a/test/runtest/aegis/batch-output.py
+++ /dev/null
@@ -1,78 +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__"
-
-"""
-Test writing Aegis batch output to a file.
-"""
-
-import os
-
-import TestRuntest
-
-test_fail_py = os.path.join('test', 'fail.py')
-test_no_result_py = os.path.join('test', 'no_result.py')
-test_pass_py = os.path.join('test', 'pass.py')
-
-test = TestRuntest.TestRuntest()
-
-test.subdir('test')
-
-test.write_failing_test(['test', 'fail.py'])
-
-test.write_no_result_test(['test', 'no_result.py'])
-
-test.write_passing_test(['test', 'pass.py'])
-
-expect_stderr = """\
-FAILING TEST STDERR
-NO RESULT TEST STDERR
-PASSING TEST STDERR
-"""
-
-test.run(arguments = '-k -o aegis.out --aegis test', stderr=expect_stderr)
-
-expect = """\
-test_result = [
- { file_name = "%(test_fail_py)s";
- exit_status = 1; },
- { file_name = "%(test_no_result_py)s";
- exit_status = 2; },
- { file_name = "%(test_pass_py)s";
- exit_status = 0; },
-];
-""" % locals()
-
-# The mode is 'r' (not default 'rb') because QMTest opens the file
-# description on which we write as non-binary.
-test.must_match('aegis.out', expect, mode='r')
-
-test.pass_test()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/test/scons-time/func/glob.py b/test/scons-time/func/funcglob.py
index 62404044..62404044 100644
--- a/test/scons-time/func/glob.py
+++ b/test/scons-time/func/funcglob.py
diff --git a/test/scons-time/mem/glob.py b/test/scons-time/mem/memglob.py
index 820021e7..820021e7 100644
--- a/test/scons-time/mem/glob.py
+++ b/test/scons-time/mem/memglob.py
diff --git a/test/scons-time/obj/glob.py b/test/scons-time/obj/objglob.py
index 2105355a..2105355a 100644
--- a/test/scons-time/obj/glob.py
+++ b/test/scons-time/obj/objglob.py
diff --git a/test/scons-time/time/glob.py b/test/scons-time/time/timeglob.py
index 1a76d9fc..1a76d9fc 100644
--- a/test/scons-time/time/glob.py
+++ b/test/scons-time/time/timeglob.py