From ddaea3a6bff4adebd874ab03fd7818db38f578d0 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Tue, 27 Jul 2021 18:40:26 +0200 Subject: [PATCH] * un phpunit.xml.dist pour donner un environnement de base des tests * un script bin/configure.php qui construit un phpunit.xml prenant en compte ce dernier et en ajoutant tous les repertoire de tests/ des plugins qui contiennent des tests PHPUnit * un Makefile qui permet de lancer simplement `Make tests` pour lancer tous les tests en etant sur que tout est configure Le phpunit.xml n'est pas mis a jour automatiquement si on active/desactive des plugins : il faut le supprimer manuellement pour qu'il soit regenere a la session suivante (Idem si on ajoute un dossiers tests/ avec un tests unitaire PHPUnit dans un plugin deja actif) --- .gitignore | 1 + Makefile | 9 +++++++++ bin/configure.php | 42 ++++++++++++++++++++++++++++++++++++++++++ phpunit.xml.dist | 11 +++++++++++ 4 files changed, 63 insertions(+) create mode 100644 Makefile create mode 100755 bin/configure.php create mode 100755 phpunit.xml.dist diff --git a/.gitignore b/.gitignore index d05bc65201..6d51f62f4f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ composer.lock /vendor/ /vendor-bin/*/vendor/ .phpunit.result.cache +phpunit.xml \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..e8d922bdee --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +tests: vendor phpunit.xml + vendor/bin/phpunit --colors + +phpunit.xml: + php bin/configure.php + +vendor: composer.json + composer update + touch $@ \ No newline at end of file diff --git a/bin/configure.php b/bin/configure.php new file mode 100755 index 0000000000..fb1d3543d5 --- /dev/null +++ b/bin/configure.php @@ -0,0 +1,42 @@ +#!/usr/bin/env php +<?php + +// les args a passer a phpUnit +$args = $argv; +array_shift($args); + +$dir_tests = dirname(__DIR__) . '/'; +// charger SPIP +require_once $dir_tests . 'tests/spip.inc'; + +// Lister les repertoires du path qui contiennent des dossier tests/ avec des tests PHPUnit + +$dirs = []; +foreach (creer_chemin() as $d) { + if ($d and + is_dir("${d}tests") + and count(glob("${d}tests/*Test.php")) + ) { + $bases[] = "${d}tests"; + } +} + +$prefixe_dir = '../'; +while (!is_dir($dir_tests . $prefixe_dir . 'ecrire')) { + $prefixe_dir .= '../'; +} + +$testsuites = []; +foreach ($bases as $base) { + $name = dirname($base); + $testsuites[] = "<testsuite name=\"$name\"><directory>{$prefixe_dir}{$base}/</directory></testsuite>"; +} + +$testsuites = "\t\t" . implode("\n\t\t", $testsuites) . "\n"; + +// generer le phpunit.xml a jour +$config = file_get_contents($dir_tests . 'phpunit.xml.dist'); +$p = strpos($config, "\t</testsuites>"); +$config = substr_replace($config, $testsuites, $p, 0); + +file_put_contents($dir_tests . "phpunit.xml", $config); diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100755 index 0000000000..31327c7f7f --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<phpunit bootstrap="./tests/spip.inc" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + stopOnFailure="false"> + <testsuites> + <testsuite name="core"><directory>./tests/</directory></testsuite> + </testsuites> +</phpunit> -- GitLab