You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.8 KiB
80 lines
1.8 KiB
<?php
|
|
|
|
namespace think\tests;
|
|
|
|
use org\bovigo\vfs\vfsStream;
|
|
use PHPUnit\Framework\TestCase;
|
|
use think\Env;
|
|
use think\Exception;
|
|
|
|
class EnvTest extends TestCase
|
|
{
|
|
public function testEnvFile()
|
|
{
|
|
$root = vfsStream::setup();
|
|
$envFile = vfsStream::newFile('.env')->setContent("key1=value1\nkey2=value2");
|
|
$root->addChild($envFile);
|
|
|
|
$env = new Env();
|
|
|
|
$env->load($envFile->url());
|
|
|
|
$this->assertEquals('value1', $env->get('key1'));
|
|
$this->assertEquals('value2', $env->get('key2'));
|
|
}
|
|
|
|
public function testServerEnv()
|
|
{
|
|
$env = new Env();
|
|
|
|
$this->assertEquals('value2', $env->get('key2', 'value2'));
|
|
|
|
putenv('PHP_KEY7=value7');
|
|
putenv('PHP_KEY8=false');
|
|
putenv('PHP_KEY9=true');
|
|
|
|
$this->assertEquals('value7', $env->get('key7'));
|
|
$this->assertFalse($env->get('KEY8'));
|
|
$this->assertTrue($env->get('key9'));
|
|
}
|
|
|
|
public function testSetEnv()
|
|
{
|
|
$env = new Env();
|
|
|
|
$env->set([
|
|
'key1' => 'value1',
|
|
'key2' => [
|
|
'key1' => 'value1-2',
|
|
],
|
|
]);
|
|
|
|
$env->set('key3', 'value3');
|
|
|
|
$env->key4 = 'value4';
|
|
|
|
$env['key5'] = 'value5';
|
|
|
|
$this->assertEquals('value1', $env->get('key1'));
|
|
$this->assertEquals('value1-2', $env->get('key2.key1'));
|
|
|
|
$this->assertEquals('value3', $env->get('key3'));
|
|
|
|
$this->assertEquals('value4', $env->key4);
|
|
|
|
$this->assertEquals('value5', $env['key5']);
|
|
|
|
$this->expectException(Exception::class);
|
|
|
|
unset($env['key5']);
|
|
}
|
|
|
|
public function testHasEnv()
|
|
{
|
|
$env = new Env();
|
|
$env->set(['foo' => 'bar']);
|
|
$this->assertTrue($env->has('foo'));
|
|
$this->assertTrue(isset($env->foo));
|
|
$this->assertTrue($env->offsetExists('foo'));
|
|
}
|
|
}
|
|
|