summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Boehne <robb@dlogics.com>2020-02-24 20:06:21 (GMT)
committerRob Boehne <robb@dlogics.com>2020-02-24 20:06:21 (GMT)
commitb4454c3f49ff814806b49bbf245f0a5262638d0c (patch)
tree9906f976db41ebbb4260c1074496aced34e98c3b
parent33e203b5dcf9bc8dc32f78f25d66890358efd1a3 (diff)
downloadSCons-b4454c3f49ff814806b49bbf245f0a5262638d0c.zip
SCons-b4454c3f49ff814806b49bbf245f0a5262638d0c.tar.gz
SCons-b4454c3f49ff814806b49bbf245f0a5262638d0c.tar.bz2
Specifiy encoding for Java files, as the default varies across platforms.
-rw-r--r--src/engine/SCons/Tool/JavaCommon.py2
-rw-r--r--src/engine/SCons/Tool/JavaCommonTests.py24
2 files changed, 25 insertions, 1 deletions
diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py
index 1711de1..c6c19ae 100644
--- a/src/engine/SCons/Tool/JavaCommon.py
+++ b/src/engine/SCons/Tool/JavaCommon.py
@@ -404,7 +404,7 @@ if java_parsing:
def parse_java_file(fn, version=default_java_version):
- with open(fn, 'r') as f:
+ with open(fn, 'r', encoding='utf-8') as f:
data = f.read()
return parse_java(data, version)
diff --git a/src/engine/SCons/Tool/JavaCommonTests.py b/src/engine/SCons/Tool/JavaCommonTests.py
index 9242624..b0a788e 100644
--- a/src/engine/SCons/Tool/JavaCommonTests.py
+++ b/src/engine/SCons/Tool/JavaCommonTests.py
@@ -68,6 +68,30 @@ public class Foo
assert classes == ['Foo'], classes
+ def test_file_parser(self):
+ """Test the file parser"""
+ input = """\
+package com.sub.bar;
+
+public class Foo
+{
+ public static void main(String[] args)
+ {
+ /* This tests that unicde is handled . */
+ String hello1 = new String("ఎత్తువెడల్పు");
+ }
+}
+"""
+ file_name = 'test_file_parser.java'
+ with open(file_name, 'w', encoding='UTF-8') as jf:
+ print(input, file=jf)
+
+ pkg_dir, classes = SCons.Tool.JavaCommon.parse_java_file(file_name)
+ if os.path.exists(file_name):
+ os.remove(file_name)
+ assert pkg_dir == os.path.join('com', 'sub', 'bar'), pkg_dir
+ assert classes == ['Foo'], classes
+
def test_dollar_sign(self):
"""Test class names with $ in them"""