Open themanifold opened 4 years ago
at first glance this looks like this is not a initial conftest, i think pytest needs to warn more about plugin registration with the addoption hook when its already too late for that
if you move it one folder up it should work
@RonnyPfannschmidt Sorry, I'm not super experienced with pytest (or confest). I'm not sure what you mean by your message.
I don't understand why pytest is trying to register a plugin when I use the addoption hook to create a unrelated flag.
When you say move "it" up one folder, do you mean confest? I can't really do that in my example because the file I'm referring to is not part of the test project - conftest belongs in the test
folder IMO.
i mean moving the conftest up one folder, pytest no longer scans all of the conftests in all of the folders because people did horrid stuff, sorry about that one
OK, I understand your work around, but why does putting an equal sign there make it work?
@themanifold with the =, pytest doesnt consider it as a existing path contributiong to finding the rootdir
this is a issue with finding the correct rootdir
as only conftests
in it are considered as initial conftests
if you cringe from the explanation thats natural, i also cringed when writing it (the horrors of bugfix collusion)
I'm getting the same behavior I'm building a little framework for a demo and I have the webdrivers in a folder called webdrivers.
If I use something like --driver_path webdrivers/chromedriver, it breaks with the error:
"ERROR: usage: _jb_pytest_runner.py [options] [file_or_dir] [file_or_dir] [...] _jb_pytest_runner.py: error: unrecognized arguments: --driver_path inifile: /home/adrian/Projects/myframework/pytest.ini rootdir: /home/adrian/Projects/myframework"
Using it like this makes it work as stated above --driver_path=webdrivers/chromedriver
Using anything that doesn't match a folder works as well --driver_path linux/chromedriver
If I provide an existing relative path to pytest via
parser.addoption
then I get the following error message:This does not happen to a relative path that is non-existent.
If you add an equal sign (
=
) instead of a blank space, this error does not occur.This is slightly confusing to me as I do not see why
parser.addoption
cares about whether we're passing in a file (I would have thought it was just deal with the string). And if it does care about whether something is a file, why is it OK with a nonexistent file?A minimal bit of code that will reproduce this,
conftest.py
Place this in a folder with an existing relative file above it, e.g.:
Enter the
test
folder and executepytest --var-file ../foo.txt
and observe the error message above.Running
pytest --var-file bar.txt
will not produce an error message Runningpytest --var-file ../notthere.txt
will not produce the error message Runningpytest --var-file=../foo.txt
will not produce the error messageOutput of
pip freeze
:Note, observed this in pytest
5.0.1
as well.