FileSystem.makeWritable.phpt 887 B

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. /**
  3. * Test: Nette\Utils\FileSystem makeWritable()
  4. */
  5. declare(strict_types=1);
  6. use Nette\Utils\FileSystem;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
  10. test('makeWritable', function () {
  11. FileSystem::createDir(getTempDir() . '/12/x');
  12. FileSystem::write(getTempDir() . '/12/x/file', 'Hello');
  13. chmod(getTempDir() . '/12/x/file', 0444);
  14. chmod(getTempDir() . '/12/x', 0555);
  15. chmod(getTempDir() . '/12', 0555);
  16. FileSystem::makeWritable(getTempDir() . '/12');
  17. Assert::same(0777, fileperms(getTempDir() . '/12') & 0777);
  18. Assert::same(0777, fileperms(getTempDir() . '/12/x') & 0777);
  19. Assert::same(0666, fileperms(getTempDir() . '/12/x/file') & 0777);
  20. });
  21. }
  22. Assert::exception(
  23. fn() => FileSystem::makeWritable(getTempDir() . '/13'),
  24. Nette\IOException::class,
  25. "File or directory '%S%' not found.",
  26. );