Expressions syntax is now $var$

Instead of $$var$$.
We make sure $$var$$ is left untouched.

refs #11976
This commit is contained in:
Corentin Ardeois 2016-09-08 11:29:46 -04:00 committed by Thomas Gelf
parent ddcfb09f58
commit 37c91050c7
6 changed files with 25 additions and 23 deletions

View File

@ -263,7 +263,7 @@ class IcingaConfigHelper
} }
private static function renderStringWithVariables($string) { private static function renderStringWithVariables($string) {
$string = preg_replace('/\$\$([\w\.]+)\$\$/', '" + ${1} + "', $string); $string = preg_replace('/(?<!\$)\$([\w\.]+)\$(?!\$)/', '" + ${1} + "', $string);
$string = '"' . $string . '"'; $string = '"' . $string . '"';
if (substr($string, 0, 5) === '"" + ') { if (substr($string, 0, 5) === '"" + ') {
$string = substr($string, 5); $string = substr($string, 5);

View File

@ -48,7 +48,7 @@ class CustomVariablesTest extends BaseTestCase
{ {
$vars = $this->newVars(); $vars = $this->newVars();
$vars->bla = 'da'; $vars->bla = 'da';
$vars->abc = '$$val$$'; $vars->abc = '$val$';
$expected = $this->indentVarsList(array( $expected = $this->indentVarsList(array(
'vars.abc = val', 'vars.abc = val',
'vars.bla = "da"' 'vars.bla = "da"'

View File

@ -83,19 +83,21 @@ class IcingaConfigHelperTest extends BaseTestCase
public function testRenderStringWithVariables() public function testRenderStringWithVariables()
{ {
$this->assertEquals(c::renderString('Before $$var$$', true), '"Before " + var'); $this->assertEquals(c::renderString('Before $var$', true), '"Before " + var');
$this->assertEquals(c::renderString('$$var$$ After', true), 'var + " After"'); $this->assertEquals(c::renderString('$var$ After', true), 'var + " After"');
$this->assertEquals(c::renderString('$$var$$', true), 'var'); $this->assertEquals(c::renderString('$var$', true), 'var');
$this->assertEquals(c::renderString('$$var$$', true), '"$$var$$"');
$this->assertEquals(c::renderString('Before $$var$$ After', true), '"Before $$var$$ After"');
$this->assertEquals( $this->assertEquals(
c::renderString('Before $$name$$ $$name$$ After', true), c::renderString('Before $name$ $name$ After', true),
'"Before " + name + " " + name + " After"'); '"Before " + name + " " + name + " After"');
$this->assertEquals( $this->assertEquals(
c::renderString('Before $$var1$$ $$var2$$ After', true), c::renderString('Before $var1$ $var2$ After', true),
'"Before " + var1 + " " + var2 + " After"'); '"Before " + var1 + " " + var2 + " After"');
$this->assertEquals(c::renderString('$$host.vars.custom$$', true), 'host.vars.custom'); $this->assertEquals(c::renderString('$host.vars.custom$', true), 'host.vars.custom');
$this->assertEquals(c::renderString('$$var"$$', true), '"$$var\"$$"'); $this->assertEquals(c::renderString('$var"$', true), '"$var\"$"');
$this->assertEquals( $this->assertEquals(
c::renderString('\tI am\rrendering\nproperly\fand I $$support$$ "multiple" $$variables$$\$', true), c::renderString('\tI am\rrendering\nproperly\fand I $support$ "multiple" $variables$\$', true),
'"\\\\tI am\\\\rrendering\\\\nproperly\\\\fand I " + support + " \"multiple\" " + variables + "\\\\$"'); '"\\\\tI am\\\\rrendering\\\\nproperly\\\\fand I " + support + " \"multiple\" " + variables + "\\\\$"');
} }
} }

View File

@ -242,13 +242,13 @@ class IcingaServiceTest extends BaseTestCase
$db = $this->getDb(); $db = $this->getDb();
$service = $this->service('___TEST___service_$$not_replaced$$'); $service = $this->service('___TEST___service_$not_replaced$');
$service->object_type = 'apply'; $service->object_type = 'apply';
$service->display_name = 'Service: $$replaced$$'; $service->display_name = 'Service: $host.vars.replaced$';
$service->assignments = array( $service->assignments = array(
'host.address="127.*"', 'host.address="127.*"',
); );
$service->{'vars.custom_var'} = '$$replaced$$'; $service->{'vars.custom_var'} = '$host.vars.replaced$';
$service->store($db); $service->store($db);
$service = IcingaService::loadWithAutoIncId($service->id, $db); $service = IcingaService::loadWithAutoIncId($service->id, $db);
@ -266,10 +266,10 @@ class IcingaServiceTest extends BaseTestCase
$db = $this->getDb(); $db = $this->getDb();
$service = $this->service('___TEST___service_$$not_replaced$$'); $service = $this->service('___TEST___service_$not_replaced$');
$service->object_type = 'object'; $service->object_type = 'object';
$service->display_name = 'Service: $$not_replaced$$'; $service->display_name = 'Service: $host.vars.not_replaced$';
$service->{'vars.custom_var'} = '$$not_replaced$$'; $service->{'vars.custom_var'} = '$host.vars.not_replaced$';
$service->store($db); $service->store($db);
$service = IcingaService::loadWithAutoIncId($service->id, $db); $service = IcingaService::loadWithAutoIncId($service->id, $db);

View File

@ -1,6 +1,6 @@
apply Service "___TEST___service_$$not_replaced$$" { apply Service "___TEST___service_$not_replaced$" {
display_name = "Service: " + replaced display_name = "Service: " + host.vars.replaced
vars.custom_var = replaced vars.custom_var = host.vars.replaced
vars.test1 = "string" vars.test1 = "string"
vars.test2 = 17 vars.test2 = 17
vars.test3 = false vars.test3 = false
@ -11,6 +11,6 @@ apply Service "___TEST___service_$$not_replaced$$" {
assign where match("127.*", host.address) assign where match("127.*", host.address)
import "host var overrides (Director)" import DirectorOverrideTemplate
} }

View File

@ -1,6 +1,6 @@
object Service "___TEST___service_$$not_replaced$$" { object Service "___TEST___service_$not_replaced$" {
display_name = "Service: $$not_replaced$$" display_name = "Service: $host.vars.not_replaced$"
vars.custom_var = "$$not_replaced$$" vars.custom_var = "$host.vars.not_replaced$"
vars.test1 = "string" vars.test1 = "string"
vars.test2 = 17 vars.test2 = 17
vars.test3 = false vars.test3 = false