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:
- 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:
- [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)
- [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

12
build.xml

@ -31,10 +31,16 @@
</target>
<target name="package">
<propertyprompt propertyName="arsse.version" defaultValue="head" promptText="Git tag to package"/>
<phingcall target="clean"/>
<propertyprompt propertyName="arsse.version" defaultValue="head" promptText="Git tag to package"/> <!-- This needs to be used to actually check out a tag, etc -->
<delete> <!-- Delete code, but keep dependencies, which Composer will prune -->
<fileset dir="./build/arsse">
<exclude name="vendor/**"/>
</fileset>
</delete>
<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>
</project>

4
lib/Conf.php

@ -114,11 +114,11 @@ class Conf {
$conf = new \ReflectionObject($this);
foreach ($conf->getProperties(\ReflectionProperty::IS_PUBLIC) as $prop) {
$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
// 2. the property is not defined in the class
// 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;
}
}

4
tests/Conf/TestConf.php

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

Loading…
Cancel
Save