Add regex command implementation
This commit is contained in:
62
tests/contract/regex_ledger_test.go
Normal file
62
tests/contract/regex_ledger_test.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package contract
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
renamercmd "github.com/rogeecn/renamer/cmd"
|
||||
"github.com/rogeecn/renamer/internal/history"
|
||||
)
|
||||
|
||||
func TestRegexCommandLedgerMetadata(t *testing.T) {
|
||||
tmp := t.TempDir()
|
||||
copyRegexFixture(t, "mixed", tmp)
|
||||
|
||||
cmd := renamercmd.NewRootCommand()
|
||||
var out bytes.Buffer
|
||||
cmd.SetOut(&out)
|
||||
cmd.SetErr(&out)
|
||||
cmd.SetArgs([]string{"regex", "^build_(\\d+)_(.*)$", "release-@1-@2", "--yes", "--path", tmp})
|
||||
|
||||
if err := cmd.Execute(); err != nil {
|
||||
t.Fatalf("regex apply command failed: %v\noutput: %s", err, out.String())
|
||||
}
|
||||
|
||||
ledgerPath := filepath.Join(tmp, ".renamer")
|
||||
data, err := os.ReadFile(ledgerPath)
|
||||
if err != nil {
|
||||
t.Fatalf("read ledger: %v", err)
|
||||
}
|
||||
|
||||
lines := bytes.Split(bytes.TrimSpace(data), []byte("\n"))
|
||||
if len(lines) == 0 {
|
||||
t.Fatalf("expected ledger entries written")
|
||||
}
|
||||
|
||||
var entry history.Entry
|
||||
if err := json.Unmarshal(lines[len(lines)-1], &entry); err != nil {
|
||||
t.Fatalf("decode ledger entry: %v", err)
|
||||
}
|
||||
|
||||
if entry.Command != "regex" {
|
||||
t.Fatalf("expected regex command recorded, got %q", entry.Command)
|
||||
}
|
||||
|
||||
if entry.Metadata["pattern"] != "^build_(\\d+)_(.*)$" {
|
||||
t.Fatalf("unexpected pattern metadata: %#v", entry.Metadata["pattern"])
|
||||
}
|
||||
if entry.Metadata["template"] != "release-@1-@2" {
|
||||
t.Fatalf("unexpected template metadata: %#v", entry.Metadata["template"])
|
||||
}
|
||||
|
||||
if toFloat(entry.Metadata["matched"]) != 2 || toFloat(entry.Metadata["changed"]) != 2 {
|
||||
t.Fatalf("unexpected match/change counts: %#v", entry.Metadata)
|
||||
}
|
||||
|
||||
if len(entry.Operations) != 2 {
|
||||
t.Fatalf("expected 2 operations, got %d", len(entry.Operations))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user