Skip to content

Commit

Permalink
Adds phpunit to dev-tools (#50)
Browse files Browse the repository at this point in the history
* install phpunit

* switch to phpunit 8.5

* switch to phpunit6.5

* remove xss patch

* add core-dev as dev a dependency

* adds custom phpunit.xml.dist

* update base url and db link to phpunit

* reverts tide_core

* set test directory

* update test.sh

* test

* removed drupal-test-traits

* updates readme file
  • Loading branch information
vincent-gao authored May 24, 2021
1 parent 752d883 commit a560378
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .circleci/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ ahoy lint
echo "==> Run Behat tests"
mkdir -p /tmp/artifacts/behat
ahoy test-behat || ahoy test-behat -- --rerun

echo "==> Run Unit tests"
ahoy cli "/app/vendor/bin/phpunit"
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ Finally, we install the module itself.
1. Uncomment this line in `docker-compose.yml`:
```
#XDEBUG_ENABLE: "true"
#DOCKERHOST: "host.docker.internal"
```
2. Restart the stack: `ahoy up`.
3. Enable listening for incoming debug connections in your IDE.
Expand Down Expand Up @@ -181,3 +182,14 @@ To make a change:
6. If the build passes, merge the Dev Tools branch to `master` and make a release.
- NOTE: This must be a release in GitHub, see https://github.com/dpc-sdp/dev-tools/releases/new
7. Remove the temporary branch in `tide_*` module from Step 3.

## Unit test
The dev-tools supports unit tests.
### Registering tests
#### Directory
1. The unit tests should go in `tests\src\Unit` direcotry.
2. The unit tests need to respect PSR-4 namespace naming convention, in our case,
`namespace Drupal\Tests\{module}\Unit`
### 2 ways to run tests
1. commit to CI.
2. Run `./vendor/bin/phpunit` inside CLI container locally.
4 changes: 3 additions & 1 deletion composer.dev.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
"phpcompatibility/php-compatibility": "^9.1",
"ubirak/rest-api-behat-extension": "dev-feature/drupalextension-compatibility as 7.0.0",
"symfony/filesystem": "^3.2.8",
"php-http/curl-client": "^1.7"
"php-http/curl-client": "^1.7",
"phpunit/phpunit": "^6.5",
"drupal/core-dev":"8.9.x"
},
"autoload": {
"classmap": [
Expand Down
85 changes: 85 additions & 0 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>

<!-- TODO set checkForUnintentionallyCoveredCode="true" once https://www.drupal.org/node/2626832 is resolved. -->
<!-- PHPUnit expects functional tests to be run with either a privileged user
or your current system user. See core/tests/README.md and
https://www.drupal.org/node/2116263 for details.
-->
<phpunit bootstrap="docroot/core/tests/bootstrap.php" colors="true"
beStrictAboutTestsThatDoNotTestAnything="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutChangesToGlobalState="true"
printerClass="\Drupal\Tests\Listeners\HtmlOutputPrinter">
<php>
<!-- Set error reporting to E_ALL. -->
<ini name="error_reporting" value="32767"/>
<!-- Do not limit the amount of memory tests take to run. -->
<ini name="memory_limit" value="-1"/>
<!-- Example SIMPLETEST_BASE_URL value: http://localhost -->
<env name="SIMPLETEST_BASE_URL" value="http://nginx:8080"/>
<!-- Example SIMPLETEST_DB value: mysql://username:password@localhost/databasename#table_prefix -->
<env name="SIMPLETEST_DB" value="mysql://drupal:drupal@mariadb:3306/drupal"/>
<!-- Example BROWSERTEST_OUTPUT_DIRECTORY value: /path/to/webroot/sites/simpletest/browser_output -->
<!-- <env name="BROWSERTEST_OUTPUT_DIRECTORY" value="/tmp/unit_test"/>-->
<!-- To have browsertest output use an alternative base URL. For example if
SIMPLETEST_BASE_URL is an internal DDEV URL, you can set this to the
external DDev URL so you can follow the links directly.
-->
<!-- <env name="BROWSERTEST_OUTPUT_BASE_URL" value=""/>-->
<!-- To disable deprecation testing completely uncomment the next line. -->
<!-- <env name="SYMFONY_DEPRECATIONS_HELPER" value="disabled"/> -->
<!-- Example for changing the driver class for mink tests MINK_DRIVER_CLASS value: 'Drupal\FunctionalJavascriptTests\DrupalSelenium2Driver' -->
<!-- <env name="MINK_DRIVER_CLASS" value=''/>-->
<!-- Example for changing the driver args to mink tests MINK_DRIVER_ARGS value: '["http://127.0.0.1:8510"]' -->
<!-- <env name="MINK_DRIVER_ARGS" value=''/>-->
<!-- Example for changing the driver args to phantomjs tests MINK_DRIVER_ARGS_PHANTOMJS value: '["http://127.0.0.1:8510"]' -->
<!-- <env name="MINK_DRIVER_ARGS_PHANTOMJS" value=''/>-->
<!-- Example for changing the driver args to webdriver tests MINK_DRIVER_ARGS_WEBDRIVER value: '["chrome", { "chromeOptions": { "w3c": false } }, "http://localhost:4444/wd/hub"]' For using the Firefox browser, replace "chrome" with "firefox" -->
<!-- <env name="MINK_DRIVER_ARGS_WEBDRIVER" value=''/>-->
</php>
<testsuites>
<testsuite name="unit">
<directory>./dpc-sdp/*/tests/src/Unit</directory>
</testsuite>
<!-- <testsuite name="kernel">-->
<!-- <file>./tests/TestSuites/KernelTestSuite.php</file>-->
<!-- </testsuite>-->
<!-- <testsuite name="functional">-->
<!-- <file>./tests/TestSuites/FunctionalTestSuite.php</file>-->
<!-- </testsuite>-->
<!-- <testsuite name="functional-javascript">-->
<!-- <file>./tests/TestSuites/FunctionalJavascriptTestSuite.php</file>-->
<!-- </testsuite>-->
<!-- <testsuite name="build">-->
<!-- <file>./tests/TestSuites/BuildTestSuite.php</file>-->
<!-- </testsuite>-->
</testsuites>
<listeners>
<listener class="\Drupal\Tests\Listeners\DrupalListener">
</listener>
<!-- The Symfony deprecation listener has to come after the Drupal listener -->
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener">
</listener>
</listeners>
<!-- Filter for coverage reports. -->
<filter>
<whitelist>
<directory>./includes</directory>
<directory>./lib</directory>
<!-- Extensions can have their own test directories, so exclude those. -->
<directory>./modules</directory>
<exclude>
<directory>./modules/*/src/Tests</directory>
<directory>./modules/*/tests</directory>
</exclude>
<directory>../modules</directory>
<exclude>
<directory>../modules/*/src/Tests</directory>
<directory>../modules/*/tests</directory>
<directory>../modules/*/*/src/Tests</directory>
<directory>../modules/*/*/tests</directory>
</exclude>
<directory>../sites</directory>
</whitelist>
</filter>
</phpunit>

0 comments on commit a560378

Please sign in to comment.