{
public function testCopyCreatesNewFile()
{
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($sourceFilePath, 'SOURCE FILE');
*/
public function testCopyFails()
{
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
$this->filesystem->copy($sourceFilePath, $targetFilePath);
}
public function testCopyUnreadableFileFails()
{
// skip test on Windows; PHP can't easily set file as unreadable on Windows
- if ('\\' === DIRECTORY_SEPARATOR) {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
$this->markTestSkipped('This test cannot run on Windows.');
}
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ if (!getenv('USER') || 'root' === getenv('USER')) {
+ $this->markTestSkipped('This test will fail if run under superuser');
+ }
+
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($sourceFilePath, 'SOURCE FILE');
public function testCopyOverridesExistingFileIfModified()
{
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($sourceFilePath, 'SOURCE FILE');
file_put_contents($targetFilePath, 'TARGET FILE');
public function testCopyDoesNotOverrideExistingFileByDefault()
{
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($sourceFilePath, 'SOURCE FILE');
file_put_contents($targetFilePath, 'TARGET FILE');
public function testCopyOverridesExistingFileIfForced()
{
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($sourceFilePath, 'SOURCE FILE');
file_put_contents($targetFilePath, 'TARGET FILE');
public function testCopyWithOverrideWithReadOnlyTargetFails()
{
// skip test on Windows; PHP can't easily set file as unwritable on Windows
- if ('\\' === DIRECTORY_SEPARATOR) {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
$this->markTestSkipped('This test cannot run on Windows.');
}
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ if (!getenv('USER') || 'root' === getenv('USER')) {
+ $this->markTestSkipped('This test will fail if run under superuser');
+ }
+
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($sourceFilePath, 'SOURCE FILE');
file_put_contents($targetFilePath, 'TARGET FILE');
public function testCopyCreatesTargetDirectoryIfItDoesNotExist()
{
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFileDirectory = $this->workspace.DIRECTORY_SEPARATOR.'directory';
- $targetFilePath = $targetFileDirectory.DIRECTORY_SEPARATOR.'copy_target_file';
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFileDirectory = $this->workspace.\DIRECTORY_SEPARATOR.'directory';
+ $targetFilePath = $targetFileDirectory.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($sourceFilePath, 'SOURCE FILE');
*/
public function testCopyForOriginUrlsAndExistingLocalFileDefaultsToCopy()
{
- $sourceFilePath = 'http://symfony.com/images/common/logo/logo_symfony_header.png';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ if (!\in_array('https', stream_get_wrappers())) {
+ $this->markTestSkipped('"https" stream wrapper is not enabled.');
+ }
+ $sourceFilePath = 'https://symfony.com/images/common/logo/logo_symfony_header.png';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($targetFilePath, 'TARGET FILE');
public function testMkdirCreatesDirectoriesRecursively()
{
$directory = $this->workspace
- .DIRECTORY_SEPARATOR.'directory'
- .DIRECTORY_SEPARATOR.'sub_directory';
+ .\DIRECTORY_SEPARATOR.'directory'
+ .\DIRECTORY_SEPARATOR.'sub_directory';
$this->filesystem->mkdir($directory);
public function testMkdirCreatesDirectoriesFromArray()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
$directories = array(
$basePath.'1', $basePath.'2', $basePath.'3',
);
public function testMkdirCreatesDirectoriesFromTraversableObject()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
$directories = new \ArrayObject(array(
$basePath.'1', $basePath.'2', $basePath.'3',
));
*/
public function testMkdirCreatesDirectoriesFails()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
$dir = $basePath.'2';
file_put_contents($dir, '');
public function testTouchCreatesEmptyFile()
{
- $file = $this->workspace.DIRECTORY_SEPARATOR.'1';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'1';
$this->filesystem->touch($file);
*/
public function testTouchFails()
{
- $file = $this->workspace.DIRECTORY_SEPARATOR.'1'.DIRECTORY_SEPARATOR.'2';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'1'.\DIRECTORY_SEPARATOR.'2';
$this->filesystem->touch($file);
}
public function testTouchCreatesEmptyFilesFromArray()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
$files = array(
$basePath.'1', $basePath.'2', $basePath.'3',
);
public function testTouchCreatesEmptyFilesFromTraversableObject()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
$files = new \ArrayObject(array(
$basePath.'1', $basePath.'2', $basePath.'3',
));
public function testRemoveCleansFilesAndDirectoriesIteratively()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR.'directory'.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR.'directory'.\DIRECTORY_SEPARATOR;
mkdir($basePath);
mkdir($basePath.'dir');
public function testRemoveCleansArrayOfFilesAndDirectories()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
mkdir($basePath.'dir');
touch($basePath.'file');
public function testRemoveCleansTraversableObjectOfFilesAndDirectories()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
mkdir($basePath.'dir');
touch($basePath.'file');
public function testRemoveIgnoresNonExistingFiles()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
mkdir($basePath.'dir');
{
$this->markAsSkippedIfSymlinkIsMissing();
- $basePath = $this->workspace.DIRECTORY_SEPARATOR.'directory'.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR.'directory'.\DIRECTORY_SEPARATOR;
mkdir($basePath);
mkdir($basePath.'dir');
// create symlink to nonexistent dir
rmdir($basePath.'dir');
- $this->assertFalse('\\' === DIRECTORY_SEPARATOR ? @readlink($basePath.'dir-link') : is_dir($basePath.'dir-link'));
+ $this->assertFalse('\\' === \DIRECTORY_SEPARATOR ? @readlink($basePath.'dir-link') : is_dir($basePath.'dir-link'));
$this->filesystem->remove($basePath);
public function testFilesExists()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR.'directory'.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR.'directory'.\DIRECTORY_SEPARATOR;
mkdir($basePath);
touch($basePath.'file1');
*/
public function testFilesExistsFails()
{
- if ('\\' !== DIRECTORY_SEPARATOR) {
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
$this->markTestSkipped('Long file names are an issue on Windows');
}
$basePath = $this->workspace.'\\directory\\';
$oldPath = getcwd();
mkdir($basePath);
chdir($basePath);
- $file = str_repeat('T', $maxPathLength - strlen($basePath) + 1);
+ $file = str_repeat('T', $maxPathLength - \strlen($basePath) + 1);
$path = $basePath.$file;
exec('TYPE NUL >>'.$file); // equivalent of touch, we can not use the php touch() here because it suffers from the same limitation
$this->longPathNamesWindows[] = $path; // save this so we can clean up later
public function testFilesExistsTraversableObjectOfFilesAndDirectories()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
mkdir($basePath.'dir');
touch($basePath.'file');
public function testFilesNotExistsTraversableObjectOfFilesAndDirectories()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR;
mkdir($basePath.'dir');
touch($basePath.'file');
public function testInvalidFileNotExists()
{
- $basePath = $this->workspace.DIRECTORY_SEPARATOR.'directory'.DIRECTORY_SEPARATOR;
+ $basePath = $this->workspace.\DIRECTORY_SEPARATOR.'directory'.\DIRECTORY_SEPARATOR;
$this->assertFalse($this->filesystem->exists($basePath.time()));
}
{
$this->markAsSkippedIfChmodIsMissing();
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'dir';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'dir';
mkdir($dir);
- $file = $dir.DIRECTORY_SEPARATOR.'file';
+ $file = $dir.\DIRECTORY_SEPARATOR.'file';
touch($file);
$this->filesystem->chmod($file, 0400);
{
$this->markAsSkippedIfChmodIsMissing();
- if (defined('HHVM_VERSION')) {
+ if (\defined('HHVM_VERSION')) {
$this->markTestSkipped('chmod() changes permissions even when passing invalid modes on HHVM');
}
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'file';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'file';
touch($dir);
$permissions = fileperms($dir);
{
$this->markAsSkippedIfChmodIsMissing();
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'dir';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'dir';
mkdir($dir);
- $file = $dir.DIRECTORY_SEPARATOR.'file';
+ $file = $dir.\DIRECTORY_SEPARATOR.'file';
touch($file);
$this->filesystem->chmod($file, 0400, 0000, true);
{
$this->markAsSkippedIfChmodIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
touch($file);
$this->filesystem->chmod($file, 0770, 0022);
{
$this->markAsSkippedIfChmodIsMissing();
- $directory = $this->workspace.DIRECTORY_SEPARATOR.'directory';
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
+ $directory = $this->workspace.\DIRECTORY_SEPARATOR.'directory';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
$files = array($directory, $file);
mkdir($directory);
{
$this->markAsSkippedIfChmodIsMissing();
- $directory = $this->workspace.DIRECTORY_SEPARATOR.'directory';
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
+ $directory = $this->workspace.\DIRECTORY_SEPARATOR.'directory';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
$files = new \ArrayObject(array($directory, $file));
mkdir($directory);
{
$this->markAsSkippedIfChmodIsMissing();
- $directory = $this->workspace.DIRECTORY_SEPARATOR.'directory';
- $subdirectory = $directory.DIRECTORY_SEPARATOR.'subdirectory';
+ $directory = $this->workspace.\DIRECTORY_SEPARATOR.'directory';
+ $subdirectory = $directory.\DIRECTORY_SEPARATOR.'subdirectory';
mkdir($directory);
mkdir($subdirectory);
{
$this->markAsSkippedIfPosixIsMissing();
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'dir';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'dir';
mkdir($dir);
$owner = $this->getFileOwner($dir);
{
$this->markAsSkippedIfPosixIsMissing();
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'dir';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'dir';
mkdir($dir);
- $file = $dir.DIRECTORY_SEPARATOR.'file';
+ $file = $dir.\DIRECTORY_SEPARATOR.'file';
touch($file);
$owner = $this->getFileOwner($dir);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfPosixIsMissing();
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'dir';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'dir';
mkdir($dir);
$this->filesystem->chown($dir, 'user'.time().mt_rand(1000, 9999));
{
$this->markAsSkippedIfPosixIsMissing();
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'dir';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'dir';
mkdir($dir);
$group = $this->getFileGroup($dir);
{
$this->markAsSkippedIfPosixIsMissing();
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'dir';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'dir';
mkdir($dir);
- $file = $dir.DIRECTORY_SEPARATOR.'file';
+ $file = $dir.\DIRECTORY_SEPARATOR.'file';
touch($file);
$group = $this->getFileGroup($dir);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfPosixIsMissing();
- $dir = $this->workspace.DIRECTORY_SEPARATOR.'dir';
+ $dir = $this->workspace.\DIRECTORY_SEPARATOR.'dir';
mkdir($dir);
$this->filesystem->chgrp($dir, 'user'.time().mt_rand(1000, 9999));
public function testRename()
{
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $newPath = $this->workspace.DIRECTORY_SEPARATOR.'new_file';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $newPath = $this->workspace.\DIRECTORY_SEPARATOR.'new_file';
touch($file);
$this->filesystem->rename($file, $newPath);
*/
public function testRenameThrowsExceptionIfTargetAlreadyExists()
{
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $newPath = $this->workspace.DIRECTORY_SEPARATOR.'new_file';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $newPath = $this->workspace.\DIRECTORY_SEPARATOR.'new_file';
touch($file);
touch($newPath);
public function testRenameOverwritesTheTargetIfItAlreadyExists()
{
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $newPath = $this->workspace.DIRECTORY_SEPARATOR.'new_file';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $newPath = $this->workspace.\DIRECTORY_SEPARATOR.'new_file';
touch($file);
touch($newPath);
*/
public function testRenameThrowsExceptionOnError()
{
- $file = $this->workspace.DIRECTORY_SEPARATOR.uniqid('fs_test_', true);
- $newPath = $this->workspace.DIRECTORY_SEPARATOR.'new_file';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.uniqid('fs_test_', true);
+ $newPath = $this->workspace.\DIRECTORY_SEPARATOR.'new_file';
$this->filesystem->rename($file, $newPath);
}
public function testSymlink()
{
- if ('\\' === DIRECTORY_SEPARATOR) {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
$this->markTestSkipped('Windows does not support creating "broken" symlinks');
}
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
// $file does not exists right now: creating "broken" links is a wanted feature
$this->filesystem->symlink($file, $link);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
$this->filesystem->remove($link);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
symlink($this->workspace, $link);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
symlink($file, $link);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link1 = $this->workspace.DIRECTORY_SEPARATOR.'dir'.DIRECTORY_SEPARATOR.'link';
- $link2 = $this->workspace.DIRECTORY_SEPARATOR.'dir'.DIRECTORY_SEPARATOR.'subdir'.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link1 = $this->workspace.\DIRECTORY_SEPARATOR.'dir'.\DIRECTORY_SEPARATOR.'link';
+ $link2 = $this->workspace.\DIRECTORY_SEPARATOR.'dir'.\DIRECTORY_SEPARATOR.'subdir'.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
$this->filesystem->hardlink($file, $link);
{
$this->markAsSkippedIfLinkIsMissing();
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
$this->filesystem->remove($link);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $file2 = $this->workspace.DIRECTORY_SEPARATOR.'file2';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $file2 = $this->workspace.\DIRECTORY_SEPARATOR.'file2';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
touch($file2);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
link($file, $link);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link1 = $this->workspace.DIRECTORY_SEPARATOR.'link';
- $link2 = $this->workspace.DIRECTORY_SEPARATOR.'link2';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link1 = $this->workspace.\DIRECTORY_SEPARATOR.'link';
+ $link2 = $this->workspace.\DIRECTORY_SEPARATOR.'link2';
touch($file);
{
$this->markAsSkippedIfLinkIsMissing();
- $file = $this->workspace.DIRECTORY_SEPARATOR.'file';
- $link = $this->workspace.DIRECTORY_SEPARATOR.'link';
+ $file = $this->workspace.\DIRECTORY_SEPARATOR.'file';
+ $link = $this->workspace.\DIRECTORY_SEPARATOR.'link';
touch($file);
{
$this->markAsSkippedIfSymlinkIsMissing();
- if ('\\' === DIRECTORY_SEPARATOR) {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
$this->markTestSkipped('Relative symbolic links are not supported on Windows');
}
{
$this->markAsSkippedIfSymlinkIsMissing();
- if ('\\' === DIRECTORY_SEPARATOR) {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
$this->markTestSkipped('Windows does not support creating "broken" symlinks');
}
array('C:/../../aa/../bb/cc', 'C:/aa/dd/..', '../bb/cc/'),
);
- if ('\\' === DIRECTORY_SEPARATOR) {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
$paths[] = array('c:\var\lib/symfony/src/Symfony/', 'c:/var/lib/symfony/', 'src/Symfony/');
}
public function testMirrorCopiesFilesAndDirectoriesRecursively()
{
- $sourcePath = $this->workspace.DIRECTORY_SEPARATOR.'source'.DIRECTORY_SEPARATOR;
- $directory = $sourcePath.'directory'.DIRECTORY_SEPARATOR;
+ $sourcePath = $this->workspace.\DIRECTORY_SEPARATOR.'source'.\DIRECTORY_SEPARATOR;
+ $directory = $sourcePath.'directory'.\DIRECTORY_SEPARATOR;
$file1 = $directory.'file1';
$file2 = $sourcePath.'file2';
file_put_contents($file1, 'FILE1');
file_put_contents($file2, 'FILE2');
- $targetPath = $this->workspace.DIRECTORY_SEPARATOR.'target'.DIRECTORY_SEPARATOR;
+ $targetPath = $this->workspace.\DIRECTORY_SEPARATOR.'target'.\DIRECTORY_SEPARATOR;
$this->filesystem->mirror($sourcePath, $targetPath);
$this->assertTrue(is_dir($targetPath));
$this->assertTrue(is_dir($targetPath.'directory'));
- $this->assertFileEquals($file1, $targetPath.'directory'.DIRECTORY_SEPARATOR.'file1');
+ $this->assertFileEquals($file1, $targetPath.'directory'.\DIRECTORY_SEPARATOR.'file1');
$this->assertFileEquals($file2, $targetPath.'file2');
$this->filesystem->remove($file1);
$this->filesystem->mirror($sourcePath, $targetPath, null, array('delete' => false));
- $this->assertTrue($this->filesystem->exists($targetPath.'directory'.DIRECTORY_SEPARATOR.'file1'));
+ $this->assertTrue($this->filesystem->exists($targetPath.'directory'.\DIRECTORY_SEPARATOR.'file1'));
$this->filesystem->mirror($sourcePath, $targetPath, null, array('delete' => true));
- $this->assertFalse($this->filesystem->exists($targetPath.'directory'.DIRECTORY_SEPARATOR.'file1'));
+ $this->assertFalse($this->filesystem->exists($targetPath.'directory'.\DIRECTORY_SEPARATOR.'file1'));
file_put_contents($file1, 'FILE1');
$this->filesystem->mirror($sourcePath, $targetPath, null, array('delete' => true));
- $this->assertTrue($this->filesystem->exists($targetPath.'directory'.DIRECTORY_SEPARATOR.'file1'));
+ $this->assertTrue($this->filesystem->exists($targetPath.'directory'.\DIRECTORY_SEPARATOR.'file1'));
$this->filesystem->remove($directory);
$this->filesystem->mirror($sourcePath, $targetPath, null, array('delete' => true));
$this->assertFalse($this->filesystem->exists($targetPath.'directory'));
- $this->assertFalse($this->filesystem->exists($targetPath.'directory'.DIRECTORY_SEPARATOR.'file1'));
+ $this->assertFalse($this->filesystem->exists($targetPath.'directory'.\DIRECTORY_SEPARATOR.'file1'));
}
public function testMirrorCreatesEmptyDirectory()
{
- $sourcePath = $this->workspace.DIRECTORY_SEPARATOR.'source'.DIRECTORY_SEPARATOR;
+ $sourcePath = $this->workspace.\DIRECTORY_SEPARATOR.'source'.\DIRECTORY_SEPARATOR;
mkdir($sourcePath);
- $targetPath = $this->workspace.DIRECTORY_SEPARATOR.'target'.DIRECTORY_SEPARATOR;
+ $targetPath = $this->workspace.\DIRECTORY_SEPARATOR.'target'.\DIRECTORY_SEPARATOR;
$this->filesystem->mirror($sourcePath, $targetPath);
{
$this->markAsSkippedIfSymlinkIsMissing();
- $sourcePath = $this->workspace.DIRECTORY_SEPARATOR.'source'.DIRECTORY_SEPARATOR;
+ $sourcePath = $this->workspace.\DIRECTORY_SEPARATOR.'source'.\DIRECTORY_SEPARATOR;
mkdir($sourcePath);
file_put_contents($sourcePath.'file1', 'FILE1');
symlink($sourcePath.'file1', $sourcePath.'link1');
- $targetPath = $this->workspace.DIRECTORY_SEPARATOR.'target'.DIRECTORY_SEPARATOR;
+ $targetPath = $this->workspace.\DIRECTORY_SEPARATOR.'target'.\DIRECTORY_SEPARATOR;
$this->filesystem->mirror($sourcePath, $targetPath);
$this->assertTrue(is_dir($targetPath));
$this->assertFileEquals($sourcePath.'file1', $targetPath.'link1');
- $this->assertTrue(is_link($targetPath.DIRECTORY_SEPARATOR.'link1'));
+ $this->assertTrue(is_link($targetPath.\DIRECTORY_SEPARATOR.'link1'));
}
public function testMirrorCopiesLinkedDirectoryContents()
{
$this->markAsSkippedIfSymlinkIsMissing(true);
- $sourcePath = $this->workspace.DIRECTORY_SEPARATOR.'source'.DIRECTORY_SEPARATOR;
+ $sourcePath = $this->workspace.\DIRECTORY_SEPARATOR.'source'.\DIRECTORY_SEPARATOR;
mkdir($sourcePath.'nested/', 0777, true);
file_put_contents($sourcePath.'/nested/file1.txt', 'FILE1');
// Note: We symlink directory, not file
symlink($sourcePath.'nested', $sourcePath.'link1');
- $targetPath = $this->workspace.DIRECTORY_SEPARATOR.'target'.DIRECTORY_SEPARATOR;
+ $targetPath = $this->workspace.\DIRECTORY_SEPARATOR.'target'.\DIRECTORY_SEPARATOR;
$this->filesystem->mirror($sourcePath, $targetPath);
$this->assertTrue(is_dir($targetPath));
$this->assertFileEquals($sourcePath.'/nested/file1.txt', $targetPath.'link1/file1.txt');
- $this->assertTrue(is_link($targetPath.DIRECTORY_SEPARATOR.'link1'));
+ $this->assertTrue(is_link($targetPath.\DIRECTORY_SEPARATOR.'link1'));
}
public function testMirrorCopiesRelativeLinkedContents()
{
$this->markAsSkippedIfSymlinkIsMissing(true);
- $sourcePath = $this->workspace.DIRECTORY_SEPARATOR.'source'.DIRECTORY_SEPARATOR;
+ $sourcePath = $this->workspace.\DIRECTORY_SEPARATOR.'source'.\DIRECTORY_SEPARATOR;
$oldPath = getcwd();
mkdir($sourcePath.'nested/', 0777, true);
chdir($oldPath);
- $targetPath = $this->workspace.DIRECTORY_SEPARATOR.'target'.DIRECTORY_SEPARATOR;
+ $targetPath = $this->workspace.\DIRECTORY_SEPARATOR.'target'.\DIRECTORY_SEPARATOR;
$this->filesystem->mirror($sourcePath, $targetPath);
$this->assertTrue(is_dir($targetPath));
$this->assertFileEquals($sourcePath.'/nested/file1.txt', $targetPath.'link1/file1.txt');
- $this->assertTrue(is_link($targetPath.DIRECTORY_SEPARATOR.'link1'));
- $this->assertEquals('\\' === DIRECTORY_SEPARATOR ? realpath($sourcePath.'\nested') : 'nested', readlink($targetPath.DIRECTORY_SEPARATOR.'link1'));
+ $this->assertTrue(is_link($targetPath.\DIRECTORY_SEPARATOR.'link1'));
+ $this->assertEquals('\\' === \DIRECTORY_SEPARATOR ? realpath($sourcePath.'\nested') : 'nested', readlink($targetPath.\DIRECTORY_SEPARATOR.'link1'));
}
public function testMirrorContentsWithSameNameAsSourceOrTargetWithoutDeleteOption()
{
- $sourcePath = $this->workspace.DIRECTORY_SEPARATOR.'source'.DIRECTORY_SEPARATOR;
+ $sourcePath = $this->workspace.\DIRECTORY_SEPARATOR.'source'.\DIRECTORY_SEPARATOR;
mkdir($sourcePath);
touch($sourcePath.'source');
touch($sourcePath.'target');
- $targetPath = $this->workspace.DIRECTORY_SEPARATOR.'target'.DIRECTORY_SEPARATOR;
+ $targetPath = $this->workspace.\DIRECTORY_SEPARATOR.'target'.\DIRECTORY_SEPARATOR;
$oldPath = getcwd();
chdir($this->workspace);
public function testMirrorContentsWithSameNameAsSourceOrTargetWithDeleteOption()
{
- $sourcePath = $this->workspace.DIRECTORY_SEPARATOR.'source'.DIRECTORY_SEPARATOR;
+ $sourcePath = $this->workspace.\DIRECTORY_SEPARATOR.'source'.\DIRECTORY_SEPARATOR;
mkdir($sourcePath);
touch($sourcePath.'source');
- $targetPath = $this->workspace.DIRECTORY_SEPARATOR.'target'.DIRECTORY_SEPARATOR;
+ $targetPath = $this->workspace.\DIRECTORY_SEPARATOR.'target'.\DIRECTORY_SEPARATOR;
mkdir($targetPath);
touch($targetPath.'source');
public function testTempnamOnUnwritableFallsBackToSysTmp()
{
$scheme = 'file://';
- $dirname = $scheme.$this->workspace.DIRECTORY_SEPARATOR.'does_not_exist';
+ $dirname = $scheme.$this->workspace.\DIRECTORY_SEPARATOR.'does_not_exist';
$filename = $this->filesystem->tempnam($dirname, 'bar');
$realTempDir = realpath(sys_get_temp_dir());
- $this->assertStringStartsWith(rtrim($scheme.$realTempDir, DIRECTORY_SEPARATOR), $filename);
+ $this->assertStringStartsWith(rtrim($scheme.$realTempDir, \DIRECTORY_SEPARATOR), $filename);
$this->assertFileExists($filename);
// Tear down
public function testDumpFile()
{
- $filename = $this->workspace.DIRECTORY_SEPARATOR.'foo'.DIRECTORY_SEPARATOR.'baz.txt';
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'baz.txt';
// skip mode check on Windows
- if ('\\' !== DIRECTORY_SEPARATOR) {
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
$oldMask = umask(0002);
}
$this->assertStringEqualsFile($filename, 'bar');
// skip mode check on Windows
- if ('\\' !== DIRECTORY_SEPARATOR) {
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
$this->assertFilePermissions(664, $filename);
umask($oldMask);
}
}
+ public function testDumpFileWithArray()
+ {
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'baz.txt';
+
+ $this->filesystem->dumpFile($filename, array('bar'));
+
+ $this->assertFileExists($filename);
+ $this->assertStringEqualsFile($filename, 'bar');
+ }
+
+ public function testDumpFileWithResource()
+ {
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'baz.txt';
+
+ $resource = fopen('php://memory', 'rw');
+ fwrite($resource, 'bar');
+ fseek($resource, 0);
+
+ $this->filesystem->dumpFile($filename, $resource);
+
+ fclose($resource);
+ $this->assertFileExists($filename);
+ $this->assertStringEqualsFile($filename, 'bar');
+ }
+
public function testDumpFileOverwritesAnExistingFile()
{
- $filename = $this->workspace.DIRECTORY_SEPARATOR.'foo.txt';
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo.txt';
file_put_contents($filename, 'FOO BAR');
$this->filesystem->dumpFile($filename, 'bar');
public function testDumpFileWithFileScheme()
{
- if (defined('HHVM_VERSION')) {
+ if (\defined('HHVM_VERSION')) {
$this->markTestSkipped('HHVM does not handle the file:// scheme correctly');
}
$scheme = 'file://';
- $filename = $scheme.$this->workspace.DIRECTORY_SEPARATOR.'foo'.DIRECTORY_SEPARATOR.'baz.txt';
+ $filename = $scheme.$this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'baz.txt';
$this->filesystem->dumpFile($filename, 'bar');
public function testDumpFileWithZlibScheme()
{
$scheme = 'compress.zlib://';
- $filename = $this->workspace.DIRECTORY_SEPARATOR.'foo'.DIRECTORY_SEPARATOR.'baz.txt';
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'baz.txt';
$this->filesystem->dumpFile($filename, 'bar');
public function testAppendToFile()
{
- $filename = $this->workspace.DIRECTORY_SEPARATOR.'foo'.DIRECTORY_SEPARATOR.'bar.txt';
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'bar.txt';
// skip mode check on Windows
- if ('\\' !== DIRECTORY_SEPARATOR) {
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
$oldMask = umask(0002);
}
$this->assertStringEqualsFile($filename, 'foobar');
// skip mode check on Windows
- if ('\\' !== DIRECTORY_SEPARATOR) {
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
$this->assertFilePermissions(664, $filename);
umask($oldMask);
}
public function testAppendToFileWithScheme()
{
- if (defined('HHVM_VERSION')) {
+ if (\defined('HHVM_VERSION')) {
$this->markTestSkipped('HHVM does not handle the file:// scheme correctly');
}
$scheme = 'file://';
- $filename = $scheme.$this->workspace.DIRECTORY_SEPARATOR.'foo'.DIRECTORY_SEPARATOR.'baz.txt';
+ $filename = $scheme.$this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'baz.txt';
$this->filesystem->dumpFile($filename, 'foo');
$this->filesystem->appendToFile($filename, 'bar');
public function testAppendToFileWithZlibScheme()
{
$scheme = 'compress.zlib://';
- $filename = $this->workspace.DIRECTORY_SEPARATOR.'foo'.DIRECTORY_SEPARATOR.'baz.txt';
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'baz.txt';
$this->filesystem->dumpFile($filename, 'foo');
// Zlib stat uses file:// wrapper so remove it
public function testAppendToFileCreateTheFileIfNotExists()
{
- $filename = $this->workspace.DIRECTORY_SEPARATOR.'foo'.DIRECTORY_SEPARATOR.'bar.txt';
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo'.\DIRECTORY_SEPARATOR.'bar.txt';
// skip mode check on Windows
- if ('\\' !== DIRECTORY_SEPARATOR) {
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
$oldMask = umask(0002);
}
$this->filesystem->appendToFile($filename, 'bar');
// skip mode check on Windows
- if ('\\' !== DIRECTORY_SEPARATOR) {
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
$this->assertFilePermissions(664, $filename);
umask($oldMask);
}
{
$this->markAsSkippedIfChmodIsMissing();
- $filename = $this->workspace.DIRECTORY_SEPARATOR.'foo.txt';
+ $filename = $this->workspace.\DIRECTORY_SEPARATOR.'foo.txt';
file_put_contents($filename, 'FOO BAR');
chmod($filename, 0745);
{
$this->markAsSkippedIfChmodIsMissing();
- $sourceFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_source_file';
- $targetFilePath = $this->workspace.DIRECTORY_SEPARATOR.'copy_target_file';
+ $sourceFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_source_file';
+ $targetFilePath = $this->workspace.\DIRECTORY_SEPARATOR.'copy_target_file';
file_put_contents($sourceFilePath, 'SOURCE FILE');
chmod($sourceFilePath, 0745);
*/
private function normalize($path)
{
- return str_replace('/', DIRECTORY_SEPARATOR, $path);
+ return str_replace('/', \DIRECTORY_SEPARATOR, $path);
}
}