Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/Illuminate/Foundation/Http/Kernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
use Illuminate\Routing\Pipeline;
use Illuminate\Routing\Router;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Facade;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\InteractsWithTime;
use InvalidArgumentException;
use Throwable;
Expand Down Expand Up @@ -165,7 +165,7 @@ protected function sendRequestThroughRouter($request)
{
$this->app->instance('request', $request);

Facade::clearResolvedInstance('request');
Request::clearResolvedInstance();

$this->bootstrap();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Illuminate\Foundation\Mix;
use Illuminate\Foundation\Vite;
use Illuminate\Support\Defer\DeferredCallbackCollection;
use Illuminate\Support\Facades\Facade;
use Illuminate\Support\Facades\Vite as ViteFacade;
use Illuminate\Support\HtmlString;
use Mockery;

Expand Down Expand Up @@ -123,7 +123,7 @@ protected function withoutVite()
$this->originalVite = app(Vite::class);
}

Facade::clearResolvedInstance(Vite::class);
ViteFacade::clearResolvedInstance();

$this->swap(Vite::class, new class extends Vite
{
Expand Down
6 changes: 3 additions & 3 deletions src/Illuminate/Support/Facades/Facade.php
Original file line number Diff line number Diff line change
Expand Up @@ -247,12 +247,12 @@ protected static function resolveFacadeInstance($name)
/**
* Clear a resolved facade instance.
*
* @param string $name
* @param ?string $name
* @return void
*/
public static function clearResolvedInstance($name)
public static function clearResolvedInstance($name = null)
{
unset(static::$resolvedInstance[$name]);
unset(static::$resolvedInstance[$name ?? static::getFacadeAccessor()]);
}

/**
Expand Down
34 changes: 34 additions & 0 deletions tests/Support/SupportFacadeTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,40 @@ public function testExpectsReturnsAMockeryMockWithExpectationRequired()
$this->assertInstanceOf(MockInterface::class, $mock = FacadeStub::expects('foo')->with('bar')->andReturn('baz')->getMock());
$this->assertSame('baz', $app['foo']->foo('bar'));
}

public function testFacadeResolvesAgainAfterClearingSpecific()
{
$app = new ApplicationStub;
$app->setAttributes(['foo' => $mock = m::mock(stdClass::class)]);
$mock->shouldReceive('bar')->times(3)->andReturn('baz');

// Resolve for the first time
FacadeStub::setFacadeApplication($app);
$this->assertSame('baz', FacadeStub::bar());

// Clear resolved instance and resolve the second time
FacadeStub::clearResolvedInstance();
$this->assertSame('baz', FacadeStub::bar());

// Clear resolved instance through parent and resolve the third time
Facade::clearResolvedInstance('foo');
$this->assertSame('baz', FacadeStub::bar());
}

public function testFacadeResolvesAgainAfterClearingAll()
{
$app = new ApplicationStub;
$app->setAttributes(['foo' => $mock = m::mock(stdClass::class)]);
$mock->shouldReceive('bar')->times(2)->andReturn('baz');

// Resolve for the first time
FacadeStub::setFacadeApplication($app);
$this->assertSame('baz', FacadeStub::bar());

// Clear all resolved instances and resolve a second time
Facade::clearResolvedInstances();
$this->assertSame('baz', FacadeStub::bar());
}
}

class FacadeStub extends Facade
Expand Down
4 changes: 2 additions & 2 deletions tests/Support/SupportFacadesEventTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ protected function setUp(): void

protected function tearDown(): void
{
Event::clearResolvedInstances();
Event::setFacadeApplication(null);
Facade::clearResolvedInstances();
Facade::setFacadeApplication(null);

m::close();
}
Expand Down
2 changes: 1 addition & 1 deletion tests/Support/SupportFacadesQueueTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ protected function setUp(): void

protected function tearDown(): void
{
Queue::clearResolvedInstances();
Queue::clearResolvedInstance();
Queue::setFacadeApplication(null);

m::close();
Expand Down
2 changes: 1 addition & 1 deletion tests/Testing/Concerns/TestDatabasesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ protected function tearDown(): void
parent::tearDown();

Container::setInstance(null);
DB::clearResolvedInstances();
DB::clearResolvedInstance();
DB::setFacadeApplication(null);

unset($_SERVER['LARAVEL_PARALLEL_TESTING']);
Expand Down