diff options
author | 2016-03-22 08:32:34 +0100 | |
---|---|---|
committer | 2016-03-22 11:23:52 +0100 | |
commit | b9131b191567e984a5f3a1d125b36014b67b47b6 (patch) | |
tree | 64a6416592c7ec32611adff4d8e6e4bd4145128c | |
parent | 1a9018ba74841ac507b96f0e0dd6b86b22778ca6 (diff) |
Update run-test 097-duplicate-method
Runs the test with a precompiled classes.dex and re-enables it.
We need to build a dex file with duplicate methods. We cannot do that
with Jack (this is invalid) or smali (it does not keep duplicate
methods, only one is in the dex). Therefore, having a precompiled
dex file allows to run the test on whatever toolchain.
In the future, we could update the test if a tool allows to generate
it again.
Change-Id: I3803aa0c2e99ca61d58b36e088d9bbe199e07d3c
-rw-r--r-- | test/097-duplicate-method/build | 36 | ||||
-rw-r--r-- | test/097-duplicate-method/classes.dex | bin | 0 -> 920 bytes | |||
-rw-r--r-- | test/097-duplicate-method/info.txt | 5 | ||||
-rw-r--r-- | test/097-duplicate-method/src/Main.java | 28 | ||||
-rw-r--r-- | test/097-duplicate-method/src/Test.j | 29 | ||||
-rw-r--r-- | test/097-duplicate-method/src/Test.java | 24 | ||||
-rw-r--r-- | test/Android.run-test.mk | 2 |
7 files changed, 5 insertions, 119 deletions
diff --git a/test/097-duplicate-method/build b/test/097-duplicate-method/build deleted file mode 100644 index 4525549905..0000000000 --- a/test/097-duplicate-method/build +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2012 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 - -mkdir classes - -if [ ${USE_JACK} = "true" ]; then - ${JACK} --output-jack src.jack src - - ${JASMIN} -d classes src/*.j - jar cf jasmin.jill.jar -C classes . - - # We set jack.import.type.policy=keep-first to consider class definitions from jasmin first. - ${JACK} --import jasmin.jill.jar --import src.jack -D jack.import.type.policy=keep-first --output-dex . -else - ${JAVAC} -d classes src/*.java - ${JASMIN} -d classes src/*.j - - ${DX} --debug --dex --dump-to=classes.lst --output=classes.dex classes -fi -zip $TEST_NAME.jar classes.dex diff --git a/test/097-duplicate-method/classes.dex b/test/097-duplicate-method/classes.dex Binary files differnew file mode 100644 index 0000000000..18f8958cdc --- /dev/null +++ b/test/097-duplicate-method/classes.dex diff --git a/test/097-duplicate-method/info.txt b/test/097-duplicate-method/info.txt index 4e7e0eebb1..ed0daeda9e 100644 --- a/test/097-duplicate-method/info.txt +++ b/test/097-duplicate-method/info.txt @@ -1,2 +1,7 @@ This is a test to verify that duplicate methods in a dex file are handled properly (all but the first are ignored). + +We need to build a dex file with duplicate methods. We cannot do that +with Jack (this is invalid) or smali (it does not keep duplicate +methods, only one is in the dex). Therefore, having a precompiled +dex file allows to run the test on whatever toolchain. diff --git a/test/097-duplicate-method/src/Main.java b/test/097-duplicate-method/src/Main.java deleted file mode 100644 index bb3d36ad5b..0000000000 --- a/test/097-duplicate-method/src/Main.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -/** - * Certain class files generated by smali can have encoded methods with an - * identical method_idx. In these cases, the behavior should be to only use the - * first one, and to ignore all following duplicates. - */ -public class Main { - public static void main(String args[]) { - if (Test.run() != null) { - System.out.println("Success!"); - } - } -} diff --git a/test/097-duplicate-method/src/Test.j b/test/097-duplicate-method/src/Test.j deleted file mode 100644 index f96a9a3062..0000000000 --- a/test/097-duplicate-method/src/Test.j +++ /dev/null @@ -1,29 +0,0 @@ -; Copyright (C) 2012 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. - -.class Test -.super java/lang/Object - -.method public static run()Ljava/lang/Object; - .limit stack 2 - new java/lang/Object - dup - invokespecial java/lang/Object/<init>()V - areturn -.end method - -.method public static run()Ljava/lang/Object; - aconst_null - areturn -.end method diff --git a/test/097-duplicate-method/src/Test.java b/test/097-duplicate-method/src/Test.java deleted file mode 100644 index 7dd61e6928..0000000000 --- a/test/097-duplicate-method/src/Test.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -/** - * This class and method will be overwritten by smali to return non-null. - */ -public class Test { - public static Object run() { - return null; - } -} diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk index 30f1d78f2d..2097256eac 100644 --- a/test/Android.run-test.mk +++ b/test/Android.run-test.mk @@ -221,11 +221,9 @@ ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES), $(IMAGE_TYPES), $(PICTEST_TYPES), $(DEBUGGABLE_TYPES), $(ART_TEST_RUN_TEST_SKIP), $(ALL_ADDRESS_SIZES)) -# Disable 097-duplicate-method while investigation (broken by latest Jack release, b/27358065) # Disable 137-cfi (b/27391690). # Disable 577-profile-foreign-dex (b/27454772). TEST_ART_BROKEN_ALL_TARGET_TESTS := \ - 097-duplicate-method \ 577-profile-foreign-dex \ ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ |