Use separate config file for tests

This commit is contained in:
Pierre Rudloff 2016-08-19 01:07:51 +02:00
parent 78787512ab
commit 1400f3e86a
3 changed files with 28 additions and 12 deletions

View File

@ -65,12 +65,14 @@ class Config
*/ */
public $curl_params = array(); public $curl_params = array();
private $configFile;
/** /**
* Config constructor * Config constructor
*/ */
private function __construct() private function __construct($yamlfile)
{ {
$yamlfile = __DIR__.'/../config.yml'; $this->file = $yamlfile;
if (is_file($yamlfile)) { if (is_file($yamlfile)) {
$yaml = Yaml::parse(file_get_contents($yamlfile)); $yaml = Yaml::parse(file_get_contents($yamlfile));
if (isset($yaml) && is_array($yaml)) { if (isset($yaml) && is_array($yaml)) {
@ -91,10 +93,10 @@ class Config
* *
* @return Config * @return Config
*/ */
public static function getInstance() public static function getInstance($yamlfile = __DIR__.'/../config.yml')
{ {
if (is_null(self::$instance)) { if (is_null(self::$instance) || self::$instance->file != $yamlfile) {
self::$instance = new Config(); self::$instance = new Config($yamlfile);
} }
return self::$instance; return self::$instance;
} }

1
config_test.yml Normal file
View File

@ -0,0 +1 @@
convert: false

View File

@ -12,21 +12,34 @@ use Alltube\Config;
class ConfigTest extends \PHPUnit_Framework_TestCase class ConfigTest extends \PHPUnit_Framework_TestCase
{ {
private $config;
protected function setUp()
{
$this->config = Config::getInstance(__DIR__.'/../config_test.yml');
}
/** /**
* Test the getInstance function * Test the getInstance function
* *
* @return void * @return void
*/ */
public function testGetInstance() 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'); putenv('CONVERT=1');
$config = Config::getInstance(); Config::destroyInstance();
$config = Config::getInstance(__DIR__.'/../config_test.yml');
$this->assertEquals($config->convert, true); $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);
} }
} }