Explorar el Código

Merge pull request #1790 from PrivateBin/devcontainer/phpunit

fix(devcontainer): try making VSCode test extension work (PHPUnit/Mocha)
rugk hace 5 meses
padre
commit
32ab4dade5

+ 7 - 3
.devcontainer/devcontainer.json

@@ -17,8 +17,9 @@
 				"dbaeumer.vscode-eslint",
 				"raymondcamden.CSSLint",
                 // testing
-				"maty.vscode-mocha-sidebar"
-			]
+                "hbenl.vscode-mocha-test-adapter",
+                "recca0120.vscode-phpunit"
+            ]
         },
         "codespaces": {
             "openFiles": [
@@ -35,7 +36,10 @@
         }
     },
     "features": {
-        "ghcr.io/devcontainers-contrib/features/mocha:2": {}
+        "ghcr.io/devcontainers-contrib/features/mocha:2": {},
+        "ghcr.io/yassinedoghri/devcontainers/php-extensions-installer:1": {
+            "extensions": "gd"
+        }
     },
     "forwardPorts": [
         8080

+ 15 - 7
.devcontainer/postCreateCommand.sh

@@ -1,15 +1,23 @@
 #!/bin/sh
 
-export PATH="$PATH:$HOME/.composer/vendor/bin"
-export PATH="$PATH:$PWD/vendor/bin"
-echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.bashrc
-echo 'export PATH="$PATH:$PWD/vendor/bin"' >> ~/.bashrc
+#COMPOSER_BIN="$HOME/.composer/vendor/bin" # should be equivalent
+COMPOSER_BIN="$(composer global config bin-dir --absolute --quiet)"
+# LOCAL_VENDOR_BIN="$PWD/vendor/bin" # should be equivalent
+LOCAL_VENDOR_BIN="$(composer config vendor-dir --absolute --quiet)"
+export PATH="$PATH:$COMPOSER_BIN"
+export PATH="$PATH:$LOCAL_VENDOR_BIN"
+echo 'export PATH="$PATH:$(composer global config bin-dir --absolute --quiet)"' >> ~/.bashrc
+echo 'export PATH="$PATH:$(composer config vendor-dir --absolute --quiet)"' >> ~/.bashrc
 ln -s ./conf.sample.php cfg/conf.php
 composer install --no-dev --optimize-autoloader
 
 # for PHP unit testing
-composer require --global google/cloud-storage
+composer global require phpunit/phpunit:^9
+composer global require google/cloud-storage
 
-sudo chmod a+x "$(pwd)" && sudo rm -rf /var/www/html && sudo ln -s "$(pwd)" /var/www/html
+# for JS testing
+JAVASCRIPT_DIRECTORY="$(pwd)/js"
+npm --prefix "$JAVASCRIPT_DIRECTORY" install "$JAVASCRIPT_DIRECTORY"
 
-npm install --global nyc
+# development webserver
+sudo chmod a+x "$(pwd)" && sudo rm -rf /var/www/html && sudo ln -s "$(pwd)" /var/www/html

+ 2 - 1
.vscode/extensions.json

@@ -2,6 +2,7 @@
     "recommendations": [
         "recca0120.vscode-phpunit",
         "onecentlin.phpunit-snippets",
-        "devsense.profiler-php-vscode"
+        "devsense.profiler-php-vscode",
+        "spoonscen.es6-mocha-snippets"
     ]
 }

+ 14 - 1
.vscode/settings.json

@@ -1,5 +1,18 @@
 {
     "files.associations": {
         "**/cfg/conf*.php": "ini"
-    }
+    },
+    "phpunit.environment": {
+        "XDEBUG_MODE": "coverage"
+    },
+    "phpunit.phpunit": "${userHome}/.composer/vendor/bin/phpunit",
+    "phpunit.command": "/bin/sh -c 'cd ${workspaceFolder}/tst && ${php} ${phpunit} ${phpunitargs}'",
+    "phpunit.args": [
+        "--configuration",
+        "${workspaceFolder}/tst/phpunit.xml",
+        "--bootstrap",
+        "${workspaceFolder}/tst/Bootstrap.php"
+    ],
+    "mochaExplorer.pkgFile": "js/package.json",
+    "mochaExplorer.files": "js/test/*.js"
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 858 - 1
js/package-lock.json


+ 3 - 1
js/package.json

@@ -11,7 +11,9 @@
     "eslint": "^9.37.0",
     "jsdom": "^26.0.0",
     "jsdom-global": "^3.0.2",
-    "jsverify": "^0.8.3"
+    "jsverify": "^0.8.3",
+    "mocha": "^11.7.5",
+    "nyc": "^17.1.0"
   },
   "scripts": {
     "test": "mocha",

+ 1 - 1
tst/Bootstrap.php

@@ -26,7 +26,7 @@ if (!defined('CONF_SAMPLE')) {
     define('CONF_SAMPLE', PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.sample.php');
 }
 
-require PATH . 'vendor/autoload.php';
+require PATH . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
 Helper::updateSubresourceIntegrity();
 TemplateSwitcher::setAvailableTemplates(Configuration::getDefaults()['main']['availabletemplates']);
 

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio