Browse Source

Fix export of nulls in Conf

microsub 0.1.0
J. King 7 years ago
parent
commit
bd95d23c8a
  1. 4
      README.md
  2. 12
      build.xml
  3. 4
      lib/Conf.php
  4. 4
      tests/Conf/TestConf.php

4
README.md

@ -13,12 +13,12 @@ At present the software should be considered in an "alpha" state: though its cor
The Arsse has the following requirements: The Arsse has the following requirements:
- A Web server - A Linux server utilizing systemd and Nginx (tested on Ubuntu 16.04)
- PHP 7.0.7 or newer with the following extensions: - PHP 7.0.7 or newer with the following extensions:
- [intl](http://php.net/manual/en/book.intl.php), [json](http://php.net/manual/en/book.json.php), [hash](http://php.net/manual/en/book.hash.php), and [pcre](http://php.net/manual/en/book.pcre.php) - [intl](http://php.net/manual/en/book.intl.php), [json](http://php.net/manual/en/book.json.php), [hash](http://php.net/manual/en/book.hash.php), and [pcre](http://php.net/manual/en/book.pcre.php)
- [dom](http://php.net/manual/en/book.dom.php), [simplexml](http://php.net/manual/en/book.simplexml.php), and [iconv](http://php.net/manual/en/book.iconv.php) (for picoFeed) - [dom](http://php.net/manual/en/book.dom.php), [simplexml](http://php.net/manual/en/book.simplexml.php), and [iconv](http://php.net/manual/en/book.iconv.php) (for picoFeed)
- [sqlite3](http://php.net/manual/en/book.sqlite3.php) - [sqlite3](http://php.net/manual/en/book.sqlite3.php)
- The ability to run daemon processes on the server - Privileges to create and run daemon processes on the server
## Installation ## Installation

12
build.xml

@ -31,10 +31,16 @@
</target> </target>
<target name="package"> <target name="package">
<propertyprompt propertyName="arsse.version" defaultValue="head" promptText="Git tag to package"/> <propertyprompt propertyName="arsse.version" defaultValue="head" promptText="Git tag to package"/> <!-- This needs to be used to actually check out a tag, etc -->
<phingcall target="clean"/> <delete> <!-- Delete code, but keep dependencies, which Composer will prune -->
<fileset dir="./build/arsse">
<exclude name="vendor/**"/>
</fileset>
</delete>
<phingcall target="build"/> <phingcall target="build"/>
<tar destfile="./build/arsse-${arsse.version}.tar.gz" basedir="./build" compression="gzip"/> <tar destfile="./build/arsse-${arsse.version}.tar.gz" basedir="./build" compression="gzip">
<fileset dir="./build" includes="arsse"/>
</tar>
</target> </target>
</project> </project>

4
lib/Conf.php

@ -114,11 +114,11 @@ class Conf {
$conf = new \ReflectionObject($this); $conf = new \ReflectionObject($this);
foreach ($conf->getProperties(\ReflectionProperty::IS_PUBLIC) as $prop) { foreach ($conf->getProperties(\ReflectionProperty::IS_PUBLIC) as $prop) {
$name = $prop->name; $name = $prop->name;
// add the property to the output if the value is scalar and either: // add the property to the output if the value is scalar (or null) and either:
// 1. full output has been requested // 1. full output has been requested
// 2. the property is not defined in the class // 2. the property is not defined in the class
// 3. it differs from the default // 3. it differs from the default
if (is_scalar($this->$name) && ($full || !$prop->isDefault() || $this->$name !== $ref->$name)) { if ((is_scalar($this->$name) || is_null($this->$name)) && ($full || !$prop->isDefault() || $this->$name !== $ref->$name)) {
$out[$name] = $this->$name; $out[$name] = $this->$name;
} }
} }

4
tests/Conf/TestConf.php

@ -95,9 +95,11 @@ class TestConf extends Test\AbstractTest {
$conf = new Conf(); $conf = new Conf();
$conf->lang = ["en", "fr"]; // should not be exported: not scalar $conf->lang = ["en", "fr"]; // should not be exported: not scalar
$conf->dbSQLite3File = "test.db"; // should be exported: value changed $conf->dbSQLite3File = "test.db"; // should be exported: value changed
$conf->userDriver = null; // should be exported: changed value, even when null
$conf->someCustomProperty = "Look at me!"; // should be exported: unknown property $conf->someCustomProperty = "Look at me!"; // should be exported: unknown property
$exp = [ $exp = [
'dbSQLite3File' => "test.db", 'dbSQLite3File' => "test.db",
'userDriver' => null,
'someCustomProperty' => "Look at me!", 'someCustomProperty' => "Look at me!",
]; ];
$this->assertSame($exp, $conf->export()); $this->assertSame($exp, $conf->export());
@ -112,11 +114,13 @@ class TestConf extends Test\AbstractTest {
$conf = new Conf(); $conf = new Conf();
$conf->lang = ["en", "fr"]; // should not be exported: not scalar $conf->lang = ["en", "fr"]; // should not be exported: not scalar
$conf->dbSQLite3File = "test.db"; // should be exported: value changed $conf->dbSQLite3File = "test.db"; // should be exported: value changed
$conf->userDriver = null; // should be exported: changed value, even when null
$conf->someCustomProperty = "Look at me!"; // should be exported: unknown property $conf->someCustomProperty = "Look at me!"; // should be exported: unknown property
$conf->exportFile(self::$path."confNotArray"); $conf->exportFile(self::$path."confNotArray");
$arr = (include self::$path."confNotArray"); $arr = (include self::$path."confNotArray");
$exp = [ $exp = [
'dbSQLite3File' => "test.db", 'dbSQLite3File' => "test.db",
'userDriver' => null,
'someCustomProperty' => "Look at me!", 'someCustomProperty' => "Look at me!",
]; ];
$this->assertSame($exp, $arr); $this->assertSame($exp, $arr);

Loading…
Cancel
Save