Skip to content
quarry Artifact [db01f43b31]
Login

Artifact [db01f43b31]

Artifact db01f43b318299532127e2127321525e9a926d2cd9b714a319db0d25213c14b7:


package oltp

import (
	"path/filepath"
	"testing"
)

// The tag watermark is absent until set, holds the whole mark, the zero
// mark included, and goes with the repository.
func TestCITagWatermarkRoundTrip(t *testing.T) {
	db, err := Open(filepath.Join(t.TempDir(), "oltp.db"))
	if err != nil {
		t.Fatal(err)
	}
	defer db.Close()
	if _, ok := db.CITagWatermark("r"); ok {
		t.Fatal("FAIL: a repository never seen has a tag watermark")
	}
	if err := db.SetCITagWatermark("r", CITagMark{}); err != nil {
		t.Fatal(err)
	}
	if m, ok := db.CITagWatermark("r"); !ok || m != (CITagMark{}) {
		t.Fatalf("FAIL: the zero mark read back as %+v, %v", m, ok)
	}
	want := CITagMark{Date: "2026-10-01T10:00:00", Src: "s1", Checkin: "c1", Name: "version-0.2.0"}
	if err := db.SetCITagWatermark("r", want); err != nil {
		t.Fatal(err)
	}
	if m, ok := db.CITagWatermark("r"); !ok || m != want {
		t.Fatalf("FAIL: the mark read back as %+v, %v; want %+v", m, ok, want)
	}
	if err := db.PurgeRepo("r"); err != nil {
		t.Fatal(err)
	}
	if _, ok := db.CITagWatermark("r"); ok {
		t.Fatal("FAIL: the tag watermark outlived its repository")
	}
	t.Log("ok: the tag watermark round-trips and is purged with its repository")
}