Skip to content
Extraits de code Groupes Projets
Valider cc9ee9f6 rédigé par diosmosis's avatar diosmosis
Parcourir les fichiers

Use custom DefinitionSource to access TestingEnvironmentVariables so those...

Use custom DefinitionSource to access TestingEnvironmentVariables so those variables can be easily overridden by test classes through provideContainerConfig(BeforeClass).
parent 70d8a9fe
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -4,7 +4,6 @@ use Interop\Container\ContainerInterface; ...@@ -4,7 +4,6 @@ use Interop\Container\ContainerInterface;
use Piwik\Common; use Piwik\Common;
use Piwik\Tests\Framework\Mock\FakeAccess; use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\Mock\TestConfig; use Piwik\Tests\Framework\Mock\TestConfig;
use Piwik\Tests\Framework\TestingEnvironmentVariables;
return array( return array(
...@@ -18,8 +17,8 @@ return array( ...@@ -18,8 +17,8 @@ return array(
// Disable loading core translations // Disable loading core translations
'Piwik\Translation\Translator' => DI\decorate(function ($previous, ContainerInterface $c) { 'Piwik\Translation\Translator' => DI\decorate(function ($previous, ContainerInterface $c) {
$testingEnvironment = $c->get('Piwik\Tests\Framework\TestingEnvironmentVariables'); $loadRealTranslations = $c->get('test.vars.loadRealTranslations');
if (!$testingEnvironment->loadRealTranslations) { if (!$loadRealTranslations) {
return new \Piwik\Translation\Translator($c->get('Piwik\Translation\Loader\LoaderInterface'), $directories = array()); return new \Piwik\Translation\Translator($c->get('Piwik\Translation\Loader\LoaderInterface'), $directories = array());
} else { } else {
return $previous; return $previous;
...@@ -28,7 +27,9 @@ return array( ...@@ -28,7 +27,9 @@ return array(
'Piwik\Config' => DI\decorate(function ($previous, ContainerInterface $c) { 'Piwik\Config' => DI\decorate(function ($previous, ContainerInterface $c) {
$testingEnvironment = $c->get('Piwik\Tests\Framework\TestingEnvironmentVariables'); $testingEnvironment = $c->get('Piwik\Tests\Framework\TestingEnvironmentVariables');
if (!$testingEnvironment->dontUseTestConfig) {
$dontUseTestConfig = $c->get('test.vars.dontUseTestConfig');
if (!$dontUseTestConfig) {
$settingsProvider = $c->get('Piwik\Application\Kernel\GlobalSettingsProvider'); $settingsProvider = $c->get('Piwik\Application\Kernel\GlobalSettingsProvider');
return new TestConfig($settingsProvider, $testingEnvironment, $allowSave = false, $doSetTestEnvironment = true); return new TestConfig($settingsProvider, $testingEnvironment, $allowSave = false, $doSetTestEnvironment = true);
} else { } else {
...@@ -37,8 +38,8 @@ return array( ...@@ -37,8 +38,8 @@ return array(
}), }),
'Piwik\Access' => DI\decorate(function ($previous, ContainerInterface $c) { 'Piwik\Access' => DI\decorate(function ($previous, ContainerInterface $c) {
$testingEnvironment = $c->get('Piwik\Tests\Framework\TestingEnvironmentVariables'); $testUseMockAuth = $c->get('test.vars.testUseMockAuth');
if ($testingEnvironment->testUseMockAuth) { if ($testUseMockAuth) {
$access = new FakeAccess(); $access = new FakeAccess();
FakeAccess::$superUser = true; FakeAccess::$superUser = true;
FakeAccess::$superUserLogin = 'superUserLogin'; FakeAccess::$superUserLogin = 'superUserLogin';
...@@ -51,15 +52,15 @@ return array( ...@@ -51,15 +52,15 @@ return array(
'observers.global' => DI\add(array( 'observers.global' => DI\add(array(
array('AssetManager.getStylesheetFiles', function (&$stylesheets) { array('AssetManager.getStylesheetFiles', function (&$stylesheets) {
$testingEnvironment = new TestingEnvironmentVariables(); $useOverrideCss = \Piwik\Container\StaticContainer::get('test.vars.useOverrideCss');
if ($testingEnvironment->useOverrideCss) { if ($useOverrideCss) {
$stylesheets[] = 'tests/resources/screenshot-override/override.css'; $stylesheets[] = 'tests/resources/screenshot-override/override.css';
} }
}), }),
array('AssetManager.getJavaScriptFiles', function (&$jsFiles) { array('AssetManager.getJavaScriptFiles', function (&$jsFiles) {
$testingEnvironment = new TestingEnvironmentVariables(); $useOverrideJs = \Piwik\Container\StaticContainer::get('test.vars.useOverrideJs');
if ($testingEnvironment->useOverrideJs) { if ($useOverrideJs) {
$jsFiles[] = 'tests/resources/screenshot-override/override.js'; $jsFiles[] = 'tests/resources/screenshot-override/override.js';
} }
}), }),
......
...@@ -14,6 +14,8 @@ use Doctrine\Common\Cache\ArrayCache; ...@@ -14,6 +14,8 @@ use Doctrine\Common\Cache\ArrayCache;
use Piwik\Application\Kernel\GlobalSettingsProvider; use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Application\Kernel\PluginList; use Piwik\Application\Kernel\PluginList;
use Piwik\Plugin\Manager; use Piwik\Plugin\Manager;
use Piwik\Tests\Framework\TestingEnvironmentVariables;
use Piwik\Tests\Framework\TestingEnvironmentVariablesDefinitionSource;
/** /**
* Creates a configured DI container. * Creates a configured DI container.
...@@ -92,6 +94,9 @@ class ContainerFactory ...@@ -92,6 +94,9 @@ class ContainerFactory
// Test config // Test config
if (defined('PIWIK_TEST_MODE')) { if (defined('PIWIK_TEST_MODE')) {
$vars = new TestingEnvironmentVariables();
$builder->addDefinitions(new TestingEnvironmentVariablesDefinitionSource($vars));
$this->addEnvironmentConfig($builder, 'test'); $this->addEnvironmentConfig($builder, 'test');
} }
......
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Tests\Framework;
use DI\Definition\Source\DefinitionSource;
use DI\Definition\ValueDefinition;
/**
* PHP DI definition source that accesses variables defined in TestingEnvironmentVariables.
*/
class TestingEnvironmentVariablesDefinitionSource implements DefinitionSource
{
/**
* @var TestingEnvironmentVariables
*/
private $vars;
/**
* @var string
*/
private $prefix;
/**
* @param TestingEnvironmentVariables $vars
* @param string $prefix
*/
public function __construct(TestingEnvironmentVariables $vars, $prefix = 'test.vars.')
{
$this->vars = $vars;
$this->prefix = $prefix;
}
/**
* {@inheritdoc}
*/
public function getDefinition($name)
{
if (strpos($name, $this->prefix) !== 0) {
return null;
}
$variableName = $this->parseVariableName($name);
return new ValueDefinition($name, $this->vars->$variableName);
}
private function parseVariableName($name)
{
$parts = explode('.', $name, 3);
return @$parts[2];
}
}
\ No newline at end of file
...@@ -164,7 +164,6 @@ class AutoSuggestAPITest extends SystemTestCase ...@@ -164,7 +164,6 @@ class AutoSuggestAPITest extends SystemTestCase
$segments = \Piwik\Plugins\API\API::getInstance()->getSegmentsMetadata($idSite); $segments = \Piwik\Plugins\API\API::getInstance()->getSegmentsMetadata($idSite);
return $segments; return $segments;
} }
} }
AutoSuggestAPITest::$fixture = new ManyVisitsWithGeoIP(); AutoSuggestAPITest::$fixture = new ManyVisitsWithGeoIP();
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter