Fix bug with usage of getattr to get the test name #38
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.
In the event that an exception is raised during the class setup (
setUpClass
) using theJSONTestRunner
with the built-inunittest
module, the test runner crashes and fails to write toresults.json
.Minimal example:
Stack trace
results.json
is not created, which causes the Gradescope autograder to fail when deployed.Ideally, this should show the test failure in
results.json
similarly to how the built inTextTestRunner
behaves:The reason that this is occurring is because the how the getters called from
buildResult
andbuildLeaderboardEntry
are assuming thattest
will always has_testMethodName
. And that is true, whentest
is an instance ofunittest.TestCase
. However, that is not the case in the error condition that I explained above (when test is actually an instance of_ErrorHolder
).This pull request fixes that error by checking to see if
_testMethodName
actually exists intest
before trying to access it.After those fixes, we see that we get similar output to
TextTestRunner
inresults.json
.