Commit:    580251a04904cbff6d2be1c5dc3917ce94c249fa
Author:    Allen Truong <v-alt...@microsoft.com>         Thu, 21 Mar 2019 
14:39:28 -0700
Committer: Anatol Belski <a...@php.net>      Fri, 29 Mar 2019 10:23:11 +0100
Parents:   bd4281cbd61344ebc09102f2a2de226d3f796dfa
Branches:  master

Link:       
http://git.php.net/?p=pftt2.git;a=commitdiff;h=580251a04904cbff6d2be1c5dc3917ce94c249fa

Log:
Fix for issue #2 and resolved "Could not load file" error.

Updated with suggestions for issue #2

Updated for issue #2. Moved code around and normalized paths if tool is running 
on windows machine

Bugs:
https://bugs.php.net/2

Changed paths:
  M  src/com/mostc/pftt/host/Host.java
  M  src/com/mostc/pftt/main/PfttMain.java
  M  src/com/mostc/pftt/model/core/PhptTestCase.java


Diff:
diff --git a/src/com/mostc/pftt/host/Host.java 
b/src/com/mostc/pftt/host/Host.java
index fb7a5c9..edecc47 100644
--- a/src/com/mostc/pftt/host/Host.java
+++ b/src/com/mostc/pftt/host/Host.java
@@ -39,24 +39,32 @@ public abstract class Host {
        public abstract boolean equals(Object o);
        
        public boolean isSafePath(String path) {
-               if (path.equals(getJobWorkDir()))
-                       // can't delete /php-sdk
-                       return false;
                String pftt_dir = getPfttDir();
-               if (path.startsWith(pftt_dir)) {
-                       // don't delete anything in PFTT dir unless its in 
cache/working
-                       if (!path.startsWith(pftt_dir+"/cache/working/"))
-                               return false;
-               }
+               String job_work_dir = getJobWorkDir();
+
                if (isWindows()) {
+                       path = path.toLowerCase().replace("\\", "/");
+                       pftt_dir = pftt_dir.toLowerCase().replace("\\", "/");
+                       job_work_dir = job_work_dir.toLowerCase().replace("\\", 
"/");
+
                        // don't mess with windows
-                       if (path.equals(getSystemDrive()+"\\Windows"))
+                       if 
(path.equals(getSystemDrive().toLowerCase()+"/windows"))
                                return false;
                } else {
                        // these dirs aren't safe to mess with
                        if 
(path.startsWith("/usr/")||path.startsWith("/var/")||path.startsWith("/lib/")||path.startsWith("/sbin/")||path.startsWith("/boot/"))
                                return false;
                }
+
+               if (path.equals(job_work_dir))
+                       // can't delete /php-sdk
+                       return false;
+
+               if (path.startsWith(pftt_dir)) {
+                       // don't delete anything in PFTT dir unless it is in 
job_work
+                       if (!path.startsWith(job_work_dir))
+                               return false;
+               }
                return true;
        }
        
diff --git a/src/com/mostc/pftt/main/PfttMain.java 
b/src/com/mostc/pftt/main/PfttMain.java
index 2ef2672..941163e 100644
--- a/src/com/mostc/pftt/main/PfttMain.java
+++ b/src/com/mostc/pftt/main/PfttMain.java
@@ -353,7 +353,7 @@ public class PfttMain {
                System.out.println(" == Commands ==");
                table = new AlignedTable(2, 85)
                        .addRow("core_all <build[,build2]> <test-pack>", "runs 
all tests in given test pack")
-                       .addRow("core_named <build> <test-pack> <test name 
fragment>", "runs named tests or tests matching name pattern")
+                       .addRow("core_named <build> <test-pack> <test name 
fragment>", "runs named tests or tests matching name pattern. Test name 
fragment is path from test-pack root to test file")
                        .addRow("core_list <build[,build2]> <test-pack> 
<file>", "runs list of tests stored in file")
                        .addRow("app_all <build[,build2]>", "runs all 
application tests specified in a Scenario config file against build")
                        .addRow("app_named <build[,build2]> <test name 
fragment>", "runs named application tests (tests specified in a Scenario config 
file)")
diff --git a/src/com/mostc/pftt/model/core/PhptTestCase.java 
b/src/com/mostc/pftt/model/core/PhptTestCase.java
index 51d8758..2712846 100644
--- a/src/com/mostc/pftt/model/core/PhptTestCase.java
+++ b/src/com/mostc/pftt/model/core/PhptTestCase.java
@@ -767,6 +767,16 @@ public class PhptTestCase extends TestCase {
                        return ext_name;
                
                String[] parts = name.split("/");
+
+               try {
+                       ext_name = parts[1];
+               } catch (ArrayIndexOutOfBoundsException e) {
+                       System.err.println(e);
+                       System.err.println("Extension name not found.");
+                       System.err.println("Make sure <test fragment> argument 
is (folder in test-pack dir)/.../test.phpt");
+                       System.exit(0);
+               }
+
                return ext_name = parts[1];
        }

Reply via email to