Merge "Add API version to forward compatibility test name"
diff --git a/tests/java_api/RSTestBackward19/Android.mk b/tests/java_api/RSTestBackward19/Android.mk
index 4351487..25e4ddf 100644
--- a/tests/java_api/RSTestBackward19/Android.mk
+++ b/tests/java_api/RSTestBackward19/Android.mk
@@ -27,7 +27,8 @@
 LOCAL_MIN_SDK_VERSION := 17
 LOCAL_PACKAGE_NAME := RSTestBackward19
 my_rs_unit_tests_path := ../RSUnitTests/src/com/android/rs/unittest
-LOCAL_SRC_FILES := $(call all-java-files-under,src)\
+LOCAL_SRC_FILES :=\
+    $(call all-java-files-under,src)\
     $(my_rs_unit_tests_path)/UnitTest.java\
     $(my_rs_unit_tests_path)/UT_alloc.java\
     $(my_rs_unit_tests_path)/alloc.rs\
diff --git a/tests/java_api/RSTestForward/21.1.2/Android.mk b/tests/java_api/RSTestForward/21.1.2/Android.mk
index 3eae46f..390650e 100644
--- a/tests/java_api/RSTestForward/21.1.2/Android.mk
+++ b/tests/java_api/RSTestForward/21.1.2/Android.mk
@@ -35,7 +35,9 @@
 LOCAL_RENDERSCRIPT_CC := $(my_rs_path)/bin/llvm-rs-cc
 LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE := $(my_rs_path)/include $(my_rs_path)/clang-include
 my_rs_path :=
-LOCAL_SRC_FILES := $(call all-java-files-under,../src)\
+LOCAL_SRC_FILES :=\
+    $(call all-java-files-under,../src)\
+    $(call all-java-files-under,src)\
     $(my_rs_unit_tests_path)/UnitTest.java\
     $(my_rs_unit_tests_path)/UT_alloc.java\
     $(my_rs_unit_tests_path)/alloc.rs\
diff --git a/tests/java_api/RSTestForward/21.1.2/src/RSForwardVersion.java b/tests/java_api/RSTestForward/21.1.2/src/RSForwardVersion.java
new file mode 100644
index 0000000..ed8b126
--- /dev/null
+++ b/tests/java_api/RSTestForward/21.1.2/src/RSForwardVersion.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+package com.android.rs.testforward;
+
+public class RSForwardVersion {
+    public static final String VERSION = "21";
+}
diff --git a/tests/java_api/RSTestForward/22.0.1/Android.mk b/tests/java_api/RSTestForward/22.0.1/Android.mk
index 1426561..93dbfa2 100644
--- a/tests/java_api/RSTestForward/22.0.1/Android.mk
+++ b/tests/java_api/RSTestForward/22.0.1/Android.mk
@@ -35,7 +35,9 @@
 LOCAL_RENDERSCRIPT_CC := $(my_rs_path)/bin/llvm-rs-cc
 LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE := $(my_rs_path)/include $(my_rs_path)/clang-include
 my_rs_path :=
-LOCAL_SRC_FILES := $(call all-java-files-under,../src)\
+LOCAL_SRC_FILES :=\
+    $(call all-java-files-under,../src)\
+    $(call all-java-files-under,src)\
     $(my_rs_unit_tests_path)/UnitTest.java\
     $(my_rs_unit_tests_path)/UT_alloc.java\
     $(my_rs_unit_tests_path)/alloc.rs\
diff --git a/tests/java_api/RSTestForward/22.0.1/src/RSForwardVersion.java b/tests/java_api/RSTestForward/22.0.1/src/RSForwardVersion.java
new file mode 100644
index 0000000..7b2b662
--- /dev/null
+++ b/tests/java_api/RSTestForward/22.0.1/src/RSForwardVersion.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+package com.android.rs.testforward;
+
+public class RSForwardVersion {
+    public static final String VERSION = "22";
+}
diff --git a/tests/java_api/RSTestForward/23.0.3/Android.mk b/tests/java_api/RSTestForward/23.0.3/Android.mk
index c59780c..43b60cd 100644
--- a/tests/java_api/RSTestForward/23.0.3/Android.mk
+++ b/tests/java_api/RSTestForward/23.0.3/Android.mk
@@ -35,7 +35,9 @@
 LOCAL_RENDERSCRIPT_CC := $(my_rs_path)/bin/llvm-rs-cc
 LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE := $(my_rs_path)/include $(my_rs_path)/clang-include
 my_rs_path :=
-LOCAL_SRC_FILES := $(call all-java-files-under,../src)\
+LOCAL_SRC_FILES :=\
+    $(call all-java-files-under,../src)\
+    $(call all-java-files-under,src)\
     $(my_rs_unit_tests_path)/UnitTest.java\
     $(my_rs_unit_tests_path)/UT_alloc.java\
     $(my_rs_unit_tests_path)/alloc.rs\
diff --git a/tests/java_api/RSTestForward/23.0.3/src/RSForwardVersion.java b/tests/java_api/RSTestForward/23.0.3/src/RSForwardVersion.java
new file mode 100644
index 0000000..3961e15
--- /dev/null
+++ b/tests/java_api/RSTestForward/23.0.3/src/RSForwardVersion.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+package com.android.rs.testforward;
+
+public class RSForwardVersion {
+    public static final String VERSION = "23";
+}
diff --git a/tests/java_api/RSTestForward/24.0.3/Android.mk b/tests/java_api/RSTestForward/24.0.3/Android.mk
index c63c69b..828c44f 100644
--- a/tests/java_api/RSTestForward/24.0.3/Android.mk
+++ b/tests/java_api/RSTestForward/24.0.3/Android.mk
@@ -35,7 +35,9 @@
 LOCAL_RENDERSCRIPT_CC := $(my_rs_path)/bin/llvm-rs-cc
 LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE := $(my_rs_path)/include $(my_rs_path)/clang-include
 my_rs_path :=
-LOCAL_SRC_FILES := $(call all-java-files-under,../src)\
+LOCAL_SRC_FILES :=\
+    $(call all-java-files-under,../src)\
+    $(call all-java-files-under,src)\
     $(my_rs_unit_tests_path)/UnitTest.java\
     $(my_rs_unit_tests_path)/UT_alloc.java\
     $(my_rs_unit_tests_path)/alloc.rs\
diff --git a/tests/java_api/RSTestForward/24.0.3/src/RSForwardVersion.java b/tests/java_api/RSTestForward/24.0.3/src/RSForwardVersion.java
new file mode 100644
index 0000000..10ab197
--- /dev/null
+++ b/tests/java_api/RSTestForward/24.0.3/src/RSForwardVersion.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+package com.android.rs.testforward;
+
+public class RSForwardVersion {
+    public static final String VERSION = "24";
+}
diff --git a/tests/java_api/RSTestForward/25.0.2/Android.mk b/tests/java_api/RSTestForward/25.0.2/Android.mk
index 1a30f73..1fde2cd 100644
--- a/tests/java_api/RSTestForward/25.0.2/Android.mk
+++ b/tests/java_api/RSTestForward/25.0.2/Android.mk
@@ -35,7 +35,9 @@
 LOCAL_RENDERSCRIPT_CC := $(my_rs_path)/bin/llvm-rs-cc
 LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE := $(my_rs_path)/include $(my_rs_path)/clang-include
 my_rs_path :=
-LOCAL_SRC_FILES := $(call all-java-files-under,../src)\
+LOCAL_SRC_FILES :=\
+    $(call all-java-files-under,../src)\
+    $(call all-java-files-under,src)\
     $(my_rs_unit_tests_path)/UnitTest.java\
     $(my_rs_unit_tests_path)/UT_alloc.java\
     $(my_rs_unit_tests_path)/alloc.rs\
diff --git a/tests/java_api/RSTestForward/25.0.2/src/RSForwardVersion.java b/tests/java_api/RSTestForward/25.0.2/src/RSForwardVersion.java
new file mode 100644
index 0000000..e9e05b7
--- /dev/null
+++ b/tests/java_api/RSTestForward/25.0.2/src/RSForwardVersion.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+package com.android.rs.testforward;
+
+public class RSForwardVersion {
+    public static final String VERSION = "25";
+}
diff --git a/tests/java_api/RSTestForward/src/com/android/rs/testforward/RSForwardCompatibilityTests.java b/tests/java_api/RSTestForward/src/com/android/rs/testforward/RSForwardCompatibilityTests.java
index 61f084f..f403018 100644
--- a/tests/java_api/RSTestForward/src/com/android/rs/testforward/RSForwardCompatibilityTests.java
+++ b/tests/java_api/RSTestForward/src/com/android/rs/testforward/RSForwardCompatibilityTests.java
@@ -46,7 +46,7 @@
     /**
      * Returns the list of subclasses of UnitTest to run.
      */
-    @Parameters(name = "{0}")
+    @Parameters(name = "ForwardVersion" + RSForwardVersion.VERSION + ":{0}")
     public static Iterable<?> getParams() throws Exception {
         Context ctx = InstrumentationRegistry.getTargetContext();
 
diff --git a/tests/java_api/RSTest_CompatLib19/Android.mk b/tests/java_api/RSTest_CompatLib19/Android.mk
index 9f28cd9..8c78825 100644
--- a/tests/java_api/RSTest_CompatLib19/Android.mk
+++ b/tests/java_api/RSTest_CompatLib19/Android.mk
@@ -33,7 +33,8 @@
 LOCAL_MIN_SDK_VERSION := 8
 
 my_rs_unit_tests_path := ../RSUnitTests/supportlibsrc_gen/com/android/rs/unittest
-LOCAL_SRC_FILES := $(call all-java-files-under,src)\
+LOCAL_SRC_FILES :=\
+    $(call all-java-files-under,src)\
     $(my_rs_unit_tests_path)/UnitTest.java\
     $(my_rs_unit_tests_path)/UT_alloc.java\
     $(my_rs_unit_tests_path)/alloc.rs\
diff --git a/tests/java_api/RSUnitTests/RSUnitTests.py b/tests/java_api/RSUnitTests/RSUnitTests.py
index feba45a..e63afb1 100644
--- a/tests/java_api/RSUnitTests/RSUnitTests.py
+++ b/tests/java_api/RSUnitTests/RSUnitTests.py
@@ -198,7 +198,7 @@
   )
 
 
-def WriteMakeSrcFiles(gen_file, api_version, src_dir='src',
+def WriteMakeSrcFiles(gen_file, api_version, src_dirs=['src'],
                       use_build_tools_version=False):
   """Writes applicable LOCAL_SRC_FILES to gen_file.
 
@@ -217,23 +217,21 @@
                                   test_version >= UNIT_TEST_TOOLS_VERSIONS[x])]
   tests = sorted(tests)
   gen_file.write(
-      'LOCAL_SRC_FILES := $(call all-java-files-under,{})\\\n'
-      '    $(my_rs_unit_tests_path)/UnitTest.java\\\n'.format(
-          src_dir
-      )
+      'LOCAL_SRC_FILES :=\\\n'
+  )
+  for src_dir in src_dirs:
+    gen_file.write('    $(call all-java-files-under,{})\\\n'.format(src_dir))
+
+  gen_file.write(
+      '    $(my_rs_unit_tests_path)/UnitTest.java\\\n'.format(src_dir)
   )
   for test in tests:
     # Add the Java and corresponding rs files to LOCAL_SRC_FILES
     gen_file.write(
-        '    $(my_rs_unit_tests_path)/{}\\\n'
-        .format(JavaFileForUnitTest(test))
+        '    $(my_rs_unit_tests_path)/{}\\\n'.format(JavaFileForUnitTest(test))
     )
     for rs_file in RSFilesForUnitTest(test):
-      gen_file.write(
-          '    $(my_rs_unit_tests_path)/{}\\\n'.format(
-              rs_file
-          )
-      )
+      gen_file.write('    $(my_rs_unit_tests_path)/{}\\\n'.format(rs_file))
 
 
 # ---------- Java file generation ----------
@@ -440,6 +438,11 @@
                       build_tool_version_name)
 
 
+def ForwardJavaSrcLocation(build_tool_version_name):
+  """Returns location of src directory for forward compatibility testing."""
+  return os.path.join(ForwardDirLocation(build_tool_version_name), 'src')
+
+
 def ForwardMakefileLocation(build_tool_version_name):
   """Returns the location of the Makefile for forward compatibility testing."""
   return os.path.join(ForwardDirLocation(build_tool_version_name),
@@ -452,7 +455,14 @@
                       'AndroidManifest.xml')
 
 
+def ForwardJavaApiVersionLocation(build_tool_version_name):
+  """Returns Java version file location for forward compatibility testing."""
+  return os.path.join(ForwardJavaSrcLocation(build_tool_version_name),
+                      'RSForwardVersion.java')
+
+
 def WriteForwardAndroidManifest(gen_file, package):
+  """Writes forward compatibility AndroidManifest.xml to gen_file."""
   gen_file.write(
       '<?xml version="1.0" encoding="utf-8"?>\n'
       '<!-- Copyright (C) 2017 The Android Open Source Project\n'
@@ -491,6 +501,17 @@
   )
 
 
+def WriteForwardToolsVersion(gen_file, version):
+  """Writes forward compatibility Java class with tools version as String."""
+  WriteJavaCopyright(gen_file)
+  gen_file.write(
+      'package com.android.rs.testforward;\n\n'
+      'public class RSForwardVersion {{\n'
+      '    public static final String VERSION = "{}";\n'
+      '}}\n'.format(version)
+  )
+
+
 def WriteForwardMakefile(gen_file, build_tool_version, build_tool_version_name):
   """Writes the Makefile for forward compatibility testing.
 
@@ -522,7 +543,7 @@
           build_tool_version_name, make_target_name, build_tool_version_name
       )
   )
-  WriteMakeSrcFiles(gen_file, build_tool_version, '../src', True)
+  WriteMakeSrcFiles(gen_file, build_tool_version, ['../src', 'src'], True)
   gen_file.write(
       '\n'
       'include $(BUILD_PACKAGE)\n\n'
@@ -550,6 +571,7 @@
     build_tool_version_name = BUILD_TOOL_VERSIONS[build_tool_version]
     if not os.path.exists(ForwardDirLocation(build_tool_version_name)):
       os.mkdir(ForwardDirLocation(build_tool_version_name))
+      os.mkdir(ForwardJavaSrcLocation(build_tool_version_name))
     with open(ForwardMakefileLocation(build_tool_version_name), 'w') as gen_file:
       WriteForwardMakefile(gen_file, build_tool_version, build_tool_version_name)
     print ('Generated forward compatibility Makefile at {}'
@@ -559,6 +581,10 @@
       WriteForwardAndroidManifest(gen_file, package)
     print ('Generated forward compatibility AndroidManifest.xml at {}'
            .format(ForwardAndroidManifestLocation(build_tool_version_name)))
+    with open(ForwardJavaApiVersionLocation(build_tool_version_name), 'w') as gen_file:
+      WriteForwardToolsVersion(gen_file, build_tool_version)
+    print ('Generated forward compatibility RSForwardVersion.java at {}'
+           .format(ForwardJavaApiVersionLocation(build_tool_version_name)))
   with open(ForwardMakeTargetsLocation(), 'w') as gen_file:
     WriteForwardMakeTargets(gen_file)
   print ('Generated forward compatibility targets at {}'