// Copyright (C) 2003, Red Hat, Inc. // Copyright (C) 2004, Mark Wielaard <mark@klomp.org> // // This file is part of Mauve. // // Mauve is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2, or (at your option) // any later version. // // Mauve is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Mauve; see the file COPYING. If not, write to // the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA. // // Tags: JDK1.2 package gnu.testlet.wonka.io.FilePermission; import gnu.testlet.*; import java.io.FilePermission; import java.security.Permissions; public class simple implements Testlet { public void test(TestHarness harness) { harness.setclass("java.io.FilePermission"); // Test for a classpath regression. Permissions p = new Permissions(); // (The following used to use the bogus action "nothing" ... but // the JDK 1.4.2 javadoc makes it clear that only actions "read", // "write", "execute" and "delete" are recognized. And the JDK // 1.4.2 implementation throws IllegalArgumentException for an // unrecognized action.) p.add(new FilePermission("/tmp/p", "read")); p.add(new FilePermission("/tmp/p", "read")); // Classpath didn't handle dirs without a file separator correctly FilePermission fp1 = new FilePermission("/tmp", "read"); harness.check(fp1.implies(fp1)); // Test the constructor's checking of its arguments. harness.checkPoint("constructor file arg checking"); try { harness.check(new FilePermission(null, "read") == null); } catch (java.lang.NullPointerException ex) { harness.check(true); } harness.checkPoint("constructor action checking (simple)"); harness.check(new FilePermission("/tmp/p", "read") != null); harness.check(new FilePermission("/tmp/p", "write") != null); harness.check(new FilePermission("/tmp/p", "execute") != null); harness.check(new FilePermission("/tmp/p", "delete") != null); harness.checkPoint("constructor action checking (lists)"); harness.check(new FilePermission("/tmp/p", "read,delete") != null); harness.check(new FilePermission("/tmp/p", "read,read") != null); harness.check(new FilePermission("/tmp/p", "read,read,read") != null); harness.checkPoint("constructor action checking (case)"); harness.check(new FilePermission("/tmp/p", "Read,DELETE") != null); harness.check(new FilePermission("/tmp/p", "rEAD") != null); harness.checkPoint("constructor action checking(underspecified)"); harness.check(new FilePermission("/tmp/p", " read ") != null); harness.check(new FilePermission("/tmp/p", "read, read") != null); harness.check(new FilePermission("/tmp/p", "read ,read") != null); harness.checkPoint("constructor action checking(bad actions)"); try { harness.check(new FilePermission("/tmp/p", null) == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } try { harness.check(new FilePermission("/tmp/p", "") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } try { harness.check(new FilePermission("/tmp/p", " ") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } try { harness.check(new FilePermission("/tmp/p", "foo") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } try { harness.check(new FilePermission("/tmp/p", "nothing") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } harness.checkPoint("constructor action checking(bad action lists)"); try { harness.check(new FilePermission("/tmp/p", ",") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } // The following case fails under JDK 1.4.2. IMO, its a bug. // [CG 20111031] That may be Mark, but I'm suppressing the test. /* try { harness.check(new FilePermission("/tmp/p", ",read") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } */ try { harness.check(new FilePermission("/tmp/p", "read,") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } try { harness.check(new FilePermission("/tmp/p", "read,,read") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } harness.checkPoint("constructor action checking(wierd stuff)"); try { harness.check(new FilePermission("/tmp/p", "read read") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } try { harness.check(new FilePermission("/tmp/p", "read\nread") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } try { harness.check(new FilePermission("/tmp/p", "read;read") == null); } catch (java.lang.IllegalArgumentException ex) { harness.check(true); } } }