diff options
author | Paul Duffin <paulduffin@google.com> | 2019-02-15 12:58:26 +0000 |
---|---|---|
committer | Paul Duffin <paulduffin@google.com> | 2019-03-01 10:39:16 +0000 |
commit | 997fa461978f87fc2d9c444213b24ef56c29e7e4 (patch) | |
tree | e7b1b7cf97bd3bf9af9b14d3f022def90fb24d34 /test-base | |
parent | 3e15c9f9ba6b36fbbd919805a898700ed16d8e47 (diff) |
Switch android.test and junit classes to use UnsupportedAppUsage
The UnsupportedAppUsage annotations could not be added directly to the
java files in src/ as they have to be built against the current api
which does not include the annotation. Instead this uses the same
technique as used for libcore/ojluni files and adds the annotations to
stub files (in hiddenapi/src) which are built as part of the
android.test.base-hiddenapi target. That target is added to a special
whitelist in build/soong/java/config/config.go which causes the
hiddenapi information to be extracted from the target.
Also, updates the preupload check to prevent anymore entries being
added to the config/hiddenapi-greylist.txt for android.test or junit
classes.
Bug: 73711752
Test: m cts-hiddenapi_flags-csv and check that it contained the
correct entries even though they had been removed from
config/hiddenapi-greylist.txt
Change-Id: Ifaf15d2751f54cb03f8402b866a0ee4da7acc4d2
Diffstat (limited to 'test-base')
5 files changed, 218 insertions, 0 deletions
diff --git a/test-base/hiddenapi/Android.bp b/test-base/hiddenapi/Android.bp new file mode 100644 index 000000000000..c4e0fab4a1a8 --- /dev/null +++ b/test-base/hiddenapi/Android.bp @@ -0,0 +1,29 @@ +// +// Copyright (C) 2019 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. +// + +// Provided solely to contribute information about which hidden parts of the android.test.base +// library are used by apps. The source files are stubs of the actual files in ../src which use the +// UnsupportedAppUsage annotation to tag those methods that are accessible via the hiddenapi. +// Relies on the convention that modules with name <x>-hiddenapi provide hiddenapi information for +// module <x> that is on the bootclasspath. +java_library { + name: "android.test.base-hiddenapi", + compile_dex: true, + + srcs: ["src/**/*.java"], + + libs: ["android.test.base"], +} diff --git a/test-base/hiddenapi/src/android/test/AndroidTestCase.java b/test-base/hiddenapi/src/android/test/AndroidTestCase.java new file mode 100644 index 000000000000..2b9beb160110 --- /dev/null +++ b/test-base/hiddenapi/src/android/test/AndroidTestCase.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2019 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 android.test; + +import android.annotation.UnsupportedAppUsage; +import android.content.Context; + +import junit.framework.TestCase; + +/** + * @deprecated Stub only + */ +@SuppressWarnings({ "unchecked", "deprecation", "all" }) +@Deprecated +public class AndroidTestCase extends TestCase { + + /** + * Stub only + */ + @UnsupportedAppUsage + public void setTestContext(Context context) { + throw new RuntimeException("Stub!"); + } + + /** + * Stub only + */ + @UnsupportedAppUsage + public Context getTestContext() { + throw new RuntimeException("Stub!"); + } +} diff --git a/test-base/hiddenapi/src/android/test/InstrumentationTestCase.java b/test-base/hiddenapi/src/android/test/InstrumentationTestCase.java new file mode 100644 index 000000000000..139cd18a176c --- /dev/null +++ b/test-base/hiddenapi/src/android/test/InstrumentationTestCase.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2019 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 android.test; + +import android.annotation.UnsupportedAppUsage; + +import junit.framework.TestCase; + +import java.lang.reflect.Method; + +/** + * @deprecated Stub only + */ +@SuppressWarnings({ "unchecked", "deprecation", "all" }) +@Deprecated +public class InstrumentationTestCase extends TestCase { + + /** + * Stub only + */ + @UnsupportedAppUsage + private void runMethod(Method runMethod, int tolerance) throws Throwable { + throw new RuntimeException("Stub!"); + } +} diff --git a/test-base/hiddenapi/src/junit/framework/TestCase.java b/test-base/hiddenapi/src/junit/framework/TestCase.java new file mode 100644 index 000000000000..5a5486108a7a --- /dev/null +++ b/test-base/hiddenapi/src/junit/framework/TestCase.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2019 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 junit.framework; + +import android.annotation.UnsupportedAppUsage; + +/** + * Stub only + */ +@SuppressWarnings({ "unchecked", "deprecation", "all" }) +public abstract class TestCase extends Assert implements Test { + + /** + * the name of the test case + */ + @UnsupportedAppUsage + private String fName; + + /** + * Stub only + */ + public int countTestCases() { + throw new RuntimeException("Stub!"); + } + + /** + * Stub only + */ + public void run(TestResult result) { + throw new RuntimeException("Stub!"); + } +} diff --git a/test-base/hiddenapi/src/junit/framework/TestSuite.java b/test-base/hiddenapi/src/junit/framework/TestSuite.java new file mode 100644 index 000000000000..368c661dbfa4 --- /dev/null +++ b/test-base/hiddenapi/src/junit/framework/TestSuite.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2019 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 junit.framework; + +import android.annotation.UnsupportedAppUsage; + +import java.lang.reflect.Method; + +/** + * Stub only + */ +@SuppressWarnings({ "unchecked", "deprecation", "all" }) +public class TestSuite implements Test { + + /** + * Stub only + */ + @UnsupportedAppUsage + private boolean isPublicTestMethod(Method m) { + throw new RuntimeException("Stub!"); + } + + /** + * Stub only + */ + @UnsupportedAppUsage + private boolean isTestMethod(Method m) { + throw new RuntimeException("Stub!"); + } + + /** + * Stub only + */ + public int countTestCases() { + throw new RuntimeException("Stub!"); + } + + /** + * Stub only + */ + public void run(TestResult result) { + throw new RuntimeException("Stub!"); + } +} |