99 lines
2.0 KiB
Go
99 lines
2.0 KiB
Go
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")
|
|
}
|
|
}
|