summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Brown <ptbrown@whoopdedo.org>2015-05-06 18:21:17 -0400
committerPatrick Brown <ptbrown@whoopdedo.org>2015-05-06 18:21:17 -0400
commit369075828e13e37a65a2f8062a74e89f98dd3fac (patch)
treef8d3b4efc8d2ce8ee75ec65944b3f6002d106925
parentdfe7cc3f3bfbfccec6a38a94ac0f2242e8bc59e7 (diff)
downloadrpg-369075828e13e37a65a2f8062a74e89f98dd3fac.tar.gz
rpg-369075828e13e37a65a2f8062a74e89f98dd3fac.tar.bz2
Append to BZip2 files. Unit tests for writing files.
-rw-r--r--_test/tests/inc/io_deletefromfile.test.php42
-rw-r--r--_test/tests/inc/io_savefile.test.php49
-rw-r--r--inc/io.php11
3 files changed, 101 insertions, 1 deletions
diff --git a/_test/tests/inc/io_deletefromfile.test.php b/_test/tests/inc/io_deletefromfile.test.php
new file mode 100644
index 000000000..361c82214
--- /dev/null
+++ b/_test/tests/inc/io_deletefromfile.test.php
@@ -0,0 +1,42 @@
+<?php
+
+class io_deletefromfile_test extends DokuWikiTest {
+
+ /*
+ * dependency for tests needing zlib extension to pass
+ */
+ public function test_ext_zlib() {
+ if (!extension_loaded('zlib')) {
+ $this->markTestSkipped('skipping all zlib tests. Need zlib extension');
+ }
+ }
+
+ /*
+ * dependency for tests needing zlib extension to pass
+ */
+ public function test_ext_bz2() {
+ if (!extension_loaded('bz2')) {
+ $this->markTestSkipped('skipping all bzip2 tests. Need bz2 extension');
+ }
+ }
+
+ function _write($file){
+ $contents = "The\012Delete\012Delete01\012Delete02\012Delete\012DeleteX\012Test\012";
+ io_saveFile($file, $contents);
+ $this->assertTrue(io_deleteFromFile($file, "Delete\012"));
+ $this->assertEquals("The\012Delete01\012Delete02\012DeleteX\012Test\012", io_readFile($file));
+ $this->assertTrue(io_deleteFromFile($file, "#Delete\\d+\012#", true));
+ $this->assertEquals("The\012DeleteX\012Test\012", io_readFile($file));
+ }
+
+ function test_delete(){
+ $this->_write(TMP_DIR.'/test.txt');
+ }
+
+// /**
+// * @depends test_ext_zlib
+// */
+// function test_gzwrite(){
+// }
+
+}
diff --git a/_test/tests/inc/io_savefile.test.php b/_test/tests/inc/io_savefile.test.php
new file mode 100644
index 000000000..4a4d4671d
--- /dev/null
+++ b/_test/tests/inc/io_savefile.test.php
@@ -0,0 +1,49 @@
+<?php
+
+class io_savefile_test extends DokuWikiTest {
+
+ /*
+ * dependency for tests needing zlib extension to pass
+ */
+ public function test_ext_zlib() {
+ if (!extension_loaded('zlib')) {
+ $this->markTestSkipped('skipping all zlib tests. Need zlib extension');
+ }
+ }
+
+ /*
+ * dependency for tests needing zlib extension to pass
+ */
+ public function test_ext_bz2() {
+ if (!extension_loaded('bz2')) {
+ $this->markTestSkipped('skipping all bzip2 tests. Need bz2 extension');
+ }
+ }
+
+ function _write($file){
+ $contents = "The\012Write\012Test\012";
+ $this->assertTrue(io_saveFile($file, $contents));
+ $this->assertEquals($contents, io_readFile($file));
+ $this->assertTrue(io_saveFile($file, $contents, true));
+ $this->assertEquals($contents.$contents, io_readFile($file));
+ }
+
+ function test_write(){
+ $this->_write(TMP_DIR.'/test.txt');
+ }
+
+ /**
+ * @depends test_ext_zlib
+ */
+ function test_gzwrite(){
+ $this->_write(TMP_DIR.'/test.txt.gz');
+ }
+
+ /**
+ * @depends test_ext_bz2
+ */
+ function test_bzwrite(){
+ $this->_write(TMP_DIR.'/test.txt.bz2');
+ }
+
+}
diff --git a/inc/io.php b/inc/io.php
index 0636a4b62..8846b7e56 100644
--- a/inc/io.php
+++ b/inc/io.php
@@ -223,7 +223,16 @@ function io_saveFile($file,$content,$append=false){
gzwrite($fh, $content);
gzclose($fh);
}else if(substr($file,-4) == '.bz2'){
- $fh = @bzopen($file,$mode{0});
+ if($append) {
+ $bzcontent = bzfile($file);
+ if($bzcontent === false) {
+ msg("Writing $file failed", -1);
+ io_unlock($file);
+ return false;
+ }
+ $content = $bzcontent.$content;
+ }
+ $fh = @bzopen($file,'w');
if(!$fh){
msg("Writing $file failed", -1);
io_unlock($file);