mirror of
https://github.com/tiennm99/thptqg.git
synced 2026-10-03 09:13:54 +00:00
67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package databases
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"slices"
|
|
"testing"
|
|
|
|
"github.com/tiennm99/thptqg/assembler/internal/registry"
|
|
)
|
|
|
|
func TestCleanRemovesOnlyDroppedDatasets(t *testing.T) {
|
|
dir := t.TempDir()
|
|
for _, name := range []string{
|
|
"2016.sqlite3", "2017.sqlite3",
|
|
"2017-old.sqlite3", // dropped from the registry
|
|
"2017-old2.sqlite3", // dropped from the registry
|
|
"2016.db-journal", // interrupted run
|
|
} {
|
|
if err := os.WriteFile(filepath.Join(dir, name), []byte("x"), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
p := Paths{OutDir: dir}
|
|
keep := []registry.Dataset{{ID: "2016"}, {ID: "2017"}}
|
|
if err := Clean(p, keep); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
entries, err := os.ReadDir(dir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var left []string
|
|
for _, e := range entries {
|
|
left = append(left, e.Name())
|
|
}
|
|
slices.Sort(left)
|
|
|
|
want := []string{"2016.sqlite3", "2017.sqlite3"}
|
|
if !slices.Equal(left, want) {
|
|
t.Errorf("left %v, want %v", left, want)
|
|
}
|
|
}
|
|
|
|
// TestCleanToleratesAnAbsentStagingDirectory: a fresh checkout has never built
|
|
// anything, and that is not an error.
|
|
func TestCleanToleratesAnAbsentStagingDirectory(t *testing.T) {
|
|
p := Paths{OutDir: filepath.Join(t.TempDir(), "never-created")}
|
|
if err := Clean(p, nil); err != nil {
|
|
t.Errorf("Clean on a missing directory should succeed, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestDefaultPaths(t *testing.T) {
|
|
p := DefaultPaths("/repo")
|
|
if p.Parser != filepath.Join("/repo", "parser") {
|
|
t.Errorf("Parser = %q", p.Parser)
|
|
}
|
|
// The staging directory must be the one Vite publishes, or the databases
|
|
// never reach the site.
|
|
if p.OutDir != filepath.Join("/repo", ".build", "public", "db") {
|
|
t.Errorf("OutDir = %q", p.OutDir)
|
|
}
|
|
}
|