22
33namespace Test \DevCoder ;
44
5-
65use DevCoder \DotEnv ;
76use PHPUnit \Framework \TestCase ;
87
98class DotenvTest extends TestCase
109{
10+ private function env (string $ file )
11+ {
12+ return __DIR__ . DIRECTORY_SEPARATOR . 'env ' . DIRECTORY_SEPARATOR . $ file ;
13+ }
1114
15+ /**
16+ * @runInSeparateProcess
17+ */
1218 public function testLoad () {
13- (new DotEnv (__DIR__ . ' / .env' ))->load ();
19+ (new DotEnv ($ this -> env ( ' .env.default ' ) ))->load ();
1420 $ this ->assertEquals ('dev ' , getenv ('APP_ENV ' ));
1521 $ this ->assertEquals ('mysql:host=localhost;dbname=test; ' , getenv ('DATABASE_DNS ' ));
1622 $ this ->assertEquals ('root ' , getenv ('DATABASE_USER ' ));
@@ -35,6 +41,53 @@ public function testLoad() {
3541
3642 public function testFileNotExist () {
3743 $ this ->expectException (\InvalidArgumentException::class);
38- (new DotEnv (__DIR__ . '/.env.local ' ))->load ();
44+ (new DotEnv ($ this ->env ('.env.not-exists ' )))->load ();
45+ }
46+
47+ /**
48+ * @runInSeparateProcess
49+ */
50+ public function testLoadReturnsValues ()
51+ {
52+ $ loaded = (new DotEnv ($ this ->env ('.env.return ' )))->load ();
53+
54+ $ this ->assertEquals ('returned ' , $ loaded ['VALUE ' ]);
55+ $ this ->assertEquals ('returned ' , $ _ENV ['VALUE ' ]);
56+ }
57+
58+ /**
59+ * @runInSeparateProcess
60+ */
61+ public function testProcessBoolean ()
62+ {
63+ (new DotEnv ($ this ->env ('.env.boolean ' ), [
64+ DotEnv::PROCESS_BOOLEANS => true
65+ ]))->load ();
66+
67+ $ this ->assertEquals (false , $ _ENV ['FALSE1 ' ]);
68+ $ this ->assertEquals (false , $ _ENV ['FALSE2 ' ]);
69+ $ this ->assertEquals (false , $ _ENV ['FALSE3 ' ]);
70+ $ this ->assertEquals ("'false' " , $ _ENV ['FALSE4 ' ]);
71+ $ this ->assertEquals ('0 ' , $ _ENV ['FALSE5 ' ]);
72+
73+ $ this ->assertEquals (true , $ _ENV ['TRUE1 ' ]);
74+ $ this ->assertEquals (true , $ _ENV ['TRUE2 ' ]);
75+ $ this ->assertEquals (true , $ _ENV ['TRUE3 ' ]);
76+ $ this ->assertEquals ("'true' " , $ _ENV ['TRUE4 ' ]);
77+ $ this ->assertEquals ('1 ' , $ _ENV ['TRUE5 ' ]);
78+ }
79+
80+ /**
81+ * @runInSeparateProcess
82+ */
83+ public function testDontProcessBoolean ()
84+ {
85+ (new DotEnv ($ this ->env ('.env.boolean ' ), [
86+ DotEnv::PROCESS_BOOLEANS => false
87+ ]))->load ();
88+
89+ $ this ->assertEquals ('false ' , $ _ENV ['FALSE1 ' ]);
90+
91+ $ this ->assertEquals ('true ' , $ _ENV ['TRUE1 ' ]);
3992 }
4093}
0 commit comments