Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: orchestral/testbench-core
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v8.34.0
Choose a base ref
...
head repository: orchestral/testbench-core
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v8.35.0
Choose a head ref

Commits on Feb 19, 2025

  1. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 19, 2025
    Copy the full SHA
    c408ddb View commit details
  2. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 19, 2025
    Copy the full SHA
    4b60ad7 View commit details

Commits on Feb 20, 2025

  1. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 20, 2025
    Copy the full SHA
    a6e2a03 View commit details

Commits on Feb 24, 2025

  1. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 24, 2025
    Copy the full SHA
    5f7b8f6 View commit details
  2. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 24, 2025
    Copy the full SHA
    31a2192 View commit details
  3. Merge branch '7.x' into 8.x

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 24, 2025
    Copy the full SHA
    636352a View commit details

Commits on Feb 25, 2025

  1. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 25, 2025
    Copy the full SHA
    51b6ae6 View commit details
  2. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 25, 2025
    Copy the full SHA
    229ee41 View commit details
  3. Merge branch '7.x' into 8.x

    crynobone committed Feb 25, 2025
    Copy the full SHA
    6cbfe3d View commit details
  4. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 25, 2025
    Copy the full SHA
    eb54ee5 View commit details
  5. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 25, 2025
    Copy the full SHA
    8796807 View commit details
  6. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Feb 25, 2025
    Copy the full SHA
    8acded0 View commit details

Commits on Feb 28, 2025

  1. Merge branch '7.x' into 8.x

    crynobone committed Feb 28, 2025
    Copy the full SHA
    199dc8e View commit details

Commits on Mar 3, 2025

  1. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    f30acf2 View commit details
  2. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    783c073 View commit details
  3. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    ab8f9ee View commit details
  4. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    b618ef1 View commit details
  5. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    2427f2b View commit details
  6. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    a40684a View commit details
  7. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    fb9b449 View commit details
  8. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    0a287f5 View commit details
  9. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    d63e3af View commit details
  10. Test Improvements (#315)

    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    ---------
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone authored Mar 3, 2025
    Copy the full SHA
    9588396 View commit details
  11. Copy the full SHA
    8b99652 View commit details
  12. Add new RefreshPackageDiscovery action based on `CreateVendorSymlin…

    …k` (#317)
    
    solves #316
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone authored Mar 3, 2025
    Copy the full SHA
    a2d5da2 View commit details
  13. Delete vendor symlink via package:purge-skeleton command.

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    60c3565 View commit details
  14. Copy the full SHA
    6ef638a View commit details
  15. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    6226fc5 View commit details
  16. Copy the full SHA
    f6040ea View commit details
  17. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    e03d7f8 View commit details
  18. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    015f2e7 View commit details
  19. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    b51ceb9 View commit details
  20. Merge branch '7.x' into 8.x

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    cac1c68 View commit details
  21. Use UsesVendor attribute on defineCachedRoutes() tests (#319)

    * Use `UsesVendor` attribute on `defineCachedRoutes()` tests
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    ---------
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone authored Mar 3, 2025
    Copy the full SHA
    ea2a71f View commit details
  22. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 3, 2025
    Copy the full SHA
    7a81993 View commit details
  23. Copy the full SHA
    eb882bd View commit details
  24. Improves booting skeleton's vendor when symlink is not available. (#320)

    * Improves booting skeleton's vendor when symlink is not available.
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    ---------
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone authored Mar 3, 2025
    Copy the full SHA
    85d5a3d View commit details
  25. Copy the full SHA
    ce50c04 View commit details

Commits on Mar 4, 2025

  1. Rename resolvePhpUnitTestName() to resolvePhpUnitTestMethodName() (

    …#322)
    
    * Rename `resolvePhpUnitTestName()` to `resolvePhpUnitTestMethodName()`
    
    fix #321
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    * wip
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    
    ---------
    
    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone authored Mar 4, 2025
    Copy the full SHA
    17df4e9 View commit details
  2. Merge branch '7.x' into 8.x

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 4, 2025
    Copy the full SHA
    cf9d47c View commit details
  3. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 4, 2025
    Copy the full SHA
    794a72c View commit details
  4. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 4, 2025
    Copy the full SHA
    0654178 View commit details

Commits on Mar 6, 2025

  1. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 6, 2025
    Copy the full SHA
    1e818b7 View commit details
  2. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 6, 2025
    Copy the full SHA
    18f253a View commit details
  3. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 6, 2025
    Copy the full SHA
    c8553ce View commit details
  4. Merge branch '7.x' into 8.x

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 6, 2025
    Copy the full SHA
    e1cfa37 View commit details
  5. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 6, 2025
    Copy the full SHA
    134b6ab View commit details
  6. Copy the full SHA
    5162698 View commit details
  7. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 6, 2025
    Copy the full SHA
    2d25ecd View commit details
  8. wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
    crynobone committed Mar 6, 2025
    Copy the full SHA
    8e1ead1 View commit details
2 changes: 2 additions & 0 deletions .github/workflows/audits.yaml
Original file line number Diff line number Diff line change
@@ -4,6 +4,8 @@ on:
push:
branches:
- '*.x'
- '!7.x'
- '!8.x'
pull_request:
workflow_dispatch:

21 changes: 21 additions & 0 deletions CHANGELOG-7.x.md
Original file line number Diff line number Diff line change
@@ -2,13 +2,34 @@

This changelog references the relevant changes (bug and security fixes) done to `orchestra/testbench-core`.

## 7.54.0

Released: 2025-03-06

### Added

* Added `resolvePhpUnitTestClassName()` and `resolvePhpUnitTestMethodName()` to `Orchestra\Testbench\Concerns\InteractsWithPHPUnit` trait.

### Changes

* Allows `usesTestingFeature()` to register attribute directly on test method.
* Improves `vendor` detection on the default skeleton.
* Utilise `Orchestra\Sidekick\is_symlink()` function instead of `is_link()` to improves support on Windows.
* Use `::class` instead of `get_class()`.
* Delete `vendor` symlink via `package:purge-skeleton` command.

### Fixes

* Fix static variable via `Orchestra\Testbench\Attributes\UsesVendor::beforeEach()` method.

## 7.53.0

Released: 2025-02-19

### Added

* Use `orchestra/sidekick`.
* Implements `Illuminate\Foundation\Testing\Concerns\InteractsWithViews`.

### Deprecated

23 changes: 23 additions & 0 deletions CHANGELOG-8.x.md
Original file line number Diff line number Diff line change
@@ -2,13 +2,36 @@

This changelog references the relevant changes (bug and security fixes) done to `orchestra/testbench-core`.

## 8.35.0

Released: 2025-03-06

### Added

* Added `resolvePhpUnitTestClassName()` and `resolvePhpUnitTestMethodName()` to `Orchestra\Testbench\Concerns\InteractsWithPHPUnit` trait.

### Changes

* Allows `usesTestingFeature()` to register attribute directly on test method.
* Improves `vendor` detection on the default skeleton.
* Utilise `Orchestra\Sidekick\is_symlink()` function instead of `is_link()` to improves support on Windows.
* Use `::class` instead of `get_class()`.
* Delete `vendor` symlink via `package:purge-skeleton` command.

### Fixes

* Fix static variable via `Orchestra\Testbench\Attributes\UsesVendor::beforeEach()` method.

Changelog: [v8.34.0...8.x](https://github.com/orchestral/testbench-core/compare/v8.34.0...8.x)

## 8.34.0

Released: 2025-02-19

### Added

* Use `orchestra/sidekick`.
* Implements `Illuminate\Foundation\Testing\Concerns\InteractsWithViews`.

### Deprecated

8 changes: 8 additions & 0 deletions bin/configure-skeleton.php
Original file line number Diff line number Diff line change
@@ -61,6 +61,14 @@
$files->replaceInFile(['{{tableClassName}}', '{{table}}'], [Illuminate\Support\Str::studly($table), $table], "{$workingPath}/laravel/migrations/{$migration}.php");
});

transform([
line("require __DIR__.'/vendor/autoload.php';") => line("require __DIR__.'/bootstrap/autoload.php';"),
], fn ($changes) => $files->replaceInFile(array_keys($changes), array_values($changes), "{$workingPath}/laravel/artisan"));

transform([
line("require __DIR__.'/../vendor/autoload.php';") => line("require __DIR__.'/../bootstrap/autoload.php';"),
], fn ($changes) => $files->replaceInFile(array_keys($changes), array_values($changes), "{$workingPath}/laravel/public/index.php"));

transform([
line('APP_KEY=', 0) => line('APP_KEY=AckfSECXIvnK5r28GVIWUAxmbBSjTsmF', 0),
line('DB_CONNECTION=mysql', 0) => line('DB_CONNECTION=sqlite', 0),
2 changes: 1 addition & 1 deletion bin/sync
Original file line number Diff line number Diff line change
@@ -44,7 +44,7 @@ $files->put("{$workingPath}/laravel/bootstrap/.testbench-default-skeleton", '@te
* ----------------------------------------------------------------------
*/

require Orchestra\Testbench\join_paths(__DIR__, 'configure-skeleton.php');
require Orchestra\Sidekick\join_paths(__DIR__, 'configure-skeleton.php');

transform([
line('App\Providers', 2) => line('// App\Providers', 2),
28 changes: 17 additions & 11 deletions composer.json
Original file line number Diff line number Diff line change
@@ -38,14 +38,15 @@
"require": {
"php": "^8.1",
"composer-runtime-api": "^2.2",
"orchestra/sidekick": "^1.0.2",
"orchestra/sidekick": "^1.0.5",
"symfony/deprecation-contracts": "^2.5|^3.0",
"symfony/polyfill-php83": "^1.31"
},
"require-dev": {
"fakerphp/faker": "^1.21",
"laravel/framework": "^10.48.28",
"laravel/pint": "^1.20",
"laravel/serializable-closure": "^1.3 || ^2.0",
"laravel/serializable-closure": "^1.3|^2.0",
"mockery/mockery": "^1.5.1",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^10.1",
@@ -55,24 +56,24 @@
"vlucas/phpdotenv": "^5.4.1"
},
"conflict": {
"brianium/paratest": "<6.4.0 || >=7.0.0 <7.1.4 || >=8.0.0",
"laravel/framework": "<10.48.28 || >=11.0.0",
"laravel/serializable-closure": "<1.3.0 || >=3.0.0",
"nunomaduro/collision": "<6.4.0 || >=7.0.0 <7.4.0 || >=8.0.0",
"orchestra/testbench-dusk": "<8.32.0 || >=9.0.0",
"brianium/paratest": "<6.4.0|>=7.0.0 <7.1.4|>=8.0.0",
"laravel/framework": "<10.48.28|>=11.0.0",
"laravel/serializable-closure": "<1.3.0|>=3.0.0",
"nunomaduro/collision": "<6.4.0|>=7.0.0 <7.4.0|>=8.0.0",
"orchestra/testbench-dusk": "<8.32.0|>=9.0.0",
"orchestra/workbench": "<1.0.0",
"phpunit/phpunit": "<9.6.0 || >=10.3.0 <10.3.3 || >=10.6.0"
"phpunit/phpunit": "<9.6.0|>=10.3.0 <10.3.3|>=10.6.0"
},
"suggest": {
"ext-pcntl": "Required to use all features of the console signal trapping.",
"brianium/paratest": "Allow using parallel testing (^6.4 || ^7.1.4).",
"brianium/paratest": "Allow using parallel testing (^6.4|^7.1.4).",
"fakerphp/faker": "Allow using Faker for testing (^1.21).",
"laravel/framework": "Required for testing (^10.48.28).",
"mockery/mockery": "Allow using Mockery for testing (^1.5.1).",
"nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^6.4 || ^7.4).",
"nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^6.4|^7.4).",
"orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^8.0).",
"orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^8.0).",
"phpunit/phpunit": "Allow using PHPUnit for testing (^9.6 || ^10.1).",
"phpunit/phpunit": "Allow using PHPUnit for testing (^9.6|^10.1).",
"symfony/process": "Required to use Orchestra\\Testbench\\remote function (^6.2).",
"symfony/yaml": "Required for Testbench CLI (^6.2).",
"vlucas/phpdotenv": "Required for Testbench CLI (^5.4.1)."
@@ -108,6 +109,11 @@
"@php bin/sync",
"@lint"
],
"sync-dev": [
"@clear",
"@php bin/sync --dev",
"@lint"
],
"ci": [
"@composer audit",
"@post-autoload-dump",
2 changes: 1 addition & 1 deletion laravel/artisan
100644 → 100755
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ define('LARAVEL_START', microtime(true));
|
*/

require __DIR__.'/vendor/autoload.php';
require __DIR__.'/bootstrap/autoload.php';

$app = require_once __DIR__.'/bootstrap/app.php';

4 changes: 0 additions & 4 deletions laravel/bootstrap/app.php
Original file line number Diff line number Diff line change
@@ -33,10 +33,6 @@
);
};

if (! defined('TESTBENCH_WORKING_PATH') && is_string(getenv('TESTBENCH_WORKING_PATH'))) {
define('TESTBENCH_WORKING_PATH', getenv('TESTBENCH_WORKING_PATH'));
}

$app = $createApp(realpath(join_paths(__DIR__, '..')));

unset($createApp);
9 changes: 9 additions & 0 deletions laravel/bootstrap/autoload.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

if (! defined('TESTBENCH_WORKING_PATH') && is_string(getenv('TESTBENCH_WORKING_PATH'))) {
define('TESTBENCH_WORKING_PATH', getenv('TESTBENCH_WORKING_PATH'));
}

$workingPath = defined('TESTBENCH_WORKING_PATH') ? TESTBENCH_WORKING_PATH : realpath(__DIR__.'/../');

require $workingPath.'/vendor/autoload.php';
5 changes: 0 additions & 5 deletions laravel/composer.json
Original file line number Diff line number Diff line change
@@ -16,10 +16,5 @@
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"minimum-stability": "dev"
}
2 changes: 1 addition & 1 deletion laravel/public/index.php
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@
|
*/

require __DIR__.'/../vendor/autoload.php';
require __DIR__.'/../bootstrap/autoload.php';

/*
|--------------------------------------------------------------------------
11 changes: 9 additions & 2 deletions src/Attributes/UsesVendor.php
Original file line number Diff line number Diff line change
@@ -3,10 +3,12 @@
namespace Orchestra\Testbench\Attributes;

use Attribute;
use Illuminate\Foundation\Application;
use Illuminate\Support\Facades\Facade;
use Orchestra\Testbench\Contracts\Attributes\AfterEach as AfterEachContract;
use Orchestra\Testbench\Contracts\Attributes\BeforeEach as BeforeEachContract;
use Orchestra\Testbench\Foundation\Actions\DeleteVendorSymlink;
use Orchestra\Testbench\Foundation\Application;
use Orchestra\Testbench\Foundation\Application as Testbench;

use function Orchestra\Testbench\package_path;

@@ -26,9 +28,14 @@ final class UsesVendor implements AfterEachContract, BeforeEachContract
*/
public function beforeEach($app): void
{
$laravel = Application::createVendorSymlink(base_path(), package_path('vendor'));
$laravel = Testbench::createVendorSymlink(base_path(), package_path('vendor'));

$this->vendorSymlinkCreated = $laravel['TESTBENCH_VENDOR_SYMLINK'] ?? false;

Facade::clearResolvedInstances();
Facade::setFacadeApplication($app);

Application::setInstance($app);
}

/**
10 changes: 6 additions & 4 deletions src/Concerns/CreatesApplication.php
Original file line number Diff line number Diff line change
@@ -217,13 +217,13 @@ protected function getPackageProviders($app)
/**
* Resolve the application's base path.
*
* @api
* @internal
*
* @return string
*/
protected function getApplicationBasePath()
{
return $this->getBasePath() ?? static::applicationBasePath();
return static::applicationBasePath();
}

/**
@@ -233,11 +233,13 @@ protected function getApplicationBasePath()
*
* @return string|null
*
* @deprecated 6.22.0 Use `getApplicationBasePath()` instead.
* @deprecated 6.22.0 Use `applicationBasePath()` static method instead.
*/
protected function getBasePath()
{
return null;
trigger_deprecation('orchestra/testbench-core', '6.22.0', 'Use `%s` static method instead.', 'applicationBasePath()');

return static::applicationBasePath();
}

/**
15 changes: 15 additions & 0 deletions src/Concerns/HandlesRoutes.php
Original file line number Diff line number Diff line change
@@ -2,11 +2,13 @@

namespace Orchestra\Testbench\Concerns;

use Attribute;
use Closure;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Foundation\Application as LaravelApplication;
use Laravel\SerializableClosure\SerializableClosure;
use Orchestra\Testbench\Attributes\DefineRoute;
use Orchestra\Testbench\Attributes\UsesVendor;
use Orchestra\Testbench\Features\TestingFeature;
use Orchestra\Testbench\Foundation\Application;
use Orchestra\Testbench\Foundation\Bootstrap\SyncTestbenchCachedRoutes;
@@ -20,6 +22,9 @@
*/
trait HandlesRoutes
{
use InteractsWithPHPUnit;
use InteractsWithTestCase;

/**
* Indicates if we have made it through the requireApplicationCachedRoutes function.
*
@@ -106,6 +111,16 @@ protected function defineStashRoutes(Closure|string $route): void
*/
protected function defineCacheRoutes(Closure|string $route, bool $cached = true): void
{
static::usesTestingFeature($attribute = new UsesVendor, Attribute::TARGET_METHOD);

if (
$this->app instanceof LaravelApplication
&& property_exists($this, 'setUpHasRun')
&& $this->setUpHasRun === true
) {
$attribute->beforeEach($this->app);
}

$files = new Filesystem;

$time = time();
Loading