carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1//go:build linux
2
3package hostbox
4
5import (
6 "context"
7 "os"
8 "path/filepath"
9 "testing"
10)
11
12// Step 8 readiness: leo never ran the legacy claim writer, so it has no
13// legacy journal directory at all. The import is empty and completes,
14// exactly as for an empty directory, and a rerun is a no-op. A directory
15// that appears after the marker is still checked against it.
16func TestMigrateLegacyWithNoLegacyDirectory(t *testing.T) {
17 service, _, _ := journalFixture(t)
18 legacy := filepath.Join(t.TempDir(), ".hostclaims")
19 called := 0
20 recover := func(context.Context) error { called++; return nil }
21 if err := service.MigrateLegacy(t.Context(), legacy, "box", "enrollment", nil, nil, recover); err != nil {
22 t.Fatalf("absent legacy directory: %v", err)
23 }
24 source, files, _, marked, err := service.journalMigrationMarker(t.Context())
25 if err != nil || !marked || source != legacy || files != "absent" {
26 t.Fatalf("marker = %q %q %v %v", source, files, marked, err)
27 }
28 if err := service.MigrateLegacy(t.Context(), legacy, "box", "enrollment", nil, nil, recover); err != nil || called != 2 {
29 t.Fatalf("rerun: %v (recoveries %d)", err, called)
30 }
31 // Legacy journals that appear after the marker are not imported silently.
32 if err := os.Mkdir(legacy, 0o700); err != nil {
33 t.Fatal(err)
34 }
35 for _, name := range []string{"launches.db", "inventory.db"} {
36 if err := os.WriteFile(filepath.Join(legacy, name), []byte("late legacy journal"), 0o600); err != nil {
37 t.Fatal(err)
38 }
39 }
40 if err := service.MigrateLegacy(t.Context(), legacy, "box", "enrollment", nil, nil); err == nil {
41 t.Fatal("legacy journals that appeared after the marker were accepted")
42 }
43}
44