bd sync: 2025-12-23 23:38:57
This commit is contained in:
@@ -200,12 +200,12 @@ func TestUnset(t *testing.T) {
|
||||
t.Run("removes config value", func(t *testing.T) {
|
||||
store := newTestStore(t)
|
||||
defer store.Close()
|
||||
|
||||
|
||||
// Set a value first
|
||||
if err := Set(ctx, store, "beads-metadata"); err != nil {
|
||||
t.Fatalf("Set() error = %v", err)
|
||||
}
|
||||
|
||||
|
||||
// Verify it's set
|
||||
value, err := store.GetConfig(ctx, ConfigKey)
|
||||
if err != nil {
|
||||
@@ -214,12 +214,12 @@ func TestUnset(t *testing.T) {
|
||||
if value != "beads-metadata" {
|
||||
t.Errorf("GetConfig() = %q, want %q", value, "beads-metadata")
|
||||
}
|
||||
|
||||
|
||||
// Unset it
|
||||
if err := Unset(ctx, store); err != nil {
|
||||
t.Fatalf("Unset() error = %v", err)
|
||||
}
|
||||
|
||||
|
||||
// Verify it's gone
|
||||
value, err = store.GetConfig(ctx, ConfigKey)
|
||||
if err != nil {
|
||||
@@ -230,3 +230,152 @@ func TestUnset(t *testing.T) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetFromYAML(t *testing.T) {
|
||||
// Save and restore any existing env var
|
||||
origEnv := os.Getenv(EnvVar)
|
||||
defer os.Setenv(EnvVar, origEnv)
|
||||
|
||||
t.Run("returns empty when nothing configured", func(t *testing.T) {
|
||||
os.Unsetenv(EnvVar)
|
||||
branch := GetFromYAML()
|
||||
// GetFromYAML checks env var first, then config.yaml
|
||||
// Without env var set, it should return what's in config.yaml (or empty)
|
||||
// We can't easily mock config.yaml here, so just verify no panic
|
||||
_ = branch
|
||||
})
|
||||
|
||||
t.Run("returns env var value when set", func(t *testing.T) {
|
||||
os.Setenv(EnvVar, "env-sync-branch")
|
||||
defer os.Unsetenv(EnvVar)
|
||||
|
||||
branch := GetFromYAML()
|
||||
if branch != "env-sync-branch" {
|
||||
t.Errorf("GetFromYAML() = %q, want %q", branch, "env-sync-branch")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestIsConfigured(t *testing.T) {
|
||||
// Save and restore any existing env var
|
||||
origEnv := os.Getenv(EnvVar)
|
||||
defer os.Setenv(EnvVar, origEnv)
|
||||
|
||||
t.Run("returns true when env var is set", func(t *testing.T) {
|
||||
os.Setenv(EnvVar, "test-branch")
|
||||
defer os.Unsetenv(EnvVar)
|
||||
|
||||
if !IsConfigured() {
|
||||
t.Error("IsConfigured() = false when env var is set, want true")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("behavior with no env var", func(t *testing.T) {
|
||||
os.Unsetenv(EnvVar)
|
||||
// Just verify no panic - actual value depends on config.yaml
|
||||
_ = IsConfigured()
|
||||
})
|
||||
}
|
||||
|
||||
func TestIsConfiguredWithDB(t *testing.T) {
|
||||
// Save and restore any existing env var
|
||||
origEnv := os.Getenv(EnvVar)
|
||||
defer os.Setenv(EnvVar, origEnv)
|
||||
|
||||
t.Run("returns true when env var is set", func(t *testing.T) {
|
||||
os.Setenv(EnvVar, "test-branch")
|
||||
defer os.Unsetenv(EnvVar)
|
||||
|
||||
if !IsConfiguredWithDB("") {
|
||||
t.Error("IsConfiguredWithDB() = false when env var is set, want true")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("returns false for nonexistent database", func(t *testing.T) {
|
||||
os.Unsetenv(EnvVar)
|
||||
|
||||
result := IsConfiguredWithDB("/nonexistent/path/beads.db")
|
||||
// Should return false because db doesn't exist
|
||||
if result {
|
||||
t.Error("IsConfiguredWithDB() = true for nonexistent db, want false")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("returns false for empty path with no db found", func(t *testing.T) {
|
||||
os.Unsetenv(EnvVar)
|
||||
// When empty path is passed and beads.FindDatabasePath() returns empty,
|
||||
// IsConfiguredWithDB should return false
|
||||
// This tests the code path where dbPath is empty
|
||||
tmpDir, _ := os.MkdirTemp("", "test-no-beads-*")
|
||||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
origWd, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(origWd)
|
||||
|
||||
result := IsConfiguredWithDB("")
|
||||
// Should return false because no database exists
|
||||
if result {
|
||||
t.Error("IsConfiguredWithDB('') with no db = true, want false")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetConfigFromDB(t *testing.T) {
|
||||
t.Run("returns empty for nonexistent database", func(t *testing.T) {
|
||||
result := getConfigFromDB("/nonexistent/path/beads.db", ConfigKey)
|
||||
if result != "" {
|
||||
t.Errorf("getConfigFromDB() for nonexistent db = %q, want empty", result)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("returns empty when key not found", func(t *testing.T) {
|
||||
// Create a temporary database
|
||||
tmpDir, _ := os.MkdirTemp("", "test-beads-db-*")
|
||||
defer os.RemoveAll(tmpDir)
|
||||
dbPath := tmpDir + "/beads.db"
|
||||
|
||||
// Create a valid SQLite database with the config table
|
||||
store, err := sqlite.New(context.Background(), "file:"+dbPath)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create test database: %v", err)
|
||||
}
|
||||
store.Close()
|
||||
|
||||
result := getConfigFromDB(dbPath, "nonexistent.key")
|
||||
if result != "" {
|
||||
t.Errorf("getConfigFromDB() for missing key = %q, want empty", result)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("returns value when key exists", func(t *testing.T) {
|
||||
// Create a temporary database
|
||||
tmpDir, _ := os.MkdirTemp("", "test-beads-db-*")
|
||||
defer os.RemoveAll(tmpDir)
|
||||
dbPath := tmpDir + "/beads.db"
|
||||
|
||||
// Create a valid SQLite database with the config table
|
||||
ctx := context.Background()
|
||||
// Use the same connection string format as getConfigFromDB expects
|
||||
store, err := sqlite.New(ctx, "file:"+dbPath+"?_journal_mode=DELETE")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create test database: %v", err)
|
||||
}
|
||||
// Set issue_prefix first (required by storage)
|
||||
if err := store.SetConfig(ctx, "issue_prefix", "bd"); err != nil {
|
||||
store.Close()
|
||||
t.Fatalf("Failed to set issue_prefix: %v", err)
|
||||
}
|
||||
// Set the config value we're testing
|
||||
if err := store.SetConfig(ctx, ConfigKey, "test-sync-branch"); err != nil {
|
||||
store.Close()
|
||||
t.Fatalf("Failed to set config: %v", err)
|
||||
}
|
||||
store.Close()
|
||||
|
||||
result := getConfigFromDB(dbPath, ConfigKey)
|
||||
if result != "test-sync-branch" {
|
||||
t.Errorf("getConfigFromDB() = %q, want %q", result, "test-sync-branch")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user