FilesystemTest.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace Illuminate\Tests\Integration\Filesystem;
  3. use Illuminate\Support\Facades\File;
  4. use Orchestra\Testbench\TestCase;
  5. use Symfony\Component\Process\Process;
  6. /**
  7. * @requires OS Linux|Darwin
  8. */
  9. class FilesystemTest extends TestCase
  10. {
  11. protected $stubFile;
  12. protected function setUp(): void
  13. {
  14. $this->afterApplicationCreated(function () {
  15. File::put($file = storage_path('app/public/StardewTaylor.png'), File::get(__DIR__.'/Fixtures/StardewTaylor.png'));
  16. $this->stubFile = $file;
  17. });
  18. $this->beforeApplicationDestroyed(function () {
  19. if (File::exists($this->stubFile)) {
  20. File::delete($this->stubFile);
  21. }
  22. });
  23. parent::setUp();
  24. }
  25. public function testItCanDeleteViaFilesystemShouldUpdatesFileExists()
  26. {
  27. $this->assertTrue(File::exists($this->stubFile));
  28. $this->assertTrue(File::isFile($this->stubFile));
  29. File::delete($this->stubFile);
  30. $this->assertFalse(File::exists($this->stubFile));
  31. }
  32. public function testItCanDeleteViaFilesystemRequiresManualClearStatCacheOnFileExistsFromDifferentProcess()
  33. {
  34. $this->assertTrue(File::exists($this->stubFile));
  35. $this->assertTrue(File::isFile($this->stubFile));
  36. Process::fromShellCommandline("rm {$this->stubFile}")->run();
  37. clearstatcache(true, $this->stubFile);
  38. $this->assertFalse(File::exists($this->stubFile));
  39. }
  40. public function testItCanDeleteViaFilesystemShouldUpdatesIsFile()
  41. {
  42. $this->assertTrue(File::exists($this->stubFile));
  43. $this->assertTrue(File::isFile($this->stubFile));
  44. File::delete($this->stubFile);
  45. $this->assertFalse(File::isFile($this->stubFile));
  46. }
  47. public function testItCanDeleteViaFilesystemRequiresManualClearStatCacheOnIsFileFromDifferentProcess()
  48. {
  49. $this->assertTrue(File::exists($this->stubFile));
  50. $this->assertTrue(File::isFile($this->stubFile));
  51. Process::fromShellCommandline("rm {$this->stubFile}")->run();
  52. clearstatcache(true, $this->stubFile);
  53. $this->assertFalse(File::isFile($this->stubFile));
  54. }
  55. }