Skip to content

Commit 1f81586

Browse files
Obtain exercise slug from metadata
1 parent 3baa597 commit 1f81586

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

workspace/test_configurations.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package workspace
22

33
import (
44
"fmt"
5-
"os"
6-
"path/filepath"
75
"runtime"
86
"strings"
97
)
@@ -58,11 +56,11 @@ func (c *TestConfiguration) GetTestCommand() (string, error) {
5856
cmd = strings.ReplaceAll(cmd, "{{test_files}}", strings.Join(testFiles, " "))
5957
}
6058
if strings.Contains(cmd, "{{slug}}") {
61-
currentDir, err := os.Getwd()
59+
metadata, err := NewExerciseMetadata(".")
6260
if err != nil {
63-
return "", fmt.Errorf("current directory invalid")
61+
return "", err
6462
}
65-
cmd = strings.ReplaceAll(cmd, "{{slug}}", filepath.Base(currentDir))
63+
cmd = strings.ReplaceAll(cmd, "{{slug}}", metadata.ExerciseSlug)
6664
}
6765

6866
return cmd, nil

workspace/test_configurations_test.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,30 +106,38 @@ func TestIdrisUsesCurrentDirectory(t *testing.T) {
106106
currentDir, err := os.Getwd()
107107
assert.NoError(t, err)
108108

109-
exerciseDir := filepath.Join(currentDir, "hello-world")
110-
defer os.RemoveAll(exerciseDir)
111-
err = os.Mkdir(exerciseDir, os.ModePerm)
109+
tmpDir, err := os.MkdirTemp("", "solution")
110+
assert.NoError(t, err)
111+
defer os.RemoveAll(tmpDir)
112+
113+
em := &ExerciseMetadata{
114+
Track: "idris",
115+
ExerciseSlug: "bogus-exercise",
116+
ID: "abc",
117+
URL: "http://example.com",
118+
Handle: "alice",
119+
IsRequester: true,
120+
Dir: tmpDir,
121+
}
122+
err = em.Write(tmpDir)
112123
assert.NoError(t, err)
113124

114125
defer os.Chdir(currentDir)
115-
err = os.Chdir(exerciseDir)
126+
err = os.Chdir(tmpDir)
116127
assert.NoError(t, err)
117128

118129
exercismDir := filepath.Join(".", ".exercism")
119-
err = os.Mkdir(exercismDir, os.ModePerm)
120-
assert.NoError(t, err)
121-
122130
f, err := os.Create(filepath.Join(exercismDir, "config.json"))
123131
assert.NoError(t, err)
124132
defer f.Close()
125133

126-
_, err = f.WriteString(`{ "files": { "solution": [ "src/HelloWorld.idr" ], "test": [ "test/src/Main.idr" ] } }`)
134+
_, err = f.WriteString(`{ "files": { "solution": [ "src/BogusExercise.idr" ], "test": [ "test/src/Main.idr" ] } }`)
127135
assert.NoError(t, err)
128136

129137
testConfig, ok := TestConfigurations["idris"]
130138
assert.True(t, ok, "unexpectedly unable to find idris test config")
131139

132140
cmd, err := testConfig.GetTestCommand()
133141
assert.NoError(t, err)
134-
assert.Equal(t, cmd, "pack test hello-world")
142+
assert.Equal(t, cmd, "pack test bogus-exercise")
135143
}

0 commit comments

Comments
 (0)