1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.io; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.BufferedReader; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStreamReader; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Please note that this case can only be passed on Linux due to some file 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * system dependent reason. 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class UnixFileTest extends TestCase { 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean root = false; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private File testFile; 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private File testDir; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int TOTAL_SPACE_NUM = 0; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int FREE_SPACE_NUM = 1; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int USABLE_SPACE_NUM = 2; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class ConsoleResulter extends Thread { 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream is; 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String resStr; 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ConsoleResulter(Process p, InputStream in) { 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = p; 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes is = in; 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuffer result = new StringBuffer(); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes synchronized (result) { 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes BufferedReader br = new BufferedReader( 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new InputStreamReader(is)); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String line; 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while ((line = br.readLine()) != null) { 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result.append(line); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length() != 0) { 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes resStr = result.toString(); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes br.close(); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ioe) { 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = null; 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes synchronized (proc) { 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.notifyAll(); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static long getLinuxSpace(int index, File file) throws Exception { 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long[] result = new long[3]; 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String par = file.getAbsolutePath(); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String osName = System.getProperty("os.name"); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // in case the test case will run under other OS. 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (osName.toLowerCase().indexOf("linux") != -1) { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] cmd = new String[2]; 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd[0] = "df"; 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd[1] = par; // get the total space of file 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Runtime rt = Runtime.getRuntime(); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = rt.exec(cmd); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // get output from the command 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ConsoleResulter outputResult = new ConsoleResulter(proc, proc 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInputStream()); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes synchronized (proc) { 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes outputResult.start(); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.wait(); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If there is no error, obtain the result 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (outputResult.resStr != null) { 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exit the subprocess safely 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // filter unnecessary information 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] txtResult = outputResult.resStr 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .split("\\D|\\p{javaLowerCase}|\\p{javaUpperCase}"); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0, j = 0; i < txtResult.length; i++) { 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (txtResult[i].length() > 3) { 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result[j++] = Long.parseLong(txtResult[i]) * 1024L; 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // calculate free spaces according to df command 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result[1] = result[0] - result[1]; 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return result[index]; 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.File#canExecute() 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_canExecute() { 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canExecute()); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(true, false)); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canExecute()); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(true, true)); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canExecute()); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(false, false)); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canExecute()); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(false, true)); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canExecute()); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(true, false)); 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canExecute()); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // tests directory 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setExecutable(false, true)); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testDir.canExecute()); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setExecutable(true, false)); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.File#getFreeSpace() 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getFreeSpace() throws Exception { 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long fileSpace = getLinuxSpace(FREE_SPACE_NUM, testFile); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long dirSpace = getLinuxSpace(FREE_SPACE_NUM, testDir); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // in case we cannot fetch the value from command line 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (fileSpace > 0) { 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(fileSpace, testFile.getFreeSpace()); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (dirSpace > 0) { 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(dirSpace, testDir.getFreeSpace()); 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.File#getTotalSpace() 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getTotalSpace() throws Exception { 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long fileSpace = getLinuxSpace(TOTAL_SPACE_NUM, testFile); 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long dirSpace = getLinuxSpace(TOTAL_SPACE_NUM, testDir); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (fileSpace > 0) { 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(fileSpace, testFile.getTotalSpace()); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (dirSpace > 0) { 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(dirSpace, testDir.getTotalSpace()); 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.File#getUsableSpace() 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getUsableSpace() throws Exception { 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long fileSpace = getLinuxSpace(USABLE_SPACE_NUM, testFile); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long dirSpace = getLinuxSpace(USABLE_SPACE_NUM, testDir); 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (fileSpace > 0) { 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(fileSpace, testFile.getUsableSpace()); 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (dirSpace > 0) { 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(dirSpace, testDir.getUsableSpace()); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.File#setExecutable(boolean, boolean) 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setExecutableZZ() { 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // setExecutable(true, true/false) 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canExecute()); 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(true, false)); 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canExecute()); 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(true, true)); 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canExecute()); 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // setExecutable(false, true/false) 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(false, true)); 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canExecute()); 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canExecute()); 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(false, false)); 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canExecute()); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // tests directory 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setExecutable(false, true)); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testDir.canExecute()); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setExecutable(false, false)); 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testDir.canExecute()); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setExecutable(true, true)); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setExecutable(true, false)); 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.File#setExecutable(boolean) 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setExecutableZ() { 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // So far this method only deals with the situation that the user is the 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // owner of the file 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(true)); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canExecute()); 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(false)); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canExecute()); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setExecutable(true)); 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // tests directory 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setExecutable(false)); 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testDir.canExecute()); 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setExecutable(true)); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canExecute()); 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.File#setReadable(boolean, boolean) 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setReadableZZ() throws Exception { 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // setReadable(false, false/true) succeeds on Linux 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // However, canRead() always returns true when the user is 'root'. 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setReadable(false, false)); 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canRead()); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setReadable(false, true)); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canRead()); 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // tests directory, setReadable(false, true/false) 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canRead()); 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setReadable(false, true)); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canRead()); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testDir.canRead()); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setReadable(false, false)); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canRead()); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testDir.canRead()); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // setReadable(true, false/true) and set them in turn 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setReadable(true, false)); 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setReadable(false, true)); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canRead()); 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setReadable(true, true)); 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setReadable(false, true)); 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canRead()); 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // tests directory, setReadable(true, true/false) 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setReadable(true, false)); 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canRead()); 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setReadable(true, true)); 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canRead()); 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.File#setReadable(boolean) 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setReadableZ() { 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // So far this method only deals with the situation that the user is the 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // owner of the file. setReadable(false) succeeds on Linux 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // However, canRead() always returns true when the user is 'root'. 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setReadable(false)); 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testFile.canRead()); 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.setReadable(true)); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testFile.canRead()); 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canRead()); 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.setReadable(false)); 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (root) { 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(testDir.canRead()); 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(testDir.canRead()); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testFile = File.createTempFile("testfile", null); 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testDir = new File(System.getProperty("java.io.tmpdir") + "/temp"); 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testDir.exists()) { 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testDir.mkdir(); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes root = System.getProperty("user.name").equals("root"); 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testFile.delete(); 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testDir.delete(); 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testFile = null; 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testDir = null; 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes root = false; 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getCanonicalPath() throws IOException, 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InterruptedException { 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFolder1 = new File("folder1"); 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFolder1.mkdirs(); 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFolder1.deleteOnExit(); 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFolder2 = new File(tmpFolder1.toString() + "/folder2"); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFolder2.mkdirs(); 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFolder2.deleteOnExit(); 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFolder3 = new File(tmpFolder2.toString() + "/folder3"); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFolder3.mkdirs(); 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFolder3.deleteOnExit(); 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFolder4 = new File(tmpFolder3.toString() + "/folder4"); 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFolder4.mkdirs(); 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFolder4.deleteOnExit(); 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // make a link to folder1/folder2 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process ln = Runtime.getRuntime().exec("ln -s folder1/folder2 folder2"); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ln.waitFor(); 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File linkFile = new File("folder2"); 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes linkFile.deleteOnExit(); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File file = new File("folder2"); 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tmpFolder2.getCanonicalPath(), file.getCanonicalPath()); 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes file = new File("folder1/folder2"); 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tmpFolder2.getCanonicalPath(), file.getCanonicalPath()); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes file = new File("folder2/folder3"); 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tmpFolder3.getCanonicalPath(), file.getCanonicalPath()); 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes file = new File("folder2/folder3/folder4"); 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tmpFolder4.getCanonicalPath(), file.getCanonicalPath()); 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes file = new File("folder1/folder2/folder3"); 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tmpFolder3.getCanonicalPath(), file.getCanonicalPath()); 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes file = new File("folder1/folder2/folder3/folder4"); 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tmpFolder4.getCanonicalPath(), file.getCanonicalPath()); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 431