Merge branch '4.4' into 5.1
* 4.4: [Filesystem] fix cleaning up tmp files when dumpFile() fails [MimeType] Add missing alias for @mime_type
This commit is contained in:
commit
9bff2e7aed
@ -12,5 +12,7 @@
|
||||
<argument type="service" id="mime_types" />
|
||||
</call>
|
||||
</service>
|
||||
<service id="Symfony\Component\Mime\MimeTypesInterface" alias="mime_types" />
|
||||
<service id="Symfony\Component\Mime\MimeTypeGuesserInterface" alias="mime_types" />
|
||||
</services>
|
||||
</container>
|
||||
|
@ -658,13 +658,17 @@ class Filesystem
|
||||
// when the filesystem supports chmod.
|
||||
$tmpFile = $this->tempnam($dir, basename($filename));
|
||||
|
||||
if (false === @file_put_contents($tmpFile, $content)) {
|
||||
throw new IOException(sprintf('Failed to write file "%s".', $filename), 0, null, $filename);
|
||||
try {
|
||||
if (false === @file_put_contents($tmpFile, $content)) {
|
||||
throw new IOException(sprintf('Failed to write file "%s".', $filename), 0, null, $filename);
|
||||
}
|
||||
|
||||
@chmod($tmpFile, file_exists($filename) ? fileperms($filename) : 0666 & ~umask());
|
||||
|
||||
$this->rename($tmpFile, $filename, true);
|
||||
} finally {
|
||||
@unlink($tmpFile);
|
||||
}
|
||||
|
||||
@chmod($tmpFile, file_exists($filename) ? fileperms($filename) : 0666 & ~umask());
|
||||
|
||||
$this->rename($tmpFile, $filename, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1720,6 +1720,18 @@ class FilesystemTest extends FilesystemTestCase
|
||||
$this->assertStringEqualsFile($filename, 'bar');
|
||||
}
|
||||
|
||||
public function testDumpRemovesTmpFilesOnFailure()
|
||||
{
|
||||
$expected = scandir(__DIR__, \SCANDIR_SORT_ASCENDING);
|
||||
|
||||
try {
|
||||
$this->filesystem->dumpFile(__DIR__.'/Fixtures', 'bar');
|
||||
$this->fail('IOException expected.');
|
||||
} catch (IOException $e) {
|
||||
$this->assertSame($expected, scandir(__DIR__, \SCANDIR_SORT_ASCENDING));
|
||||
}
|
||||
}
|
||||
|
||||
public function testDumpKeepsExistingPermissionsWhenOverwritingAnExistingFile()
|
||||
{
|
||||
$this->markAsSkippedIfChmodIsMissing();
|
||||
|
Reference in New Issue
Block a user