Move specific build rule of 529 into the default script.

Change-Id: I90ff4b4c64a4e077b360bbec7a8e21b52139f395
diff --git a/test/529-checker-unresolved/build b/test/529-checker-unresolved/build
deleted file mode 100644
index d85035b..0000000
--- a/test/529-checker-unresolved/build
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Stop if something fails.
-set -e
-
-# We can't use src-ex testing infrastructure because src and src-ex are compiled
-# with javac independetely and can't share code (without reflection).
-
-mkdir classes
-${JAVAC} -d classes `find src -name '*.java'`
-
-mkdir classes-ex
-mv classes/UnresolvedClass.class classes-ex
-mv classes/UnresolvedInterface.class classes-ex
-mv classes/UnresolvedSuperClass.class classes-ex
-
-if [ ${USE_JACK} = "true" ]; then
-  jar cf classes.jill.jar -C classes .
-  jar cf classes-ex.jill.jar -C classes-ex .
-
-  ${JACK} --import classes.jill.jar --output-dex .
-  zip $TEST_NAME.jar classes.dex
-  ${JACK} --import classes-ex.jill.jar --output-dex .
-  zip ${TEST_NAME}-ex.jar classes.dex
-else
-  if [ ${NEED_DEX} = "true" ]; then
-    ${DX} -JXmx256m --debug --dex --dump-to=classes.lst --output=classes.dex --dump-width=1000 classes
-    zip $TEST_NAME.jar classes.dex
-    ${DX} -JXmx256m --debug --dex --dump-to=classes-ex.lst --output=classes.dex --dump-width=1000 classes-ex
-    zip ${TEST_NAME}-ex.jar classes.dex
-  fi
-fi
diff --git a/test/529-checker-unresolved/src/Unresolved.java b/test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedClass.java
similarity index 83%
rename from test/529-checker-unresolved/src/Unresolved.java
rename to test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedClass.java
index 20ac6e0..8b3bb3c 100644
--- a/test/529-checker-unresolved/src/Unresolved.java
+++ b/test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedClass.java
@@ -14,17 +14,7 @@
  * limitations under the License.
  */
 
-interface UnresolvedInterface {
-  void interfaceMethod();
-}
-
-class UnresolvedSuperClass {
-  public void superMethod() {
-    System.out.println("UnresolvedClass.superMethod()");
-  }
-}
-
-class UnresolvedClass extends UnresolvedSuperClass implements UnresolvedInterface {
+public class UnresolvedClass extends UnresolvedSuperClass implements UnresolvedInterface {
   static public void staticMethod() {
     System.out.println("UnresolvedClass.staticMethod()");
   }
diff --git a/test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedInterface.java b/test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedInterface.java
new file mode 100644
index 0000000..6e6b14b
--- /dev/null
+++ b/test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedInterface.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public interface UnresolvedInterface {
+  void interfaceMethod();
+}
diff --git a/test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedSuperClass.java b/test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedSuperClass.java
new file mode 100644
index 0000000..dd3be006
--- /dev/null
+++ b/test/529-checker-unresolved/src-dex2oat-unresolved/UnresolvedSuperClass.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class UnresolvedSuperClass {
+  public void superMethod() {
+    System.out.println("UnresolvedClass.superMethod()");
+  }
+}
diff --git a/test/etc/default-build b/test/etc/default-build
index 5f78496..2eb7760 100755
--- a/test/etc/default-build
+++ b/test/etc/default-build
@@ -54,6 +54,12 @@
   HAS_SRC_EX=false
 fi
 
+if [ -d src-dex2oat-unresolved ]; then
+  HAS_SRC_DEX2OAT_UNRESOLVED=true
+else
+  HAS_SRC_DEX2OAT_UNRESOLVED=false
+fi
+
 DX_FLAGS=""
 SKIP_DX_MERGER="false"
 EXPERIMENTAL=""
@@ -116,117 +122,141 @@
   SKIP_DX_MERGER="true"
 fi
 
-if [ ${USE_JACK} = "true" ]; then
-  # Jack toolchain
-  if [ "${HAS_SRC}" = "true" ]; then
-    if [ "${HAS_SRC_MULTIDEX}" = "true" ]; then
-      # Compile src and src-multidex in the same .jack file. We will apply multidex partitioning
-      # when creating the output .dex file.
-      ${JACK} ${JACK_ARGS} --output-jack src.jack src src src-multidex
-      jack_extra_args="${jack_extra_args} -D jack.dex.output.policy=minimal-multidex"
-      jack_extra_args="${jack_extra_args} -D jack.preprocessor=true"
-      jack_extra_args="${jack_extra_args} -D jack.preprocessor.file=multidex.jpp"
-    else
-      ${JACK} ${JACK_ARGS} --output-jack src.jack src
+if [ ${HAS_SRC_DEX2OAT_UNRESOLVED} = "true" ]; then
+  mkdir classes
+  mkdir classes-ex
+  ${JAVAC} ${JAVAC_ARGS} -implicit:none -sourcepath src-dex2oat-unresolved -d classes `find src -name '*.java'`
+  ${JAVAC} ${JAVAC_ARGS} -implicit:none -sourcepath src -d classes-ex `find src-dex2oat-unresolved -name '*.java'`
+  if [ ${USE_JACK} = "true" ]; then
+    jar cf classes.jill.jar -C classes .
+    jar cf classes-ex.jill.jar -C classes-ex .
+
+    ${JACK} --import classes.jill.jar --output-dex .
+    zip $TEST_NAME.jar classes.dex
+    ${JACK} --import classes-ex.jill.jar --output-dex .
+    zip ${TEST_NAME}-ex.jar classes.dex
+  else
+    if [ ${NEED_DEX} = "true" ]; then
+      ${DX} -JXmx256m --debug --dex --dump-to=classes.lst --output=classes.dex --dump-width=1000 classes
+      zip $TEST_NAME.jar classes.dex
+      ${DX} -JXmx256m --debug --dex --dump-to=classes-ex.lst --output=classes.dex --dump-width=1000 classes-ex
+      zip ${TEST_NAME}-ex.jar classes.dex
     fi
-    jack_extra_args="${jack_extra_args} --import src.jack"
-  fi
-
-  if [ "${HAS_SRC2}" = "true" ]; then
-    ${JACK} ${JACK_ARGS} --output-jack src2.jack src2
-    # In case of duplicate classes, we want to take into account the classes from src2. Therefore
-    # we apply the 'keep-first' policy and import src2.jack file *before* the src.jack file.
-    jack_extra_args="${jack_extra_args} -D jack.import.type.policy=keep-first"
-    jack_extra_args="--import src2.jack ${jack_extra_args}"
-  fi
-
-  # Compile jack files into a DEX file.
-  if [ "${HAS_SRC}" = "true" ] || [ "${HAS_SRC2}" = "true" ]; then
-    ${JACK} ${JACK_ARGS} ${jack_extra_args} --output-dex .
   fi
 else
-  # Legacy toolchain with javac+dx
-  if [ "${HAS_SRC}" = "true" ]; then
-    mkdir classes
-    ${JAVAC} ${JAVAC_ARGS} -implicit:none -classpath src-multidex -d classes `find src -name '*.java'`
-  fi
-
-  if [ "${HAS_SRC_MULTIDEX}" = "true" ]; then
-    mkdir classes2
-    ${JAVAC} -implicit:none -classpath src -d classes2 `find src-multidex -name '*.java'`
-    if [ ${NEED_DEX} = "true" ]; then
-      ${DX} -JXmx256m --debug --dex --dump-to=classes2.lst --output=classes2.dex \
-        --dump-width=1000 ${DX_FLAGS} classes2
-    fi
-  fi
-
-  if [ "${HAS_SRC2}" = "true" ]; then
-    mkdir -p classes
-    ${JAVAC} ${JAVAC_ARGS} -d classes `find src2 -name '*.java'`
-  fi
-
-  if [ "${HAS_SRC}" = "true" ] || [ "${HAS_SRC2}" = "true" ]; then
-    if [ ${NEED_DEX} = "true" -a ${SKIP_DX_MERGER} = "false" ]; then
-      ${DX} -JXmx256m --debug --dex --dump-to=classes.lst --output=classes.dex \
-        --dump-width=1000 ${DX_FLAGS} classes
-    fi
-  fi
-fi
-
-if [ "${HAS_SMALI}" = "true" ]; then
-  # Compile Smali classes
-  ${SMALI} -JXmx512m ${SMALI_ARGS} --output smali_classes.dex `find smali -name '*.smali'`
-
-  # Don't bother with dexmerger if we provide our own main function in a smali file.
-  if [ ${SKIP_DX_MERGER} = "false" ]; then
-    ${DXMERGER} classes.dex classes.dex smali_classes.dex
-  else
-    mv smali_classes.dex classes.dex
-  fi
-fi
-
-if [ "${HAS_SMALI_MULTIDEX}" = "true" ]; then
-  # Compile Smali classes
-  ${SMALI} -JXmx512m ${SMALI_ARGS} --output smali_classes2.dex `find smali-multidex -name '*.smali'`
-
-  # Don't bother with dexmerger if we provide our own main function in a smali file.
-  if [ ${HAS_SRC_MULTIDEX} = "true" ]; then
-    ${DXMERGER} classes2.dex classes2.dex smali_classes2.dex
-  else
-    mv smali_classes2.dex classes2.dex
-  fi
-fi
-
-
-if [ ${HAS_SRC_EX} = "true" ]; then
   if [ ${USE_JACK} = "true" ]; then
-      # Rename previous "classes.dex" so it is not overwritten.
-      mv classes.dex classes-1.dex
-      #TODO find another way to append src.jack to the jack classpath
-      ${JACK}:src.jack ${JACK_ARGS} --output-dex . src-ex
-      zip $TEST_NAME-ex.jar classes.dex
-      # Restore previous "classes.dex" so it can be zipped.
-      mv classes-1.dex classes.dex
-  else
-    mkdir classes-ex
-    ${JAVAC} ${JAVAC_ARGS} -d classes-ex -cp classes `find src-ex -name '*.java'`
-    if [ ${NEED_DEX} = "true" ]; then
-      ${DX} -JXmx256m --debug --dex --dump-to=classes-ex.lst --output=classes-ex.dex \
-        --dump-width=1000 ${DX_FLAGS} classes-ex
+    # Jack toolchain
+    if [ "${HAS_SRC}" = "true" ]; then
+      if [ "${HAS_SRC_MULTIDEX}" = "true" ]; then
+        # Compile src and src-multidex in the same .jack file. We will apply multidex partitioning
+        # when creating the output .dex file.
+        ${JACK} ${JACK_ARGS} --output-jack src.jack src src src-multidex
+        jack_extra_args="${jack_extra_args} -D jack.dex.output.policy=minimal-multidex"
+        jack_extra_args="${jack_extra_args} -D jack.preprocessor=true"
+        jack_extra_args="${jack_extra_args} -D jack.preprocessor.file=multidex.jpp"
+      else
+        ${JACK} ${JACK_ARGS} --output-jack src.jack src
+      fi
+      jack_extra_args="${jack_extra_args} --import src.jack"
+    fi
 
-      # quick shuffle so that the stored name is "classes.dex"
-      mv classes.dex classes-1.dex
-      mv classes-ex.dex classes.dex
-      zip $TEST_NAME-ex.jar classes.dex
-      mv classes.dex classes-ex.dex
-      mv classes-1.dex classes.dex
+    if [ "${HAS_SRC2}" = "true" ]; then
+      ${JACK} ${JACK_ARGS} --output-jack src2.jack src2
+      # In case of duplicate classes, we want to take into account the classes from src2. Therefore
+      # we apply the 'keep-first' policy and import src2.jack file *before* the src.jack file.
+      jack_extra_args="${jack_extra_args} -D jack.import.type.policy=keep-first"
+      jack_extra_args="--import src2.jack ${jack_extra_args}"
+    fi
+
+    # Compile jack files into a DEX file.
+    if [ "${HAS_SRC}" = "true" ] || [ "${HAS_SRC2}" = "true" ]; then
+      ${JACK} ${JACK_ARGS} ${jack_extra_args} --output-dex .
+    fi
+  else
+    # Legacy toolchain with javac+dx
+    if [ "${HAS_SRC}" = "true" ]; then
+      mkdir classes
+      ${JAVAC} ${JAVAC_ARGS} -implicit:none -classpath src-multidex -d classes `find src -name '*.java'`
+    fi
+
+    if [ "${HAS_SRC_MULTIDEX}" = "true" ]; then
+      mkdir classes2
+      ${JAVAC} -implicit:none -classpath src -d classes2 `find src-multidex -name '*.java'`
+      if [ ${NEED_DEX} = "true" ]; then
+        ${DX} -JXmx256m --debug --dex --dump-to=classes2.lst --output=classes2.dex \
+          --dump-width=1000 ${DX_FLAGS} classes2
+      fi
+    fi
+
+    if [ "${HAS_SRC2}" = "true" ]; then
+      mkdir -p classes
+      ${JAVAC} ${JAVAC_ARGS} -d classes `find src2 -name '*.java'`
+    fi
+
+    if [ "${HAS_SRC}" = "true" ] || [ "${HAS_SRC2}" = "true" ]; then
+      if [ ${NEED_DEX} = "true" -a ${SKIP_DX_MERGER} = "false" ]; then
+        ${DX} -JXmx256m --debug --dex --dump-to=classes.lst --output=classes.dex \
+          --dump-width=1000 ${DX_FLAGS} classes
+      fi
     fi
   fi
-fi
+
+  if [ "${HAS_SMALI}" = "true" ]; then
+    # Compile Smali classes
+    ${SMALI} -JXmx512m ${SMALI_ARGS} --output smali_classes.dex `find smali -name '*.smali'`
+
+    # Don't bother with dexmerger if we provide our own main function in a smali file.
+    if [ ${SKIP_DX_MERGER} = "false" ]; then
+      ${DXMERGER} classes.dex classes.dex smali_classes.dex
+    else
+      mv smali_classes.dex classes.dex
+    fi
+  fi
+
+  if [ "${HAS_SMALI_MULTIDEX}" = "true" ]; then
+    # Compile Smali classes
+    ${SMALI} -JXmx512m ${SMALI_ARGS} --output smali_classes2.dex `find smali-multidex -name '*.smali'`
+
+    # Don't bother with dexmerger if we provide our own main function in a smali file.
+    if [ ${HAS_SRC_MULTIDEX} = "true" ]; then
+      ${DXMERGER} classes2.dex classes2.dex smali_classes2.dex
+    else
+      mv smali_classes2.dex classes2.dex
+    fi
+  fi
+
+
+  if [ ${HAS_SRC_EX} = "true" ]; then
+    if [ ${USE_JACK} = "true" ]; then
+        # Rename previous "classes.dex" so it is not overwritten.
+        mv classes.dex classes-1.dex
+        #TODO find another way to append src.jack to the jack classpath
+        ${JACK}:src.jack ${JACK_ARGS} --output-dex . src-ex
+        zip $TEST_NAME-ex.jar classes.dex
+        # Restore previous "classes.dex" so it can be zipped.
+        mv classes-1.dex classes.dex
+    else
+      mkdir classes-ex
+      ${JAVAC} ${JAVAC_ARGS} -d classes-ex -cp classes `find src-ex -name '*.java'`
+      if [ ${NEED_DEX} = "true" ]; then
+        ${DX} -JXmx256m --debug --dex --dump-to=classes-ex.lst --output=classes-ex.dex \
+          --dump-width=1000 ${DX_FLAGS} classes-ex
+
+        # quick shuffle so that the stored name is "classes.dex"
+        mv classes.dex classes-1.dex
+        mv classes-ex.dex classes.dex
+        zip $TEST_NAME-ex.jar classes.dex
+        mv classes.dex classes-ex.dex
+        mv classes-1.dex classes.dex
+      fi
+    fi
+  fi
 
 # Create a single jar with two dex files for multidex.
-if [ ${HAS_SRC_MULTIDEX} = "true" ] || [ ${HAS_SMALI_MULTIDEX} = "true" ]; then
-  zip $TEST_NAME.jar classes.dex classes2.dex
-elif [ ${NEED_DEX} = "true" ]; then
-  zip $TEST_NAME.jar classes.dex
+  if [ ${HAS_SRC_MULTIDEX} = "true" ] || [ ${HAS_SMALI_MULTIDEX} = "true" ]; then
+    zip $TEST_NAME.jar classes.dex classes2.dex
+  elif [ ${NEED_DEX} = "true" ]; then
+    zip $TEST_NAME.jar classes.dex
+  fi
+
 fi