Skip to content
quarry Artifact [ac023cfb4a]
Login

Artifact [ac023cfb4a]

Artifact ac023cfb4a47bdae3f66e405ebc3627543076d370a2f60fa4ad74b498f00ec01:


package oltp

import (
	"path/filepath"
	"testing"
)

func TestCheckinCloseWatchAndOnce(t *testing.T) {
	db, err := Open(filepath.Join(t.TempDir(), "o.db"))
	if err != nil {
		t.Fatal(err)
	}
	defer db.Close()
	if _, ok := db.CloseWatch("alpha"); ok {
		t.Fatal("FAIL: a watch existed before anyone set it")
	}
	if err := db.SetCloseWatch("alpha", "c1"); err != nil {
		t.Fatal(err)
	}
	if at, ok := db.CloseWatch("alpha"); !ok || at != "c1" {
		t.Fatalf("FAIL: watch = %q, %v", at, ok)
	}
	if _, ok := db.CloseWatch("beta"); ok {
		t.Fatal("FAIL: one repository's watch answered for another")
	}
	if done, _ := db.CheckinClosed("alpha", "c2"); done {
		t.Fatal("FAIL: an unhandled check-in read as handled")
	}
	if err := db.MarkCheckinClosed("alpha", "c2"); err != nil {
		t.Fatal(err)
	}
	if err := db.MarkCheckinClosed("alpha", "c2"); err != nil {
		t.Fatal(err)
	}
	if done, _ := db.CheckinClosed("alpha", "c2"); !done {
		t.Fatal("FAIL: a handled check-in was forgotten")
	}
	if done, _ := db.CheckinClosed("beta", "c2"); done {
		t.Fatal("FAIL: handled in one repository read as handled in another")
	}
}