FileSystem.rename.phpt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /**
  3. * Test: Nette\Utils\FileSystem rename()
  4. */
  5. declare(strict_types=1);
  6. use Nette\Utils\FileSystem;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. test('rename file & dir', function () {
  10. FileSystem::write(getTempDir() . '/8/file', 'Hello');
  11. FileSystem::rename(getTempDir() . '/8', getTempDir() . '/9');
  12. FileSystem::rename(getTempDir() . '/9/file', getTempDir() . '/9/x/file');
  13. Assert::same('Hello', FileSystem::read(getTempDir() . '/9/x/file'));
  14. });
  15. test('overwrite file', function () {
  16. FileSystem::write(getTempDir() . '/8/newfile', 'World');
  17. Assert::exception(
  18. fn() => FileSystem::rename(getTempDir() . '/8/newfile', getTempDir() . '/9/x/file', overwrite: false),
  19. Nette\InvalidStateException::class,
  20. "File or directory '%a%' already exists.",
  21. );
  22. Assert::same('Hello', FileSystem::read(getTempDir() . '/9/x/file'));
  23. FileSystem::rename(getTempDir() . '/8/newfile', getTempDir() . '/9/x/file');
  24. Assert::same('World', FileSystem::read(getTempDir() . '/9/x/file'));
  25. });
  26. test('overwrite dir', function () {
  27. FileSystem::createDir(getTempDir() . '/10/');
  28. Assert::exception(
  29. fn() => FileSystem::rename(getTempDir() . '/10', getTempDir() . '/9', overwrite: false),
  30. Nette\InvalidStateException::class,
  31. "File or directory '%a%' already exists.",
  32. );
  33. Assert::same('World', FileSystem::read(getTempDir() . '/9/x/file'));
  34. FileSystem::rename(getTempDir() . '/10', getTempDir() . '/9');
  35. Assert::false(file_exists(getTempDir() . '/9/x/file'));
  36. Assert::false(file_exists(getTempDir() . '/10'));
  37. });
  38. test('same name', function () {
  39. FileSystem::createDir(getTempDir() . '/11/');
  40. FileSystem::rename(getTempDir() . '/11', getTempDir() . '/11');
  41. Assert::true(file_exists(getTempDir() . '/11'));
  42. FileSystem::rename(getTempDir() . '/11', getTempDir() . '/11/');
  43. Assert::true(file_exists(getTempDir() . '/11'));
  44. });
  45. Assert::exception(
  46. fn() => FileSystem::rename(getTempDir() . '/10', getTempDir() . '/9'),
  47. Nette\IOException::class,
  48. "File or directory '%S%' not found.",
  49. );