1
0
mirror of https://github.com/php/php-src.git synced 2026-04-26 01:18:19 +02:00
Files
archived-php-src/ext/standard/tests/file/fopen_variation8.phpt
T
Peter Kokot b746e69887 Sync leading and final newlines in *.phpt sections
This patch adds missing newlines, trims multiple redundant final
newlines into a single one, and trims redundant leading newlines in all
*.phpt sections.

According to POSIX, a line is a sequence of zero or more non-' <newline>'
characters plus a terminating '<newline>' character. [1] Files should
normally have at least one final newline character.

C89 [2] and later standards [3] mention a final newline:
"A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character."

Although it is not mandatory for all files to have a final newline
fixed, a more consistent and homogeneous approach brings less of commit
differences issues and a better development experience in certain text
editors and IDEs.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
[2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2
[3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
2018-10-15 04:32:30 +02:00

149 lines
3.0 KiB
PHP

--TEST--
Test fopen() function : variation: use include path and stream context (relative directories in path)
--CREDITS--
Dave Kelsey <d_kelsey@uk.ibm.com>
--FILE--
<?php
/* Prototype : resource fopen(string filename, string mode [, bool use_include_path [, resource context]])
* Description: Open a file or a URL and return a file pointer
* Source code: ext/standard/file.c
* Alias to functions:
*/
$thisTestDir = basename(__FILE__, ".php") . ".dir";
mkdir($thisTestDir);
chdir($thisTestDir);
//create the include directory structure
$workingDir = "workdir";
$filename = basename(__FILE__, ".php") . ".tmp";
$scriptDir = dirname(__FILE__);
$baseDir = getcwd();
$secondFile = $baseDir."/dir2/".$filename;
$firstFile = "../dir1/".$filename;
$scriptFile = $scriptDir.'/'.$filename;
$newdirs = array("dir1", "dir2", "dir3");
$pathSep = ":";
$newIncludePath = "";
if(substr(PHP_OS, 0, 3) == 'WIN' ) {
$pathSep = ";";
}
foreach($newdirs as $newdir) {
mkdir($newdir);
$newIncludePath .= '../'.$newdir.$pathSep;
}
mkdir($workingDir);
chdir($workingDir);
//define the files to go into these directories, create one in dir2
echo "\n--- testing include path ---\n";
set_include_path($newIncludePath);
$modes = array("r", "r+", "rt");
foreach($modes as $mode) {
test_fopen($mode);
}
restore_include_path();
// remove the directory structure
chdir($baseDir);
rmdir($workingDir);
foreach($newdirs as $newdir) {
rmdir($newdir);
}
chdir("..");
rmdir($thisTestDir);
function test_fopen($mode) {
global $scriptFile, $secondFile, $firstFile, $filename;
// create a file in the middle directory
$h = fopen($secondFile, "w");
fwrite($h, "in dir2");
fclose($h);
echo "\n** testing with mode=$mode **\n";
// should read dir2 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
//create a file in dir1
$h = fopen($firstFile, "w");
fwrite($h, "in dir1");
fclose($h);
//should now read dir1 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
// create a file in working directory
$h = fopen($filename, "w");
fwrite($h, "in working dir");
fclose($h);
//should read the dir1 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
unlink($firstFile);
unlink($secondFile);
//should read the working dir file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
// create a file in the script directory
$h = fopen($scriptFile, "w");
fwrite($h, "in script dir");
fclose($h);
//should read the file in script dir
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
//cleanup
unlink($filename);
unlink($scriptFile);
}
?>
===DONE===
--EXPECT--
--- testing include path ---
** testing with mode=r **
in dir2
in dir1
in dir1
in working dir
in script dir
** testing with mode=r+ **
in dir2
in dir1
in dir1
in working dir
in script dir
** testing with mode=rt **
in dir2
in dir1
in dir1
in working dir
in script dir
===DONE===