From e8c815da12d9747e1a9e6827d5163ff765849898 Mon Sep 17 00:00:00 2001
From: Matthieu Marcillaud <marcimat@rezo.net>
Date: Tue, 11 Jul 2023 14:46:56 +0200
Subject: [PATCH] tests: tests de xml 'hack' en phpunit

---
 ecrire/tests/Xml/XmlHackTest.php              | 39 ++++++++++++++
 ecrire/tests/Xml/data/xmlhack.html            |  2 +
 ecrire/tests/Xml/data/xmlhack_inclure.html    |  1 +
 .../xml => Xml/data}/xmlhack_inclure_dyn.html |  0
 .../data}/xmlhack_inclure_dyn_php.html        |  0
 .../xml => Xml/data}/xmlhack_inclure_php.html |  0
 ecrire/tests/Xml/data/xmlhack_php.html        |  2 +
 ecrire/tests/legacy/unit/xml/xmlhack.html     | 14 -----
 .../legacy/unit/xml/xmlhack_fonctions.php     |  5 --
 .../legacy/unit/xml/xmlhack_inclure.html      |  1 -
 ecrire/tests/legacy/unit/xml/xmlhack_php.html | 14 -----
 .../legacy/unit/xml/xmlhack_php_fonctions.php |  5 --
 .../unit/xml/xmlhack_recuperer_fond.php       | 53 -------------------
 13 files changed, 44 insertions(+), 92 deletions(-)
 create mode 100644 ecrire/tests/Xml/XmlHackTest.php
 create mode 100644 ecrire/tests/Xml/data/xmlhack.html
 create mode 100644 ecrire/tests/Xml/data/xmlhack_inclure.html
 rename ecrire/tests/{legacy/unit/xml => Xml/data}/xmlhack_inclure_dyn.html (100%)
 rename ecrire/tests/{legacy/unit/xml => Xml/data}/xmlhack_inclure_dyn_php.html (100%)
 rename ecrire/tests/{legacy/unit/xml => Xml/data}/xmlhack_inclure_php.html (100%)
 create mode 100644 ecrire/tests/Xml/data/xmlhack_php.html
 delete mode 100644 ecrire/tests/legacy/unit/xml/xmlhack.html
 delete mode 100644 ecrire/tests/legacy/unit/xml/xmlhack_fonctions.php
 delete mode 100644 ecrire/tests/legacy/unit/xml/xmlhack_inclure.html
 delete mode 100644 ecrire/tests/legacy/unit/xml/xmlhack_php.html
 delete mode 100644 ecrire/tests/legacy/unit/xml/xmlhack_php_fonctions.php
 delete mode 100644 ecrire/tests/legacy/unit/xml/xmlhack_recuperer_fond.php

diff --git a/ecrire/tests/Xml/XmlHackTest.php b/ecrire/tests/Xml/XmlHackTest.php
new file mode 100644
index 0000000000..80ea872246
--- /dev/null
+++ b/ecrire/tests/Xml/XmlHackTest.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Spip\Test\Xml;
+
+use PHPUnit\Framework\Attributes\DataProvider;
+use Spip\Test\SquelettesTestCase;
+
+/**
+ * Le hack xml repère dans le squelette la sequence "< ?xml"
+ * et évite de l'éxecuter en php
+ */
+class XmlHackTest extends SquelettesTestCase
+{
+	#[DataProvider('providerXmlIsNotPhp')]
+	public function testXmlIsNotPhp(string $squelette): void {
+		$skel = $this->relativePath(__DIR__ . '/data/' . $squelette);
+		$out = recuperer_fond($skel, [], [
+			'raw' => true,
+			'trim' => true
+		]);
+		$this->assertEmpty($out['erreur'] ?? null);
+		$this->assertNotEmpty($out['texte']);
+		$xml = simplexml_load_string($out['texte']);
+		$this->assertOk((string) $xml[0]);
+	}
+
+	public static function providerXmlIsNotPhp(): array {
+		return [
+			['xmlhack'],
+			['xmlhack_php'],
+			['xmlhack_inclure'],
+			['xmlhack_inclure_php'],
+			['xmlhack_inclure_dyn'],
+			['xmlhack_inclure_dyn_php'],
+		];
+	}
+}
diff --git a/ecrire/tests/Xml/data/xmlhack.html b/ecrire/tests/Xml/data/xmlhack.html
new file mode 100644
index 0000000000..8d90939bae
--- /dev/null
+++ b/ecrire/tests/Xml/data/xmlhack.html
@@ -0,0 +1,2 @@
+<?xml version="1.0"[ encoding="(#CHARSET)"]?>
+<tag>OK</tag>
diff --git a/ecrire/tests/Xml/data/xmlhack_inclure.html b/ecrire/tests/Xml/data/xmlhack_inclure.html
new file mode 100644
index 0000000000..950b7e8edf
--- /dev/null
+++ b/ecrire/tests/Xml/data/xmlhack_inclure.html
@@ -0,0 +1 @@
+[(#INCLURE{fond=#DOSSIER_SQUELETTE/xmlhack})]
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack_inclure_dyn.html b/ecrire/tests/Xml/data/xmlhack_inclure_dyn.html
similarity index 100%
rename from ecrire/tests/legacy/unit/xml/xmlhack_inclure_dyn.html
rename to ecrire/tests/Xml/data/xmlhack_inclure_dyn.html
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack_inclure_dyn_php.html b/ecrire/tests/Xml/data/xmlhack_inclure_dyn_php.html
similarity index 100%
rename from ecrire/tests/legacy/unit/xml/xmlhack_inclure_dyn_php.html
rename to ecrire/tests/Xml/data/xmlhack_inclure_dyn_php.html
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack_inclure_php.html b/ecrire/tests/Xml/data/xmlhack_inclure_php.html
similarity index 100%
rename from ecrire/tests/legacy/unit/xml/xmlhack_inclure_php.html
rename to ecrire/tests/Xml/data/xmlhack_inclure_php.html
diff --git a/ecrire/tests/Xml/data/xmlhack_php.html b/ecrire/tests/Xml/data/xmlhack_php.html
new file mode 100644
index 0000000000..b771fb9c95
--- /dev/null
+++ b/ecrire/tests/Xml/data/xmlhack_php.html
@@ -0,0 +1,2 @@
+<?xml version="1.0"[ encoding="(#CHARSET)"]?>
+<tag><?php echo 'OK'; ?></tag>
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack.html b/ecrire/tests/legacy/unit/xml/xmlhack.html
deleted file mode 100644
index 839ecf4701..0000000000
--- a/ecrire/tests/legacy/unit/xml/xmlhack.html
+++ /dev/null
@@ -1,14 +0,0 @@
-[(#REM)
-
-	le hack xml repere dans le squelette la sequence "< ?xml"
-	et evite de l'executer en php
-
-]
-
-#CACHE{0}<!--
-filtre:spip_xml_parse
-filtre:reset
-filtre:reset
--->
-<?xml version="1.0"[ encoding="(#CHARSET)"]?>
-<tag>OK</tag>
\ No newline at end of file
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack_fonctions.php b/ecrire/tests/legacy/unit/xml/xmlhack_fonctions.php
deleted file mode 100644
index f53060ed3c..0000000000
--- a/ecrire/tests/legacy/unit/xml/xmlhack_fonctions.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-include_spip('inc/xml');
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack_inclure.html b/ecrire/tests/legacy/unit/xml/xmlhack_inclure.html
deleted file mode 100644
index 8b8017680c..0000000000
--- a/ecrire/tests/legacy/unit/xml/xmlhack_inclure.html
+++ /dev/null
@@ -1 +0,0 @@
-[(#INCLURE{fond=#DOSSIER_SQUELETTE/xmlhack})]
\ No newline at end of file
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack_php.html b/ecrire/tests/legacy/unit/xml/xmlhack_php.html
deleted file mode 100644
index c7f8c11df9..0000000000
--- a/ecrire/tests/legacy/unit/xml/xmlhack_php.html
+++ /dev/null
@@ -1,14 +0,0 @@
-[(#REM)
-
-	le hack xml repere dans le squelette la sequence "< ?xml"
-	et evite de l'executer en php
-
-]
-
-#CACHE{0}<!--
-filtre:spip_xml_parse
-filtre:reset
-filtre:reset
--->
-<?xml version="1.0"[ encoding="(#CHARSET)"]?>
-<tag><?php echo 'OK'; ?></tag>
\ No newline at end of file
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack_php_fonctions.php b/ecrire/tests/legacy/unit/xml/xmlhack_php_fonctions.php
deleted file mode 100644
index f53060ed3c..0000000000
--- a/ecrire/tests/legacy/unit/xml/xmlhack_php_fonctions.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-include_spip('inc/xml');
diff --git a/ecrire/tests/legacy/unit/xml/xmlhack_recuperer_fond.php b/ecrire/tests/legacy/unit/xml/xmlhack_recuperer_fond.php
deleted file mode 100644
index e59c464051..0000000000
--- a/ecrire/tests/legacy/unit/xml/xmlhack_recuperer_fond.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-$test = 'xmlhack_recuperer_fond';
-
-$remonte = __DIR__ . '/';
-
-while (!is_file($remonte . 'test.inc')) {
-	$remonte .= '../';
-}
-
-require $remonte . 'test.inc';
-
-include_spip('public/assembler');
-
-$dir = substr(dirname(__DIR__, 2), strlen(_SPIP_TEST_CHDIR) + 1);
-
-$out = recuperer_fond($dir . '/unit/xml/xmlhack');
-
-// regarder si le hack a marche
-
-include_spip('inc/xml');
-
-$tree = spip_xml_parse($out);
-
-$ok = reset($tree);
-
-$ok = reset($ok);
-
-if ($ok !== 'OK') {
-	echo '<dl> Erreur sur le xml produit (xmlhack) : ' . serialize($tree) . '</dl>';
-}
-
-$out = recuperer_fond($dir . '/unit/xml/xmlhack_php');
-
-// regarder si le hack a marche
-
-include_spip('inc/xml');
-
-$tree = spip_xml_parse($out);
-
-$ok1 = reset($tree);
-
-$ok1 = reset($ok1);
-
-if ($ok1 !== 'OK') {
-	echo '<dl> Erreur sur le xml produit (xmlhack_php) : ' . serialize($tree) . '</dl>';
-}
-
-if ($ok && $ok1) {
-	echo 'OK';
-}
-- 
GitLab