Skip to content

Commit

Permalink
tests: division into smaller ones
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed Jan 26, 2023
1 parent c91bac3 commit bcbf7cf
Show file tree
Hide file tree
Showing 8 changed files with 276 additions and 191 deletions.
80 changes: 80 additions & 0 deletions tests/Utils/FileSystem.copy.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?php

/**
* Test: Nette\Utils\FileSystem copy()
*/

declare(strict_types=1);

use Nette\Utils\FileSystem;
use Tester\Assert;

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


class RemoteStream /* extends \streamWrapper */
{
public $context;


public function stream_read()
{
return '';
}


public function stream_open()
{
return true;
}


public function url_stat()
{
return false;
}
}

stream_wrapper_register('remote', RemoteStream::class, STREAM_IS_URL);


test('copy', function () {
Assert::false(stream_is_local('remote://example.com'));

FileSystem::write(getTempDir() . '/3/file', 'Hello');

FileSystem::copy(getTempDir() . '/3/file', getTempDir() . '/3/x/file');
Assert::same('Hello', FileSystem::read(getTempDir() . '/3/x/file'));

FileSystem::copy('remote://example.com', getTempDir() . '/3/x/y/file');
Assert::true(is_file(getTempDir() . '/3/x/y/file'));

FileSystem::write(getTempDir() . '/5/newfile', 'World');

Assert::exception(function () {
FileSystem::copy(getTempDir() . '/5/newfile', getTempDir() . '/3/x/file', false);
}, Nette\InvalidStateException::class, "File or directory '%a%' already exists.");
Assert::same('Hello', FileSystem::read(getTempDir() . '/3/x/file'));

Assert::exception(function () {
FileSystem::copy('remote://example.com', getTempDir() . '/3/x/file', false);
}, Nette\InvalidStateException::class, "File or directory '%a%' already exists.");
Assert::same('Hello', FileSystem::read(getTempDir() . '/3/x/file'));

FileSystem::copy(getTempDir() . '/5/newfile', getTempDir() . '/3/x/file');
Assert::same('World', FileSystem::read(getTempDir() . '/3/x/file'));

Assert::exception(function () {
FileSystem::copy(getTempDir() . '/5', getTempDir() . '/3', false);
}, Nette\InvalidStateException::class, "File or directory '%a%' already exists.");
Assert::true(is_dir(getTempDir() . '/3/x/y'));
Assert::false(file_exists(getTempDir() . '/3/newfile'));

FileSystem::copy(getTempDir() . '/5', getTempDir() . '/3');
Assert::false(file_exists(getTempDir() . '/3/x/y'));
Assert::true(is_file(getTempDir() . '/3/newfile'));
});

Assert::exception(function () {
FileSystem::copy(getTempDir() . '/6', getTempDir() . '/3');
}, Nette\IOException::class, "File or directory '%S%' not found.");
24 changes: 24 additions & 0 deletions tests/Utils/FileSystem.createDir.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

/**
* Test: Nette\Utils\FileSystem createDir()
*/

declare(strict_types=1);

use Nette\Utils\FileSystem;
use Tester\Assert;

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


test('createDir', function () {
FileSystem::createDir(getTempDir() . '/1/b/');
Assert::true(is_dir(getTempDir() . '/1/b'));

FileSystem::createDir(getTempDir() . '/1/');
});

Assert::exception(function () {
FileSystem::createDir('');
}, Nette\IOException::class, "Unable to create directory '' with mode 777.%A%");
25 changes: 25 additions & 0 deletions tests/Utils/FileSystem.delete.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

/**
* Test: Nette\Utils\FileSystem delete()
*/

declare(strict_types=1);

use Nette\Utils\FileSystem;
use Tester\Assert;

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


test('delete file', function () {
FileSystem::write(getTempDir() . '/7/file', 'Hello');
FileSystem::delete(getTempDir() . '/7/file');
Assert::true(is_dir(getTempDir() . '/7'));
});

test('delete dir', function () {
FileSystem::write(getTempDir() . '/7/file', 'Hello');
FileSystem::delete(getTempDir() . '/7');
Assert::false(file_exists(getTempDir() . '/7'));
});
32 changes: 32 additions & 0 deletions tests/Utils/FileSystem.isAbsolute.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

/**
* Test: Nette\Utils\FileSystem isAbsolute()
*/

declare(strict_types=1);

use Nette\Utils\FileSystem;
use Tester\Assert;

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


class RemoteStream /* extends \streamWrapper */
{
}

stream_wrapper_register('remote', RemoteStream::class, STREAM_IS_URL);


Assert::false(FileSystem::isAbsolute(''));
Assert::true(FileSystem::isAbsolute('\\'));
Assert::true(FileSystem::isAbsolute('//'));
Assert::false(FileSystem::isAbsolute('file'));
Assert::false(FileSystem::isAbsolute('dir:/file'));
Assert::false(FileSystem::isAbsolute('dir:\file'));
Assert::true(FileSystem::isAbsolute('d:/file'));
Assert::true(FileSystem::isAbsolute('d:\file'));
Assert::true(FileSystem::isAbsolute('D:\file'));
Assert::true(FileSystem::isAbsolute('http://file'));
Assert::true(FileSystem::isAbsolute('remote://file'));
33 changes: 33 additions & 0 deletions tests/Utils/FileSystem.makeWritable.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

/**
* Test: Nette\Utils\FileSystem makeWritable()
*/

declare(strict_types=1);

use Nette\Utils\FileSystem;
use Tester\Assert;

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


if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
test('makeWritable', function () {
FileSystem::createDir(getTempDir() . '/12/x');
FileSystem::write(getTempDir() . '/12/x/file', 'Hello');
chmod(getTempDir() . '/12/x/file', 0444);
chmod(getTempDir() . '/12/x', 0555);
chmod(getTempDir() . '/12', 0555);

FileSystem::makeWritable(getTempDir() . '/12');

Assert::same(0777, fileperms(getTempDir() . '/12') & 0777);
Assert::same(0777, fileperms(getTempDir() . '/12/x') & 0777);
Assert::same(0666, fileperms(getTempDir() . '/12/x/file') & 0777);
});
}

Assert::exception(function () {
FileSystem::makeWritable(getTempDir() . '/13');
}, Nette\IOException::class, "File or directory '%S%' not found.");
191 changes: 0 additions & 191 deletions tests/Utils/FileSystem.phpt

This file was deleted.

Loading

0 comments on commit bcbf7cf

Please sign in to comment.