@@ -1406,6 +1406,81 @@ public function testDumpFileWithZlibScheme()
1406
1406
$ this ->assertSame ('bar ' , file_get_contents ($ filename ));
1407
1407
}
1408
1408
1409
+ public function testAppendToFile ()
1410
+ {
1411
+ $ filename = $ this ->workspace .DIRECTORY_SEPARATOR .'foo ' .DIRECTORY_SEPARATOR .'bar.txt ' ;
1412
+
1413
+ // skip mode check on Windows
1414
+ if ('\\' !== DIRECTORY_SEPARATOR ) {
1415
+ $ oldMask = umask (0002 );
1416
+ }
1417
+
1418
+ $ this ->filesystem ->dumpFile ($ filename , 'foo ' );
1419
+
1420
+ $ this ->filesystem ->appendToFile ($ filename , 'bar ' );
1421
+
1422
+ $ this ->assertFileExists ($ filename );
1423
+ $ this ->assertSame ('foobar ' , file_get_contents ($ filename ));
1424
+
1425
+ // skip mode check on Windows
1426
+ if ('\\' !== DIRECTORY_SEPARATOR ) {
1427
+ $ this ->assertFilePermissions (664 , $ filename , 'The written file should keep the same permissions as before. ' );
1428
+ umask ($ oldMask );
1429
+ }
1430
+ }
1431
+
1432
+ public function testAppendToFileWithScheme ()
1433
+ {
1434
+ if (defined ('HHVM_VERSION ' )) {
1435
+ $ this ->markTestSkipped ('HHVM does not handle the file:// scheme correctly ' );
1436
+ }
1437
+
1438
+ $ scheme = 'file:// ' ;
1439
+ $ filename = $ scheme .$ this ->workspace .DIRECTORY_SEPARATOR .'foo ' .DIRECTORY_SEPARATOR .'baz.txt ' ;
1440
+ $ this ->filesystem ->dumpFile ($ filename , 'foo ' );
1441
+
1442
+ $ this ->filesystem ->appendToFile ($ filename , 'bar ' );
1443
+
1444
+ $ this ->assertFileExists ($ filename );
1445
+ $ this ->assertSame ('foobar ' , file_get_contents ($ filename ));
1446
+ }
1447
+
1448
+ public function testAppendToFileWithZlibScheme ()
1449
+ {
1450
+ $ scheme = 'compress.zlib:// ' ;
1451
+ $ filename = $ this ->workspace .DIRECTORY_SEPARATOR .'foo ' .DIRECTORY_SEPARATOR .'baz.txt ' ;
1452
+ $ this ->filesystem ->dumpFile ($ filename , 'foo ' );
1453
+
1454
+ // Zlib stat uses file:// wrapper so remove it
1455
+ $ this ->assertSame ('foo ' , file_get_contents (str_replace ($ scheme , '' , $ filename )));
1456
+
1457
+ $ this ->filesystem ->appendToFile ($ filename , 'bar ' );
1458
+
1459
+ $ this ->assertFileExists ($ filename );
1460
+ $ this ->assertSame ('foobar ' , file_get_contents ($ filename ));
1461
+ }
1462
+
1463
+ public function testAppendToFileCreateTheFileIfNotExists ()
1464
+ {
1465
+ $ filename = $ this ->workspace .DIRECTORY_SEPARATOR .'foo ' .DIRECTORY_SEPARATOR .'bar.txt ' ;
1466
+
1467
+ // skip mode check on Windows
1468
+ if ('\\' !== DIRECTORY_SEPARATOR ) {
1469
+ $ oldMask = umask (0002 );
1470
+ }
1471
+
1472
+ $ this ->filesystem ->appendToFile ($ filename , 'bar ' );
1473
+
1474
+ // skip mode check on Windows
1475
+ if ('\\' !== DIRECTORY_SEPARATOR ) {
1476
+ $ this ->assertFilePermissions (664 , $ filename );
1477
+ umask ($ oldMask );
1478
+ }
1479
+
1480
+ $ this ->assertFileExists ($ filename );
1481
+ $ this ->assertSame ('bar ' , file_get_contents ($ filename ));
1482
+ }
1483
+
1409
1484
public function testCopyShouldKeepExecutionPermission ()
1410
1485
{
1411
1486
$ this ->markAsSkippedIfChmodIsMissing ();
0 commit comments