- Add --whats-new flag to bd info command - Display agent-relevant changes from last 3 versions - Support both human-readable and JSON output - Add version changelog data structure with workflow-impacting changes - Add comprehensive tests for version changes structure - Update AGENTS.md with whats-new documentation Helps agents efficiently learn what changed between bd versions without re-reading full documentation. Addresses weekly major version releases requiring workflow adaptations. Closes bd-eiz9 Amp-Thread-ID: https://ampcode.com/threads/T-5fe7e93d-7398-41c5-94bf-e914f2b331dd Co-authored-by: Amp <amp@ampcode.com>
95 lines
2.7 KiB
Go
95 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestInfoCommand(t *testing.T) {
|
|
t.Skip("Manual test - bd info command is working, see manual testing")
|
|
}
|
|
|
|
func TestInfoWithNoDaemon(t *testing.T) {
|
|
t.Skip("Manual test - bd info --no-daemon command is working, see manual testing")
|
|
}
|
|
|
|
func TestVersionChangesStructure(t *testing.T) {
|
|
// Verify versionChanges is properly structured
|
|
if len(versionChanges) == 0 {
|
|
t.Fatal("versionChanges should not be empty")
|
|
}
|
|
|
|
for i, vc := range versionChanges {
|
|
if vc.Version == "" {
|
|
t.Errorf("versionChanges[%d] has empty Version", i)
|
|
}
|
|
if vc.Date == "" {
|
|
t.Errorf("versionChanges[%d] has empty Date", i)
|
|
}
|
|
if len(vc.Changes) == 0 {
|
|
t.Errorf("versionChanges[%d] has no changes", i)
|
|
}
|
|
|
|
// Verify version format (should be like "0.22.1")
|
|
if len(vc.Version) < 5 {
|
|
t.Errorf("versionChanges[%d] has invalid Version format: %s", i, vc.Version)
|
|
}
|
|
|
|
// Verify date format (should be like "2025-11-06")
|
|
if len(vc.Date) != 10 {
|
|
t.Errorf("versionChanges[%d] has invalid Date format: %s", i, vc.Date)
|
|
}
|
|
|
|
// Verify each change is non-empty
|
|
for j, change := range vc.Changes {
|
|
if change == "" {
|
|
t.Errorf("versionChanges[%d].Changes[%d] is empty", i, j)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestVersionChangesJSON(t *testing.T) {
|
|
// Test that versionChanges can be marshaled to JSON
|
|
data, err := json.Marshal(versionChanges)
|
|
if err != nil {
|
|
t.Fatalf("Failed to marshal versionChanges to JSON: %v", err)
|
|
}
|
|
|
|
// Test that it can be unmarshaled back
|
|
var unmarshaled []VersionChange
|
|
err = json.Unmarshal(data, &unmarshaled)
|
|
if err != nil {
|
|
t.Fatalf("Failed to unmarshal versionChanges from JSON: %v", err)
|
|
}
|
|
|
|
// Verify structure is preserved
|
|
if len(unmarshaled) != len(versionChanges) {
|
|
t.Errorf("Unmarshaled length %d != original length %d", len(unmarshaled), len(versionChanges))
|
|
}
|
|
|
|
// Spot check first entry
|
|
if len(unmarshaled) > 0 && len(versionChanges) > 0 {
|
|
if unmarshaled[0].Version != versionChanges[0].Version {
|
|
t.Errorf("Version mismatch: %s != %s", unmarshaled[0].Version, versionChanges[0].Version)
|
|
}
|
|
if len(unmarshaled[0].Changes) != len(versionChanges[0].Changes) {
|
|
t.Errorf("Changes count mismatch: %d != %d", len(unmarshaled[0].Changes), len(versionChanges[0].Changes))
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestVersionChangesCoverage(t *testing.T) {
|
|
// Ensure we have at least 3 recent versions documented
|
|
if len(versionChanges) < 3 {
|
|
t.Errorf("Should document at least 3 recent versions, found %d", len(versionChanges))
|
|
}
|
|
|
|
// Ensure each version has meaningful changes (at least 3 bullet points)
|
|
for i, vc := range versionChanges {
|
|
if len(vc.Changes) < 3 {
|
|
t.Errorf("versionChanges[%d] (v%s) should have at least 3 changes, found %d", i, vc.Version, len(vc.Changes))
|
|
}
|
|
}
|
|
}
|