68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package runtimeenv
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseMode(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
in string
|
|
want Mode
|
|
ok bool
|
|
}{
|
|
{in: "", want: ModeAuto, ok: true},
|
|
{in: "auto", want: ModeAuto, ok: true},
|
|
{in: "local", want: ModeLocal, ok: true},
|
|
{in: "livecd", want: ModeLiveCD, ok: true},
|
|
{in: "bad", ok: false},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
got, err := ParseMode(test.in)
|
|
if test.ok && err != nil {
|
|
t.Fatalf("ParseMode(%q): %v", test.in, err)
|
|
}
|
|
if !test.ok && err == nil {
|
|
t.Fatalf("ParseMode(%q): expected error", test.in)
|
|
}
|
|
if test.ok && got != test.want {
|
|
t.Fatalf("ParseMode(%q): got %q want %q", test.in, got, test.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDetectHonorsFlag(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
info, err := Detect("livecd")
|
|
if err != nil {
|
|
t.Fatalf("Detect(flag): %v", err)
|
|
}
|
|
if info.Mode != ModeLiveCD || info.Reason != "flag" {
|
|
t.Fatalf("unexpected info: %+v", info)
|
|
}
|
|
}
|
|
|
|
func TestDetectHonorsEnv(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
old := os.Getenv("BEE_RUNTIME")
|
|
t.Cleanup(func() {
|
|
_ = os.Setenv("BEE_RUNTIME", old)
|
|
})
|
|
if err := os.Setenv("BEE_RUNTIME", "local"); err != nil {
|
|
t.Fatalf("Setenv: %v", err)
|
|
}
|
|
|
|
info, err := Detect("auto")
|
|
if err != nil {
|
|
t.Fatalf("Detect(env): %v", err)
|
|
}
|
|
if info.Mode != ModeLocal || info.Reason != "env:BEE_RUNTIME" {
|
|
t.Fatalf("unexpected info: %+v", info)
|
|
}
|
|
}
|