Allow grade_this_code()
to provide pass-through-filter grading
#276
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR relaxes the constraint applied in
gradethis_exercise_checker()
that gradethis grading functions must return either passing or failing feedback. This builds on rstudio/learnr#610 and uses the newstage
argument set in the checker function when evaluating exercises. The constraint is now only applied tostage == "check"
since this defines the terminal check action and other grading chunks might pass through.Then, we build on the above feature by adding an
action
parameter tograde_this_code()
, allowing the grading author to choose ifgrade_this_code()
will pass or fail the user's code. The default is"both"
to be consistent with current behavior. If either"pass"
or"fail"
are chosen, feedback that would result in the opposite action is ignored and no feedback is returned.The end result is that authors can write check chunks that use static code analysis to filter out problematic results that might be computationally intensive, but that defer to the
-check
chunk when the code matches.If the user picks
left_join()
, static analysis will return a feedback message highlighting the user's mistake. If the user picksinner_join()
,grade_this_code()
defers to the-check
chunk where the user's evaluated code is graded. (Totally made up example, but similar issues arise in plotting and many other places.)