add support for env variables to the DSL
This commit is contained in:
98
lang/debug_env_test.go
Normal file
98
lang/debug_env_test.go
Normal file
@ -0,0 +1,98 @@
|
||||
package lang
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSimpleEnvVar(t *testing.T) {
|
||||
// Test the simplest possible environment variable syntax
|
||||
input := `
|
||||
server MyApp {
|
||||
host env "HOST"
|
||||
}
|
||||
`
|
||||
|
||||
ast, err := ParseInput(input)
|
||||
if err != nil {
|
||||
t.Fatalf("Parse error: %v", err)
|
||||
}
|
||||
|
||||
server := ast.Definitions[0].Server
|
||||
if server.Settings[0].Host.EnvVar == nil {
|
||||
t.Fatalf("Expected environment variable")
|
||||
}
|
||||
if server.Settings[0].Host.EnvVar.Name != "HOST" {
|
||||
t.Errorf("Expected HOST, got %s", server.Settings[0].Host.EnvVar.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLiteralValue(t *testing.T) {
|
||||
// Test that literal values still work
|
||||
input := `
|
||||
server MyApp {
|
||||
host "localhost"
|
||||
}
|
||||
`
|
||||
|
||||
ast, err := ParseInput(input)
|
||||
if err != nil {
|
||||
t.Fatalf("Parse error: %v", err)
|
||||
}
|
||||
|
||||
server := ast.Definitions[0].Server
|
||||
if server.Settings[0].Host.Literal == nil {
|
||||
t.Fatalf("Expected literal value")
|
||||
}
|
||||
if *server.Settings[0].Host.Literal != "localhost" {
|
||||
t.Errorf("Expected localhost, got %s", *server.Settings[0].Host.Literal)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEnvVarWithDefault(t *testing.T) {
|
||||
// Test environment variable with default value
|
||||
input := `
|
||||
server MyApp {
|
||||
host env "HOST" default "localhost"
|
||||
}
|
||||
`
|
||||
|
||||
ast, err := ParseInput(input)
|
||||
if err != nil {
|
||||
t.Fatalf("Parse error: %v", err)
|
||||
}
|
||||
|
||||
server := ast.Definitions[0].Server
|
||||
envVar := server.Settings[0].Host.EnvVar
|
||||
if envVar == nil {
|
||||
t.Fatalf("Expected environment variable")
|
||||
}
|
||||
if envVar.Name != "HOST" {
|
||||
t.Errorf("Expected HOST, got %s", envVar.Name)
|
||||
}
|
||||
if envVar.Default == nil || *envVar.Default != "localhost" {
|
||||
t.Errorf("Expected default localhost")
|
||||
}
|
||||
}
|
||||
|
||||
func TestEnvVarRequired(t *testing.T) {
|
||||
// Test environment variable with required flag
|
||||
input := `
|
||||
server MyApp {
|
||||
api_key env "API_KEY" required
|
||||
}
|
||||
`
|
||||
|
||||
ast, err := ParseInput(input)
|
||||
if err != nil {
|
||||
t.Fatalf("Parse error: %v", err)
|
||||
}
|
||||
|
||||
server := ast.Definitions[0].Server
|
||||
envVar := server.Settings[0].APIKey.EnvVar
|
||||
if envVar == nil {
|
||||
t.Fatalf("Expected environment variable")
|
||||
}
|
||||
if !envVar.Required {
|
||||
t.Errorf("Expected required to be true")
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user