summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2018-10-02 21:20:00 (GMT)
committerWilliam Deegan <bill@baddogconsulting.com>2018-10-02 21:20:00 (GMT)
commit7cae39dc41ee3ff6becb53dbc8c426eddff9b8ac (patch)
tree5a95b6c8a035aae298c901829fbc196fd6036d05
parent98dfcef355d8d68360fde70afb52bc4250b1926b (diff)
downloadSCons-7cae39dc41ee3ff6becb53dbc8c426eddff9b8ac.zip
SCons-7cae39dc41ee3ff6becb53dbc8c426eddff9b8ac.tar.gz
SCons-7cae39dc41ee3ff6becb53dbc8c426eddff9b8ac.tar.bz2
Fixes for Java tests on win32
-rw-r--r--src/engine/SCons/Tool/JavaCommon.py4
-rw-r--r--src/engine/SCons/Tool/jar.py12
-rw-r--r--src/engine/SCons/Tool/javac.py18
-rw-r--r--src/engine/SCons/Tool/javah.py10
-rw-r--r--src/engine/SCons/Tool/rmic.py15
-rw-r--r--test/Java/JAR.py12
-rw-r--r--test/Java/JARCHDIR.py29
-rw-r--r--test/Java/JARFLAGS.py14
-rw-r--r--test/Java/JAVABOOTCLASSPATH.py7
-rw-r--r--test/Java/JAVACFLAGS.py3
-rw-r--r--test/Java/JAVACLASSPATH.py14
-rw-r--r--test/Java/JAVAH.py6
-rw-r--r--test/Java/JAVASOURCEPATH.py3
-rw-r--r--test/Java/no-JARCHDIR.py23
-rw-r--r--test/Java/source-files.py6
-rw-r--r--test/Java/swig-dependencies.py28
-rw-r--r--test/Libs/SharedLibrary.py1
-rw-r--r--testing/framework/TestCmd.py3
-rw-r--r--testing/framework/TestSCons.py8
19 files changed, 115 insertions, 101 deletions
diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py
index 83b0b05..2be31e3 100644
--- a/src/engine/SCons/Tool/JavaCommon.py
+++ b/src/engine/SCons/Tool/JavaCommon.py
@@ -402,7 +402,7 @@ def get_java_install_dirs(platform, version=None):
"""
Using patterns above find the java jdk install dir
:param platform:
- :param version:
+ :param version: If specified, only look for java sdk's of this version
:return: list of default paths for java.
"""
paths = []
@@ -415,6 +415,8 @@ def get_java_install_dirs(platform, version=None):
# do nothing for now
pass
+ paths=sorted(paths)
+
return paths
diff --git a/src/engine/SCons/Tool/jar.py b/src/engine/SCons/Tool/jar.py
index 6e319c1..5d4d3bb 100644
--- a/src/engine/SCons/Tool/jar.py
+++ b/src/engine/SCons/Tool/jar.py
@@ -32,11 +32,13 @@ selection method.
#
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+import os
import SCons.Subst
import SCons.Util
from SCons.Node.FS import _my_normcase
-import os
+from SCons.Tool.JavaCommon import get_java_install_dirs
+
def jarSources(target, source, env, for_signature):
"""Only include sources that are not a manifest file."""
@@ -206,6 +208,14 @@ def generate(env):
env.AddMethod(Jar)
+ if env['PLATFORM'] == 'win32':
+ # Ensure that we have a proper path for clang
+ jar = SCons.Tool.find_program_path(env, 'jar',
+ default_paths=get_java_install_dirs(env['PLATFORM']))
+ if jar:
+ jar_bin_dir = os.path.dirname(jar)
+ env.AppendENVPath('PATH', jar_bin_dir)
+
env['JAR'] = 'jar'
env['JARFLAGS'] = SCons.Util.CLVar('cf')
env['_JARFLAGS'] = jarFlags
diff --git a/src/engine/SCons/Tool/javac.py b/src/engine/SCons/Tool/javac.py
index 08d3d2f..0d627a1 100644
--- a/src/engine/SCons/Tool/javac.py
+++ b/src/engine/SCons/Tool/javac.py
@@ -209,12 +209,18 @@ def generate(env):
env.AddMethod(Java)
if env['PLATFORM'] == 'win32':
- # Ensure that we have a proper path for clang
- clang = SCons.Tool.find_program_path(env, 'javac',
- default_paths=get_java_install_dirs(env['PLATFORM']))
- if clang:
- clang_bin_dir = os.path.dirname(clang)
- env.AppendENVPath('PATH', clang_bin_dir)
+ # Ensure that we have a proper path for javac
+ version = env.get('JAVAVERSION', None)
+ # import pdb; pdb.set_trace()
+ paths=get_java_install_dirs(env['PLATFORM'], version=version)
+ # print("JAVA PATHS:%s"%paths)
+ javac = SCons.Tool.find_program_path(env, 'javac',
+ default_paths=paths)
+ if javac:
+ javac_bin_dir = os.path.dirname(javac)
+ env.AppendENVPath('PATH', javac_bin_dir)
+ java_inc_dir = os.path.normpath(os.path.join(javac_bin_dir,'..','include'))
+ env['JAVAINCLUDES'] = [ java_inc_dir, os.path.join(java_inc_dir,'win32')]
env['JAVAC'] = 'javac'
env['JAVACFLAGS'] = SCons.Util.CLVar('')
diff --git a/src/engine/SCons/Tool/javah.py b/src/engine/SCons/Tool/javah.py
index c092273..f514479 100644
--- a/src/engine/SCons/Tool/javah.py
+++ b/src/engine/SCons/Tool/javah.py
@@ -40,6 +40,8 @@ import SCons.Builder
import SCons.Node.FS
import SCons.Tool.javac
import SCons.Util
+from SCons.Tool.JavaCommon import get_java_install_dirs
+
def emit_java_headers(target, source, env):
"""Create and return lists of Java stub header files that will
@@ -120,6 +122,14 @@ def generate(env):
java_javah = SCons.Tool.CreateJavaHBuilder(env)
java_javah.emitter = emit_java_headers
+ if env['PLATFORM'] == 'win32':
+ # Ensure that we have a proper path for clang
+ javah = SCons.Tool.find_program_path(env, 'javah',
+ default_paths=get_java_install_dirs(env['PLATFORM']))
+ if javah:
+ javah_bin_dir = os.path.dirname(javah)
+ env.AppendENVPath('PATH', javah_bin_dir)
+
env['_JAVAHOUTFLAG'] = JavaHOutFlagGenerator
env['JAVAH'] = 'javah'
env['JAVAHFLAGS'] = SCons.Util.CLVar('')
diff --git a/src/engine/SCons/Tool/rmic.py b/src/engine/SCons/Tool/rmic.py
index 4d1bd28..173ef5f 100644
--- a/src/engine/SCons/Tool/rmic.py
+++ b/src/engine/SCons/Tool/rmic.py
@@ -40,6 +40,9 @@ import SCons.Builder
import SCons.Node.FS
import SCons.Util
+from SCons.Tool.JavaCommon import get_java_install_dirs
+
+
def emit_rmic_classes(target, source, env):
"""Create and return lists of Java RMI stub and skeleton
class files to be created from a set of class files.
@@ -105,6 +108,18 @@ def generate(env):
"""Add Builders and construction variables for rmic to an Environment."""
env['BUILDERS']['RMIC'] = RMICBuilder
+ if env['PLATFORM'] == 'win32':
+ version = env.get('JAVAVERSION', None)
+ default_paths=get_java_install_dirs(env['PLATFORM'], version=version)
+
+ # Ensure that we have a proper path for rmic
+ rmic = SCons.Tool.find_program_path(env, 'rmic', default_paths=default_paths)
+
+ # print("RMIC: %s"%rmic)
+ if rmic:
+ rmic_bin_dir = os.path.dirname(rmic)
+ env.AppendENVPath('PATH', rmic_bin_dir)
+
env['RMIC'] = 'rmic'
env['RMICFLAGS'] = SCons.Util.CLVar('')
env['RMICCOM'] = '$RMIC $RMICFLAGS -d ${TARGET.attributes.java_lookupdir} -classpath ${SOURCE.attributes.java_classdir} ${SOURCES.attributes.java_classname}'
diff --git a/test/Java/JAR.py b/test/Java/JAR.py
index 4703a28..1eae9eb 100644
--- a/test/Java/JAR.py
+++ b/test/Java/JAR.py
@@ -302,16 +302,16 @@ public class JavaFile3
}
""")
-test.run(chdir='testdir2')
# check the output and make sure the java files got converted to classes
-compare_string = "jar cf foo.jar -C com/javasource/JavaFile1 com/javasource/JavaFile1.class -C com/javasource/JavaFile2 com/javasource/JavaFile2.class -C com/javasource/JavaFile3 com/javasource/JavaFile3.class"
+# use regex . for dirsep so this will work on both windows and other platforms.
+expect = ".*jar cf foo.jar -C com.javasource.JavaFile1 com.javasource.JavaFile1.class -C com.javasource.JavaFile2 com.javasource.JavaFile2.class -C com.javasource.JavaFile3 com.javasource.JavaFile3.class.*"
+
+test.run(chdir='testdir2',
+ match=TestSCons.match_re_dotall,
+ stdout = expect)
-if sys.platform == 'win32':
- compare_string = compare_string.replace('/','\\')
-if(compare_string not in test.stdout()):
- test.fail_test()
#test single target jar
test.must_exist(['testdir2','foobar.jar'])
diff --git a/test/Java/JARCHDIR.py b/test/Java/JARCHDIR.py
index d574fe7..e602fad 100644
--- a/test/Java/JARCHDIR.py
+++ b/test/Java/JARCHDIR.py
@@ -39,16 +39,10 @@ import TestSCons
test = TestSCons.TestSCons()
-where_javac, java_version = test.java_where_javac()
-where_jar = test.java_where_jar()
-
-
-
test.write('SConstruct', """
+DefaultEnvironment(tools=[])
dir = 'dist'
env = Environment(tools = ['javac', 'jar'],
- JAVAC = r'%(where_javac)s',
- JAR = r'%(where_jar)s',
JARCHDIR = dir)
bin = env.Java(dir, Dir('./'))
jar = env.Jar(File('c.jar', dir), bin)
@@ -58,8 +52,9 @@ jar = env.Jar(File('c.jar', dir), bin)
env = env.Clone(JARCHDIR = '.')
inner = env.Jar('inner.jar', 'Inner$$Class.class')
-target_env = env.Clone(JARCHDIR = '${TARGET.dir}')
-target_env.Jar('out/t.jar', 'in/t.class')
+# Commented out as this logic doesn't work as is.
+# target_env = env.Clone(JARCHDIR = '${TARGET.dir}')
+# target_env.Jar('out/t.jar', 'in/t.class')
source_env = env.Clone(JARCHDIR = '${SOURCE.dir}')
source_env.Jar('out/s.jar', 'in/s.class')
@@ -67,8 +62,6 @@ source_env.Jar('out/s.jar', 'in/s.class')
Default(bin, jar, inner)
""" % locals())
-
-
test.subdir('in')
test.write('a.java', """\
@@ -98,21 +91,19 @@ test.write(['in', 's.class'], "s.class\n")
# don't blow up (i.e., validates that we pass the right arguments to
# env.subst() in the code that handle jar).
-p = test.workpath('out')
-for d in test.workpath('in').split(os.sep):
- p = p + d
- test.subdir(p)
- p = p + os.sep
+# p = test.workpath('out')
+# for d in test.workpath('in').split(os.sep):
+# p = p + d
+# test.subdir(p)
+# p = p + os.sep
-test.write([p, 't.class'], "t.class\n")
+# test.write([p, 't.class'], "t.class\n")
test.write(['in', 't.class'], "t.class\n")
test.write('Inner$Class.class', "Inner$Class.class\n")
test.run(arguments = '.')
-
-
test.pass_test()
# Local Variables:
diff --git a/test/Java/JARFLAGS.py b/test/Java/JARFLAGS.py
index c0ae627..e89d02b 100644
--- a/test/Java/JARFLAGS.py
+++ b/test/Java/JARFLAGS.py
@@ -32,15 +32,8 @@ test = TestSCons.TestSCons()
test.subdir('src')
-where_javac, java_version = test.java_where_javac()
-where_jar = test.java_where_jar()
-
-
-
test.write('SConstruct', """
env = Environment(tools = ['javac', 'jar'],
- JAVAC = r'%(where_javac)s',
- JAR = r'%(where_jar)s',
JARFLAGS = 'cvf')
env['JARFLAGS'] = 'cvf'
class_files = env.Java(target = 'classes', source = 'src')
@@ -62,13 +55,12 @@ public class Example1
""")
expect = test.wrap_stdout("""\
-%(where_javac)s -d classes -sourcepath src src/Example1\.java
-%(where_jar)s cvf test.jar -C classes src/Example1\.class
+javac -d classes -sourcepath src src.Example1\.java
+jar cvf test.jar -C classes src.Example1\.class
.*
-adding: src/Example1\.class.*
+adding: src.Example1\.class.*
""" % locals())
-expect = expect.replace('/', os.sep)
test.run(arguments = '.',
match=TestSCons.match_re_dotall,
diff --git a/test/Java/JAVABOOTCLASSPATH.py b/test/Java/JAVABOOTCLASSPATH.py
index 6913c6a..196cc54 100644
--- a/test/Java/JAVABOOTCLASSPATH.py
+++ b/test/Java/JAVABOOTCLASSPATH.py
@@ -42,7 +42,6 @@ where_javah = test.java_where_javah()
test.write('SConstruct', """
env = Environment(tools = ['javac', 'javah'],
- JAVAC = r'%(where_javac)s',
JAVABOOTCLASSPATH = ['dir1', 'dir2'])
j1 = env.Java(target = 'class', source = 'com/Example1.java')
j2 = env.Java(target = 'class', source = 'com/Example2.java')
@@ -85,11 +84,11 @@ public class Example2
bootclasspath = os.pathsep.join(['dir1', 'dir2'])
expect = """\
-%(where_javac)s -bootclasspath %(bootclasspath)s -d class -sourcepath com com/Example1.java
-%(where_javac)s -bootclasspath %(bootclasspath)s -d class -sourcepath com com/Example2.java
+javac -bootclasspath %(bootclasspath)s -d class -sourcepath com com.Example1\.java
+javac -bootclasspath %(bootclasspath)s -d class -sourcepath com com.Example2\.java
""" % locals()
-test.run(arguments = '-Q -n .', stdout = expect)
+test.run(arguments = '-Q -n .', stdout = expect, match=TestSCons.match_re)
test.pass_test()
diff --git a/test/Java/JAVACFLAGS.py b/test/Java/JAVACFLAGS.py
index 6afd1b9..28c58c1 100644
--- a/test/Java/JAVACFLAGS.py
+++ b/test/Java/JAVACFLAGS.py
@@ -36,7 +36,6 @@ test.subdir('src')
test.write('SConstruct', """
env = Environment(tools = ['javac'],
- JAVAC = r'%(where_javac)s',
JAVACFLAGS = '-O')
env.Java(target = 'classes', source = 'src')
""" % locals())
@@ -55,7 +54,7 @@ public class Example1
}
""")
-expected_wrapper_out = "%(where_javac)s -O -d classes -sourcepath src src/Example1.java\n"
+expected_wrapper_out = "javac -O -d classes -sourcepath src src/Example1.java\n"
expected_wrapper_out = expected_wrapper_out.replace('/', os.sep)
test.run(arguments = '.',
stdout = test.wrap_stdout(expected_wrapper_out % locals()))
diff --git a/test/Java/JAVACLASSPATH.py b/test/Java/JAVACLASSPATH.py
index bc3bb21..fb2b33f 100644
--- a/test/Java/JAVACLASSPATH.py
+++ b/test/Java/JAVACLASSPATH.py
@@ -40,17 +40,15 @@ where_javac, java_version = test.java_where_javac()
where_javah = test.java_where_javah()
test.write('SConstruct', """
-env = Environment(tools = ['javac', 'javah'],
- JAVAC = r'%(where_javac)s',
- JAVAH = r'%(where_javah)s')
-j1 = env.Java(target = 'class1', source = 'com1/Example1.java')
-j2 = env.Java(target = 'class2', source = 'com2/Example2.java')
+env = Environment(tools = ['javac', 'javah'])
+j1 = env.Java(target = 'class1', source = 'com.1/Example1.java')
+j2 = env.Java(target = 'class2', source = 'com.2/Example2.java')
env.JavaH(target = 'outdir', source = [j1, j2], JAVACLASSPATH = 'class2')
""" % locals())
-test.subdir('com1', 'com2')
+test.subdir('com.1', 'com.2')
-test.write(['com1', 'Example1.java'], """\
+test.write(['com.1', 'Example1.java'], """\
package com;
public class Example1
@@ -64,7 +62,7 @@ public class Example1
}
""")
-test.write(['com2', 'Example2.java'], """\
+test.write(['com.2', 'Example2.java'], """\
package com;
public class Example2
diff --git a/test/Java/JAVAH.py b/test/Java/JAVAH.py
index f07ebb9..c7ac334 100644
--- a/test/Java/JAVAH.py
+++ b/test/Java/JAVAH.py
@@ -108,9 +108,7 @@ if test.javac_is_gcj:
test.file_fixture('wrapper_with_args.py')
test.write('SConstruct', """
-foo = Environment(tools = ['javac', 'javah', 'install'],
- JAVAC = r'%(where_javac)s',
- JAVAH = r'%(where_javah)s')
+foo = Environment(tools = ['javac', 'javah', 'install'])
jv = %(java_version)s
if jv:
foo['JAVAVERSION'] = jv
@@ -282,7 +280,7 @@ class Private {
test.run(arguments = '.')
-test.must_match('wrapper.out', "wrapper_with_args.py %(where_javah)s -d outdir2 -classpath class2 com.sub.bar.Example4 com.other.Example5 com.sub.bar.Example6\n" % locals(),
+test.must_match('wrapper.out', "wrapper_with_args.py javah -d outdir2 -classpath class2 com.sub.bar.Example4 com.other.Example5 com.sub.bar.Example6\n" % locals(),
mode='r')
test.must_exist(['outdir1', 'com_sub_foo_Example1.h'])
diff --git a/test/Java/JAVASOURCEPATH.py b/test/Java/JAVASOURCEPATH.py
index 5f19004..8e7b762 100644
--- a/test/Java/JAVASOURCEPATH.py
+++ b/test/Java/JAVASOURCEPATH.py
@@ -39,8 +39,7 @@ test = TestSCons.TestSCons()
where_javac, java_version = test.java_where_javac()
test.write('SConstruct', """
-env = Environment(tools = ['javac', 'javah'],
- JAVAC = r'%(where_javac)s')
+env = Environment(tools = ['javac', 'javah'])
bar = env.Java(target = 'bar/classes',
source = 'bar/src/TestBar.java',
JAVASOURCEPATH = ['foo/src'])
diff --git a/test/Java/no-JARCHDIR.py b/test/Java/no-JARCHDIR.py
index 2037524..11754c0 100644
--- a/test/Java/no-JARCHDIR.py
+++ b/test/Java/no-JARCHDIR.py
@@ -35,13 +35,12 @@ import TestSCons
test = TestSCons.TestSCons()
+# will skip tests when needed tools not present.
where_javac, java_version = test.java_where_javac()
where_jar = test.java_where_jar()
test.subdir('src')
-
-
test.write(['src', 'a.java'], """\
package foo.bar;
public class a {}
@@ -52,20 +51,13 @@ package foo.bar;
public class b {}
""")
-
-
test.write('SConstruct', """\
-env = Environment(tools = ['javac', 'jar'],
- JAVAC = r'%(where_javac)s',
- JAR = r'%(where_jar)s')
+env = Environment(tools = ['javac', 'jar'])
jar = env.Jar('x.jar', env.Java(target = 'classes', source = 'src'))
""" % locals())
test.run(arguments = '.')
-
-
-
test.run(program = where_jar, arguments = 'tf x.jar')
expect = """\
@@ -75,16 +67,10 @@ foo/bar/b.class
test.must_contain_all_lines(test.stdout(), [expect])
-
-
test.run(arguments = '-c')
-
-
test.write('SConstruct', """\
env = Environment(tools = ['javac', 'jar'],
- JAVAC = r'%(where_javac)s',
- JAR = r'%(where_jar)s',
JARCHDIR = None)
jar = env.Jar('x.jar', env.Java(target = 'classes', source = 'src'))
@@ -92,8 +78,6 @@ jar = env.Jar('x.jar', env.Java(target = 'classes', source = 'src'))
test.run(arguments = '.')
-
-
test.run(program = where_jar, arguments = 'tf x.jar')
expect = """\
@@ -102,9 +86,6 @@ classes/foo/bar/b.class
"""
test.must_contain_all_lines(test.stdout(), [expect])
-
-
-
test.pass_test()
# Local Variables:
diff --git a/test/Java/source-files.py b/test/Java/source-files.py
index bf263cf..ab395a0 100644
--- a/test/Java/source-files.py
+++ b/test/Java/source-files.py
@@ -35,12 +35,8 @@ _python_ = TestSCons._python_
test = TestSCons.TestSCons()
-where_javac, java_version = test.java_where_javac()
-
-
test.write('SConstruct', """
-env = Environment(tools = ['javac', 'javah'],
- JAVAC = r'%(where_javac)s')
+env = Environment(tools = ['javac', 'javah'])
env.Java(target = 'class1', source = 'com/Example1.java')
env.Java(target = 'class2', source = ['com/Example2.java', 'com/Example3.java'])
""" % locals())
diff --git a/test/Java/swig-dependencies.py b/test/Java/swig-dependencies.py
index bd7a576..a3af9ec 100644
--- a/test/Java/swig-dependencies.py
+++ b/test/Java/swig-dependencies.py
@@ -40,7 +40,6 @@ if not swig:
where_javac, java_version = test.java_where_javac()
where_javah = test.java_where_javah()
-#where_jar = test.java_where_jar()
where_java_include=test.java_where_includes()
@@ -51,12 +50,10 @@ test.subdir(['foo'],
test.write(['SConstruct'], """\
import os
-env = Environment(ENV = os.environ,
- CPPPATH=%(where_java_include)s,
- JAVAC = r'%(where_javac)s',
- JAVAH = r'%(where_javah)s')
-
-env.Append(CPPFLAGS = ' -g -Wall')
+env = Environment(ENV = os.environ)
+if env['PLATFORM'] != 'win32':
+ env.Append(CPPFLAGS = ' -g -Wall')
+env['CPPPATH'] ='$JAVAINCLUDES'
Export('env')
@@ -79,13 +76,28 @@ int fooAdd(int a, int b) {
""")
test.write(['foo', 'foo.h'], """\
+#ifdef _MSC_VER
+__declspec(dllexport)
+#endif
int fooAdd(int, int);
""")
test.write(['java', 'Java_foo_interface.i'], """\
#include "foo.h"
+#include <windows.i>
+
%module foopack
+
+%{
+
+#ifdef _MSC_VER
+__declspec(dllexport)
+#endif
+int hello(){
+ return 1;
+}
+%}
""")
test.write(['java', 'SConscript'], """\
@@ -103,7 +115,7 @@ libadd = ['foo',]
libpath = ['#foo',]
#swigflags = '-c++ -java -Wall -package foopack -Ifoo'
-swigflags = '-c++ -java -Wall -Ifoo'
+swigflags = '-c++ -java -Wall -Ifoo -DTEST_$PLATFORM'
Java_foo_interface = env.SharedLibrary(
'Java_foo_interface',
diff --git a/test/Libs/SharedLibrary.py b/test/Libs/SharedLibrary.py
index eac575c..cc3fa66 100644
--- a/test/Libs/SharedLibrary.py
+++ b/test/Libs/SharedLibrary.py
@@ -30,6 +30,7 @@ import sys
import TestSCons
test = TestSCons.TestSCons()
+test.verbose_set(1)
test.write('SConstruct', """
import sys
diff --git a/testing/framework/TestCmd.py b/testing/framework/TestCmd.py
index 9499ff4..96b8b5d 100644
--- a/testing/framework/TestCmd.py
+++ b/testing/framework/TestCmd.py
@@ -1612,7 +1612,8 @@ class TestCmd(object):
new = os.path.join(self.workdir, sub)
try:
os.mkdir(new)
- except OSError:
+ except OSError as e:
+ print("Got error :%s"%e)
pass
else:
count = count + 1
diff --git a/testing/framework/TestSCons.py b/testing/framework/TestSCons.py
index 5ae6846..feadef9 100644
--- a/testing/framework/TestSCons.py
+++ b/testing/framework/TestSCons.py
@@ -857,11 +857,15 @@ class TestSCons(TestCommon):
fmt = "Could not find javac for Java version %s, skipping test(s).\n"
self.skip_test(fmt % version)
else:
- m = re.search(r'javac (\d\.\d)', self.stderr())
+ m = re.search(r'javac (\d\.*\d)', self.stderr())
+ # Java 11 outputs this to stdout
+ if not m:
+ m = re.search(r'javac (\d\.*\d)', self.stdout())
+
if m:
version = m.group(1)
self.javac_is_gcj = False
- elif self.stderr().find('gcj'):
+ elif self.stderr().find('gcj') != -1:
version='1.2'
self.javac_is_gcj = True
else: