PHPUnit must get the data that will be passed to the tests, before executing them. That's why you can't prevent the dataProvider to be executed using `$this->markTestSkipped()` inside a test. Instead, you must use a skipping inside data provider when the test cannot be executed.
Now Oracle tests are skipped without fails when Oracle isn't installed:
```
$ vendor/bin/phpunit --filter=BuildLikeCondition --group=oci --verbose
...
There was 1 skipped test:
1) yiiunit\framework\db\oci\QueryBuilderTest::testBuildLikeCondition
Test for yiiunit\framework\db\oci\QueryBuilderTest::testBuildLikeCondition skipped by data provider
Could not execute Connection::quoteValue() method: Connection::dsn cannot be empty.
```
I have installed ICU of version `55.1` and tests fail on it. That's because 'short' datetime format has been changed earlier - starting with version 55.1
See for example Symfony changes for ICU 55: 4f224ef4ab (diff-564fc4b01393077657880495f2be7b17R54)
1) `/runtime/cache/*` already ignored by file `/tests/runtime/.gitignore`
2) `/tests/runtime/assets/` already stays in place due to file `/tests/runtime/asstes/.gitignore`
View must be deleted before deleting the tables on which it depends, otherwise we will get errors when rerunning the tests in the same environment.
For example:
```
1) yiiunit\framework\db\mysql\CommandTest::testCreateView
yii\db\Exception: SQLSTATE[HY000]: General error: 1356 View 'yii2_test.testCreateView' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
The SQL being executed was: SHOW FULL COLUMNS FROM `testCreateView`
```
1. There is no need to use setUp/tearDown just for one TestCase method.
2. Previous implementation of testBasePathIsWritableOnPublish() doesn't work in vagrant environment using shared files because of unreliable chmod.
So, this implementation is more versatile and optimized.
- Increase frequency of lock tries for `yii\mutex\FileMutex::acquireLock()` when $timeout is provided (rob006)
- Add support for `$timeout` in `yii\mutex\PgsqlMutex::acquire()`