Bug 537312 - [test] reduce set of compliances in gerrit test runs

Change-Id: Ieafef9b4c33db455c583cc1c525dc27fa5970d9d
diff --git a/org.eclipse.jdt.core.tests.compiler/pom.xml b/org.eclipse.jdt.core.tests.compiler/pom.xml
index ecc9809..f9bdb5f 100644
--- a/org.eclipse.jdt.core.tests.compiler/pom.xml
+++ b/org.eclipse.jdt.core.tests.compiler/pom.xml
@@ -102,7 +102,8 @@
 			</plugins>
 		</build>
 		<properties>
-			<tycho.surefire.argLine>--add-modules ALL-SYSTEM</tycho.surefire.argLine>
+			<!-- Overridden in https://ci.eclipse.org/jdt/job/eclipse.jdt.core-run.javac-10/configure  -->
+			<tycho.surefire.argLine>--add-modules ALL-SYSTEM -Dcompliance=1.4,1.7,1.8,10</tycho.surefire.argLine>
 		</properties>
 	</profile>
   </profiles>
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/AbstractCompilerTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/AbstractCompilerTest.java
index 3cf0260..9b2ec42 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/AbstractCompilerTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/AbstractCompilerTest.java
@@ -349,38 +349,44 @@
 		if (possibleComplianceLevels == UNINITIALIZED) {
 			String specVersion = System.getProperty("java.specification.version");
 			isJRE9Plus = CompilerOptions.VERSION_9.equals(specVersion) || CompilerOptions.VERSION_10.equals(specVersion);
-			String compliance = System.getProperty("compliance");
-			if (compliance != null) {
-				if (CompilerOptions.VERSION_1_3.equals(compliance)) {
-					possibleComplianceLevels = RUN_JAVAC ? NONE : F_1_3;
-				} else if (CompilerOptions.VERSION_1_4.equals(compliance)) {
-					possibleComplianceLevels = RUN_JAVAC ? NONE : F_1_4;
-				} else if (CompilerOptions.VERSION_1_5.equals(compliance)) {
-					possibleComplianceLevels = F_1_5;
-				} else if (CompilerOptions.VERSION_1_6.equals(compliance)) {
-					possibleComplianceLevels = F_1_6;
-				} else if (CompilerOptions.VERSION_1_7.equals(compliance)) {
-					possibleComplianceLevels = F_1_7;
-				} else if (CompilerOptions.VERSION_1_8.equals(compliance)) {
-					possibleComplianceLevels = F_1_8;
-				} else if (CompilerOptions.VERSION_9.equals(compliance)) {
-					possibleComplianceLevels = F_9;
-				} else if (CompilerOptions.VERSION_10.equals(compliance)) {
-					possibleComplianceLevels = F_10;
-				} else {
-					System.out.println("Invalid compliance specified (" + compliance + ")");
-					System.out.print("Use one of ");
-					System.out.print(CompilerOptions.VERSION_1_3 + ", ");
-					System.out.print(CompilerOptions.VERSION_1_4 + ", ");
-					System.out.print(CompilerOptions.VERSION_1_5 + ", ");
-					System.out.print(CompilerOptions.VERSION_1_6 + ", ");
-					System.out.print(CompilerOptions.VERSION_1_7 + ", ");
-					System.out.print(CompilerOptions.VERSION_1_8 + ", ");
-					System.out.print(CompilerOptions.VERSION_1_8 + ", ");
-					System.out.print(CompilerOptions.VERSION_9 + ", ");
-					System.out.println(CompilerOptions.VERSION_10);
-					System.out.println("Defaulting to all possible compliances");
+			String compliances = System.getProperty("compliance");
+			if (compliances != null) {
+				possibleComplianceLevels = 0;
+				for (String compliance : compliances.split(",")) {
+					if (CompilerOptions.VERSION_1_3.equals(compliance)) {
+						possibleComplianceLevels |= RUN_JAVAC ? NONE : F_1_3;
+					} else if (CompilerOptions.VERSION_1_4.equals(compliance)) {
+						possibleComplianceLevels |= RUN_JAVAC ? NONE : F_1_4;
+					} else if (CompilerOptions.VERSION_1_5.equals(compliance)) {
+						possibleComplianceLevels |= F_1_5;
+					} else if (CompilerOptions.VERSION_1_6.equals(compliance)) {
+						possibleComplianceLevels |= F_1_6;
+					} else if (CompilerOptions.VERSION_1_7.equals(compliance)) {
+						possibleComplianceLevels |= F_1_7;
+					} else if (CompilerOptions.VERSION_1_8.equals(compliance)) {
+						possibleComplianceLevels |= F_1_8;
+					} else if (CompilerOptions.VERSION_9.equals(compliance)) {
+						possibleComplianceLevels |= F_9;
+					} else if (CompilerOptions.VERSION_10.equals(compliance)) {
+						possibleComplianceLevels |= F_10;
+					} else {
+						System.out.println("Ignoring invalid compliance (" + compliance + ")");
+						System.out.print("Use one of ");
+						System.out.print(CompilerOptions.VERSION_1_3 + ", ");
+						System.out.print(CompilerOptions.VERSION_1_4 + ", ");
+						System.out.print(CompilerOptions.VERSION_1_5 + ", ");
+						System.out.print(CompilerOptions.VERSION_1_6 + ", ");
+						System.out.print(CompilerOptions.VERSION_1_7 + ", ");
+						System.out.print(CompilerOptions.VERSION_1_8 + ", ");
+						System.out.print(CompilerOptions.VERSION_1_8 + ", ");
+						System.out.print(CompilerOptions.VERSION_9 + ", ");
+						System.out.println(CompilerOptions.VERSION_10);
+					}
 				}
+				if (possibleComplianceLevels == 0) {
+					System.out.println("Defaulting to all possible compliances");
+					possibleComplianceLevels = UNINITIALIZED;
+				}						
 			}
 			if (possibleComplianceLevels == UNINITIALIZED) {
 				if (!RUN_JAVAC) {
diff --git a/org.eclipse.jdt.core.tests.model/pom.xml b/org.eclipse.jdt.core.tests.model/pom.xml
index 038ffee..e35c535 100644
--- a/org.eclipse.jdt.core.tests.model/pom.xml
+++ b/org.eclipse.jdt.core.tests.model/pom.xml
@@ -104,7 +104,8 @@
 			</plugins>
 		</build>
 		<properties>
-			<tycho.surefire.argLine>--add-modules ALL-SYSTEM</tycho.surefire.argLine>
+			<!-- Overridden in https://ci.eclipse.org/jdt/job/eclipse.jdt.core-run.javac-10/configure  -->
+			<tycho.surefire.argLine>--add-modules ALL-SYSTEM -Dcompliance=1.4,1.7,1.8,10</tycho.surefire.argLine>
 		</properties>
 	</profile>
   </profiles>