diff --git a/.gitignore b/.gitignore index b0dd8bb..7a3db24 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ coverage/ bower_components/ config.yml docs/ +clover.xml diff --git a/.travis.yml b/.travis.yml index d12f0db..9f514fb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,3 +3,5 @@ install: - composer install --no-dev before_install: - composer selfupdate +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/classes/Config.php b/classes/Config.php index c86f418..7d33665 100644 --- a/classes/Config.php +++ b/classes/Config.php @@ -65,12 +65,14 @@ class Config */ public $curl_params = array(); + private $configFile; + /** * Config constructor */ - private function __construct() + private function __construct($yamlfile) { - $yamlfile = __DIR__.'/../config.yml'; + $this->file = $yamlfile; if (is_file($yamlfile)) { $yaml = Yaml::parse(file_get_contents($yamlfile)); if (isset($yaml) && is_array($yaml)) { @@ -91,10 +93,11 @@ class Config * * @return Config */ - public static function getInstance() + public static function getInstance($yamlfile = 'config.yml') { - if (is_null(self::$instance)) { - self::$instance = new Config(); + $yamlfile = __DIR__.'/../'.$yamlfile; + if (is_null(self::$instance) || self::$instance->file != $yamlfile) { + self::$instance = new Config($yamlfile); } return self::$instance; } diff --git a/config_test.yml b/config_test.yml new file mode 100644 index 0000000..8ede545 --- /dev/null +++ b/config_test.yml @@ -0,0 +1 @@ +convert: false diff --git a/phpunit.xml b/phpunit.xml index 0288925..fe96cd9 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -11,5 +11,6 @@ + diff --git a/tests/ConfigTest.php b/tests/ConfigTest.php index 88acd67..8ea8e84 100644 --- a/tests/ConfigTest.php +++ b/tests/ConfigTest.php @@ -12,21 +12,34 @@ use Alltube\Config; class ConfigTest extends \PHPUnit_Framework_TestCase { + private $config; + + protected function setUp() + { + $this->config = Config::getInstance('config_test.yml'); + } + /** * Test the getInstance function * * @return void */ public function testGetInstance() + { + $this->assertEquals($this->config->convert, false); + $this->assertInternalType('array', $this->config->curl_params); + $this->assertInternalType('array', $this->config->params); + $this->assertInternalType('string', $this->config->youtubedl); + $this->assertInternalType('string', $this->config->python); + $this->assertInternalType('string', $this->config->avconv); + $this->assertInternalType('string', $this->config->rtmpdump); + } + + public function testGetInstanceWithEnv() { putenv('CONVERT=1'); - $config = Config::getInstance(); + Config::destroyInstance(); + $config = Config::getInstance('config_test.yml'); $this->assertEquals($config->convert, true); - $this->assertInternalType('array', $config->curl_params); - $this->assertInternalType('array', $config->params); - $this->assertInternalType('string', $config->youtubedl); - $this->assertInternalType('string', $config->python); - $this->assertInternalType('string', $config->avconv); - $this->assertInternalType('string', $config->rtmpdump); } }