From 4f3ff45e887a04ee44234bf5d5e13c22984b3abb Mon Sep 17 00:00:00 2001 From: ee7 <45465154+ee7@users.noreply.github.com> Date: Mon, 25 Jan 2021 20:07:49 +0100 Subject: [PATCH] sync: support `--track-dir` Previously the test file path was always derived from the working directory. --- src/sync/exercises.nim | 8 ++++---- src/sync/sync.nim | 11 ++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/sync/exercises.nim b/src/sync/exercises.nim index 2d1aad61..595f5cb8 100644 --- a/src/sync/exercises.nim +++ b/src/sync/exercises.nim @@ -75,8 +75,8 @@ proc status*(exercise: Exercise): ExerciseStatus = proc hasCanonicalData*(exercise: Exercise): bool = exercise.testCases.len > 0 -proc testsFile(exercise: Exercise): string = - getCurrentDir() / "exercises" / exercise.slug / ".meta" / "tests.toml" +proc testsFile(exercise: Exercise, trackDir: string): string = + trackDir / "exercises" / exercise.slug / ".meta" / "tests.toml" proc toToml(exercise: Exercise): string = result.add("[canonical-tests]\n") @@ -89,8 +89,8 @@ proc toToml(exercise: Exercise): string = result.add(&"\n# {testCase.description}") result.add(&"\n\"{testCase.uuid}\" = {isIncluded}\n") -proc writeTestsToml*(exercise: Exercise) = - let testsPath = testsFile(exercise) +proc writeTestsToml*(exercise: Exercise, trackDir: string) = + let testsPath = testsFile(exercise, trackDir) createDir(testsPath.parentDir()) let contents = toToml(exercise) diff --git a/src/sync/sync.nim b/src/sync/sync.nim index 7ba14ecf..7dbd2923 100644 --- a/src/sync/sync.nim +++ b/src/sync/sync.nim @@ -64,9 +64,10 @@ proc syncDecision(testCase: ExerciseTestCase, mode: Mode): SyncDecision = of modeChoose: chooseSyncDecision(testCase) -proc sync(exercise: Exercise, mode: Mode): Exercise = +proc sync(exercise: Exercise, conf: Conf): Exercise = result = exercise + let mode = conf.action.mode case mode of modeInclude: logNormal(&"[info] {exercise.slug}: included {exercise.tests.missing.len} missing test cases") @@ -100,13 +101,13 @@ proc sync(exercise: Exercise, mode: Mode): Exercise = result.tests = initExerciseTests(included, excluded, missing) - writeTestsToml(result) + writeTestsToml(result, conf.trackDir) -proc sync(exercises: seq[Exercise], mode: Mode): seq[Exercise] = +proc sync(exercises: seq[Exercise], conf: Conf): seq[Exercise] = for exercise in exercises: case exercise.status of exOutOfSync: - result.add(sync(exercise, mode)) + result.add(sync(exercise, conf)) of exInSync: logDetailed(&"[skip] {exercise.slug} is up-to-date") of exNoCanonicalData: @@ -116,7 +117,7 @@ proc sync*(conf: Conf) = logNormal("Syncing exercises...") let exercises = findExercises(conf) - let syncedExercises = sync(exercises, conf.action.mode) + let syncedExercises = sync(exercises, conf) if syncedExercises.anyIt(it.status == exOutOfSync): logNormal("[warn] some exercises are still missing test cases")