Skip to content
Draft
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
30 changes: 21 additions & 9 deletions src/lint/track_config.nim
Original file line number Diff line number Diff line change
Expand Up @@ -542,6 +542,9 @@ proc checkExercisesPCP(exercises: seq[ConceptExercise] | seq[PracticeExercise];

when exercises is seq[ConceptExercise]:
var conceptExercisesWithEmptyPrereqs = newSeq[string]()
else:
var countPracticeExercisesWithEmptyPractices = 0
var countPracticeExercisesWithEmptyPrereqs = 0

for exercise in exercises:
let conceptsOrPractices =
Expand All @@ -555,11 +558,13 @@ proc checkExercisesPCP(exercises: seq[ConceptExercise] | seq[PracticeExercise];
case status
of sMissing, sBeta, sActive:
# Check either `concepts` or `practices`
# TODO: enable the `practices` check when more tracks have populated them.
when exercise is ConceptExercise:
if conceptsOrPractices.len == 0:
if conceptsOrPractices.len == 0:
when exercise is ConceptExercise:
let msg = statusMsg(exercise, &"an empty array of `{conceptsOrPracticesStr}`")
b.setFalseAndPrint(msg, path)
else:
# TODO: Make each empty `practices` an error, not a warning.
inc countPracticeExercisesWithEmptyPractices

# Check `prerequisites`
when exercise is ConceptExercise:
Expand All @@ -572,12 +577,10 @@ proc checkExercisesPCP(exercises: seq[ConceptExercise] | seq[PracticeExercise];
"empty array of `prerequisites`"
b.setFalseAndPrint(msg, path)
else:
# TODO: enable the Practice Exercise `prerequisites` check when more
# tracks have populated them.
if false:
if exercise.prerequisites.len == 0:
let msg = statusMsg(exercise, "an empty array of `prerequisites`")
b.setFalseAndPrint(msg, path)
# TODO: Make an empty Practice Exercise `prerequisites` array an error,
# not a warning
if exercise.prerequisites.len == 0:
inc countPracticeExercisesWithEmptyPrereqs

of sDeprecated:
# Check either `concepts` or `practices`
Expand All @@ -601,6 +604,15 @@ proc checkExercisesPCP(exercises: seq[ConceptExercise] | seq[PracticeExercise];
msg.add " each have an empty array of `prerequisites`, but only one " &
"Concept Exercise is allowed to have that"
b.setFalseAndPrint(msg, path)
else:
if countPracticeExercisesWithEmptyPractices > 0:
let msg = &"{countPracticeExercisesWithEmptyPractices} user-facing " &
"Practice Exercises have an empty `practices` array"
warn(msg, path)
if countPracticeExercisesWithEmptyPrereqs > 0:
let msg = &"{countPracticeExercisesWithEmptyPrereqs} user-facing " &
"Practice Exercises have an empty `prerequisites` array"
warn(msg, path)

proc checkExerciseSlugsAndForegone(exercises: Exercises; b: var bool;
path: Path) =
Expand Down