23
24 import java.nio.file.Path;
25 import java.util.Arrays;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.Locale;
29 import java.util.stream.Collectors;
30
31 import jdk.tools.jlink.plugin.Plugin;
32 import jdk.tools.jlink.plugin.PluginException;
33 import jdk.tools.jlink.internal.PluginRepository;
34 import jdk.tools.jlink.internal.TaskHelper;
35 import jdk.tools.jlink.internal.plugins.PluginsResourceBundle;
36 import tests.Helper;
37 import tests.JImageGenerator;
38 import tests.JImageValidator;
39 import tests.Result;
40
41 /*
42 * @test
43 * @bug 8152143 8152704 8155649 8165804 8185841
44 * @summary IncludeLocalesPlugin tests
45 * @author Naoto Sato
46 * @library ../../lib
47 * @modules java.base/jdk.internal.jimage
48 * jdk.jdeps/com.sun.tools.classfile
49 * jdk.jlink/jdk.tools.jlink.internal
50 * jdk.jlink/jdk.tools.jlink.internal.plugins
51 * jdk.jlink/jdk.tools.jlink.plugin
52 * jdk.jlink/jdk.tools.jmod
53 * jdk.jlink/jdk.tools.jimage
54 * jdk.compiler
55 * @build tests.*
56 * @build tools.jlink.plugins.GetAvailableLocales
57 * @run main/othervm -Xmx1g IncludeLocalesPluginTest
58 */
59 public class IncludeLocalesPluginTest {
60
61 private final static String moduleName = "IncludeLocalesTest";
62 private static Helper helper;
63 private final static int INCLUDE_LOCALES_OPTION = 0;
64 private final static int ADDMODS_OPTION = 1;
65 private final static int EXPECTED_LOCATIONS = 2;
66 private final static int UNEXPECTED_PATHS = 3;
67 private final static int AVAILABLE_LOCALES = 4;
68 private final static int ERROR_MESSAGE = 5;
69
70 private static int errors;
71
72 private final static Object[][] testData = {
73 // without --include-locales option: should include all locales
74 {
75 "",
76 "jdk.localedata",
77 List.of(
78 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
79 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
80 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
81 "/jdk.localedata/sun/text/resources/ext/FormatData_zh.class",
82 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
83 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
84 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class",
85 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
86 List.of(),
87 Arrays.stream(Locale.getAvailableLocales())
88 // "(root)" for Locale.ROOT rather than ""
89 .map(loc -> loc.equals(Locale.ROOT) ? "(root)" : loc.toString())
90 .collect(Collectors.toList()),
91 "",
92 },
210 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
211 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
212 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
213 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
214 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
215 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
216 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
217 List.of(
218 "(root)", "en", "en_US", "en_US_POSIX", "en_001", "en_150", "en_AT",
219 "de", "de_AT"),
220 "",
221 },
222
223 // All locales in India
224 {
225 "--include-locales=*-IN",
226 "jdk.localedata",
227 List.of(
228 "/jdk.localedata/sun/text/resources/ext/FormatData_en_IN.class",
229 "/jdk.localedata/sun/text/resources/ext/FormatData_hi_IN.class",
230 "/jdk.localedata/sun/util/resources/cldr/ext/CalendarData_as_IN.class",
231 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
232 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_IN.class",
233 "/jdk.localedata/sun/util/resources/cldr/ext/CalendarData_kok_IN.class",
234 "/jdk.localedata/sun/util/resources/cldr/ext/CalendarData_pa_IN.class"),
235 List.of(
236 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
237 "/jdk.localedata/sun/text/resources/ext/thai_dict",
238 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
239 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
240 "/jdk.localedata/sun/text/resources/ext/BreakIteratorResources_th.class",
241 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
242 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
243 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
244 "/jdk.localedata/sun/text/resources/ext/FormatData_zh.class",
245 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
246 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class",
247 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
248 List.of(
249 "(root)", "as_IN", "as", "bn_IN", "bn", "bo_IN", "bo", "brx_IN", "brx",
250 "en", "en_001", "en_IN", "en_US", "en_US_POSIX", "gu_IN", "gu", "hi_IN",
251 "hi", "kn_IN", "kn", "kok_IN", "kok", "ks_IN", "ks", "ml_IN", "ml",
252 "mr_IN", "mr", "ne_IN", "ne", "or_IN", "or", "pa_IN", "pa", "pa_IN_#Guru",
253 "pa__#Guru", "ta_IN", "ta", "te_IN", "te", "ur_IN", "ur"),
254 "",
255 },
256
257 // Thai
258 {
259 "--include-locales=th",
260 "jdk.localedata",
261 List.of(
262 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
263 "/jdk.localedata/sun/text/resources/ext/thai_dict",
264 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
310 "--include-locales=zh-Hans",
311 "jdk.localedata",
312 List.of(
313 "/jdk.localedata/sun/text/resources/ext/FormatData_zh.class",
314 "/jdk.localedata/sun/text/resources/ext/FormatData_zh_CN.class",
315 "/jdk.localedata/sun/text/resources/ext/FormatData_zh_SG.class",
316 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
317 List.of(
318 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
319 "/jdk.localedata/sun/text/resources/ext/thai_dict",
320 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
321 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
322 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
323 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
324 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
325 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
326 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
327 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
328 List.of(
329 "(root)", "en", "en_US", "en_US_POSIX", "zh", "zh__#Hans", "zh_CN",
330 "zh_HK", "zh_MO", "zh_CN_#Hans", "zh_HK_#Hans", "zh_MO_#Hans", "zh_SG", "zh_SG_#Hans"),
331 "",
332 },
333
334 // Norwegian
335 {
336 "--include-locales=nb,nn,no",
337 "jdk.localedata",
338 List.of(
339 "/jdk.localedata/sun/text/resources/ext/FormatData_no.class",
340 "/jdk.localedata/sun/text/resources/ext/FormatData_no_NO.class",
341 "/jdk.localedata/sun/text/resources/ext/FormatData_no_NO_NY.class",
342 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_nb.class",
343 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_nn.class"),
344 List.of(
345 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
346 "/jdk.localedata/sun/text/resources/ext/thai_dict",
347 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
348 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
349 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
350 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
370 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_in.class",
371 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_iw.class",
372 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ji.class"),
373 List.of(
374 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
375 "/jdk.localedata/sun/text/resources/ext/thai_dict",
376 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
377 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
378 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
379 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
380 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
381 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
382 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
383 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
384 List.of(
385 "(root)", "en", "en_US", "en_US_POSIX", "in", "in_ID", "iw", "iw_IL",
386 "ji", "ji_001"),
387 "",
388 },
389
390 // Error case: No matching locales
391 {
392 "--include-locales=xyz",
393 "jdk.localedata",
394 null,
395 null,
396 null,
397 new PluginException(String.format(
398 PluginsResourceBundle.getMessage("include-locales.nomatchinglocales"), "xyz"))
399 .getMessage(),
400 },
401
402 // Error case: Invalid argument
403 {
404 "--include-locales=en,zh_HK",
405 "jdk.localedata",
406 null,
407 null,
408 null,
409 new PluginException(String.format(
|
23
24 import java.nio.file.Path;
25 import java.util.Arrays;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.Locale;
29 import java.util.stream.Collectors;
30
31 import jdk.tools.jlink.plugin.Plugin;
32 import jdk.tools.jlink.plugin.PluginException;
33 import jdk.tools.jlink.internal.PluginRepository;
34 import jdk.tools.jlink.internal.TaskHelper;
35 import jdk.tools.jlink.internal.plugins.PluginsResourceBundle;
36 import tests.Helper;
37 import tests.JImageGenerator;
38 import tests.JImageValidator;
39 import tests.Result;
40
41 /*
42 * @test
43 * @bug 8152143 8152704 8155649 8165804 8185841 8176841 8190918
44 * @summary IncludeLocalesPlugin tests
45 * @author Naoto Sato
46 * @library ../../lib
47 * @modules java.base/jdk.internal.jimage
48 * jdk.jdeps/com.sun.tools.classfile
49 * jdk.jlink/jdk.tools.jlink.internal
50 * jdk.jlink/jdk.tools.jlink.internal.plugins
51 * jdk.jlink/jdk.tools.jlink.plugin
52 * jdk.jlink/jdk.tools.jmod
53 * jdk.jlink/jdk.tools.jimage
54 * jdk.compiler
55 * @build tests.*
56 * @build tools.jlink.plugins.GetAvailableLocales
57 * @run main/othervm -Xmx1g IncludeLocalesPluginTest
58 */
59 public class IncludeLocalesPluginTest {
60
61 private final static String moduleName = "IncludeLocalesTest";
62 private static Helper helper;
63 private final static int INCLUDE_LOCALES_OPTION = 0;
64 private final static int ADDMODS_OPTION = 1;
65 private final static int EXPECTED_LOCATIONS = 2;
66 private final static int UNEXPECTED_PATHS = 3;
67 private final static int AVAILABLE_LOCALES = 4;
68 private final static int ERROR_MESSAGE = 5;
69
70 private static int errors;
71
72 private final static Object[][] testData = {
73 // Test data should include:
74 // - --include-locales command line option
75 // - --add-modules command line option values
76 // - List of required resources in the result image
77 // - List of resources that should not exist in the result image
78 // - List of available locales in the result image
79 // - Error message
80
81 // without --include-locales option: should include all locales
82 {
83 "",
84 "jdk.localedata",
85 List.of(
86 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
87 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
88 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
89 "/jdk.localedata/sun/text/resources/ext/FormatData_zh.class",
90 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
91 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
92 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class",
93 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
94 List.of(),
95 Arrays.stream(Locale.getAvailableLocales())
96 // "(root)" for Locale.ROOT rather than ""
97 .map(loc -> loc.equals(Locale.ROOT) ? "(root)" : loc.toString())
98 .collect(Collectors.toList()),
99 "",
100 },
218 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
219 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
220 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
221 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
222 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
223 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
224 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
225 List.of(
226 "(root)", "en", "en_US", "en_US_POSIX", "en_001", "en_150", "en_AT",
227 "de", "de_AT"),
228 "",
229 },
230
231 // All locales in India
232 {
233 "--include-locales=*-IN",
234 "jdk.localedata",
235 List.of(
236 "/jdk.localedata/sun/text/resources/ext/FormatData_en_IN.class",
237 "/jdk.localedata/sun/text/resources/ext/FormatData_hi_IN.class",
238 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
239 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_IN.class"),
240 List.of(
241 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
242 "/jdk.localedata/sun/text/resources/ext/thai_dict",
243 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
244 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
245 "/jdk.localedata/sun/text/resources/ext/BreakIteratorResources_th.class",
246 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
247 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
248 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
249 "/jdk.localedata/sun/text/resources/ext/FormatData_zh.class",
250 "/jdk.localedata/sun/util/resources/cldr/ext/CalendarData_as_IN.class",
251 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
252 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class",
253 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
254 List.of(
255 "(root)", "as_IN", "as", "bn_IN", "bn", "bo_IN", "bo", "brx_IN", "brx",
256 "en", "en_001", "en_IN", "en_US", "en_US_POSIX", "gu_IN", "gu", "hi_IN",
257 "hi", "kn_IN", "kn", "kok_IN", "kok", "ks_IN", "ks", "ml_IN", "ml",
258 "mr_IN", "mr", "ne_IN", "ne", "or_IN", "or", "pa_IN", "pa", "pa_IN_#Guru",
259 "pa__#Guru", "ta_IN", "ta", "te_IN", "te", "ur_IN", "ur"),
260 "",
261 },
262
263 // Thai
264 {
265 "--include-locales=th",
266 "jdk.localedata",
267 List.of(
268 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
269 "/jdk.localedata/sun/text/resources/ext/thai_dict",
270 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
316 "--include-locales=zh-Hans",
317 "jdk.localedata",
318 List.of(
319 "/jdk.localedata/sun/text/resources/ext/FormatData_zh.class",
320 "/jdk.localedata/sun/text/resources/ext/FormatData_zh_CN.class",
321 "/jdk.localedata/sun/text/resources/ext/FormatData_zh_SG.class",
322 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
323 List.of(
324 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
325 "/jdk.localedata/sun/text/resources/ext/thai_dict",
326 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
327 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
328 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
329 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
330 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
331 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
332 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
333 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
334 List.of(
335 "(root)", "en", "en_US", "en_US_POSIX", "zh", "zh__#Hans", "zh_CN",
336 "zh_CN_#Hans", "zh_HK_#Hans", "zh_MO_#Hans", "zh_SG", "zh_SG_#Hans"),
337 "",
338 },
339
340 // Norwegian
341 {
342 "--include-locales=nb,nn,no",
343 "jdk.localedata",
344 List.of(
345 "/jdk.localedata/sun/text/resources/ext/FormatData_no.class",
346 "/jdk.localedata/sun/text/resources/ext/FormatData_no_NO.class",
347 "/jdk.localedata/sun/text/resources/ext/FormatData_no_NO_NY.class",
348 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_nb.class",
349 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_nn.class"),
350 List.of(
351 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
352 "/jdk.localedata/sun/text/resources/ext/thai_dict",
353 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
354 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
355 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
356 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
376 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_in.class",
377 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_iw.class",
378 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ji.class"),
379 List.of(
380 "/jdk.localedata/sun/text/resources/ext/LineBreakIteratorData_th",
381 "/jdk.localedata/sun/text/resources/ext/thai_dict",
382 "/jdk.localedata/sun/text/resources/ext/WordBreakIteratorData_th",
383 "/jdk.localedata/sun/text/resources/ext/BreakIteratorInfo_th.class",
384 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
385 "/jdk.localedata/sun/text/resources/ext/FormatData_ja.class",
386 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class",
387 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
388 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
389 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
390 List.of(
391 "(root)", "en", "en_US", "en_US_POSIX", "in", "in_ID", "iw", "iw_IL",
392 "ji", "ji_001"),
393 "",
394 },
395
396 // Langtag including extensions. Should be ignored.
397 {
398 "--include-locales=en,ja-u-nu-thai",
399 "jdk.localedata",
400 List.of(
401 "/jdk.localedata/sun/text/resources/ext/FormatData_en_GB.class",
402 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class"),
403 List.of(
404 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
405 "/jdk.localedata/sun/text/resources/ext/FormatData_th.class"),
406 List.of(
407 "(root)", "en", "en_001", "en_150", "en_AG", "en_AI", "en_AS", "en_AT",
408 "en_AU", "en_BB", "en_BE", "en_BI", "en_BM", "en_BS", "en_BW", "en_BZ",
409 "en_CA", "en_CC", "en_CH", "en_CK", "en_CM", "en_CX", "en_CY", "en_DE",
410 "en_DG", "en_DK", "en_DM", "en_ER", "en_FI", "en_FJ", "en_FK", "en_FM",
411 "en_GB", "en_GD", "en_GG", "en_GH", "en_GI", "en_GM", "en_GU", "en_GY",
412 "en_HK", "en_IE", "en_IL", "en_IM", "en_IN", "en_IO", "en_JE", "en_JM",
413 "en_KE", "en_KI", "en_KN", "en_KY", "en_LC", "en_LR", "en_LS", "en_MG",
414 "en_MH", "en_MO", "en_MP", "en_MS", "en_MT", "en_MU", "en_MW", "en_MY",
415 "en_NA", "en_NF", "en_NG", "en_NL", "en_NR", "en_NU", "en_NZ", "en_PG",
416 "en_PH", "en_PK", "en_PN", "en_PR", "en_PW", "en_RW", "en_SB", "en_SC",
417 "en_SD", "en_SE", "en_SG", "en_SH", "en_SI", "en_SL", "en_SS", "en_SX",
418 "en_SZ", "en_TC", "en_TK", "en_TO", "en_TT", "en_TV", "en_TZ", "en_UG",
419 "en_UM", "en_US", "en_US_POSIX", "en_VC", "en_VG", "en_VI", "en_VU",
420 "en_WS", "en_ZA", "en_ZM", "en_ZW"),
421 "",
422 },
423
424 // Error case: No matching locales
425 {
426 "--include-locales=xyz",
427 "jdk.localedata",
428 null,
429 null,
430 null,
431 new PluginException(String.format(
432 PluginsResourceBundle.getMessage("include-locales.nomatchinglocales"), "xyz"))
433 .getMessage(),
434 },
435
436 // Error case: Invalid argument
437 {
438 "--include-locales=en,zh_HK",
439 "jdk.localedata",
440 null,
441 null,
442 null,
443 new PluginException(String.format(
|