Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Atoum blocked #77

Closed
Blackhol3 opened this issue Jun 12, 2012 · 23 comments
Closed

Atoum blocked #77

Blackhol3 opened this issue Jun 12, 2012 · 23 comments

Comments

@Blackhol3
Copy link

Bonjour.

Atoum se bloque lorsqu'on appelle une fonction inexistante sur un objet d'une de ses classes. Par exemple, avec le code ci-dessous :

<?php
namespace essai\test\unit;

require_once 'Essai.php';
require_once 'atoum.phar';

class Essai extends \mageekguy\atoum\test
{
    public function testSimple()
    {
        // Ceci :
        $this->completyWrongFunctionName();

        // Ceci également :
        $this->assert->completyStupidFunctionName();
    }
}
?>

La sortie est la suivante :

php test/atoum.phar -f test/Essai.php -n

PHP path: XXX\WampServer\bin\php\php5.3.8\php.exe
PHP version:
=> PHP 5.3.8 (cli) (built: Sep 16 2011 21:28:32)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
essai\test\unit\Essai...
[.___________________________________________________________][0/1]

Et le script ne s'arrête pas.
La même chose se produit lors de l'utilisation de --testIt.

PHP 5.3.8
Windows 7

@mageekguy
Copy link
Contributor

Duplicate of #49.
Quelle version de atoum utilises-tu ?
As-tu le même problème en clonant le dépôt github ?

@Blackhol3
Copy link
Author

Même problème avec un clone du dépôt.
Version :

php test/atoum.phar -v
atoum version nightly-1149-201206111358 by Fr├®d├®ric Hardy (phar://XXX/test/atoum.phar)

Je n'en ai pas parlé dans #49 car l'utilisation de la branche "engine" n'avait aucun impact chez moi, contrairement à l'OP.

@mageekguy
Copy link
Contributor

Que se passe-t'il si tu mets successivement /** @engine inline */ et /** @engine isolate */ avant la déclaration de ta classe de test ?
Normalement, inline ne devrait pas bloquer.
Le problème vient soit de la lecture de l'état du sous-processus exécutant la méthode de test, soit de la lecture du flux d'erreur, et je pense qu'il est induit par un bug au niveau de PHP.
Si tu peux tester avec une version 5.4 ou supérieur, je suis donc intéressé par le résultat.

@Blackhol3
Copy link
Author

Rien de plus ne se passe avec /** @engine isolate /, mais tout fonctionne très bien lorsque j'utilise /* @engine inline */ (c'est-à-dire qu'Atoum ne se bloque plus).

De même, le problème est résolu avec PHP 5.4.3.
Merci :-) .

@mageekguy
Copy link
Contributor

le problème vient donc bien de PHP :/.
Tu étais en 5.3.8, pourrais-tu faire un test avec une ou plusieurs versions comprises entre 5.3.9 et 5.3.13 ?
Cela me permettrait de définir la version minimum nécessaire pour faire tourner atoum sous windows correctement.
Pour info, inline indique à atoum de ne pas exécuter les méthodes de test dans un processus indépendant.
Il n'y a donc plus d'isolation des tests, mais en contrepartie, ces derniers s'exécutent beaucoup plus rapidement.
Quand à ìsolate, c'est une méthode d'exécution intermédiaire entreinline` et celle par défaut.
Les méthodes de test sont exécutées dans un sous-processus, mais les une à la suite des autres, et non parallèlement comme avec la méthode par défaut.
Cette méthode permet de s'affranchir des problèmes de concurrence (race condition) mais c'est aussi la moins performante.

@Blackhol3
Copy link
Author

Petites précisions : php atoum.phar --testIt finit par se bloquer sur toutes les versions de PHP (5.3.8, 5.3.13 et 5.4.3). En revanche, il se bloque plus loin dans la série de tests sur les dernières versions.

Le code que j'ai donné, lui, ne se bloque plus dès PHP 5.3.9.

@mageekguy
Copy link
Contributor

Peux-tu essayer la dernière version du dépôt github, s'il te plaît ?
Un contributeur a trouvé un bug que j'ai résolue et qui pourrait être également la cause du problème qui nous occupe.
Merci d'avance.

@Blackhol3
Copy link
Author

Superbe, ça marche très bien ! Même le --testIt ne se bloque plus :) .

Par contre, il y a des erreurs et des exceptions dans le --testIt, les mêmes que celles rapportées ici.

@mageekguy
Copy link
Contributor

Peux-tu essayer à partir du commit a2d9dfe ?

@Blackhol3
Copy link
Author

Plus d'exceptions, uniquement des échecs :

Failure (140 tests, 1009/1009 methods, 7 failures, 0 error, 0 exception) !
There are 7 failures:
=> mageekguy\atoum\tests\units\iterators\recursives\atoum\source::testCurrent():

In file phar://XXX/test/atoum.phar/3/tests/units/classes/iterators/recursives/atoum/source.php on line 61, mageekguy\atoum\asserters\string::isEqualTo() failed: strings are not equals
-Reference
+Data
@@ -1 +1 @@
-string(28) "atoum://sourceDirectory/file"
+string(28) "atoum://sourceDirectory\file"
=> mageekguy\atoum\tests\units\iterators\recursives\atoum\source::testKey():
In file phar://XXX/test/atoum.phar/3/tests/units/classes/iterators/recursives/atoum/source.php on line 89, mageekguy\atoum\asserters\string::isEqualTo() failed: strings are not equals
-Reference
+Data
@@ -1 +1 @@
-string(28) "atoum://sourceDirectory/file"
+string(28) "atoum://sourceDirectory\file"
=> mageekguy\atoum\tests\units\report\fields\runner\coverage\html::testCleanDestinationDirectory():
In file phar://XXX/test/atoum.phar/3/tests/units/classes/report/fields/runner/coverage/html.php on line 233, mageekguy\atoum\asserters\adapter::once() failed: function unlink(string(49) "atoum://destinationDirectory/aDirectory/firstFile") is called 0 time instead of 1
[1] unlink(string(49) "atoum://destinationDirectory\aDirectory\firstFile")
[2] unlink(string(50) "atoum://destinationDirectory\aDirectory\secondFile")
[3] unlink(string(62) "atoum://destinationDirectory\anOtherDirectory\anOtherFirs
tFile")
[4] unlink(string(63) "atoum://destinationDirectory\anOtherDirectory\anOtherSeco
ndFile")
[5] unlink(string(34) "atoum://destinationDirectory\aFile")
=> mageekguy\atoum\tests\units\report\fields\runner\tests\uncompleted\cli::test__toString():
In file phar://XXX/test/atoum.phar/3/tests/units/classes/report/fields/runner/tests/uncompleted/cli.php on line 246, mageekguy\atoum\asserters\castToString::isEqualTo() failed: strings are not equals
-Reference
+Data
@@ -5 +5 @@
-output(27) "4fdb0876d4d5d
+output(28) "4fdb0876d4d5d
=> mageekguy\atoum\tests\units\scripts\builder\vcs\svn::testCleanWorkingDirectory():
In file phar://XXX/test/atoum.phar/3/tests/units/classes/scripts/builder/vcs/svn.php on line 385, mageekguy\atoum\asserters\adapter::once() failed: function unlink(string(45) "atoum://workingDirectory/aDirectory/firstFile") is called 0 time instead of 1
[1] unlink(string(45) "atoum://workingDirectory\aDirectory\firstFile")
[2] unlink(string(46) "atoum://workingDirectory\aDirectory\secondFile")
[3] unlink(string(58) "atoum://workingDirectory\anOtherDirectory\anOtherFirstFil
e")
[4] unlink(string(59) "atoum://workingDirectory\anOtherDirectory\anOtherSecondFi
le")
[5] unlink(string(30) "atoum://workingDirectory\aFile")
=> mageekguy\atoum\tests\units\scripts\phar\generator::testSetOriginDirectory():

In file phar://XXX/test/atoum.phar/3/tests/units/classes/scripts/phar/generator.php on line 92, mageekguy\atoum\asserters\string::isEqualTo() failed: strings are not equals
-Reference
+Data
@@ -1 +1 @@
-string(13) "4fdb0885bb460"
+string(14) "4fdb0885bb460/"
=> mageekguy\atoum\tests\units\scripts\phar\generator::testSetDestinationDirectory():
In file phar://XXX/test/atoum.phar/3/tests/units/classes/scripts/phar/generator.php on line 141, mageekguy\atoum\asserters\string::isEq
ualTo() failed: strings are not equals
-Reference
+Data
@@ -1 +1 @@
-string(13) "4fdb0885ca849"
+string(14) "4fdb0885ca849/"

@mageekguy
Copy link
Contributor

Peux-tu essayer avec la version 2a9d856 ?

@Blackhol3
Copy link
Author

Plus que 6 ;-) :

Failure (140 tests, 1009/1009 methods, 6 failures, 0 error, 0 exception) !
There are 6 failures:
=> mageekguy\atoum\tests\units\autoloader::testGetDirectories():
In file XXX\atoum\tests\units\classes\autoloader.php on line 19, mageekguy\atoum\asserters\phpArray::isEqualTo() failed: array(2)is not equal to array(1)
-Reference
+Data
@@ -1 +1 @@
-array(1) {
[0]=>
string(47) "XXX\atoum\classes"
}
+array(2) {
[0]=>
string(47) "XXX\atoum\classes"
[1]=>
string(47) "XXX\atoum/classes"
}
=> mageekguy\atoum\tests\units\iterators\recursives\atoum\source::testKey():
In file XXX\atoum\tests\units\classes\iterators\recursives\atoum\source.php on line 89, mageekguy\atoum\asserters\string::isEqualTo() failed: strings are not equals
-Reference
+Data
@@ -1 +1 @@
-string(28) "atoum://sourceDirectory/file"
+string(28) "atoum://sourceDirectory\file"
=> mageekguy\atoum\tests\units\report\fields\runner\coverage\html::testCleanDestinationDirectory():
In file XXX\atoum\tests\units\classes\report\fields\runner\coverage\html.php on line 233, mageekguy\atoum\asserters\adapter::once() failed: function unlink(string(49) "atoum:\destinationDirectory\aDirectory\firstFile") is called 0 time instead of 1
[1] unlink(string(49) "atoum://destinationDirectory\aDirectory\firstFile")
[2] unlink(string(50) "atoum://destinationDirectory\aDirectory\secondFile")
[3] unlink(string(62) "atoum://destinationDirectory\anOtherDirectory\anOtherFirstFile")
[4] unlink(string(63) "atoum://destinationDirectory\anOtherDirectory\anOtherSecondFile")
[5] unlink(string(34) "atoum://destinationDirectory\aFile")
=> mageekguy\atoum\tests\units\scripts\builder\vcs\svn::testCleanWorkingDirectory():
In file XXX\atoum\tests\units\classes\scripts\builder\vcs\svn.php on line 385, mageekguy\atoum\asserters\adapter::once() failed: function unlink(string(45) "atoum:\workingDirectory\aDirectory\firstFile") is called 0 time instead of 1
[1] unlink(string(45) "atoum://workingDirectory\aDirectory\firstFile")
[2] unlink(string(46) "atoum://workingDirectory\aDirectory\secondFile")
[3] unlink(string(58) "atoum://workingDirectory\anOtherDirectory\anOtherFirstFile")
[4] unlink(string(59) "atoum://workingDirectory\anOtherDirectory\anOtherSecondFile")
[5] unlink(string(30) "atoum://workingDirectory\aFile")
=> mageekguy\atoum\tests\units\scripts\phar\generator::testSetOriginDirectory():

In file XXX\atoum\tests\units\classes\scripts\phar\generator.php on line 92, mageekguy\atoum\asserters\string::isEqualTo() failed: strings are not equals
-Reference
+Data
@@ -1 +1 @@
-string(13) "4fdb179b55088"
+string(14) "4fdb179b55088/"
=> mageekguy\atoum\tests\units\scripts\phar\generator::testSetDestinationDirectory():
In file XXX\atoum\tests\units\classes\scripts\phar\generator.php on line 141, mageekguy\atoum\asserters\string::isEqualTo() failed: strings are not equals
-Reference
+Data
@@ -1 +1 @@
-string(13) "4fdb179b60a23"
+string(14) "4fdb179b60a23/"

@mageekguy
Copy link
Contributor

Encore une fois avec 86cb7ae ?

@Blackhol3
Copy link
Author

Qui a eu l'idée d'utiliser "" comme séparateur sous Windows, hein ^^ ? On y est presque :-) :

Failure (140 tests, 1009/1009 methods, 1 failure, 0 error, 0 exception) !
There is 1 failure:
=> mageekguy\atoum\tests\units\scripts\builder\vcs\svn::testCleanWorkingDirectory():
In file XXX\atoum\tests\units\classes\scripts\builder\vcs\svn.php on line 385, mageekguy\atoum\asserters\adapter::once() failed: function unlink(string(45) "atoum:\workingDirectory\aDirectory\firstFile") is called 0 time instead of 1
[1] unlink(string(45) "atoum://workingDirectory\aDirectory\firstFile")
[2] unlink(string(46) "atoum://workingDirectory\aDirectory\secondFile")
[3] unlink(string(58) "atoum://workingDirectory\anOtherDirectory\anOtherFirstFile")
[4] unlink(string(59) "atoum://workingDirectory\anOtherDirectory\anOtherSecondFile")
[5] unlink(string(30) "atoum://workingDirectory\aFile")

@mageekguy
Copy link
Contributor

Last try for today with commit afd633b

@Blackhol3
Copy link
Author

Le dernier, mais le bon :-) . Tout est en ordre, super boulot !

@mageekguy
Copy link
Contributor

A very very last : 2c6ea25

@Blackhol3
Copy link
Author

Ah ben non, c'est tout cassé maintenant :p :

Failure (140 tests, 1009/1009 methods, 2 failures, 0 error, 0 exception) !
There are 2 failures:
=> mageekguy\atoum\tests\units\report\fields\runner\coverage\html::testCleanDestinationDirectory():
In file XXX\atoum\tests\units\classes\report\fields\runner\coverage\html.php on line 233, mageekguy\atoum\asserters\adapter::once() failed: function unlink(string(49) "atoum://destinationDirectory/aDirectory/firstFile") is called 0 time instead of 1
[1] unlink(string(49) "atoum://destinationDirectory\aDirectory\firstFile")
[2] unlink(string(50) "atoum://destinationDirectory\aDirectory\secondFile")
[3] unlink(string(62) "atoum://destinationDirectory\anOtherDirectory\anOtherFirstFile")
[4] unlink(string(63) "atoum://destinationDirectory\anOtherDirectory\anOtherSecondFile")
[5] unlink(string(34) "atoum://destinationDirectory\aFile")
=> mageekguy\atoum\tests\units\scripts\builder\vcs\svn::testCleanWorkingDirectory():
In file XXX\atoum\tests\units\classes\scripts\builder\vcs\svn.php on line 385, mageekguy\atoum\asserters\adapter::once() failed: function unlink(string(45) "atoum://workingDirectory/aDirectory/firstFile") is called 0 time instead of 1
[1] unlink(string(45) "atoum://workingDirectory\aDirectory\firstFile")
[2] unlink(string(46) "atoum://workingDirectory\aDirectory\secondFile")
[3] unlink(string(58) "atoum://workingDirectory\anOtherDirectory\anOtherFirstFile")
[4] unlink(string(59) "atoum://workingDirectory\anOtherDirectory\anOtherSecondFile")
[5] unlink(string(30) "atoum://workingDirectory\aFile")

@mageekguy
Copy link
Contributor

Désolé, il faut vraiment que je pense à dormir : 89d3bb2

@Blackhol3
Copy link
Author

C'est plutôt moi qui suis désolé de t'empêcher de dormir, justement ^^ .
Tout va bien, tu peux aller te coucher l'esprit serein :) :

Success (140 tests, 1009/1009 methods, 16365 assertions, 0 error, 0 exception) !

@mageekguy
Copy link
Contributor

Merci à toi d'avoir accepter de m'aider en exécutant les tests sous Windows.

@b1nj
Copy link

b1nj commented Jun 15, 2012

Merci les gars. Moi qui pensais que le problème venait de moi.

@Blackhol3
Copy link
Author

Ce fichu antislash de Windows est à manier précautionneusement dans les regex, je suppose :

Failure (141 tests, 1032/1032 methods, 1 failure, 0 error, 0 exception) !
There is 1 failure:
=> mageekguy\atoum\tests\units\mock\stream::testGetSubStream():
In file phar://XXX/tests/units/classes/mock/stream.php on line 80, mageekguy\atoum\asserters\castToString::match() failed: string(35) 'atoum://4fe4a47954a41\4fe4a4795526b' does not match #^atoum://4fe4a47954a41[^]+$#

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants