diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..eae7257 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,35 @@ +name: PHP CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' # ou la version que vous utilisez + extensions: mbstring, xml, pdo, zip, intl # Ajoutez les extensions nécessaires + tools: composer # Installe Composer + + - name: Cache Composer dependencies + uses: actions/cache@v3 + with: + path: php/vendor # Le chemin vers le répertoire vendor dans php/ + key: ${{ runner.os }}-composer-${{ hashFiles('php/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + + - name: Install Composer dependencies + run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --working-dir=php + + - name: Run PHPUnit tests + run: php/vendor/bin/phpunit --configuration php/phpunit.xml.dist diff --git a/README.md b/README.md index 9bc1fec..506fbb3 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,7 @@ Pour des instructions et informations spécifiques dans votre langue, veuillez c * 🇸🇦 [العربية](./docs/languages/README.ar.md) (Utilisation du drapeau de l'Arabie Saoudite comme représentation commune pour la langue arabe) * 🇮🇳 [हिन्दी](./docs/languages/README.hi.md) * 🇨🇳 [中文 (普通话)](./docs/languages/README.zh.md) + +## Tests et CI/CD + +Le projet intègre des tests unitaires avec PHPUnit et une pipeline d'intégration continue avec GitHub Actions pour assurer la qualité du code. Pour plus de détails sur la stratégie de test et la configuration de la CI/CD, veuillez consulter la [documentation en français](./docs/languages/README.fr.md#tests). diff --git a/docs/languages/README.fr.md b/docs/languages/README.fr.md index 0e03312..20cd5c8 100644 --- a/docs/languages/README.fr.md +++ b/docs/languages/README.fr.md @@ -2,4 +2,37 @@ La documentation pour le projet Gestion Certificat en Français est en cours de rédaction. +## Tests + +Ce projet utilise PHPUnit pour les tests unitaires. Pour exécuter les tests localement, suivez ces étapes : + +1. **Installez les dépendances de développement :** + Assurez-vous d'avoir Composer installé. Ensuite, naviguez vers le répertoire `php/` et exécutez : + ```bash + composer install + ``` + Cette commande installera PHPUnit et les autres dépendances nécessaires au développement. + +2. **Lancez la suite de tests :** + Une fois les dépendances installées, vous pouvez exécuter la suite de tests PHPUnit. Depuis la racine du projet, exécutez : + ```bash + php/vendor/bin/phpunit --configuration php/phpunit.xml.dist + ``` + Ou, si vous êtes déjà dans le répertoire `php/` : + ```bash + vendor/bin/phpunit --configuration phpunit.xml.dist + ``` + +## CI/CD (Intégration Continue / Déploiement Continu) + +Nous utilisons GitHub Actions pour automatiser l'exécution des tests à chaque fois que des modifications sont poussées (`push`) ou qu'une demande de tirage (`pull_request`) est faite sur la branche `main`. + +Le workflow, défini dans `.github/workflows/ci.yml`, effectue les actions suivantes : +- Prépare l'environnement avec la version PHP spécifiée. +- Met en cache les dépendances Composer pour accélérer les builds. +- Installe les dépendances du projet. +- Exécute la suite de tests PHPUnit. + +Cela garantit que toute nouvelle modification est automatiquement testée, aidant à maintenir la qualité et la stabilité du code. + [Retour au README principal](../../README.md) diff --git a/php/Dockerfile b/php/Dockerfile index 6a7714c..6403657 100644 --- a/php/Dockerfile +++ b/php/Dockerfile @@ -44,8 +44,15 @@ COPY php.ini /usr/local/etc/php/conf.d/40-custom.ini # Définir le répertoire de travail par défaut WORKDIR /var/www/html -# Optionnel: Installer Composer si vous utilisez un framework PHP plus avancé -# COPY --from=composer:latest /usr/bin/composer /usr/bin/composer +# Installer Composer +COPY --from=composer:latest /usr/bin/composer /usr/bin/composer + +# Copier les fichiers de dépendances et installer les dépendances PHP +COPY composer.json composer.lock* ./ +RUN composer install --no-dev --optimize-autoloader + +# Copier le reste des fichiers de l'application +COPY . . # Exposer le port FPM (le port 9000 est le port par défaut pour PHP-FPM) EXPOSE 9000 diff --git a/php/composer.json b/php/composer.json new file mode 100644 index 0000000..9f26623 --- /dev/null +++ b/php/composer.json @@ -0,0 +1,13 @@ +{ + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "autoload": { + "psr-4": { + "App\\": "src/" + } + }, + "scripts": { + "test": "phpunit" + } +} diff --git a/php/phpunit.xml.dist b/php/phpunit.xml.dist new file mode 100644 index 0000000..a5fcb7f --- /dev/null +++ b/php/phpunit.xml.dist @@ -0,0 +1,16 @@ + + + + + tests + + + + + src + + + diff --git a/php/tests/Utils/DarkModeTest.php b/php/tests/Utils/DarkModeTest.php new file mode 100644 index 0000000..d021627 --- /dev/null +++ b/php/tests/Utils/DarkModeTest.php @@ -0,0 +1,15 @@ +assertFalse($darkMode->isDarkModeByDefault(), "DarkMode should not be enabled by default."); + } +}