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:
Jérémy Derussé 2020-11-12 10:58:18 +01:00
commit 9bff2e7aed
No known key found for this signature in database
GPG Key ID: 2083FA5758C473D2
3 changed files with 24 additions and 6 deletions

View File

@ -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>

View File

@ -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);
}
/**

View File

@ -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();