Skip to content

Commit

Permalink
Merge pull request exercism#815 from exercism/rename-field-on-metadata
Browse files Browse the repository at this point in the history
Rename Exercise field on metadata type
  • Loading branch information
Katrina Owen authored Feb 26, 2019
2 parents b649e75 + 3e9d5fe commit 596419e
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 78 deletions.
20 changes: 10 additions & 10 deletions cmd/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,14 +130,14 @@ func runDownload(cfg config.Config, flags *pflag.FlagSet, args []string) error {
}

metadata := workspace.ExerciseMetadata{
AutoApprove: payload.Solution.Exercise.AutoApprove,
Track: payload.Solution.Exercise.Track.ID,
Team: payload.Solution.Team.Slug,
Exercise: payload.Solution.Exercise.ID,
ID: payload.Solution.ID,
URL: payload.Solution.URL,
Handle: payload.Solution.User.Handle,
IsRequester: payload.Solution.User.IsRequester,
AutoApprove: payload.Solution.Exercise.AutoApprove,
Track: payload.Solution.Exercise.Track.ID,
Team: payload.Solution.Team.Slug,
ExerciseSlug: payload.Solution.Exercise.ID,
ID: payload.Solution.ID,
URL: payload.Solution.URL,
Handle: payload.Solution.User.Handle,
IsRequester: payload.Solution.User.IsRequester,
}

root := usrCfg.GetString("workspace")
Expand All @@ -151,7 +151,7 @@ func runDownload(cfg config.Config, flags *pflag.FlagSet, args []string) error {
exercise := workspace.Exercise{
Root: root,
Track: metadata.Track,
Slug: metadata.Exercise,
Slug: metadata.ExerciseSlug,
}

dir := exercise.MetadataDir()
Expand Down Expand Up @@ -201,7 +201,7 @@ func runDownload(cfg config.Config, flags *pflag.FlagSet, args []string) error {
// Work around a path bug due to an early design decision (later reversed) to
// allow numeric suffixes for exercise directories, allowing people to have
// multiple parallel versions of an exercise.
pattern := fmt.Sprintf(`\A.*[/\\]%s-\d*/`, metadata.Exercise)
pattern := fmt.Sprintf(`\A.*[/\\]%s-\d*/`, metadata.ExerciseSlug)
rgxNumericSuffix := regexp.MustCompile(pattern)
if rgxNumericSuffix.MatchString(file) {
file = string(rgxNumericSuffix.ReplaceAll([]byte(file), []byte("")))
Expand Down
2 changes: 1 addition & 1 deletion cmd/download_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ func TestDownload(t *testing.T) {
assert.NoError(t, err)

assert.Equal(t, "bogus-track", metadata.Track)
assert.Equal(t, "bogus-exercise", metadata.Exercise)
assert.Equal(t, "bogus-exercise", metadata.ExerciseSlug)
assert.Equal(t, tc.requester, metadata.IsRequester)
}
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/submit.go
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ func (s submitValidator) submissionNotEmpty(docs []workspace.Document) error {

// metadataMatchesExercise checks that the metadata refers to the exercise being submitted.
func (s submitValidator) metadataMatchesExercise(metadata *workspace.ExerciseMetadata, exercise workspace.Exercise) error {
if metadata.Exercise != exercise.Slug {
if metadata.ExerciseSlug != exercise.Slug {
// TODO: error msg should suggest running future doctor command
msg := `
Expand All @@ -400,7 +400,7 @@ func (s submitValidator) metadataMatchesExercise(metadata *workspace.ExerciseMet
Please rename the directory '%[1]s' to '%[2]s' and try again.
`
return fmt.Errorf(msg, exercise.Slug, metadata.Exercise)
return fmt.Errorf(msg, exercise.Slug, metadata.ExerciseSlug)
}
return nil
}
Expand All @@ -416,7 +416,7 @@ func (s submitValidator) isRequestor(metadata *workspace.ExerciseMetadata) error
%s download --exercise=%s --track=%s
`
return fmt.Errorf(msg, BinaryName, metadata.Exercise, metadata.Track)
return fmt.Errorf(msg, BinaryName, metadata.ExerciseSlug, metadata.Track)
}
return nil
}
Expand Down
30 changes: 15 additions & 15 deletions cmd/submit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,11 +218,11 @@ func TestLegacyMetadataMigration(t *testing.T) {
os.MkdirAll(dir, os.FileMode(0755))

metadata := &workspace.ExerciseMetadata{
ID: "bogus-solution-uuid",
Track: "bogus-track",
Exercise: "bogus-exercise",
URL: "http://example.com/bogus-url",
IsRequester: true,
ID: "bogus-solution-uuid",
Track: "bogus-track",
ExerciseSlug: "bogus-exercise",
URL: "http://example.com/bogus-url",
IsRequester: true,
}
b, err := json.Marshal(metadata)
assert.NoError(t, err)
Expand Down Expand Up @@ -585,11 +585,11 @@ func TestSubmissionNotConnectedToRequesterAccount(t *testing.T) {
os.MkdirAll(filepath.Join(dir, "subdir"), os.FileMode(0755))

metadata := &workspace.ExerciseMetadata{
ID: "bogus-solution-uuid",
Track: "bogus-track",
Exercise: "bogus-exercise",
URL: "http://example.com/bogus-url",
IsRequester: false,
ID: "bogus-solution-uuid",
Track: "bogus-track",
ExerciseSlug: "bogus-exercise",
URL: "http://example.com/bogus-url",
IsRequester: false,
}
err = metadata.Write(dir)
assert.NoError(t, err)
Expand Down Expand Up @@ -651,11 +651,11 @@ func TestExerciseDirnameMatchesMetadataSlug(t *testing.T) {

func writeFakeMetadata(t *testing.T, dir, trackID, exerciseSlug string) {
metadata := &workspace.ExerciseMetadata{
ID: "bogus-solution-uuid",
Track: trackID,
Exercise: exerciseSlug,
URL: "http://example.com/bogus-url",
IsRequester: true,
ID: "bogus-solution-uuid",
Track: trackID,
ExerciseSlug: exerciseSlug,
URL: "http://example.com/bogus-url",
IsRequester: true,
}
err := metadata.Write(dir)
assert.NoError(t, err)
Expand Down
24 changes: 12 additions & 12 deletions workspace/exercise_metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@ var metadataFilepath = filepath.Join(ignoreSubdir, metadataFilename)

// ExerciseMetadata contains metadata about a user's exercise.
type ExerciseMetadata struct {
Track string `json:"track"`
Exercise string `json:"exercise"`
ID string `json:"id"`
Team string `json:"team,omitempty"`
URL string `json:"url"`
Handle string `json:"handle"`
IsRequester bool `json:"is_requester"`
SubmittedAt *time.Time `json:"submitted_at,omitempty"`
Dir string `json:"-"`
AutoApprove bool `json:"auto_approve"`
Track string `json:"track"`
ExerciseSlug string `json:"exercise"`
ID string `json:"id"`
Team string `json:"team,omitempty"`
URL string `json:"url"`
Handle string `json:"handle"`
IsRequester bool `json:"is_requester"`
SubmittedAt *time.Time `json:"submitted_at,omitempty"`
Dir string `json:"-"`
AutoApprove bool `json:"auto_approve"`
}

// NewExerciseMetadata reads exercise metadata from a file in the given directory.
Expand All @@ -48,11 +48,11 @@ func NewExerciseMetadata(dir string) (*ExerciseMetadata, error) {
// This is appended to avoid name conflicts, and does not indicate a particular
// iteration.
func (em *ExerciseMetadata) Suffix() string {
return strings.Trim(strings.Replace(filepath.Base(em.Dir), em.Exercise, "", 1), "-.")
return strings.Trim(strings.Replace(filepath.Base(em.Dir), em.ExerciseSlug, "", 1), "-.")
}

func (em *ExerciseMetadata) String() string {
str := fmt.Sprintf("%s/%s", em.Track, em.Exercise)
str := fmt.Sprintf("%s/%s", em.Track, em.ExerciseSlug)
if em.Suffix() != "" {
str = fmt.Sprintf("%s (%s)", str, em.Suffix())
}
Expand Down
74 changes: 37 additions & 37 deletions workspace/exercise_metadata_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ func TestExerciseMetadata(t *testing.T) {
defer os.RemoveAll(dir)

em1 := &ExerciseMetadata{
Track: "a-track",
Exercise: "bogus-exercise",
ID: "abc",
URL: "http://example.com",
Handle: "alice",
IsRequester: true,
Dir: dir,
Track: "a-track",
ExerciseSlug: "bogus-exercise",
ID: "abc",
URL: "http://example.com",
Handle: "alice",
IsRequester: true,
Dir: dir,
}
err = em1.Write(dir)
assert.NoError(t, err)
Expand Down Expand Up @@ -49,29 +49,29 @@ func TestSuffix(t *testing.T) {
}{
{
metadata: ExerciseMetadata{
Exercise: "bat",
Dir: "",
ExerciseSlug: "bat",
Dir: "",
},
suffix: "",
},
{
metadata: ExerciseMetadata{
Exercise: "bat",
Dir: "/path/to/bat",
ExerciseSlug: "bat",
Dir: "/path/to/bat",
},
suffix: "",
},
{
metadata: ExerciseMetadata{
Exercise: "bat",
Dir: "/path/to/bat-2",
ExerciseSlug: "bat",
Dir: "/path/to/bat-2",
},
suffix: "2",
},
{
metadata: ExerciseMetadata{
Exercise: "bat",
Dir: "/path/to/bat-200",
ExerciseSlug: "bat",
Dir: "/path/to/bat-200",
},
suffix: "200",
},
Expand All @@ -92,48 +92,48 @@ func TestExerciseMetadataString(t *testing.T) {
}{
{
metadata: ExerciseMetadata{
Track: "elixir",
Exercise: "secret-handshake",
Handle: "",
Dir: "",
Track: "elixir",
ExerciseSlug: "secret-handshake",
Handle: "",
Dir: "",
},
desc: "elixir/secret-handshake",
},
{
metadata: ExerciseMetadata{
Track: "cpp",
Exercise: "clock",
Handle: "alice",
IsRequester: true,
Track: "cpp",
ExerciseSlug: "clock",
Handle: "alice",
IsRequester: true,
},
desc: "cpp/clock",
},
{
metadata: ExerciseMetadata{
Track: "cpp",
Exercise: "clock",
Handle: "alice",
IsRequester: true,
Dir: "/path/to/clock-2",
Track: "cpp",
ExerciseSlug: "clock",
Handle: "alice",
IsRequester: true,
Dir: "/path/to/clock-2",
},
desc: "cpp/clock (2)",
},
{
metadata: ExerciseMetadata{
Track: "fsharp",
Exercise: "hello-world",
Handle: "bob",
IsRequester: false,
Track: "fsharp",
ExerciseSlug: "hello-world",
Handle: "bob",
IsRequester: false,
},
desc: "fsharp/hello-world by @bob",
},
{
metadata: ExerciseMetadata{
Track: "haskell",
Exercise: "allergies",
Handle: "charlie",
IsRequester: false,
Dir: "/path/to/allergies-2",
Track: "haskell",
ExerciseSlug: "allergies",
Handle: "charlie",
IsRequester: false,
Dir: "/path/to/allergies-2",
},
desc: "haskell/allergies (2) by @charlie",
},
Expand Down

0 comments on commit 596419e

Please sign in to comment.