expand template vars in targets config
This commit is contained in:
@@ -301,3 +301,126 @@ func TestUseWithTarget(t *testing.T) {
|
||||
t.Error("Expected LDFLAGS to be set for native build")
|
||||
}
|
||||
}
|
||||
|
||||
func TestExpandEnv(t *testing.T) {
|
||||
envs := map[string]string{
|
||||
"port": "/dev/ttyUSB0",
|
||||
"hex": "firmware.hex",
|
||||
"bin": "firmware.bin",
|
||||
"root": "/usr/local/llgo",
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
template string
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
"avrdude -c arduino -p atmega328p -P {port} -U flash:w:{hex}:i",
|
||||
"avrdude -c arduino -p atmega328p -P /dev/ttyUSB0 -U flash:w:firmware.hex:i",
|
||||
},
|
||||
{
|
||||
"simavr -m atmega328p -f 16000000 {}",
|
||||
"simavr -m atmega328p -f 16000000 firmware.hex", // {} expands to hex (first priority)
|
||||
},
|
||||
{
|
||||
"-I{root}/lib/CMSIS/CMSIS/Include",
|
||||
"-I/usr/local/llgo/lib/CMSIS/CMSIS/Include",
|
||||
},
|
||||
{
|
||||
"no variables here",
|
||||
"no variables here",
|
||||
},
|
||||
{
|
||||
"",
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
result := expandEnv(test.template, envs)
|
||||
if result != test.expected {
|
||||
t.Errorf("expandEnv(%q) = %q, want %q", test.template, result, test.expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestExpandEnvSlice(t *testing.T) {
|
||||
envs := map[string]string{
|
||||
"root": "/usr/local/llgo",
|
||||
"port": "/dev/ttyUSB0",
|
||||
}
|
||||
|
||||
input := []string{
|
||||
"-I{root}/include",
|
||||
"-DPORT={port}",
|
||||
"static-flag",
|
||||
}
|
||||
|
||||
expected := []string{
|
||||
"-I/usr/local/llgo/include",
|
||||
"-DPORT=/dev/ttyUSB0",
|
||||
"static-flag",
|
||||
}
|
||||
|
||||
result := expandEnvSlice(input, envs)
|
||||
|
||||
if len(result) != len(expected) {
|
||||
t.Fatalf("expandEnvSlice length mismatch: got %d, want %d", len(result), len(expected))
|
||||
}
|
||||
|
||||
for i, exp := range expected {
|
||||
if result[i] != exp {
|
||||
t.Errorf("expandEnvSlice[%d] = %q, want %q", i, result[i], exp)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestExpandEnvWithDefault(t *testing.T) {
|
||||
envs := map[string]string{
|
||||
"port": "/dev/ttyUSB0",
|
||||
"hex": "firmware.hex",
|
||||
"bin": "firmware.bin",
|
||||
"img": "image.img",
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
template string
|
||||
defaultValue string
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
"simavr {}",
|
||||
"", // No default - should use hex (priority)
|
||||
"simavr firmware.hex",
|
||||
},
|
||||
{
|
||||
"simavr {}",
|
||||
"custom.elf", // Explicit default
|
||||
"simavr custom.elf",
|
||||
},
|
||||
{
|
||||
"qemu -kernel {}",
|
||||
"vmlinux", // Custom kernel
|
||||
"qemu -kernel vmlinux",
|
||||
},
|
||||
{
|
||||
"no braces here",
|
||||
"ignored",
|
||||
"no braces here",
|
||||
},
|
||||
}
|
||||
|
||||
for i, test := range tests {
|
||||
var result string
|
||||
if test.defaultValue == "" {
|
||||
result = expandEnvWithDefault(test.template, envs)
|
||||
} else {
|
||||
result = expandEnvWithDefault(test.template, envs, test.defaultValue)
|
||||
}
|
||||
|
||||
if result != test.expected {
|
||||
t.Errorf("Test %d: expandEnvWithDefault(%q, envs, %q) = %q, want %q",
|
||||
i, test.template, test.defaultValue, result, test.expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user