MCPcopy Create free account
hub / github.com/exercism/cli / TestLegacyMetadataMigration

Function TestLegacyMetadataMigration

cmd/submit_test.go:282–343  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

280}
281
282func TestLegacyMetadataMigration(t *testing.T) {
283 co := newCapturedOutput()
284 co.newErr = &bytes.Buffer{}
285 co.override()
286 defer co.reset()
287
288 submittedFiles := map[string]string{}
289 ts := fakeSubmitServer(t, submittedFiles)
290 defer ts.Close()
291
292 tmpDir, err := os.MkdirTemp("", "legacy-metadata-file")
293 defer os.RemoveAll(tmpDir)
294 assert.NoError(t, err)
295
296 dir := filepath.Join(tmpDir, "bogus-track", "bogus-exercise")
297 os.MkdirAll(dir, os.FileMode(0755))
298
299 metadata := &workspace.ExerciseMetadata{
300 ID: "bogus-solution-uuid",
301 Track: "bogus-track",
302 ExerciseSlug: "bogus-exercise",
303 URL: "http://example.com/bogus-url",
304 IsRequester: true,
305 }
306 b, err := json.Marshal(metadata)
307 assert.NoError(t, err)
308 exercise := workspace.NewExerciseFromDir(dir)
309 err = os.WriteFile(exercise.LegacyMetadataFilepath(), b, os.FileMode(0600))
310 assert.NoError(t, err)
311
312 file := filepath.Join(dir, "file.txt")
313 err = os.WriteFile(file, []byte("This is a file."), os.FileMode(0755))
314 assert.NoError(t, err)
315
316 v := viper.New()
317 v.Set("token", "abc123")
318 v.Set("workspace", tmpDir)
319 v.Set("apibaseurl", ts.URL)
320 cfg := config.Config{
321 Persister: config.InMemoryPersister{},
322 Dir: tmpDir,
323 UserViperConfig: v,
324 }
325
326 ok, _ := exercise.HasLegacyMetadata()
327 assert.True(t, ok)
328 ok, _ = exercise.HasMetadata()
329 assert.False(t, ok)
330
331 flags := pflag.NewFlagSet("fake", pflag.PanicOnError)
332 flags.Bool("verbose", true, "")
333
334 err = runSubmit(cfg, flags, []string{file})
335 assert.NoError(t, err)
336 assert.Equal(t, "This is a file.", submittedFiles["file.txt"])
337
338 ok, _ = exercise.HasLegacyMetadata()
339 assert.False(t, ok)

Callers

nothing calls this directly

Calls 9

NewExerciseFromDirFunction · 0.92
newCapturedOutputFunction · 0.85
fakeSubmitServerFunction · 0.85
runSubmitFunction · 0.85
overrideMethod · 0.80
resetMethod · 0.80
HasLegacyMetadataMethod · 0.80
HasMetadataMethod · 0.80

Tested by

no test coverage detected