@cryptotaxi247 / kubo / commits / afcda7c05

Fix migraion name when fetching in reverse order

gammazero committed Jan 14, 2021 at 18:31 UTC afcda7c05b6b37f392390202d13eda00650045cf
2 files changed +57 -1
repo/fsrepo/migrations/migrations.go
+6 -1
@@ -123,7 +123,12 @@ func findMigrations(ctx context.Context, from, to int) ([]string, map[string]str
123 if ctx.Err() != nil {
124 return nil, nil, ctx.Err()
125 }
126 - migName := migrationName(cur, cur+step)
126 + var migName string
127 + if step == -1 {
128 + migName = migrationName(cur+step, cur)
129 + } else {
130 + migName = migrationName(cur, cur+step)
131 + }
132 migrations = append(migrations, migName)
133 bin, err := exec.LookPath(migName)
134 if err != nil {
repo/fsrepo/migrations/migrations_test.go
+51
@@ -61,6 +61,57 @@ func TestFindMigrations(t *testing.T) {
61 }
62 }
63
64 +func TestFindMigrationsReverse(t *testing.T) {
65 + tmpDir, err := ioutil.TempDir("", "migratetest")
66 + if err != nil {
67 + panic(err)
68 + }
69 + defer os.RemoveAll(tmpDir)
70 +
71 + ctx, cancel := context.WithCancel(context.Background())
72 + defer cancel()
73 +
74 + migs, bins, err := findMigrations(ctx, 5, 0)
75 + if err != nil {
76 + t.Fatal(err)
77 + }
78 + if len(migs) != 5 {
79 + t.Fatal("expected 5 migrations")
80 + }
81 + if len(bins) != 0 {
82 + t.Fatal("should not have found migrations")
83 + }
84 +
85 + for i := 1; i < 6; i++ {
86 + createFakeBin(i-1, i, tmpDir)
87 + }
88 +
89 + origPath := os.Getenv("PATH")
90 + os.Setenv("PATH", tmpDir)
91 + defer os.Setenv("PATH", origPath)
92 +
93 + migs, bins, err = findMigrations(ctx, 5, 0)
94 + if err != nil {
95 + t.Fatal(err)
96 + }
97 + if len(migs) != 5 {
98 + t.Fatal("expected 5 migrations")
99 + }
100 + if len(bins) != len(migs) {
101 + t.Fatal("missing", len(migs)-len(bins), "migrations:", migs)
102 + }
103 +
104 + os.Remove(bins[migs[2]])
105 +
106 + migs, bins, err = findMigrations(ctx, 5, 0)
107 + if err != nil {
108 + t.Fatal(err)
109 + }
110 + if len(bins) != len(migs)-1 {
111 + t.Fatal("should be missing one migration bin")
112 + }
113 +}
114 +
115 func TestFetchMigrations(t *testing.T) {
116 ctx, cancel := context.WithCancel(context.Background())
117 defer cancel()