< prev index next >
test/jdk/tools/launcher/ArgFileSyntax.java
Print this page
@@ -21,11 +21,11 @@
* questions.
*/
/**
* @test
- * @bug 8027634 8210810
+ * @bug 8027634 8210810 8240629
* @summary Verify syntax of argument file
* @build TestHelper
* @run main ArgFileSyntax
*/
import java.io.File;
@@ -34,11 +34,10 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ArgFileSyntax extends TestHelper {
// Buffer size in args.c readArgFile() method
private static final int ARG_FILE_PARSER_BUF_SIZE = 4096;
@@ -212,10 +211,41 @@
String filling = String.valueOf(data);
scratch.add(bag + "'" + filling + "\\\\aaa\\\\'");
scratch.add(ver);
rv.add(List.of(scratch, List.of(bag + filling + "\\aaa\\", ver)));
+ // 8240629: position comment at boundary
+ final int bytesPerLine = 128;
+ data = new char[bytesPerLine];
+ data[0] = '#';
+ Arrays.fill(data, 1, data.length, '0');
+ filling = String.valueOf(data, 0, bytesPerLine - System.lineSeparator().length()) ;
+ int lines = ARG_FILE_PARSER_BUF_SIZE / bytesPerLine;
+ int need = ARG_FILE_PARSER_BUF_SIZE % bytesPerLine;
+ if (need == 0) {
+ lines -= 1;
+ need = filling.length();
+ } else {
+ need -= System.lineSeparator().length();
+ }
+ // Construct args
+ scratch = new ArrayList<>();
+ while (lines > 0) {
+ scratch.add(filling);
+ lines--;
+ }
+
+ Arrays.fill(data, '#');
+ // Comment end before, at, after boundary
+ for (int count = need - 1; count <= need + 1 ; count++) {
+ String commentAtBoundary = String.valueOf(data, 0, count);
+ List<String> content = new ArrayList<>();
+ content.addAll(scratch);
+ content.add(commentAtBoundary);
+ content.add("-Dfoo=bar");
+ rv.add(List.of(content, List.of("-Dfoo=bar")));
+ }
return rv;
}
// ensure the arguments in the file are read in correctly
private void verifyParsing(List<String> lines, List<String> args) throws IOException {
< prev index next >