Fix #8205 : Deprecate file mode update when calling dumpFile

This commit is contained in:
Romain Neutron 2014-03-19 16:50:37 +01:00 committed by Fabien Potencier
parent 16434b5611
commit cefb67a340
6 changed files with 41 additions and 17 deletions

View File

@ -20,12 +20,12 @@ class CompilerDebugDumpPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$filename = self::getCompilerLogFilename($container);
$filesystem = new Filesystem();
$filesystem->dumpFile(
self::getCompilerLogFilename($container),
implode("\n", $container->getCompiler()->getLog()),
0666 & ~umask()
);
$filesystem->dumpFile($filename, implode("\n", $container->getCompiler()->getLog()), null);
// discard chmod failure (some filesystem may not support it)
@chmod($filename, 0666 & ~umask());
}
public static function getCompilerLogFilename(ContainerInterface $container)

View File

@ -28,11 +28,10 @@ class ContainerBuilderDebugDumpPass implements CompilerPassInterface
public function process(ContainerBuilder $container)
{
$dumper = new XmlDumper($container);
$filename = $container->getParameter('debug.container.dump');
$filesystem = new Filesystem();
$filesystem->dumpFile(
$container->getParameter('debug.container.dump'),
$dumper->dump(),
0666 & ~umask()
);
$filesystem->dumpFile($filename, $dumper->dump(), null);
// discard chmod failure (some filesystem may not support it)
@chmod($filename, 0666 & ~umask());
}
}

View File

@ -95,10 +95,12 @@ class ConfigCache
{
$mode = 0666 & ~umask();
$filesystem = new Filesystem();
$filesystem->dumpFile($this->file, $content, $mode);
$filesystem->dumpFile($this->file, $content, null);
@chmod($this->file, $mode);
if (null !== $metadata && true === $this->debug) {
$filesystem->dumpFile($this->getMetaFile(), serialize($metadata), $mode);
$filesystem->dumpFile($this->getMetaFile(), serialize($metadata), null);
@chmod($this->getMetaFile(), $mode);
}
}

View File

@ -1,6 +1,11 @@
CHANGELOG
=========
2.3.12
------
* deprecated dumpFile() file mode argument.
2.3.0
-----

View File

@ -444,10 +444,11 @@ class Filesystem
/**
* Atomically dumps content into a file.
*
* @param string $filename The file to be written to.
* @param string $content The data to write into the file.
* @param integer $mode The file mode (octal).
* @throws IOException If the file cannot be written to.
* @param string $filename The file to be written to.
* @param string $content The data to write into the file.
* @param null|integer $mode The file mode (octal). If null, file permissions are not modified
* Deprecated since version 2.3.12, to be removed in 3.0.
* @throws IOException If the file cannot be written to.
*/
public function dumpFile($filename, $content, $mode = 0666)
{
@ -466,6 +467,8 @@ class Filesystem
}
$this->rename($tmpFile, $filename, true);
$this->chmod($filename, $mode);
if (null !== $mode) {
$this->chmod($filename, $mode);
}
}
}

View File

@ -925,6 +925,21 @@ class FilesystemTest extends \PHPUnit_Framework_TestCase
}
}
public function testDumpFileWithNullMode()
{
$filename = $this->workspace.DIRECTORY_SEPARATOR.'foo'.DIRECTORY_SEPARATOR.'baz.txt';
$this->filesystem->dumpFile($filename, 'bar', null);
$this->assertFileExists($filename);
$this->assertSame('bar', file_get_contents($filename));
// skip mode check on Windows
if (!defined('PHP_WINDOWS_VERSION_MAJOR')) {
$this->assertEquals(600, $this->getFilePermissions($filename));
}
}
public function testDumpFileOverwritesAnExistingFile()
{
$filename = $this->workspace.DIRECTORY_SEPARATOR.'foo.txt';