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" />
|
<argument type="service" id="mime_types" />
|
||||||
</call>
|
</call>
|
||||||
</service>
|
</service>
|
||||||
|
<service id="Symfony\Component\Mime\MimeTypesInterface" alias="mime_types" />
|
||||||
|
<service id="Symfony\Component\Mime\MimeTypeGuesserInterface" alias="mime_types" />
|
||||||
</services>
|
</services>
|
||||||
</container>
|
</container>
|
||||||
|
@ -658,6 +658,7 @@ class Filesystem
|
|||||||
// when the filesystem supports chmod.
|
// when the filesystem supports chmod.
|
||||||
$tmpFile = $this->tempnam($dir, basename($filename));
|
$tmpFile = $this->tempnam($dir, basename($filename));
|
||||||
|
|
||||||
|
try {
|
||||||
if (false === @file_put_contents($tmpFile, $content)) {
|
if (false === @file_put_contents($tmpFile, $content)) {
|
||||||
throw new IOException(sprintf('Failed to write file "%s".', $filename), 0, null, $filename);
|
throw new IOException(sprintf('Failed to write file "%s".', $filename), 0, null, $filename);
|
||||||
}
|
}
|
||||||
@ -665,6 +666,9 @@ class Filesystem
|
|||||||
@chmod($tmpFile, file_exists($filename) ? fileperms($filename) : 0666 & ~umask());
|
@chmod($tmpFile, file_exists($filename) ? fileperms($filename) : 0666 & ~umask());
|
||||||
|
|
||||||
$this->rename($tmpFile, $filename, true);
|
$this->rename($tmpFile, $filename, true);
|
||||||
|
} finally {
|
||||||
|
@unlink($tmpFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1720,6 +1720,18 @@ class FilesystemTest extends FilesystemTestCase
|
|||||||
$this->assertStringEqualsFile($filename, 'bar');
|
$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()
|
public function testDumpKeepsExistingPermissionsWhenOverwritingAnExistingFile()
|
||||||
{
|
{
|
||||||
$this->markAsSkippedIfChmodIsMissing();
|
$this->markAsSkippedIfChmodIsMissing();
|
||||||
|
Reference in New Issue
Block a user