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") } }