mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-19 04:28:31 +02:00
[Test] run behave tests with test plugins outside project root
This commit is contained in:
parent
3492dd291a
commit
9888d98860
3 changed files with 19 additions and 5 deletions
|
@ -52,11 +52,15 @@ jobs:
|
||||||
poetry install --remove-untracked
|
poetry install --remove-untracked
|
||||||
poetry install
|
poetry install
|
||||||
poetry run python -m pip install ./tests/external_plugins_src/
|
poetry run python -m pip install ./tests/external_plugins_src/
|
||||||
|
cd ..
|
||||||
|
# installed test plugins aren't recognized by "behave" if run from the
|
||||||
|
# project's root folder, but "poetry run" doesn't work on folders upstream
|
||||||
|
# from project root
|
||||||
|
|
||||||
- name: Test with pytest
|
- name: Test with pytest
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
run: poetry run pytest --junitxml=reports/pytest/results.xml
|
run: pytest --junitxml=reports/pytest/results.xml
|
||||||
|
|
||||||
- name: Test with behave
|
- name: Test with behave
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
run: poetry run behave --no-skipped --format progress2 --junit --junit-directory reports/behave
|
run: behave --no-skipped --format progress2 --junit --junit-directory reports/behave jrnl/features
|
||||||
|
|
|
@ -165,10 +165,17 @@ situations other than a traditional export. They are:
|
||||||
|
|
||||||
## Development Tips
|
## Development Tips
|
||||||
|
|
||||||
- editable installs (`pip install -e ...`) don't seem to play nice with
|
- Editable installs (`pip install -e ...`) don't seem to play nice with
|
||||||
the namespace layout. If your plugin isn't appearing, try a non-editable
|
the namespace layout. If your plugin isn't appearing, try a non-editable
|
||||||
install of both *jrnl* and your plugin.
|
install of both *jrnl* and your plugin.
|
||||||
|
- If you run *jrnl* from the main project root directory (the one that contains
|
||||||
|
*jrnl*'s source code), namespace plugins won't be recognized. This is (I
|
||||||
|
suspect) because the Python interpreter will find your *jrnl* source directory
|
||||||
|
(which doesn't contain your namespace plugins) before it find your
|
||||||
|
"site-packages" directory (i.e. installed packages, which will recognize
|
||||||
|
namespace packages).
|
||||||
- Don't name your plugin file "testing.py" or it won't be installed (at least
|
- Don't name your plugin file "testing.py" or it won't be installed (at least
|
||||||
automatically) by pip.
|
automatically) by pip.
|
||||||
|
- For examples, you can look to the *jrnl*'s internal importers and exporters.
|
||||||
As well, there are some basic external examples included in *jrnl*'s git repo
|
As well, there are some basic external examples included in *jrnl*'s git repo
|
||||||
at `tests/external_plugins_src` (including the example code above).
|
at `tests/external_plugins_src` (including the example code above).
|
||||||
|
|
|
@ -11,6 +11,7 @@ except ImportError:
|
||||||
|
|
||||||
CWD = os.getcwd()
|
CWD = os.getcwd()
|
||||||
HERE = Path(__file__).resolve().parent
|
HERE = Path(__file__).resolve().parent
|
||||||
|
TARGET_CWD = HERE.parent # project root folder
|
||||||
|
|
||||||
# @see https://behave.readthedocs.io/en/latest/tutorial.html#debug-on-error-in-case-of-step-failures
|
# @see https://behave.readthedocs.io/en/latest/tutorial.html#debug-on-error-in-case-of-step-failures
|
||||||
BEHAVE_DEBUG_ON_ERROR = False
|
BEHAVE_DEBUG_ON_ERROR = False
|
||||||
|
@ -22,6 +23,8 @@ def setup_debug_on_error(userdata):
|
||||||
|
|
||||||
|
|
||||||
def before_all(context):
|
def before_all(context):
|
||||||
|
# always start in project root directory
|
||||||
|
os.chdir(TARGET_CWD)
|
||||||
setup_debug_on_error(context.config.userdata)
|
setup_debug_on_error(context.config.userdata)
|
||||||
|
|
||||||
|
|
||||||
|
@ -102,8 +105,8 @@ def before_scenario(context, scenario):
|
||||||
|
|
||||||
def after_scenario(context, scenario):
|
def after_scenario(context, scenario):
|
||||||
"""After each scenario, restore all test data and remove working_dirs."""
|
"""After each scenario, restore all test data and remove working_dirs."""
|
||||||
if os.getcwd() != CWD:
|
if os.getcwd() != TARGET_CWD:
|
||||||
os.chdir(CWD)
|
os.chdir(TARGET_CWD)
|
||||||
|
|
||||||
# only clean up if debugging is off and the scenario passed
|
# only clean up if debugging is off and the scenario passed
|
||||||
if BEHAVE_DEBUG_ON_ERROR and scenario.status != "failed":
|
if BEHAVE_DEBUG_ON_ERROR and scenario.status != "failed":
|
||||||
|
|
Loading…
Add table
Reference in a new issue