Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename Exercise field on metadata type #815

Merged
merged 1 commit into from
Feb 26, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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