38 lines
965 B
Go
38 lines
965 B
Go
package artifacts
|
|
|
|
import (
|
|
"bytes"
|
|
"regexp"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestNewRunIDWithFormat(t *testing.T) {
|
|
now := time.Date(2026, 5, 15, 3, 15, 22, 0, time.UTC)
|
|
random := bytes.NewReader([]byte{0xa1, 0xb2, 0xc3, 0xd4})
|
|
|
|
runID, err := NewRunIDWith(now, random)
|
|
if err != nil {
|
|
t.Fatalf("NewRunIDWith() error = %v", err)
|
|
}
|
|
if runID != "20260515T031522Z-a1b2c3d4" {
|
|
t.Fatalf("runID = %q, want %q", runID, "20260515T031522Z-a1b2c3d4")
|
|
}
|
|
}
|
|
|
|
func TestNewRunIDWithShape(t *testing.T) {
|
|
runID, err := NewRunIDWith(time.Now().UTC(), bytes.NewReader([]byte{0x01, 0x02, 0x03, 0x04}))
|
|
if err != nil {
|
|
t.Fatalf("NewRunIDWith() error = %v", err)
|
|
}
|
|
pattern := regexp.MustCompile(`^\d{8}T\d{6}Z-[0-9a-f]{8}$`)
|
|
if !pattern.MatchString(runID) {
|
|
t.Fatalf("runID = %q, want pattern %q", runID, pattern.String())
|
|
}
|
|
suffix := runID[len(runID)-8:]
|
|
if strings.ToLower(suffix) != suffix {
|
|
t.Fatalf("runID suffix = %q, want lowercase", suffix)
|
|
}
|
|
}
|