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

Function TestSubmitFilesInSymlinkedPath

cmd/submit_symlink_test.go:16–62  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

14)
15
16func TestSubmitFilesInSymlinkedPath(t *testing.T) {
17 co := newCapturedOutput()
18 co.override()
19 defer co.reset()
20
21 // The fake endpoint will populate this when it receives the call from the command.
22 submittedFiles := map[string]string{}
23 ts := fakeSubmitServer(t, submittedFiles)
24 defer ts.Close()
25
26 tmpDir, err := os.MkdirTemp("", "symlink-destination")
27 defer os.RemoveAll(tmpDir)
28 assert.NoError(t, err)
29 dstDir := filepath.Join(tmpDir, "workspace")
30
31 srcDir, err := os.MkdirTemp("", "symlink-source")
32 defer os.RemoveAll(srcDir)
33 assert.NoError(t, err)
34
35 err = os.Symlink(srcDir, dstDir)
36 assert.NoError(t, err)
37
38 dir := filepath.Join(dstDir, "bogus-track", "bogus-exercise")
39 os.MkdirAll(dir, os.FileMode(0755))
40
41 writeFakeMetadata(t, dir, "bogus-track", "bogus-exercise")
42
43 v := viper.New()
44 v.Set("token", "abc123")
45 v.Set("workspace", dstDir)
46 v.Set("apibaseurl", ts.URL)
47
48 cfg := config.Config{
49 Persister: config.InMemoryPersister{},
50 UserViperConfig: v,
51 }
52
53 file := filepath.Join(dir, "file.txt")
54 err = os.WriteFile(filepath.Join(dir, "file.txt"), []byte("This is a file."), os.FileMode(0755))
55 assert.NoError(t, err)
56
57 err = runSubmit(cfg, pflag.NewFlagSet("symlinks", pflag.PanicOnError), []string{file})
58 assert.NoError(t, err)
59
60 assert.Equal(t, 1, len(submittedFiles))
61 assert.Equal(t, "This is a file.", submittedFiles["file.txt"])
62}

Callers

nothing calls this directly

Calls 6

newCapturedOutputFunction · 0.85
fakeSubmitServerFunction · 0.85
writeFakeMetadataFunction · 0.85
runSubmitFunction · 0.85
overrideMethod · 0.80
resetMethod · 0.80

Tested by

no test coverage detected