From 4fbbc994f364556a184b0669dd4953f11df1bdf6 Mon Sep 17 00:00:00 2001
From: Matthieu Marcillaud <marcimat@rezo.net>
Date: Sat, 8 Jul 2023 15:46:27 +0200
Subject: [PATCH] tests: Tentative de correction de CacheSessionTest
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Il faut nettoyer le cache sinon ça ne retourne pas des résultats cohérents
d’un coup à l’autre sur le `testVerifierCaptureMajInvalideurs` data #1
(1 ou 2 erreurs retournées = calcule 1 ou 2 caches selon).

On essaie de faire de s’assurer que le cache est vide au départ.

Cependant il y a parfois un autre problème, c’est que dans certains cas (?)
le dossier_squelettes spécifique n’est pas appliqué. Ce n’est pas systématique,
et a priori jamais si on lance uniquement ce fichier de test.
---
 tests/Squelettes/Cache/CacheSessionTest.php | 22 +++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/tests/Squelettes/Cache/CacheSessionTest.php b/tests/Squelettes/Cache/CacheSessionTest.php
index 0abd64b95..ab583deb3 100644
--- a/tests/Squelettes/Cache/CacheSessionTest.php
+++ b/tests/Squelettes/Cache/CacheSessionTest.php
@@ -11,17 +11,35 @@ use Spip\Test\SquelettesTestCase;
 class CacheSessionTest extends SquelettesTestCase
 {
 	private static array $errors = [];
+	private static string $squelettes;
 
 	public static function setUpBeforeClass(): void {
-		$GLOBALS['dossier_squelettes'] = self::relativePath(__DIR__ . '/data/squelettes');
+		self::$squelettes = self::relativePath(__DIR__ . '/data/squelettes');
+		$GLOBALS['dossier_squelettes'] = self::$squelettes;
 		$GLOBALS['delais'] = 3600; // See boostrap.php qui met delais = 0 (inhibe le cache)
+		include_spip('inc/invalideur');
+		purger_repertoire(_DIR_CACHE . 'calcul/', ['subdir' => true]);
+	}
+
+	public static function tearDownAfterClass(): void {
+		$GLOBALS['dossier_squelettes'] = '';
+		$GLOBALS['delais'] = 0;
 	}
 
 	protected function setUp(): void {
 		$this->resetErrors();
 	}
 
+	public function testVerifierPathMajInvalideurs(): void {
+		$this->assertEquals(self::$squelettes, $GLOBALS['dossier_squelettes'] ?? null);
+		$this->assertTrue(file_exists(__DIR__ . '/data/squelettes/inc/maj_invalideurs.php'));
+		$this->assertNotFalse(find_in_path('inc/maj_invalideurs.php'));
+		$this->assertNotFalse(include_spip('inc/maj_invalideurs'));
+		$this->assertEquals('inc_maj_invalideurs', charger_fonction('maj_invalideurs', 'inc', true));
+	}
+
 	/** Vérifier qu’on sait attraper les données de cache */
+	#[Depends('testVerifierPathMajInvalideurs')]
 	#[DataProvider('providerVerifierCaptureMajInvalideurs')]
 	public function testVerifierCaptureMajInvalideurs(int $expectedCountErrors, string $squelette, bool $session_attendue): void {
 		$this->runWithSquelette($squelette, $session_attendue);
@@ -31,7 +49,7 @@ class CacheSessionTest extends SquelettesTestCase
 	public static function providerVerifierCaptureMajInvalideurs(): array {
 		return [
 			[0, 'inclure/A_session_wo', false],
-			[1, 'inclure/A_session_wo', true],
+			[2, 'inclure/A_session_wo', true],
 			[2, 'inclure/A_session_w', false],
 			[0, 'inclure/A_session_w', true],
 		];
-- 
GitLab