Merge pull request #1790 from PrivateBin/devcontainer/phpunit

fix(devcontainer): try making VSCode test extension work (PHPUnit/Mocha)
This commit is contained in:
rugk
2026-02-25 09:50:27 +01:00
committed by GitHub
7 changed files with 4398 additions and 15 deletions

View File

@@ -17,7 +17,8 @@
"dbaeumer.vscode-eslint", "dbaeumer.vscode-eslint",
"raymondcamden.CSSLint", "raymondcamden.CSSLint",
// testing // testing
"maty.vscode-mocha-sidebar" "hbenl.vscode-mocha-test-adapter",
"recca0120.vscode-phpunit"
] ]
}, },
"codespaces": { "codespaces": {
@@ -35,7 +36,10 @@
} }
}, },
"features": { "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": [ "forwardPorts": [
8080 8080

View File

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

View File

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

15
.vscode/settings.json vendored
View File

@@ -1,5 +1,18 @@
{ {
"files.associations": { "files.associations": {
"**/cfg/conf*.php": "ini" "**/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"
} }

4357
js/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

View File

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