38 lines
924 B
D
38 lines
924 B
D
/// Unit tests for variable expansion in the evaluator.
|
|
///
|
|
/// Tests recursive expansion, simple vs recursive assignment semantics,
|
|
/// and circular reference detection.
|
|
module antelope.tests.evaluator.expansion_test;
|
|
|
|
import antelope.evaluator.expansion;
|
|
import antelope.shell.environment;
|
|
|
|
/// Test simple variable reference expansion.
|
|
unittest
|
|
{
|
|
auto env = Environment.init;
|
|
env.set("CC", "gcc");
|
|
env.set("CFLAGS", "-Wall -O2");
|
|
|
|
auto result = expand(env, "$(CC) $(CFLAGS)");
|
|
assert(result == "gcc -Wall -O2");
|
|
}
|
|
|
|
/// Test brace-delimited variable expansion.
|
|
unittest
|
|
{
|
|
auto env = Environment.init;
|
|
env.set("VAR", "value");
|
|
|
|
auto result = expand(env, "${VAR}");
|
|
assert(result == "value");
|
|
}
|
|
|
|
/// Test that undefined variables produce a warning but expand to empty.
|
|
unittest
|
|
{
|
|
auto env = Environment.init;
|
|
auto result = expand(env, "$(UNDEFINED)");
|
|
assert(result == "");
|
|
}
|