Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/lang/System/MacEncoding/TestFileEncoding.java
41153 views
1
/*
2
* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
import java.util.*;
25
26
/*
27
* @test
28
* @bug 8011194
29
* @summary Test value of file.encoding for corresponding value of LANG, etc
30
* @library ../../../../tools/launcher/ ../
31
* @modules jdk.compiler
32
* @build TestHelper TestFileEncoding ExpectedEncoding
33
* @run main TestFileEncoding UTF-8
34
* @run main/othervm -Dfile.encoding=MyEncoding -DuserEncoding=MyEncoding TestFileEncoding MyEncoding
35
* @run main TestFileEncoding UTF-8 en_US.UTF-8
36
* @run main/othervm -Dfile.encoding=MyEncoding -DuserEncoding=MyEncoding TestFileEncoding MyEncoding en_US.UTF-8
37
* @run main TestFileEncoding US-ASCII C
38
* @run main/othervm -Dfile.encoding=MyEncoding -DuserEncoding=MyEncoding TestFileEncoding MyEncoding C
39
* @author Brent Christian
40
*/
41
42
/**
43
* Setup the environment and run a sub-test to check the expected value of
44
* file.encoding, based on the value(s) of encoding-related environment vars
45
* (LANG, LC_ALL, LC_CTYPE).
46
*
47
* The first argument (required) is the expected value of the
48
* file.encoding System property.
49
* The second argument (optional) is the value to set to the LANG/etc env vars.
50
*/
51
public class TestFileEncoding {
52
private static final String TEST_NAME = "ExpectedEncoding";
53
54
private String expectedEncoding; // Expected value for file.encoding
55
private String langVar = null; // Value to set for LANG, etc
56
57
private static Set<String> envToRm = new HashSet<>(3);
58
static {
59
// Take these vars out of the test's run environment, possibly adding
60
// our own value back in.
61
envToRm.add("LANG");
62
envToRm.add("LC_ALL");
63
envToRm.add("LC_CTYPE");
64
}
65
66
public TestFileEncoding(String expectedEncoding) {
67
this.expectedEncoding = expectedEncoding;
68
}
69
70
public TestFileEncoding(String expectedEncoding, String langVar) {
71
this.expectedEncoding = expectedEncoding;
72
this.langVar = langVar;
73
}
74
75
/*
76
* Launch ExpectedEncoding with the given parameters, check for the
77
* expected file.encoding.
78
*/
79
private void run() {
80
String testClasses = System.getProperty("test.classes");
81
82
// Pick up VM opts
83
String vmOptsStr = System.getProperty("test.vm.opts");
84
System.out.println("test.vm.opts: " + vmOptsStr);
85
String[] vmOpts = new String[0];
86
if (vmOptsStr != null && !"".equals(vmOptsStr)) {
87
vmOpts = vmOptsStr.split(" ");
88
System.out.println("found vm options:");
89
for (String opt : vmOpts) {
90
System.out.println(" <" + opt + ">");
91
}
92
}
93
94
// Build java cmd
95
LinkedList<String> cmdList = new LinkedList<>();
96
cmdList.add(TestHelper.javaCmd);
97
for (String vmOpt : vmOpts) {
98
if (vmOpt != null && !vmOpt.equals("")) {
99
cmdList.add(vmOpt);
100
}
101
}
102
103
// See if the user specified a file.encoding that we should pass through
104
String userEncoding = System.getProperty("userEncoding");
105
if (userEncoding != null) {
106
cmdList.add("-Dfile.encoding="+userEncoding);
107
}
108
109
cmdList.add("-cp");
110
cmdList.add(testClasses);
111
cmdList.add(TEST_NAME);
112
cmdList.add(expectedEncoding);
113
cmdList.add("skip"); // ignore sun.jnu.encoding for this test
114
115
String cmdArray[] = new String[cmdList.size()];
116
cmdList.toArray(cmdArray);
117
118
// Run the test(s)
119
if (langVar == null) {
120
System.out.println("TestFileEncoding: Running with no envvars set");
121
TestHelper.TestResult tr = TestHelper.doExec(null, envToRm,
122
cmdArray);
123
checkResult(tr);
124
} else {
125
runWithEnvVar("LANG", cmdArray);
126
runWithEnvVar("LC_ALL", cmdArray);
127
runWithEnvVar("LC_CTYPE", cmdArray);
128
}
129
}
130
131
/*
132
* Run the test, setting the environment named by envVarName to the value
133
* in langVar.
134
*/
135
private void runWithEnvVar(String envVarName, String[] cmdArray) {
136
Map<String, String> envToAdd = new HashMap<>(1);
137
TestHelper.TestResult tr = null;
138
139
System.out.println("TestFileEncoding: Running with " + envVarName + "=" + langVar);
140
envToAdd.put(envVarName, langVar);
141
tr = TestHelper.doExec(envToAdd, envToRm, cmdArray);
142
checkResult(tr);
143
}
144
145
private void checkResult(TestHelper.TestResult tr) {
146
System.out.println(tr);
147
if (!tr.isOK()) {
148
throw new RuntimeException("TEST FAILED: !tr.isOK()");
149
}
150
}
151
152
public static void main(String[] args) {
153
TestFileEncoding cfe = null;
154
if (!TestHelper.isMacOSX) {
155
System.out.println("Test is currently only for Mac OS X - pass.");
156
return;
157
}
158
if (args.length == 1) {
159
cfe = new TestFileEncoding(args[0]);
160
} else if (args.length == 2) {
161
cfe = new TestFileEncoding(args[0], args[1]);
162
} else {
163
System.out.println("Usage: TestFileEncoding <expected file.encoding>");
164
System.out.println(" TestFileEncoding <expected file.encoding> <value for LANG/etc env var>");
165
return;
166
}
167
cfe.run();
168
}
169
}
170
171