Skip to content

Commit

Permalink
Some cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
ErikSchierboom committed Jan 12, 2024
1 parent b230f7a commit 276cd3d
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 28 deletions.
25 changes: 11 additions & 14 deletions src/create/exercises.nim
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@ proc verifyExerciseDoesNotExist(conf: Conf, slug: string): tuple[trackConfig: Tr

(trackConfig, trackConfigPath, userExercise)

proc createEmptyFile(file: string) =
let fileDir = parentDir(file)
if not dirExists(fileDir):
createDir(fileDir)

writeFile(file, "")

proc syncFiles(trackConfig: TrackConfig, trackDir: string, exerciseSlug: Slug, exerciseKind: ExerciseKind) =
let exerciseDir = trackDir / "exercises" / $exerciseKind / $exerciseSlug

Expand All @@ -33,11 +40,7 @@ proc syncFiles(trackConfig: TrackConfig, trackDir: string, exerciseSlug: Slug, e

for filePatterns in filePatternGroups:
for filePattern in toFilepaths(filePatterns, exerciseSlug):
let fileDir = exerciseDir / parentDir(filePattern)
if not dirExists(fileDir):
createDir(fileDir)

writeFile(exerciseDir / filePattern, "")
createEmptyFile(exerciseDir / filePattern)

proc syncExercise(conf: Conf, slug: Slug, scope: set[SyncKind]) =
let syncConf = Conf(
Expand Down Expand Up @@ -80,11 +83,8 @@ proc createConceptExercise*(conf: Conf) =
syncExercise(conf, userExercise, {skMetadata, skFilepaths})

let docsDir = conf.trackDir / "exercises" / "concept" / $userExercise / ".docs"
if not dirExists(docsDir):
createDir(docsDir)

writeFile(docsDir / "introduction.md", "")
writeFile(docsDir / "instructions.md", "")
createEmptyFile(docsDir / "introduction.md")
createEmptyFile(docsDir / "instructions.md")

withLevel(verQuiet):
syncFiles(trackConfig, conf.trackDir, userExercise, ekConcept)
Expand Down Expand Up @@ -121,9 +121,6 @@ proc createPracticeExercise*(conf: Conf) =
syncFiles(trackConfig, conf.trackDir, userExercise, ekPractice)

let docsDir = conf.trackDir / "exercises" / "practice" / $userExercise / ".docs"
if not dirExists(docsDir):
createDir(docsDir)

writeFile(docsDir / "instructions.md", "")
createEmptyFile(docsDir / "instructions.md")

logNormal(&"Created practice exercise '{userExercise}'.")
8 changes: 8 additions & 0 deletions tests/binary_helpers.nim
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,13 @@ template testDiffThenRestore*(dir, expectedDiff, restoreArg: string) =
check diff == expectedDiff
gitRestore(dir, restoreArg)

proc testStatusThenReset*(dir, expectedStatus: string) =
discard git(["-C", dir, "add", "."])

let status = gitCheck(0, ["--no-pager", "-C", dir, "status", "--short"])
check status == expectedStatus

discard git(["-C", dir, "reset", "--hard"])

template checkNoDiff*(trackDir: string) =
check gitDiffExitCode(trackDir) == 0
16 changes: 2 additions & 14 deletions tests/test_binary_create.nim
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,7 @@ A exercises/concept/foo/.meta/exemplar.ex
A exercises/concept/foo/lib/foo.ex
A exercises/concept/foo/test/foo_test.exs
""".unindent()

discard git(["-C", trackDir, "add", "."])

let status = gitCheck(0, ["--no-pager", "-C", trackDir, "status", "--short"])
check status == expectedStatus

discard git(["-C", trackDir, "reset", "--hard"])
testStatusThenReset(trackDir, expectedStatus)

test "practice exercise slug matches existing concept exercise (prints the expected output, and exits with 1)":
const expectedOutput = fmt"""
Expand Down Expand Up @@ -93,13 +87,7 @@ A exercises/practice/foo/.meta/example.ex
A exercises/practice/foo/lib/foo.ex
A exercises/practice/foo/test/foo_test.exs
""".unindent()

discard git(["-C", trackDir, "add", "."])

let status = gitCheck(0, ["--no-pager", "-C", trackDir, "status", "--short"])
check status == expectedStatus

discard git(["-C", trackDir, "reset", "--hard"])
testStatusThenReset(trackDir, expectedStatus)

main()
{.used.}

0 comments on commit 276cd3d

Please sign in to comment.