diff --git a/classes/Config.php b/classes/Config.php index c86f418..1feef95 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,10 @@ class Config * * @return Config */ - public static function getInstance() + public static function getInstance($yamlfile = __DIR__.'/../config.yml') { - if (is_null(self::$instance)) { - self::$instance = new Config(); + 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/tests/ConfigTest.php b/tests/ConfigTest.php index 88acd67..c58b171 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(__DIR__.'/../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(__DIR__.'/../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); } }