mirror of
https://github.com/browseros-ai/BrowserOS.git
synced 2026-05-19 19:41:06 +00:00
* feat(dev): add target-aware reset cleanup * fix(dev): address cleanup reset review comments
167 lines
5.1 KiB
Go
167 lines
5.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestResolveDevTargetReadsDevelopmentEnvPorts(t *testing.T) {
|
|
root := t.TempDir()
|
|
serverDir := filepath.Join(root, "apps/server")
|
|
if err := os.MkdirAll(serverDir, 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(filepath.Join(serverDir, ".env.development"), []byte(
|
|
"BROWSEROS_CDP_PORT=9101\nBROWSEROS_SERVER_PORT=9201\nBROWSEROS_EXTENSION_PORT=9301\n",
|
|
), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
home := t.TempDir()
|
|
t.Setenv("HOME", home)
|
|
t.Setenv("BROWSEROS_DIR", "")
|
|
|
|
target, err := resolveResetTarget(root, resetTargetOptions{Target: "dev"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if target.Ports == nil || target.Ports.CDP != 9101 || target.Ports.Server != 9201 || target.Ports.Extension != 9301 {
|
|
t.Fatalf("unexpected ports: %#v", target.Ports)
|
|
}
|
|
if target.BrowserOSDir != filepath.Join(home, ".browseros-dev") {
|
|
t.Fatalf("unexpected browseros dir: %s", target.BrowserOSDir)
|
|
}
|
|
}
|
|
|
|
func TestResolveDevTargetFallsBackToExampleEnvPorts(t *testing.T) {
|
|
root := t.TempDir()
|
|
serverDir := filepath.Join(root, "apps/server")
|
|
if err := os.MkdirAll(serverDir, 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(filepath.Join(serverDir, ".env.example"), []byte(
|
|
"BROWSEROS_CDP_PORT=9000\nBROWSEROS_SERVER_PORT=9100\nBROWSEROS_EXTENSION_PORT=9300\n",
|
|
), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Setenv("HOME", t.TempDir())
|
|
t.Setenv("BROWSEROS_DIR", "")
|
|
|
|
target, err := resolveResetTarget(root, resetTargetOptions{Target: "dev"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if target.Ports == nil || target.Ports.CDP != 9000 || target.Ports.Server != 9100 || target.Ports.Extension != 9300 {
|
|
t.Fatalf("unexpected ports: %#v", target.Ports)
|
|
}
|
|
}
|
|
|
|
func TestReadPortsFromEnvFileStripsHashComments(t *testing.T) {
|
|
path := filepath.Join(t.TempDir(), ".env")
|
|
if err := os.WriteFile(path, []byte(
|
|
"BROWSEROS_CDP_PORT=9005#comment\nBROWSEROS_SERVER_PORT=9105 # comment\nBROWSEROS_EXTENSION_PORT=9305\n",
|
|
), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
ports, ok, err := readPortsFromEnvFile(path)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !ok {
|
|
t.Fatal("expected ports to be found")
|
|
}
|
|
if ports.CDP != 9005 || ports.Server != 9105 || ports.Extension != 9305 {
|
|
t.Fatalf("unexpected ports: %#v", ports)
|
|
}
|
|
}
|
|
|
|
func TestResolveDogfoodTargetReadsDogfoodConfig(t *testing.T) {
|
|
root := t.TempDir()
|
|
xdgConfig := t.TempDir()
|
|
t.Setenv("XDG_CONFIG_HOME", xdgConfig)
|
|
cfgDir := filepath.Join(xdgConfig, "browseros-dogfood")
|
|
if err := os.MkdirAll(cfgDir, 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(filepath.Join(cfgDir, "config.yaml"), []byte(`
|
|
browseros_dir: /tmp/browseros-dogfood-state
|
|
dev_user_data_dir: /tmp/browseros-dogfood-profile
|
|
ports:
|
|
cdp: 9015
|
|
server: 9115
|
|
extension: 9315
|
|
`), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
target, err := resolveResetTarget(root, resetTargetOptions{Target: "dogfood"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if target.BrowserOSDir != "/tmp/browseros-dogfood-state" {
|
|
t.Fatalf("unexpected browseros dir: %s", target.BrowserOSDir)
|
|
}
|
|
if target.Ports == nil || target.Ports.CDP != 9015 || target.Ports.Server != 9115 || target.Ports.Extension != 9315 {
|
|
t.Fatalf("unexpected ports: %#v", target.Ports)
|
|
}
|
|
if len(target.BrowserUserDataDirs) != 1 || target.BrowserUserDataDirs[0] != "/tmp/browseros-dogfood-profile" {
|
|
t.Fatalf("unexpected browser user data dirs: %#v", target.BrowserUserDataDirs)
|
|
}
|
|
if target.Dogfood == nil || target.Dogfood.StatePath != filepath.Join(cfgDir, "state.json") {
|
|
t.Fatalf("unexpected dogfood runtime paths: %#v", target.Dogfood)
|
|
}
|
|
}
|
|
|
|
func TestResolveDogfoodTargetAppliesDogfoodDefaults(t *testing.T) {
|
|
root := t.TempDir()
|
|
home := t.TempDir()
|
|
xdgConfig := t.TempDir()
|
|
t.Setenv("HOME", home)
|
|
t.Setenv("XDG_CONFIG_HOME", xdgConfig)
|
|
cfgDir := filepath.Join(xdgConfig, "browseros-dogfood")
|
|
if err := os.MkdirAll(cfgDir, 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(filepath.Join(cfgDir, "config.yaml"), []byte("{}\n"), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
target, err := resolveResetTarget(root, resetTargetOptions{Target: "dogfood"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if target.BrowserOSDir != filepath.Join(home, ".browseros-dogfood") {
|
|
t.Fatalf("unexpected browseros dir: %s", target.BrowserOSDir)
|
|
}
|
|
if target.Ports == nil || target.Ports.CDP != 9015 || target.Ports.Server != 9115 || target.Ports.Extension != 9315 {
|
|
t.Fatalf("unexpected ports: %#v", target.Ports)
|
|
}
|
|
if len(target.BrowserUserDataDirs) != 1 || target.BrowserUserDataDirs[0] != filepath.Join(cfgDir, "profile") {
|
|
t.Fatalf("unexpected browser user data dirs: %#v", target.BrowserUserDataDirs)
|
|
}
|
|
}
|
|
|
|
func TestResolveProdTargetUsesBrowserosStateRoot(t *testing.T) {
|
|
root := t.TempDir()
|
|
home := t.TempDir()
|
|
t.Setenv("HOME", home)
|
|
t.Setenv("BROWSEROS_DIR", "")
|
|
|
|
target, err := resolveResetTarget(root, resetTargetOptions{Target: "prod"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if target.BrowserOSDir != filepath.Join(home, ".browseros") {
|
|
t.Fatalf("unexpected browseros dir: %s", target.BrowserOSDir)
|
|
}
|
|
if target.Ports != nil {
|
|
t.Fatalf("prod target should not clear ports by default: %#v", target.Ports)
|
|
}
|
|
}
|