2016-04-08 20 views
1

Vielleicht bekomme ich nichts, aber ich konnte nirgends finden, wie man das Ausführungsverzeichnis für ein bestimmtes Ziel ändert.Wie ändert man das Ausführungsverzeichnis in Phing?

Hier ist mein Setup:

project 
│ composer.json 
│ build.xml 
└───htdocs 
    │ phpunit.xml 
    ├───app 
    │ │ bootstrap.php 
    │ │ ... 

Ich bin mit phing aus dem Projektordner, aber aufgrund der Besonderheiten in PHPUnit Bootstrap, ich brauche getcwd() in bootstrap.php zu htdocs zu lösen.

Derzeit habe ich versucht, exec mit cd im Inneren hinzuzufügen - aber das scheint nicht zu funktionieren.

<target name="phpunit" description="Run unit tests" depends="install"> 
    <!-- move to app root before running tests --> 
    <exec logoutput="true" command="cd ${app}" /> 
    <phpunit haltonfailure="false" 
      haltonerror="false" 
      printsummary="true" 
      codecoverage="true"> 
     <formatter type="xml" todir="${project.basedir}/build/logs"/> 
    </phpunit> 
    <!-- Move back to project root --> 
    <exec logoutput="true" command="cd ${project.basedir}" /> 
</target> 

Gibt es ein solches Konzept in Phing (um aktuelle Dir zu ändern)? Oder gibt es eine andere mögliche Lösung, um zu ändern, wie getcwd() im Bootstrap des phpunit funktioniert?

Antwort

1

Sie können versuchen, phing von htdocs mit

phing -f ../build.xml phpunit 

Geben Sie für dieses build.xml Beispiel auszuführen:

<project name="Test" basedir="." default="list"> 
    <target name="list"> 
     <getcwd /> 
    </target> 

<adhoc-task name="getcwd"><![CDATA[ 
     class GetcwdTask extends Task { 
      function main() { 
       print(getcwd()); 
      } 
     } 
    ]]></adhoc-task> 
</project> 
+1

Danke, das ist ein gutes Beispiel für im Großen und Ganzen zu denken und Beheben des Problems durch den Zugriff auf aus einem anderen Blickwinkel :) Upvoted, aber vielleicht weiß jemand tatsächlich, wie man das Switching-Verzeichnis löst, wenn es nötig ist, verschiedene Root-Verzeichnisse für verschiedene Ziele zu haben –

+0

-Doproject.basedir =/any/dir, aber dann getcwd() immer zurück/any/dir – corretge