Tests unitaires du plugin vs la suite de test complète de SPIP #4418

Closed
opened 10 months ago by cerdic · 1 comments
cerdic commented 10 months ago
Owner

On a donc depuis (très) longtemps une suite de test de SPIP
https://git.spip.net/spip/tests
qui fonctionne maintenant avec phpunit et prends en charge les problématique de "charger SPIP avant les tests unitaires" et "jouer les tests unitaires de chaque plugin" ceux-ci étant aussi basés sur phpunit

Exemple de Textwheel
https://git.spip.net/spip/textwheel/src/branch/master/tests/TextwheelPropreTest.php

Dans le cas des tests unitaires de archiviste, ils ont été écrits pour être lancés depuis le plugin et tourner de manière autonome (de fait, ces tests sont indépendants du reste de SPIP et peuvent s'en passer).

Mais du coup quand on lance tous les tests depuis tests/ les tests de archiviste plantent parce qu'il lui manque des classes

 ~/Sites/localhost/fraich40/tests/ [master*] vendor/bin/phpunit ../plugins-dist/archiviste/tests                                                                                                                           (master|✚2…1⚑1)
PHPUnit 9.5.10 by Sebastian Bergmann and contributors.

EESSS

Time: 00:00.010, Memory: 10.00 MB

There were 2 errors:

1) Spip\Archiver\Tests\AbstractArchiverTest::testConstructor
PHPUnit\Framework\MockObject\UnknownClassException: Class "Spip\Archiver\AbstractArchiver" does not exist

/Users/cedric/Sites/localhost/fraich40/plugins-dist/archiviste/tests/AbstractArchiverTest.php:20
/Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/phpunit:92

2) Spip\Archiver\Tests\SpipArchiverTest::testInformer
Error: Class 'Spip\Archiver\TarArchive' not found in /Users/cedric/Sites/localhost/fraich40/plugins-dist/archiviste/tests/SpipArchiverTest.php:34
Stack trace:
#0 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/Framework/TestSuite.php(622): Spip\Archiver\Tests\SpipArchiverTest::setUpBeforeClass()
#1 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/Framework/TestSuite.php(678): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#2 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(670): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#3 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/TextUI/Command.php(143): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\Framework\TestSuite), Array, Array, true)
#4 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/TextUI/Command.php(96): PHPUnit\TextUI\Command->run(Array, true)
#5 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/phpunit(92): PHPUnit\TextUI\Command::main()
#6 {main}
ERRORS!
Tests: 20, Assertions: 0, Errors: 2, Skipped: 3.

De fait on appel pas l'autoloader généré par composer dans le plugin archiviste.

On peut patcher facilement avec

~/Sites/localhost/fraich40/plugins-dist/archiviste/ [master*] git diff tests/                                                                                                                                                 (master|✚3)
diff --git a/tests/AbstractArchiverTest.php b/tests/AbstractArchiverTest.php
index 541f61d..0645aeb 100644
--- a/tests/AbstractArchiverTest.php
+++ b/tests/AbstractArchiverTest.php
@@ -5,6 +5,8 @@ namespace Spip\Archiver\Tests;
 use PHPUnit\Framework\TestCase;
 use Spip\Archiver\AbstractArchiver;

+include_spip('inc/archives');
+
 /**
  * @covers \Spip\Archiver\AbstractArchiver
  *
diff --git a/tests/SpipArchiverTest.php b/tests/SpipArchiverTest.php
index e27e496..5da01e2 100644
--- a/tests/SpipArchiverTest.php
+++ b/tests/SpipArchiverTest.php
@@ -5,6 +5,8 @@ namespace Spip\Archiver\Tests;
 use PHPUnit\Framework\TestCase;
 use Spip\Archiver\SpipArchiver;

+include_spip('inc/archives');
+
 /**
  * @covers \Spip\Archiver\AbstractArchiver
  * @covers \Spip\Archiver\SpipArchiver

Mais alors les tests unitaires ne s'executent plus quand on les lance depuis le plugin car SPIP n'est pas chargé et include_spip n'est pas connue.

On a donc depuis (très) longtemps une suite de test de SPIP https://git.spip.net/spip/tests qui fonctionne maintenant avec phpunit et prends en charge les problématique de "charger SPIP avant les tests unitaires" et "jouer les tests unitaires de chaque plugin" ceux-ci étant aussi basés sur phpunit Exemple de Textwheel https://git.spip.net/spip/textwheel/src/branch/master/tests/TextwheelPropreTest.php Dans le cas des tests unitaires de archiviste, ils ont été écrits pour être lancés depuis le plugin et tourner de manière autonome (de fait, ces tests sont indépendants du reste de SPIP et peuvent s'en passer). Mais du coup quand on lance tous les tests depuis tests/ les tests de archiviste plantent parce qu'il lui manque des classes ```  ~/Sites/localhost/fraich40/tests/ [master*] vendor/bin/phpunit ../plugins-dist/archiviste/tests (master|✚2…1⚑1) PHPUnit 9.5.10 by Sebastian Bergmann and contributors. EESSS Time: 00:00.010, Memory: 10.00 MB There were 2 errors: 1) Spip\Archiver\Tests\AbstractArchiverTest::testConstructor PHPUnit\Framework\MockObject\UnknownClassException: Class "Spip\Archiver\AbstractArchiver" does not exist /Users/cedric/Sites/localhost/fraich40/plugins-dist/archiviste/tests/AbstractArchiverTest.php:20 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/phpunit:92 2) Spip\Archiver\Tests\SpipArchiverTest::testInformer Error: Class 'Spip\Archiver\TarArchive' not found in /Users/cedric/Sites/localhost/fraich40/plugins-dist/archiviste/tests/SpipArchiverTest.php:34 Stack trace: #0 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/Framework/TestSuite.php(622): Spip\Archiver\Tests\SpipArchiverTest::setUpBeforeClass() #1 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/Framework/TestSuite.php(678): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult)) #2 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(670): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult)) #3 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/TextUI/Command.php(143): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\Framework\TestSuite), Array, Array, true) #4 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/src/TextUI/Command.php(96): PHPUnit\TextUI\Command->run(Array, true) #5 /Users/cedric/Sites/localhost/fraich40/tests/vendor/phpunit/phpunit/phpunit(92): PHPUnit\TextUI\Command::main() #6 {main} ERRORS! Tests: 20, Assertions: 0, Errors: 2, Skipped: 3. ``` De fait on appel pas l'autoloader généré par composer dans le plugin archiviste. On peut patcher facilement avec ``` ~/Sites/localhost/fraich40/plugins-dist/archiviste/ [master*] git diff tests/ (master|✚3) diff --git a/tests/AbstractArchiverTest.php b/tests/AbstractArchiverTest.php index 541f61d..0645aeb 100644 --- a/tests/AbstractArchiverTest.php +++ b/tests/AbstractArchiverTest.php @@ -5,6 +5,8 @@ namespace Spip\Archiver\Tests; use PHPUnit\Framework\TestCase; use Spip\Archiver\AbstractArchiver; +include_spip('inc/archives'); + /** * @covers \Spip\Archiver\AbstractArchiver * diff --git a/tests/SpipArchiverTest.php b/tests/SpipArchiverTest.php index e27e496..5da01e2 100644 --- a/tests/SpipArchiverTest.php +++ b/tests/SpipArchiverTest.php @@ -5,6 +5,8 @@ namespace Spip\Archiver\Tests; use PHPUnit\Framework\TestCase; use Spip\Archiver\SpipArchiver; +include_spip('inc/archives'); + /** * @covers \Spip\Archiver\AbstractArchiver * @covers \Spip\Archiver\SpipArchiver ``` Mais alors les tests unitaires ne s'executent plus quand on les lance depuis le plugin car SPIP n'est pas chargé et include_spip n'est pas connue.
Poster
Owner

On s'en tire donc avec un

~/Sites/localhost/fraich40/plugins-dist/archiviste/ [master*] git diff tests/                                                                                                                                                 (master|✚3)
diff --git a/tests/AbstractArchiverTest.php b/tests/AbstractArchiverTest.php
index 541f61d..b5a2464 100644
--- a/tests/AbstractArchiverTest.php
+++ b/tests/AbstractArchiverTest.php
@@ -5,6 +5,11 @@ namespace Spip\Archiver\Tests;
 use PHPUnit\Framework\TestCase;
 use Spip\Archiver\AbstractArchiver;

+// si on lance les tests depuis tests/
+if (function_exists('include_spip')) {
+	include_spip('inc/archives');
+}
+
 /**
  * @covers \Spip\Archiver\AbstractArchiver
  *
diff --git a/tests/SpipArchiverTest.php b/tests/SpipArchiverTest.php
index e27e496..f22f2a2 100644
--- a/tests/SpipArchiverTest.php
+++ b/tests/SpipArchiverTest.php
@@ -5,6 +5,11 @@ namespace Spip\Archiver\Tests;
 use PHPUnit\Framework\TestCase;
 use Spip\Archiver\SpipArchiver;

+// si on lance les tests depuis tests/
+if (function_exists('include_spip')) {
+	include_spip('inc/archives');
+}
+
 /**
  * @covers \Spip\Archiver\AbstractArchiver
  * @covers \Spip\Archiver\SpipArchiver

qui permet à la suite de test de fonctionner dans les 2 situations

On s'en tire donc avec un ``` ~/Sites/localhost/fraich40/plugins-dist/archiviste/ [master*] git diff tests/ (master|✚3) diff --git a/tests/AbstractArchiverTest.php b/tests/AbstractArchiverTest.php index 541f61d..b5a2464 100644 --- a/tests/AbstractArchiverTest.php +++ b/tests/AbstractArchiverTest.php @@ -5,6 +5,11 @@ namespace Spip\Archiver\Tests; use PHPUnit\Framework\TestCase; use Spip\Archiver\AbstractArchiver; +// si on lance les tests depuis tests/ +if (function_exists('include_spip')) { + include_spip('inc/archives'); +} + /** * @covers \Spip\Archiver\AbstractArchiver * diff --git a/tests/SpipArchiverTest.php b/tests/SpipArchiverTest.php index e27e496..f22f2a2 100644 --- a/tests/SpipArchiverTest.php +++ b/tests/SpipArchiverTest.php @@ -5,6 +5,11 @@ namespace Spip\Archiver\Tests; use PHPUnit\Framework\TestCase; use Spip\Archiver\SpipArchiver; +// si on lance les tests depuis tests/ +if (function_exists('include_spip')) { + include_spip('inc/archives'); +} + /** * @covers \Spip\Archiver\AbstractArchiver * @covers \Spip\Archiver\SpipArchiver ``` qui permet à la suite de test de fonctionner dans les 2 situations
cerdic closed this issue 10 months ago
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.