package windsurf import ( "bytes" "testing" ) func TestRuntimeOS_DefaultIsLinux(t *testing.T) { // t.Setenv unsets after the test, and a nil env var makes RuntimeOS() // fall back to DefaultRuntimeOS. Setting to "" has the same effect. t.Setenv("WINDSURF_METADATA_OS", "") if got := RuntimeOS(); got != "linux" { t.Errorf("default RuntimeOS = %q, want %q", got, "linux") } } func TestRuntimeOS_EnvOverride(t *testing.T) { t.Setenv("WINDSURF_METADATA_OS", "darwin") if got := RuntimeOS(); got != "darwin" { t.Errorf("env-overridden RuntimeOS = %q, want %q", got, "darwin") } } func TestHardwareArch_DefaultIsX86_64(t *testing.T) { t.Setenv("WINDSURF_METADATA_ARCH", "") if got := HardwareArch(); got != "x86_64" { t.Errorf("default HardwareArch = %q, want %q", got, "x86_64") } } func TestHardwareArch_EnvOverride(t *testing.T) { t.Setenv("WINDSURF_METADATA_ARCH", "arm64") if got := HardwareArch(); got != "arm64" { t.Errorf("env-overridden HardwareArch = %q, want %q", got, "arm64") } } // TestBuildMetadata_UsesOverriddenValues confirms that buildMetadata reads // RuntimeOS() / HardwareArch() at call time, not at package init, so // switching the env per-test actually flows through to the wire format. func TestBuildMetadata_UsesOverriddenValues(t *testing.T) { t.Setenv("WINDSURF_METADATA_OS", "darwin") t.Setenv("WINDSURF_METADATA_ARCH", "arm64") meta := buildMetadata("test-token", "test-session-id") if !bytes.Contains(meta, []byte("darwin")) { t.Errorf("expected meta to contain overridden OS %q, got %q", "darwin", meta) } if !bytes.Contains(meta, []byte("arm64")) { t.Errorf("expected meta to contain overridden arch %q, got %q", "arm64", meta) } if bytes.Contains(meta, []byte("linux")) || bytes.Contains(meta, []byte("x86_64")) { t.Errorf("meta should not contain default values when env is set, got %q", meta) } }