summaryrefslogtreecommitdiffstats
path: root/test/042-new-instance
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2012-01-31 19:18:51 -0800
committerElliott Hughes <enh@google.com>2012-01-31 19:20:20 -0800
commit741b5b7ef4c7fd4a786364bbf60d515489caff47 (patch)
treee5d5f9ee5c1fb1c177c453985eeb1242e3d73bf7 /test/042-new-instance
parent09cc2d39b3073ab0c613a9f660983e781693d958 (diff)
downloadart-741b5b7ef4c7fd4a786364bbf60d515489caff47.tar.gz
art-741b5b7ef4c7fd4a786364bbf60d515489caff47.tar.bz2
art-741b5b7ef4c7fd4a786364bbf60d515489caff47.zip
Manually merge my AOSP update to the VM tests.
Original change: https://android-review.googlesource.com/32051 Bug: http://code.google.com/p/android/issues/detail?id=21599 Bug: http://code.google.com/p/android/issues/detail?id=21597 Change-Id: I31e440b66b720647afab54ca39fd6eb1bbb0cb60
Diffstat (limited to 'test/042-new-instance')
-rw-r--r--test/042-new-instance/expected.txt1
-rw-r--r--test/042-new-instance/src/Main.java21
-rw-r--r--test/042-new-instance/src/otherpackage/PackageAccess.java23
3 files changed, 43 insertions, 2 deletions
diff --git a/test/042-new-instance/expected.txt b/test/042-new-instance/expected.txt
index 53447db2b6..bb1b80c122 100644
--- a/test/042-new-instance/expected.txt
+++ b/test/042-new-instance/expected.txt
@@ -6,3 +6,4 @@ Cons LocalClass failed as expected
Cons LocalClass2 succeeded
Cons got expected PackageAccess complaint
Cons got expected InstantationException
+Cons got expected PackageAccess2 complaint
diff --git a/test/042-new-instance/src/Main.java b/test/042-new-instance/src/Main.java
index 8faef1349f..e43c5a5680 100644
--- a/test/042-new-instance/src/Main.java
+++ b/test/042-new-instance/src/Main.java
@@ -16,12 +16,12 @@
import java.lang.reflect.Constructor;
-import java.lang.reflect.Constructor;
-
/**
* Test instance creation.
*/
public class Main {
+ private static boolean FULL_ACCESS_CHECKS = false; // b/5861201
+
public static void main(String[] args) {
testClassNewInstance();
testConstructorNewInstance();
@@ -98,6 +98,7 @@ public class Main {
Constructor cons = c.getConstructor(new Class[0] /*(Class[])null*/);
System.err.println("ERROR: Cons PackageAccess succeeded unexpectedly");
} catch (NoSuchMethodException nsme) {
+ // constructor isn't public
System.out.println("Cons got expected PackageAccess complaint");
} catch (Exception ex) {
System.err.println("Cons got unexpected PackageAccess failure");
@@ -117,6 +118,22 @@ public class Main {
System.err.println("Cons got unexpected MaybeAbstract failure");
ex.printStackTrace();
}
+
+ // should fail
+ try {
+ Class c = Class.forName("otherpackage.PackageAccess2");
+ Constructor cons = c.getConstructor((Class[]) null);
+ if (!FULL_ACCESS_CHECKS) { throw new IllegalAccessException(); }
+ Object obj = cons.newInstance();
+ System.err.println("ERROR: Cons PackageAccess2 succeeded unexpectedly");
+ } catch (IllegalAccessException iae) {
+ // constructor is public, but class has package scope
+ System.out.println("Cons got expected PackageAccess2 complaint");
+ } catch (Exception ex) {
+ System.err.println("Cons got unexpected PackageAccess2 failure");
+ ex.printStackTrace();
+ }
+
}
}
diff --git a/test/042-new-instance/src/otherpackage/PackageAccess.java b/test/042-new-instance/src/otherpackage/PackageAccess.java
index 0749d67922..f4541f20c7 100644
--- a/test/042-new-instance/src/otherpackage/PackageAccess.java
+++ b/test/042-new-instance/src/otherpackage/PackageAccess.java
@@ -1,6 +1,29 @@
+/*
+ * Copyright (C) 2007 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 otherpackage;
class PackageAccess {
/*package*/ PackageAccess() {
+ System.out.println("created PackageAccess");
+ }
+}
+
+class PackageAccess2 {
+ public PackageAccess2() {
+ System.out.println("created PackageAccess2");
}
}