* its invalid to combine `void` with another type
see https://github.com/phpstan/phpstan/issues/4014
* added explicit `return null`, to make phpstan happy and the code more obvious.
* increased phpstan level to 5
* fix: '$subject of function preg_match expects string, int given'
Created new container using Ubuntu 20.04 as a base, for a E2E test
environment for the provision recipe.
Due to container sharing a kernel with host os, the firewall provisioning
had to be turn off during the testing procedure.
* [#2197] Created E2E testing environment
Created docker-based end-to-end testing environment, which allows
for testing more complex scenarios.
Additionally added FunctionE2ETest class that contains test scenario
for `run` function with placeholders.
Closes#2197
* [#2197] Moved docker to test dir & separated e2e tests from unit-tests
The docker directory has been moved into test/ directory.
Additionally the e2e tests have been separated from the unit-test
files:
* AbstractE2ETest class is directly inheriting from TestCase,
dropping relation to the AbstractTest
* Separate bootstrap.php file for e2e test was created
* Separate phpunit-e2e.xml.dist file was created to configure
PHPUnit for just the e2e tests
* deployer docker service now runs only e2e tests by default
* [#2197] Added E2E tests to GH actions
Added E2E tests steps to GH actions:
* building the docker-compose stack (building images)
* starting the stack to run the tests
If E2E tests fail, then docker-compose up will end with non-zero
exit code, thus the workflow will be marked as failed.
* [#2197] Fixed no output when using run() with sudo
Fixed a discrepancy in the `run()` function, where there would be
no output when the command was being executed with a sudo.
* [#2197] Added testcases for running commands with sudo
Added two testcases for e2e tests, that verify:
* that sudo command can be ran with password provided interactively
* that sudo command can be ran with password passed via argument
To allow for these tests to happen, the Dockerfile for server
service had to be modified - the deployer user will require a
password, when running command with sudo.
* [#2197] Added Laravel-boilerplate deploy E2E test
Added a very simple E2E test that checks whether the Laravel-boilerplate
deploys successfully to the testing server.
The testing scenario will deploy the app, copy sample .env file,
generate the app key and finally try to get the main page contents
to verify that the expected string is visible in the page source.
* [#2197] Moved E2E tests to separate job
Moved E2E tests to separate job and added docker-compose cache
to slightly improve stack build times.
* [#2197] Using deployphp test-laravel repo for E2E tests
Updated the laravel-boilerplate deploy config to use the repository
that belongs to deployphp organization.
Co-authored-by: Bartlomiej Sacharski <beton@cementowina.org>
* [#2192] Support for placeholders in run and runLocally
Added support for placeholder in the `run` and `runLocally` functions.
By passing the `vars` key with an associative array to the second
argument of `run` and `runLocally`, it is possible to use placeholders
in the command, that will be used directly in the executed command.
The placeholders should be wrapped in the command with `%NAME%`, for
instance `%foo%`. The `vars` array could be `[ 'foo' => '{{bar}}']`.
Sample:
```php
runLocally("echo '%foo%'", ['vars' => ['foo' => '{{bar}}']]);
```
will output:
```plain
{{bar}}
```
* [#2192] Added missing implementation for placeholders in run()
Added missing implementation for placeholders support int the `run()`
function as it was missing in previous commit.
Co-authored-by: Bartlomiej Sacharski <beton@cementowina.org>
The `within()` function has been modified to pass-through the
return value of the callback function.
It is now possible to write code like:
```php
$out = within('/foo', function () {
return 'bar';
});
```
The `$out` variable will now contain the value `'bar'`.
If the callback function returns nothing, then the return of
`within()` call will be `null`.
Fixes#2178
The unit tests would fail, when started on a non-master branch.
This was happening because the test repository has been initialized
with git default branch, whereas deploy configuration expects to
work with current git branch.
This has been fixed by adding `git checkout -B BRANCH_NAME`, right after
test repo initialization to the DeployTest setup procedure, to make sure
that the test repositoryis always in sync repo-wise with the Deployer
repository.
Fixes#2181
* add test to show issue with once() used with --parallel and --limit issue
* handle once() in a better way to prevent issue with --parallel and --limit