expectException(\Exception::class); new App('no_file'); $this->fail('Exception was not thrown'); } public function testGoodConfig(): void { $app = new App('config.example.yml'); $this->assertEquals('output.log', $app->getConfig('log')); $this->assertInstanceOf(LoggerInterface::class, $app->getLogger()); } public function testBadConfigFileSyntaxError(): void { $this->expectException(\TypeError::class); $app = new App('tests/config/bad/syntaxerror.yml'); $app->getConfig('rclone'); $app->getConfig('rclone.path'); $app->getConfig('backup'); $app->getConfig('notification'); $app->getConfig('log'); $app->getConfig('templates'); $app->getConfig('templates.notify'); $app->getConfig('templates.error'); $this->fail('Exception was not thrown'); } public function testBadConfigFileEmpty(): void { $this->expectException(\TypeError::class); $app = new App('tests/config/bad/empty.yml'); $app->getConfig('rclone'); $app->getConfig('rclone.path'); $app->getConfig('backup'); $app->getConfig('notification'); $app->getConfig('log'); $app->getConfig('templates'); $app->getConfig('templates.notify'); $app->getConfig('templates.error'); $this->fail('Exception was not thrown'); } public function testBadConfigFileTypos(): void { $this->expectException(\League\Config\Exception\ValidationException::class); $app = new App('tests/config/bad/typos.yml'); $app->getConfig('rclone'); $app->getConfig('rclone.path'); $app->getConfig('backup'); $app->getConfig('notification'); $app->getConfig('log'); $app->getConfig('templates'); $app->getConfig('templates.notify'); $app->getConfig('templates.error'); $this->fail('Exception was not thrown'); } }