the source directory and trying to use entries from the build_dir
as sources for other targets in the build-dir.
+ - Fix hard-coding of JDK path names in various Java tests.
+
From Levi Stephen:
- Allow $JARCHDIR to be expanded to other construction variables.
test.run(arguments = '.', stderr = None)
-test.fail_test(test.read('test1.jar') != "test1.class\nline 3\n")
+test.must_match('test1.jar', "test1.class\nline 3\n")
if os.path.normcase('.class') == os.path.normcase('.CLASS'):
test.run(arguments = '.', stderr = None)
- test.fail_test(test.read('test2.jar') != "test2.CLASS\nline 3\n")
+ test.must_match('test2.jar', "test2.CLASS\nline 3\n")
test.write('myjar2.py', r"""
import sys
blah
""")
test.run(arguments='classes.jar')
-test.fail_test(test.read('classes.jar') != 'cvfm classes.jar foo.mf -C testdir bar.class\n')
-
-if not os.path.exists('/usr/local/j2sdk1.3.1/bin/javac'):
- print "Could not find Java, skipping test(s)."
- test.pass_test(1)
+test.must_match('classes.jar',
+ 'cvfm classes.jar foo.mf -C testdir bar.class\n')
+
+if test.detect_tool('javac'):
+ where_javac = test.detect('JAVAC', 'javac')
+else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ where_javac = env.WhereIs('javac', os.environ['PATH'])
+ if not where_javac:
+ where_javac = env.WhereIs('javac', '/usr/local/j2sdk1.3.1/bin')
+ if not where_javac:
+ print "Could not find Java javac, skipping test(s)."
+ test.pass_test(1)
+
+if test.detect_tool('jar'):
+ where_jar = test.detect('JAR', 'jar')
+else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ where_jar = env.WhereIs('jar', os.environ['PATH'])
+ if not where_jar:
+ where_jar = env.WhereIs('jar', '/usr/local/j2sdk1.3.1/bin')
+ if not where_jar:
+ print "Could not find Java jar, skipping test(s)."
+ test.pass_test(1)
test.write("wrapper.py", """\
test.write('SConstruct', """
foo = Environment(tools = ['javac', 'jar'],
- JAVAC = '/usr/local/j2sdk1.3.1/bin/javac',
- JAR = '/usr/local/j2sdk1.3.1/bin/jar')
+ JAVAC = '%(where_javac)s',
+ JAR = '%(where_jar)s')
jar = foo.Dictionary('JAR')
-bar = foo.Copy(JAR = r'%s wrapper.py ' + jar)
+bar = foo.Copy(JAR = r'%(python)s wrapper.py ' + jar)
foo.Java(target = 'classes', source = 'com/sub/foo')
bar.Java(target = 'classes', source = 'com/sub/bar')
foo.Jar(target = 'foo', source = 'classes/com/sub/foo')
bar.Jar(target = 'bar', source = 'classes/com/sub/bar')
-""" % python)
+""" % locals())
test.subdir('com',
['com', 'sub'],
test.run(arguments = '.')
-test.fail_test(test.read('wrapper.out') != "wrapper.py /usr/local/j2sdk1.3.1/bin/jar cf bar.jar classes/com/sub/bar\n")
+test.must_match('wrapper.out',
+ "wrapper.py %(where_jar)s cf bar.jar classes/com/sub/bar\n" % locals())
-test.fail_test(not os.path.exists(test.workpath('foo.jar')))
-test.fail_test(not os.path.exists(test.workpath('bar.jar')))
+test.must_exist('foo.jar')
+test.must_exist('bar.jar')
test.up_to_date(arguments = '.')
test.subdir('src')
+if test.detect_tool('javac'):
+ where_javac = test.detect('JAVAC', 'javac')
+else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ where_javac = env.WhereIs('javac', os.environ['PATH'])
+ if not where_javac:
+ where_javac = env.WhereIs('javac', '/usr/local/j2sdk1.3.1/bin')
+ if not where_javac:
+ print "Could not find Java javac, skipping test(s)."
+ test.pass_test(1)
+
+if test.detect_tool('jar'):
+ where_jar = test.detect('JAR', 'jar')
+else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ where_jar = env.WhereIs('jar', os.environ['PATH'])
+ if not where_jar:
+ where_jar = env.WhereIs('jar', '/usr/local/j2sdk1.3.1/bin')
+ if not where_jar:
+ print "Could not find Java jar, skipping test(s)."
+ test.pass_test(1)
+
test.write('SConstruct', """
env = Environment(tools = ['javac', 'jar'],
- JAVAC = '/usr/local/j2sdk1.3.1/bin/javac',
- JAR = '/usr/local/j2sdk1.3.1/bin/jar',
+ JAVAC = '%(where_javac)s',
+ JAR = '%(where_jar)s',
JARFLAGS = 'cvf')
env['JARFLAGS'] = 'cvf'
class_files = env.Java(target = 'classes', source = 'src')
env.Jar(target = 'test.jar', source = class_files)
-""")
+""" % locals())
test.write(['src', 'Example1.java'], """\
package src;
}
""")
-if not os.path.exists('/usr/local/j2sdk1.3.1/bin/javac'):
- print "Could not find Java, skipping test(s)."
- test.pass_test(1)
-
test.run(arguments = '.',
+ match=TestSCons.match_re_dotall,
stdout = test.wrap_stdout("""\
-/usr/local/j2sdk1.3.1/bin/javac -d classes -sourcepath src src/Example1.java
-/usr/local/j2sdk1.3.1/bin/jar cvf test.jar classes/src/Example1.class
-added manifest
-adding: classes/src/Example1.class(in = 265) (out= 199)(deflated 24%)
-"""))
+%(where_javac)s -d classes -sourcepath src src/Example1\.java
+%(where_jar)s cvf test.jar classes/src/Example1\.class
+.*
+adding: classes/src/Example1\.class.*
+""" % locals()))
-test.fail_test(not os.path.exists(test.workpath('test.jar')))
+test.must_exist('test.jar')
test.pass_test()
test.run(arguments = '.', stderr = None)
-test.fail_test(test.read('test1.class') != "test1.java\nline 3\n")
+test.must_match('test1.class', "test1.java\nline 3\n")
if os.path.normcase('.java') == os.path.normcase('.JAVA'):
test.run(arguments = '.', stderr = None)
- test.fail_test(test.read('test2.class') != "test2.JAVA\nline 3\n")
+ test.must_match('test2.class', "test2.JAVA\nline 3\n")
-if not os.path.exists('/usr/local/j2sdk1.3.1/bin/javac'):
- print "Could not find Java, skipping test(s)."
- test.pass_test(1)
+if test.detect_tool('javac'):
+ where_javac = test.detect('JAVAC', 'javac')
+else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ where_javac = env.WhereIs('javac', os.environ['PATH'])
+ if not where_javac:
+ where_javac = env.WhereIs('javac', '/usr/local/j2sdk1.3.1/bin')
+ if not where_javac:
+ print "Could not find Java, skipping test(s)."
+ test.pass_test(1)
+
test.write("wrapper.py", """\
test.write('SConstruct', """
foo = Environment(tools = ['javac'],
- JAVAC = '/usr/local/j2sdk1.3.1/bin/javac')
+ JAVAC = '%s')
javac = foo.Dictionary('JAVAC')
bar = foo.Copy(JAVAC = r'%s wrapper.py ' + javac)
foo.Java(target = 'class1', source = 'com/sub/foo')
bar.Java(target = 'class2', source = 'com/sub/bar')
foo.Java(target = 'class3', source = ['src1', 'src2'])
-""" % python)
+""" % (where_javac, python))
test.subdir('com',
['com', 'sub'],
test.run(arguments = '.')
-test.must_match('wrapper.out', "wrapper.py /usr/local/j2sdk1.3.1/bin/javac -d class2 -sourcepath com/sub/bar com/sub/bar/Example4.java com/sub/bar/Example5.java com/sub/bar/Example6.java\n")
+test.must_match('wrapper.out', "wrapper.py %s -d class2 -sourcepath com/sub/bar com/sub/bar/Example4.java com/sub/bar/Example5.java com/sub/bar/Example6.java\n" % where_javac)
test.must_exist(test.workpath('class1', 'com', 'sub', 'foo', 'Example1.class'))
test.must_exist(test.workpath('class1', 'com', 'other', 'Example2.class'))
test = TestSCons.TestSCons()
-if not os.path.exists('/usr/local/j2sdk1.3.1/bin/javac'):
- print "Could not find Java, skipping test(s)."
- test.pass_test(1)
+if test.detect_tool('javac'):
+ where_javac = test.detect('JAVAC', 'javac')
+else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ where_javac = env.WhereIs('javac', os.environ['PATH'])
+ if not where_javac:
+ where_javac = env.WhereIs('javac', '/usr/local/j2sdk1.3.1/bin')
+ if not where_javac:
+ print "Could not find Java javac, skipping test(s)."
+ test.pass_test(1)
test.subdir('src')
test.write('SConstruct', """
env = Environment(tools = ['javac'],
- JAVAC = '/usr/local/j2sdk1.3.1/bin/javac',
+ JAVAC = '%(where_javac)s',
JAVACFLAGS = '-O')
env.Java(target = 'classes', source = 'src')
-""")
+""" % locals())
test.write(['src', 'Example1.java'], """\
package src;
""")
test.run(arguments = '.',
- stdout = test.wrap_stdout("/usr/local/j2sdk1.3.1/bin/javac -O -d classes -sourcepath src src/Example1.java\n"))
+ stdout = test.wrap_stdout("%(where_javac)s -O -d classes -sourcepath src src/Example1.java\n" % locals()))
-test.fail_test(not os.path.exists(test.workpath('classes', 'src', 'Example1.class')))
+test.must_exist(['classes', 'src', 'Example1.class'])
test.pass_test()
test.run(arguments = '.', stderr = None)
-test.fail_test(test.read('test1.h') != "test1.java\nline 3\n")
+test.must_match('test1.h', "test1.java\nline 3\n")
if os.path.normcase('.java') == os.path.normcase('.JAVA'):
test.run(arguments = '.', stderr = None)
- test.fail_test(test.read('test2.h') != "test2.JAVA\nline 3\n")
+ test.must_match('test2.h', "test2.JAVA\nline 3\n")
-if not os.path.exists('/usr/local/j2sdk1.3.1/bin/javah'):
- print "Could not find Java, skipping test(s)."
- test.pass_test(1)
+if test.detect_tool('javac'):
+ where_javac = test.detect('JAVAC', 'javac')
+else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ where_javac = env.WhereIs('javac', os.environ['PATH'])
+ if not where_javac:
+ where_javac = env.WhereIs('javac', '/usr/local/j2sdk1.3.1/bin')
+ if not where_javac:
+ print "Could not find Java javac, skipping test(s)."
+ test.pass_test(1)
+
+if test.detect_tool('javah'):
+ where_javah = test.detect('JAVAH', 'javah')
+else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ where_javah = env.WhereIs('javah', os.environ['PATH'])
+ if not where_javah:
+ where_javah = env.WhereIs('javah', '/usr/local/j2sdk1.3.1/bin')
+ if not where_javah:
+ print "Could not find Java javah, skipping test(s)."
+ test.pass_test(1)
test.write('SConstruct', """
foo = Environment(tools = ['javac', 'javah'],
- JAVAC = '/usr/local/j2sdk1.3.1/bin/javac',
- JAVAH = '/usr/local/j2sdk1.3.1/bin/javah')
+ JAVAC = '%(where_javac)s',
+ JAVAH = '%(where_javah)s')
javah = foo.Dictionary('JAVAH')
-bar = foo.Copy(JAVAH = r'%s wrapper.py ' + javah)
+bar = foo.Copy(JAVAH = r'%(python)s wrapper.py ' + javah)
foo.Java(target = 'class1', source = 'com/sub/foo')
bar_classes = bar.Java(target = 'class2', source = 'com/sub/bar')
foo_classes = foo.Java(target = 'class3', source = 'src')
foo.JavaH(target = 'outdir4',
source = ['class4/com/sub/foo/Example1.class'],
JAVACLASSDIR = 'class4')
-""" % python)
+""" % locals())
test.subdir('com',
['com', 'sub'],
test.run(arguments = '.')
-test.fail_test(test.read('wrapper.out') != "wrapper.py /usr/local/j2sdk1.3.1/bin/javah -d outdir2 -classpath class2 com.sub.bar.Example4 com.other.Example5 com.sub.bar.Example6\n")
+test.fail_test(test.read('wrapper.out') != "wrapper.py %(where_javah)s -d outdir2 -classpath class2 com.sub.bar.Example4 com.other.Example5 com.sub.bar.Example6\n" % locals())
-test.fail_test(not os.path.exists(test.workpath('outdir1', 'com_sub_foo_Example1.h')))
-test.fail_test(not os.path.exists(test.workpath('outdir1', 'com_other_Example2.h')))
-test.fail_test(not os.path.exists(test.workpath('outdir1', 'com_sub_foo_Example3.h')))
+test.must_exist(['outdir1', 'com_sub_foo_Example1.h'])
+test.must_exist(['outdir1', 'com_other_Example2.h'])
+test.must_exist(['outdir1', 'com_sub_foo_Example3.h'])
-test.fail_test(not os.path.exists(test.workpath('outdir2', 'com_sub_bar_Example4.h')))
-test.fail_test(not os.path.exists(test.workpath('outdir2', 'com_other_Example5.h')))
-test.fail_test(not os.path.exists(test.workpath('outdir2', 'com_sub_bar_Example6.h')))
+test.must_exist(['outdir2', 'com_sub_bar_Example4.h'])
+test.must_exist(['outdir2', 'com_other_Example5.h'])
+test.must_exist(['outdir2', 'com_sub_bar_Example6.h'])
test.up_to_date(arguments = '.')