2017-08-10 1 views
2

J'ai créé un nouveau projet de compositeur dans le mauvais serveur, je la structure de répertoire suivant:PHPUnit: Impossible d'ouvrir le fichier « filename.php » lors de l'exécution avec bootstrapping

PROJNAME (dir) 
    --PROJNAME.php (my project file) 
    tests (dir) 
    --PROJNAMETest.php 

que je suis en cours d'exécution de la commande suivante qui fonctionne sur le mauvais serveur:

vendor/bin/phpunit --bootstrap PROJNAME.php --testdox tests/ 

Mais après avoir déplacé les fichiers sur le serveur correct (en utilisant scp -r, suppression fournisseur dir, et faire installer le compositeur), je reçois l'erreur:

Cannot open file "PROJNAME.php". 

Cependant quand je cours sans --bootstrap PROJNAME.php, cela fonctionne sans erreurs! Je ne comprends pas ça.

suit est le contenu de PROJNAME.php:

<?php 

require 'vendor/autoload.php'; 


function DummyMethod(){ 
} 
?> 

Et pour les tests de fichiers/PROJNAMETest.php:

<?php 

require 'vendor/autoload.php'; 

use PHPUnit\Framework\TestCase; 

final class PROJNAMETest extends TestCase 
{ 

public function testDummyMethod() 
{ 
$this->assertEquals(true, true); 
} 
} 

Je signale également que les autorisations de fichiers ont le même aspect sur les deux machines :

-rw-r--r-- 1 root root 69 Aug 9 21:07 PROJNAME.php 

Depuis que je travaille avec l'utilisateur root, je ne vois pas les autorisations comme cause possible ..

Veuillez nous contacter ce qui pourrait l'amener à ...

Merci!

+0

Serveur «faux»? – hakre

Répondre

0

I get error:

Cannot open file "PROJNAME.php". 

et

However when I am running without --bootstrap PROJNAME.php, it works without errors! I don't understand this.

Le message d'erreur "Impossible de fichier ouvert ..." est par intention. Le message pourrait être lu comme:

Cannot open bootstrap file ...

Le bootstrap file est chargé avant presque tout le reste dans la suite de tests PHPUnit (s) et il est d'établir la configuration du projet nu minimum pour les tests. L'erreur montre simplement que le fichier bootstrap n'a pas pu être ouvert. Gardez à l'esprit que vous utilisez un chemin d'accès relatif au fichier d'amorçage. Vous devez donc veiller à ce que cette combinaison avec le répertoire de travail de (l'invocation du) lanceur de test puisse être correcte (lisible) bootstrap-fichier. Sauf si ce n'est pas le cas, vous verrez cette erreur. Cette erreur est intentionnellement btw., Ne pas être en mesure d'ouvrir le fichier bootstrap est quelque chose que vous voulez savoir. Connectez-vous simplement à votre serveur correct, accédez au répertoire du fichier d'amorçage et exécutez la suite de tests dans ce répertoire. Cela devrait fonctionner (à moins que le fichier ne puisse être ouvert par vous-même en tant qu'utilisateur dans le système de fichiers). Pour résoudre les différences système, créez un fichier (.dist) qui a un attribut pour le fichier bootstrap et exécutez la suite de tests avec ce fichier de configuration. Placez-le sous le contrôle de version pour que la configuration soit gérée et que la configuration soit plus définie et plus stable.

Mais d'abord découvrir pourquoi le fichier n'a pas pu être ouvert.

+0

Eh bien, aujourd'hui, je me suis reconnecté au serveur de développement, et ça marche, plus jamais une telle erreur! Je ne peux pas dire pourquoi .. peut-être re-connexion sur le serveur a mis quelques variables d'env, je ne sais pas ... @hakre: Pourriez-vous s'il vous plaît au moins expliquer la différence entre bootstrap "PROJNAME.php", et courir sans bootstrap? J'utilise ceci pour m'assurer que le fichier est chargé avant l'exécution des cas de test ... est-ce vraiment nécessaire? Après cela, je vais accepter votre réponse comme la solution je suppose :) – Carmageddon

+0

Voir le bootstrap comme un fichier d'inclusion PHP qui est inclus avant l'exécution de la suite de tests. Cela vous permet de configurer l'environnement PHP comme bon vous semble, par ex. initialiser les chargeurs automatiques, etc. Si vous n'avez pas besoin d'un fichier bootstrap (votre suite de tests fonctionne sans /), vous n'avez pas besoin de l'utiliser. Ne l'utilisez pas si vous n'en avez pas besoin pour pouvoir l'utiliser plus tard quand vous en avez besoin :) - Un cas d'utilisation courant est dans les projets compositeurs pour utiliser le fichier 'vendor/autoload.php' comme bootstrap . – hakre