The problem is that you can get very different results when you call os.path.realpath(os.path.normcase(<your path>)) vs. os.path.normcase(os.path.realpath(<your path>)), and as a result, the if statement returns False on Windows for me. Here is the log statement:
The suggested fix is for the if statement on L350 to call os.path.normcase(os.path.realpath(module_path)).startswith(path) to match the method order on L343. I can confirm that after making this change in the source code, all of my tests are detected by nose as expected.
The issue I'm experiencing seems to be pinpointed to the following lines of code:
https://github.com/nose-devs/nose/blob/7c26ad1e6b7d308cafa328ad34736d34028c122a/nose/loader.py#L350-L352 Within the above if statement, I see
os.path.realpath(os.path.normcase(module_path))
when comparing to path, which is called a little earlier (in line 343) https://github.com/nose-devs/nose/blob/7c26ad1e6b7d308cafa328ad34736d34028c122a/nose/loader.py#L343The problem is that you can get very different results when you call
os.path.realpath(os.path.normcase(<your path>))
vs.os.path.normcase(os.path.realpath(<your path>))
, and as a result, the if statement returns False on Windows for me. Here is the log statement:The suggested fix is for the if statement on L350 to call
os.path.normcase(os.path.realpath(module_path)).startswith(path)
to match the method order on L343. I can confirm that after making this change in the source code, all of my tests are detected by nose as expected.