Skip to content
go-libfossil Artifact [85dfb2334d]
Login

Artifact [85dfb2334d]

Artifact 85dfb2334d25c0b036eac08a8c2e9d825f3b6aae6a98ed913d83441b35b90c88:


//go:build !js

package conformance

import (
	"fmt"
	"testing"

	"github.com/danmestas/go-libfossil/db"
	"github.com/danmestas/go-libfossil/internal/checkout"
	"github.com/danmestas/go-libfossil/simio"
)

func TestSparseWorktreeManagedRecordOnly(t *testing.T) {
	if err := scManagedRecordOnly(t); err != nil {
		t.Fatal(err)
	}
}

func scManagedRecordOnly(t *testing.T) error {
	for _, tree := range []bool{false, true} {
		f := newSCRepo(t, tree)
		co := f.open(t, scDefault(t), f.c1)
		marker, err := checkout.FindCheckoutDB(simio.OSStorage{}, co.Dir(), false)
		if err != nil {
			return err
		}
		ckdb, err := db.OpenSQL(marker, db.OpenConfig{}, nil)
		if err != nil {
			return err
		}
		var count int
		err = ckdb.QueryRow("SELECT count(*) FROM vfile").Scan(&count)
		closeErr := ckdb.Close()
		if err != nil {
			return err
		}
		if closeErr != nil {
			return closeErr
		}
		if count != len(scDefaultCovered) {
			return fmt.Errorf("tree=%v: managed record has %d rows, want %d covered files", tree, count, len(scDefaultCovered))
		}
	}
	return nil
}