update unit test doc & PHP 8 fixes
having had to re-do all of these steps on a new environment, I noticed some inconsistencies and updated the doc: - moved unit testing doc into common doc folder, so it is easier to find - removed no longer supported Janitor reference - removed note regarding generated test duration, current version takes less than a minute - addressed each function removal & phpunit deprecations
This commit is contained in:
parent
c895c511c1
commit
8c1310c334
2
Makefile
2
Makefile
@ -18,7 +18,7 @@ coverage-js: ## Run JS unit tests and generate code coverage reports.
|
||||
|
||||
coverage-php: ## Run PHP unit tests and generate code coverage reports.
|
||||
cd tst && phpunit 2> /dev/null
|
||||
cd tst/log/php-coverage-report && sed -i "s#$(CURDIR)##g" *.html */*.html
|
||||
cd tst/log/php-coverage-report && sed -i "s#$(CURDIR)/##g" *.html */*.html
|
||||
|
||||
doc: doc-js doc-php ## Generate all code documentation.
|
||||
|
||||
|
@ -23,7 +23,7 @@ new ConfigurationTestGenerator(array(
|
||||
'tests' => array(
|
||||
array(
|
||||
'conditions' => array('steps' => $vd),
|
||||
'type' => 'RegExp',
|
||||
'type' => 'MatchesRegularExpression',
|
||||
'args' => array(
|
||||
'#<div[^>]*id="opendiscussionoption"[^>]*>#',
|
||||
'$content',
|
||||
@ -53,7 +53,7 @@ new ConfigurationTestGenerator(array(
|
||||
'setting' => false,
|
||||
'tests' => array(
|
||||
array(
|
||||
'type' => 'NotRegExp',
|
||||
'type' => 'DoesNotMatchRegularExpression',
|
||||
'args' => array(
|
||||
'#<div[^>]*id="opendiscussionoption"[^>]*>#',
|
||||
'$content',
|
||||
@ -70,7 +70,7 @@ new ConfigurationTestGenerator(array(
|
||||
'tests' => array(
|
||||
array(
|
||||
'conditions' => array('main/discussion' => true),
|
||||
'type' => 'RegExp',
|
||||
'type' => 'MatchesRegularExpression',
|
||||
'args' => array(
|
||||
'#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
|
||||
'$content',
|
||||
@ -84,7 +84,7 @@ new ConfigurationTestGenerator(array(
|
||||
'tests' => array(
|
||||
array(
|
||||
'conditions' => array('main/discussion' => true),
|
||||
'type' => 'NotRegExp',
|
||||
'type' => 'DoesNotMatchRegularExpression',
|
||||
'args' => array(
|
||||
'#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
|
||||
'$content',
|
||||
@ -100,7 +100,7 @@ new ConfigurationTestGenerator(array(
|
||||
'setting' => true,
|
||||
'tests' => array(
|
||||
array(
|
||||
'type' => 'RegExp',
|
||||
'type' => 'MatchesRegularExpression',
|
||||
'args' => array(
|
||||
'#<input[^>]+id="burnafterreading"[^>]*checked="checked"[^>]*>#',
|
||||
'$content',
|
||||
@ -113,7 +113,7 @@ new ConfigurationTestGenerator(array(
|
||||
'setting' => false,
|
||||
'tests' => array(
|
||||
array(
|
||||
'type' => 'NotRegExp',
|
||||
'type' => 'DoesNotMatchRegularExpression',
|
||||
'args' => array(
|
||||
'#<input[^>]+id="burnafterreading"[^>]*checked="checked"[^>]*>#',
|
||||
'$content',
|
||||
@ -129,7 +129,7 @@ new ConfigurationTestGenerator(array(
|
||||
'setting' => true,
|
||||
'tests' => array(
|
||||
array(
|
||||
'type' => 'RegExp',
|
||||
'type' => 'MatchesRegularExpression',
|
||||
'args' => array(
|
||||
'#<div[^>]*id="password"[^>]*>#',
|
||||
'$content',
|
||||
@ -143,7 +143,7 @@ new ConfigurationTestGenerator(array(
|
||||
'tests' => array(
|
||||
array(
|
||||
'conditions' => array('main/discussion' => true),
|
||||
'type' => 'NotRegExp',
|
||||
'type' => 'DoesNotMatchRegularExpression',
|
||||
'args' => array(
|
||||
'#<div[^>]*id="password"[^>]*>#',
|
||||
'$content',
|
||||
@ -159,14 +159,14 @@ new ConfigurationTestGenerator(array(
|
||||
'setting' => 'page',
|
||||
'tests' => array(
|
||||
array(
|
||||
'type' => 'RegExp',
|
||||
'type' => 'MatchesRegularExpression',
|
||||
'args' => array(
|
||||
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#',
|
||||
'$content',
|
||||
'outputs "page" stylesheet correctly',
|
||||
),
|
||||
), array(
|
||||
'type' => 'NotRegExp',
|
||||
'type' => 'DoesNotMatchRegularExpression',
|
||||
'args' => array(
|
||||
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap/bootstrap-\d[\d\.]+\d\.css"[^>]*/>#',
|
||||
'$content',
|
||||
@ -179,14 +179,14 @@ new ConfigurationTestGenerator(array(
|
||||
'setting' => 'bootstrap',
|
||||
'tests' => array(
|
||||
array(
|
||||
'type' => 'NotRegExp',
|
||||
'type' => 'DoesNotMatchRegularExpression',
|
||||
'args' => array(
|
||||
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#',
|
||||
'$content',
|
||||
'removes "page" stylesheet correctly',
|
||||
),
|
||||
), array(
|
||||
'type' => 'RegExp',
|
||||
'type' => 'MatchesRegularExpression',
|
||||
'args' => array(
|
||||
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap/bootstrap-\d[\d\.]+\d\.css"[^>]*/>#',
|
||||
'$content',
|
||||
@ -361,7 +361,7 @@ class ConfigurationTestGenerator
|
||||
}
|
||||
// skip if not all test conditions are met
|
||||
if (array_key_exists('conditions', $test)) {
|
||||
while (list($path, $setting) = each($test['conditions'])) {
|
||||
foreach ($test['conditions'] as $path => $setting) {
|
||||
if ($path == 'steps' && !in_array($step, $setting)) {
|
||||
continue 2;
|
||||
} elseif ($path != 'steps') {
|
||||
@ -591,8 +591,9 @@ EOT;
|
||||
return $this->_configurations;
|
||||
}
|
||||
echo "generateConfigurations: iteration $this->_iterationCount", PHP_EOL;
|
||||
$continue = list($path, $settings) = each($this->_options);
|
||||
if ($continue === false) {
|
||||
$path = key($this->_options);
|
||||
$settings = current($this->_options);
|
||||
if (next($this->_options) === false) {
|
||||
return $this->_configurations;
|
||||
}
|
||||
list($section, $option) = explode('/', $path);
|
||||
|
@ -28,11 +28,6 @@ docker run --rm --read-only -v ~/PrivateBin:/srv:ro privatebin/unit-testing phpu
|
||||
docker run --rm --read-only -v ~/PrivateBin:/srv:ro privatebin/unit-testing mocha
|
||||
```
|
||||
|
||||
We also provide a Janitor image that includes the Cloud9 and Theia WebIDEs as
|
||||
well as the integrated unit testing utilities. See our [docker wiki
|
||||
page](https://github.com/PrivateBin/PrivateBin/wiki/Docker#janitor-image-with-cloud9-and-theia-webide-janitortechnologyprivatebin)
|
||||
for further details on this.
|
||||
|
||||
## Running PHP Unit Tests
|
||||
|
||||
In order to run these tests, you will need to install the following packages
|
||||
@ -61,18 +56,15 @@ configurations defined in its constructor, it generates the unit test file
|
||||
of these configurations and tests for (most of the) valid combinations. Some of
|
||||
combinations can't be tested with this method, i.e. a valid option combined with
|
||||
an invalid one. Other very specific test cases (i.e. to trigger multiple errors)
|
||||
are covered in `tst/PrivateBinTest.php`. Here is how to generate the
|
||||
are covered in `tst/ControllerTest.php`. Here is how to generate the
|
||||
configuration test and run it:
|
||||
|
||||
```console
|
||||
$ cd PrivateBin/tst
|
||||
$ php ConfigurationTestGenerator.php
|
||||
$ ../bin/configuration-test-generator
|
||||
$ phpunit ConfigurationCombinationsTest.php
|
||||
```
|
||||
|
||||
Note that it can take an hour or longer to run the several thousand tests.
|
||||
|
||||
|
||||
## Running JavaScript Unit Tests
|
||||
|
||||
In order to run these tests, you will need to install the following packages
|
||||
@ -134,7 +126,7 @@ associated random number generator (RNG) state, so you can reproduce it easily:
|
||||
1 failing
|
||||
|
||||
1) Helper getCookie returns the requested cookie:
|
||||
Error: Failed after 30 tests and 11 shrinks. rngState: 88caf85079d32e416b; Counterexample: ["{", "9", "9", "YD8%fT"]; [" ", "_|K:"];
|
||||
Error: Failed after 30 tests and 11 shrinks. rngState: 88caf85079d32e416b; Counterexample: ["{", "9", "9", "YD8%fT"]; [" ", "_|K:"];
|
||||
|
||||
[...]
|
||||
```
|
Loading…
Reference in New Issue
Block a user