Task: #53687 Support instance-specific cfg write targets and add coverage V2 #4
5 changed files with 45 additions and 3 deletions
Task: #53687 Handle missing mode fallback and add no-mode cfg tests
commit
adf5a98768
2
bin/cfg
2
bin/cfg
|
|
@ -334,7 +334,7 @@ try {
|
||||||
elseif (is_readable($cfgFile = $cfg->buildFileName())) {
|
elseif (is_readable($cfgFile = $cfg->buildFileName())) {
|
||||||
$cfg->load(require($cfgFile));
|
$cfg->load(require($cfgFile));
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (\Throwable $e) {
|
||||||
fwrite(STDERR, "Error: ".$e->getMessage().PHP_EOL);
|
fwrite(STDERR, "Error: ".$e->getMessage().PHP_EOL);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,18 @@ class Settings implements \Iterator, \Countable
|
||||||
// if a mode was set in the constructor do not overwrite it
|
// if a mode was set in the constructor do not overwrite it
|
||||||
if (! isset($this->mode)) {
|
if (! isset($this->mode)) {
|
||||||
// if a localConf Mode is set use it, or take the default conf mode
|
// if a localConf Mode is set use it, or take the default conf mode
|
||||||
$this->mode = (isset($localConf['mode'])) ? $localConf['mode'] : $this->settings['mode'];
|
// if local/default config has no mode, fall back to the first known mode (normally "prod")
|
||||||
|
if (isset($localConf['mode']) && is_string($localConf['mode']) && $localConf['mode'] !== '') {
|
||||||
|
$this->mode = $localConf['mode'];
|
||||||
|
}
|
||||||
|
elseif (isset($this->settings['mode']) && is_string($this->settings['mode']) && $this->settings['mode'] !== '') {
|
||||||
|
$this->mode = $this->settings['mode'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Backward-compatible fallback for configs without explicit mode.
|
||||||
|
$this->mode = (string)array_key_first($this->modes);
|
||||||
|
$this->settings['mode'] = $this->mode;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->settings['mode'] = $this->mode;
|
$this->settings['mode'] = $this->mode;
|
||||||
}
|
}
|
||||||
|
|
@ -358,4 +369,4 @@ class Settings implements \Iterator, \Countable
|
||||||
|
|
||||||
/* jEdit buffer local properties {{{
|
/* jEdit buffer local properties {{{
|
||||||
* :folding=explicit:collapseFolds=1:
|
* :folding=explicit:collapseFolds=1:
|
||||||
}}}*/
|
}}}*/
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,25 @@ class CfgTest extends TestCase
|
||||||
$this->assertSame('218523', $cfg['auth']['projectId']);
|
$this->assertSame('218523', $cfg['auth']['projectId']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testWriteWithoutModeFallsBackToDefaultMode(): void
|
||||||
|
{
|
||||||
|
file_put_contents(
|
||||||
|
$this->tmpDir.'/config/myCEESV.default.conf.php',
|
||||||
|
"<?php return [\n\t'auth' => [\n\t\t'projectId' => '',\n\t],\n];\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = $this->runCfg([
|
||||||
|
'-a',
|
||||||
|
$this->tmpDir,
|
||||||
|
'write',
|
||||||
|
'myCEESV',
|
||||||
|
'auth:projectId="218523"',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $result['code'], $result['output']);
|
||||||
|
$this->assertFileExists($this->tmpDir.'/config/myCEESV.conf.php');
|
||||||
|
}
|
||||||
|
|
||||||
public function testWriteWithDirectoryNameCreatesAndWritesSiteConfig(): void
|
public function testWriteWithDirectoryNameCreatesAndWritesSiteConfig(): void
|
||||||
{
|
{
|
||||||
$result = $this->runCfg([
|
$result = $this->runCfg([
|
||||||
|
|
|
||||||
|
|
@ -192,6 +192,15 @@ class SettingsTest extends TestCase
|
||||||
$cfg = $this->appPath($cfg, 'localOverride')->load();
|
$cfg = $this->appPath($cfg, 'localOverride')->load();
|
||||||
$this->assertEquals(42, $cfg->answer);
|
$this->assertEquals(42, $cfg->answer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testLoadWithoutModeFallsBackToFirstKnownMode(): void
|
||||||
|
{
|
||||||
|
$cfg = new Settings();
|
||||||
|
$cfg = $this->appPath($cfg, 'noMode')->load();
|
||||||
|
|
||||||
|
$this->assertEquals('prod', $cfg->mode);
|
||||||
|
$this->assertEquals('default', $cfg->testFiles);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider fileNameData
|
* @dataProvider fileNameData
|
||||||
|
|
|
||||||
3
tests/cfg/noMode/config/default.conf.php
Normal file
3
tests/cfg/noMode/config/default.conf.php
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
<?php return [
|
||||||
|
'testFiles' => 'default',
|
||||||
|
];
|
||||||
Loading…
Add table
Add a link
Reference in a new issue