1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
<?php
declare(strict_types=1);
namespace DI\Test\IntegrationTest\Definitions;
use DI\ContainerBuilder;
use DI\Test\IntegrationTest\BaseContainerTest;
use DI\Definition\Exception\InvalidDefinition;
/**
* Test environment variable definitions.
*/
class EnvironmentVariableDefinitionTest extends BaseContainerTest
{
/**
* @dataProvider provideContainer
*/
#[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
public function test_existing_env_variable(ContainerBuilder $builder)
{
$expectedValue = getenv('USER');
if (! $expectedValue) {
$this->markTestSkipped(
'This test relies on the presence of the USER environment variable.'
);
}
$builder->addDefinitions([
'var' => \DI\env('USER'),
]);
$container = $builder->build();
self::assertEntryIsCompiled($container, 'var');
self::assertEquals($expectedValue, $container->get('var'));
}
/**
* @dataProvider provideContainer
*/
#[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
public function test_nonexistent_env_variable(ContainerBuilder $builder)
{
$this->expectException(InvalidDefinition::class);
$this->expectExceptionMessage('The environment variable \'PHP_DI_DO_NOT_DEFINE_THIS\' has not been defined');
$builder->addDefinitions([
'var' => \DI\env('PHP_DI_DO_NOT_DEFINE_THIS'),
]);
$container = $builder->build();
$container->get('var');
}
/**
* @dataProvider provideContainer
*/
#[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
public function test_nonexistent_env_variable_with_default_value(ContainerBuilder $builder)
{
$builder->addDefinitions([
'var' => \DI\env('PHP_DI_DO_NOT_DEFINE_THIS', '<default>'),
]);
$container = $builder->build();
self::assertEntryIsCompiled($container, 'var');
$this->assertEquals('<default>', $container->get('var'));
}
/**
* @dataProvider provideContainer
*/
#[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
public function test_nonexistent_env_variable_with_null_as_default(ContainerBuilder $builder)
{
$builder->addDefinitions([
'var' => \DI\env('PHP_DI_DO_NOT_DEFINE_THIS', null),
]);
$container = $builder->build();
self::assertEntryIsCompiled($container, 'var');
$this->assertNull($container->get('var'));
}
/**
* @dataProvider provideContainer
*/
#[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
public function test_nonexistent_env_variable_with_other_entry_as_default(ContainerBuilder $builder)
{
$builder->addDefinitions([
'var' => \DI\env('PHP_DI_DO_NOT_DEFINE_THIS', \DI\get('foo')),
'foo' => 'bar',
]);
$container = $builder->build();
self::assertEntryIsCompiled($container, 'var');
$this->assertEquals('bar', $container->get('var'));
}
}
|