Skip to content
go-libfossil Artifact [7c28b72a8c]
Login

Artifact [7c28b72a8c]

Artifact 7c28b72a8ce8099bfe553911937f3464b98e7beb02811d6995f3e80d4c391104:


package cli

import (
	"path/filepath"
	"strings"
	"testing"

	libfossil "github.com/danmestas/go-libfossil"
)

// Raw and expanded artifact reads share local-only absence diagnostics rather
// than exposing an expansion error for an intentionally unavailable payload.
func TestRepoCatRequiredPayloadRefusal(t *testing.T) {
	path := filepath.Join(t.TempDir(), "repo.fossil")
	r, err := libfossil.Create(path, libfossil.CreateOpts{User: "u"})
	if err != nil {
		t.Fatal(err)
	}
	_, _, err = r.Commit(libfossil.CommitOpts{User: "u", Files: []libfossil.FileToCommit{
		{Name: "a.txt", Content: []byte("a")},
	}})
	if err != nil {
		t.Fatal(err)
	}
	var uuid string
	if err := r.Inner().DB().QueryRow(`SELECT uuid FROM blob WHERE rid IN
		(SELECT fid FROM mlink WHERE fnid IN
		(SELECT fnid FROM filename WHERE name='a.txt'))`).Scan(&uuid); err != nil {
		t.Fatal(err)
	}
	if _, err := r.Inner().DB().Exec(
		"UPDATE blob SET size=-1, content=NULL WHERE uuid=?", uuid); err != nil {
		t.Fatal(err)
	}
	if err := r.Close(); err != nil {
		t.Fatal(err)
	}
	for _, raw := range []bool{false, true} {
		err := (&RepoCatCmd{Artifact: uuid, Raw: raw}).Run(&Globals{Repo: path})
		if err == nil || !strings.Contains(err.Error(), "widen/deepen") {
			t.Fatalf("raw=%v: inaccurate refusal: %v", raw, err)
		}
	}
}