--- /dev/null
+--TEST--
+Phar::buildFromDirectory() - readonly
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--INI--
+phar.require_hash=0
+phar.readonly=0
+--FILE--
+<?php
+$phar = new Phar(dirname(__FILE__) . '/buildfromdirectory.phar');
+try {
+ ini_set('phar.readonly', 1);
+ $phar->buildFromDirectory(1);
+} catch (Exception $e) {
+ var_dump(get_class($e));
+ echo $e->getMessage() . "\n";
+}
+?>
+===DONE===
+--CLEAN--
+<?php
+unlink(dirname(__FILE__) . '/buildfromdirectory.phar');
+__HALT_COMPILER();
+?>
+--EXPECT--
+string(24) "UnexpectedValueException"
+Cannot write to archive - write operations restricted by INI setting
+===DONE===
--- /dev/null
+--TEST--
+Phar::buildFromDirectory() - non-directory passed as first parameter
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--INI--
+phar.require_hash=0
+phar.readonly=0
+--FILE--
+<?php
+try {
+ $phar = new Phar(dirname(__FILE__) . '/buildfromdirectory.phar');
+ $phar->buildFromDirectory(1);
+} catch (Exception $e) {
+ var_dump(get_class($e));
+ echo $e->getMessage() . "\n";
+}
+?>
+===DONE===
+--CLEAN--
+<?php
+unlink(dirname(__FILE__) . '/buildfromdirectory.phar');
+__HALT_COMPILER();
+?>
+--EXPECT--
+string(24) "UnexpectedValueException"
+RecursiveDirectoryIterator::__construct(1): failed to open dir: No such file or directory
+===DONE===
--- /dev/null
+--TEST--
+Phar::buildFromDirectory() - object passed as second parameter
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--INI--
+phar.require_hash=0
+phar.readonly=0
+--FILE--
+<?php
+
+try {
+ $phar = new Phar(dirname(__FILE__) . '/buildfromiterator.phar');
+ $phar->buildFromDirectory('files', new stdClass);
+} catch (Exception $e) {
+ var_dump(get_class($e));
+ echo $e->getMessage() . "\n";
+}
+?>
+===DONE===
+--CLEAN--
+<?php
+unlink(dirname(__FILE__) . '/buildfromiterator.phar');
+__HALT_COMPILER();
+?>
+--EXPECTF--
+Warning: Phar::buildFromDirectory() expects parameter 2 to be string, object given in %sphar_buildfromdirectory3.php on line %d
+===DONE===
--- /dev/null
+--TEST--
+Phar::buildFromDirectory(), directory exists
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--INI--
+phar.require_hash=0
+phar.readonly=0
+--FILE--
+<?php
+
+mkdir(dirname(__FILE__).'/testdir');
+foreach(range(1, 4) as $i) {
+ file_put_contents(dirname(__FILE__)."/testdir/file$i.txt", "some content for file $i");
+}
+
+try {
+ $phar = new Phar(dirname(__FILE__) . '/buildfromdirectory.phar');
+ var_dump($phar->buildFromDirectory(dirname(__FILE__) . '/testdir'));
+} catch (Exception $e) {
+ var_dump(get_class($e));
+ echo $e->getMessage() . "\n";
+}
+
+var_dump(file_exists(dirname(__FILE__) . '/buildfromdirectory.phar'));
+
+?>
+===DONE===
+--CLEAN--
+<?php
+unlink(dirname(__FILE__) . '/buildfromdirectory.phar');
+foreach(range(1, 4) as $i) {
+ unlink(dirname(__FILE__) . "/testdir/file$i.txt");
+}
+rmdir(dirname(__FILE__) . '/testdir');
+?>
+--EXPECTF--
+array(4) {
+ ["file1.txt"]=>
+ string(%d) "%stestdir%cfile1.txt"
+ ["file2.txt"]=>
+ string(%d) "%stestdir%cfile2.txt"
+ ["file3.txt"]=>
+ string(%d) "%stestdir%cfile3.txt"
+ ["file4.txt"]=>
+ string(%d) "%stestdir%cfile4.txt"
+}
+bool(true)
+===DONE===
--- /dev/null
+--TEST--
+Phar::buildFromDirectory() with matching regex
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--INI--
+phar.require_hash=0
+phar.readonly=0
+--FILE--
+<?php
+
+mkdir(dirname(__FILE__).'/testdir');
+foreach(range(1, 4) as $i) {
+ file_put_contents(dirname(__FILE__)."/testdir/file$i.txt", "some content for file $i");
+}
+
+try {
+ $phar = new Phar(dirname(__FILE__) . '/buildfromdirectory.phar');
+ var_dump($phar->buildFromDirectory(dirname(__FILE__) . '/testdir', '/\.txt/'));
+} catch (Exception $e) {
+ var_dump(get_class($e));
+ echo $e->getMessage() . "\n";
+}
+
+var_dump(file_exists(dirname(__FILE__) . '/buildfromdirectory.phar'));
+
+?>
+===DONE===
+--CLEAN--
+<?php
+unlink(dirname(__FILE__) . '/buildfromdirectory.phar');
+foreach(range(1, 4) as $i) {
+ unlink(dirname(__FILE__) . "/testdir/file$i.txt");
+}
+rmdir(dirname(__FILE__) . '/testdir');
+?>
+--EXPECTF--
+array(4) {
+ ["file1.txt"]=>
+ string(%d) "%stestdir%cfile1.txt"
+ ["file2.txt"]=>
+ string(%d) "%stestdir%cfile2.txt"
+ ["file3.txt"]=>
+ string(%d) "%stestdir%cfile3.txt"
+ ["file4.txt"]=>
+ string(%d) "%stestdir%cfile4.txt"
+}
+bool(true)
+===DONE===
--- /dev/null
+--TEST--
+Phar::buildFromDirectory() with non-matching regex
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--INI--
+phar.require_hash=0
+phar.readonly=0
+--FILE--
+<?php
+
+mkdir(dirname(__FILE__).'/testdir', 0777);
+foreach(range(1, 4) as $i) {
+ file_put_contents(dirname(__FILE__)."/testdir/file$i.txt", "some content for file $i");
+}
+
+try {
+ $phar = new Phar(dirname(__FILE__) . '/buildfromdirectory.phar');
+ var_dump($phar->buildFromDirectory(dirname(__FILE__) . '/testdir', '/\.php/'));
+} catch (Exception $e) {
+ var_dump(get_class($e));
+ echo $e->getMessage() . "\n";
+}
+
+var_dump(file_exists(dirname(__FILE__) . '/buildfromdirectory.phar'));
+
+?>
+===DONE===
+--CLEAN--
+<?php
+unlink(dirname(__FILE__) . '/buildfromdirectory.phar');
+foreach(range(1, 4) as $i) {
+ unlink(dirname(__FILE__) . "/testdir/file$i.txt");
+}
+rmdir(dirname(__FILE__) . '/testdir');
+?>
+--EXPECT--
+array(0) {
+}
+bool(false)
+===DONE===