summaryrefslogtreecommitdiffstats
path: root/tests/014-stream.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/014-stream.phpt')
-rw-r--r--tests/014-stream.phpt97
1 files changed, 97 insertions, 0 deletions
diff --git a/tests/014-stream.phpt b/tests/014-stream.phpt
new file mode 100644
index 0000000..69b881e
--- /dev/null
+++ b/tests/014-stream.phpt
@@ -0,0 +1,97 @@
+--TEST--
+Check for stream
+--SKIPIF--
+<?php
+if (!extension_loaded("rpminfo")) print "skip";
+if (version_compare(RPMVERSION, '4.13', 'lt')) print("skip librpm is older than 4.13");
+?>
+--FILE--
+<?php
+$d = "rpm://" . __DIR__ . "/bidon.rpm#/usr/share/doc/bidon";
+$n = "rpm://" . __DIR__ . "/bidon.rpm#/usr/share/doc/bidon/README";
+$x = "rpm://" . __DIR__ . "/bidon.rpm#/usr/share/doc/bidon/MISSING";
+$foo = "rpm://" . __DIR__ . "/bidon.rpm#/etc/foo.conf";
+$bar = "rpm://" . __DIR__ . "/bidon.rpm#/etc/bar.conf";
+$toto = "rpm://" . __DIR__ . "/bidon.rpm#/etc/toto.conf";
+
+echo "+ wrapper\n";
+var_dump(in_array('rpm', stream_get_wrappers()));
+
+echo "+ stat\n";
+$s = stat($d); // S_ISDIR
+var_dump($s['size'], $s['mode'] , ($s['mode'] & 0170000) == 0040000 ? "OK" : "KO");
+var_dump(file_exists($d), is_dir($d), is_file($d), is_link($n));
+$s = stat($n); // S_ISREG
+var_dump($s['size'], $s['mode'] , ($s['mode'] & 0170000) == 0100000 ? "OK" : "KO");
+var_dump(file_exists($n), is_dir($n), is_file($n), is_link($n));
+$s = stat($toto); // S_ISLNK
+var_dump($s['size'], $s['mode'] , ($s['mode'] & 0170000) == 0120000 ? "OK" : "KO");
+var_dump(file_exists($toto), is_dir($toto), is_file($toto), is_link($toto));
+
+echo "+ file\n";
+var_dump($f = fopen($n, "r"));
+$s = fstat($f);
+var_dump($s['size'], $s['mode']);
+var_dump(trim(fread($f, 10)));
+var_dump(feof($f));
+var_dump(trim(fread($f, 100)));
+var_dump(feof($f));
+fclose($f);
+
+echo "+ stream\n";
+var_dump(trim(file_get_contents($n))); // Existing file
+var_dump(trim(file_get_contents($foo))); // Hardlink with content
+var_dump(trim(file_get_contents($bar))); // hardlink without content
+var_dump(file_get_contents($x)); // Missing file
+
+echo "+ symlink\n";
+var_dump(rpmgetsymlink(__DIR__ . "/bidon.rpm", "missing"));
+var_dump(rpmgetsymlink(__DIR__ . "/bidon.rpm", "/etc/foo.conf")); // not a symlink
+var_dump(rpmgetsymlink(__DIR__ . "/bidon.rpm", "/etc/toto.conf")); // symlink
+?>
+Done
+--EXPECTF--
++ wrapper
+bool(true)
++ stat
+int(0)
+int(16877)
+string(2) "OK"
+bool(true)
+bool(true)
+bool(false)
+bool(false)
+int(30)
+int(33188)
+string(2) "OK"
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+int(8)
+int(41471)
+string(2) "OK"
+bool(true)
+bool(false)
+bool(false)
+bool(true)
++ file
+resource(%d) of type (stream)
+int(30)
+int(33188)
+string(10) "Thu Oct 19"
+bool(false)
+string(18) "12:01:02 CEST 2023"
+bool(true)
++ stream
+string(29) "Thu Oct 19 12:01:02 CEST 2023"
+string(7) "content"
+string(7) "content"
+
+Warning: file_get_contents(%s/bidon.rpm#/usr/share/doc/bidon/MISSING): Failed to open stream: operation failed in %s on line %d
+bool(false)
++ symlink
+NULL
+string(0) ""
+string(8) "foo.conf"
+Done