mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-07-06 16:26:13 +02:00
Merge branch 'develop' into update-edited-summary
This commit is contained in:
commit
d67883b0b3
17 changed files with 324 additions and 106 deletions
92
tests/bdd/features/config_file.feature
Normal file
92
tests/bdd/features/config_file.feature
Normal file
|
@ -0,0 +1,92 @@
|
|||
Feature: Multiple journals
|
||||
|
||||
Scenario: Read a journal from an alternate config
|
||||
Given the config "basic_onefile.yaml" exists
|
||||
And we use the config "multiple.yaml"
|
||||
When we run "jrnl --cf basic_onefile.yaml -999"
|
||||
Then the output should not contain "My first entry" # from multiple.yaml
|
||||
And the output should contain "Lorem ipsum" # from basic_onefile.yaml
|
||||
|
||||
Scenario: Write to default journal by default using an alternate config
|
||||
Given the config "multiple.yaml" exists
|
||||
And we use the config "basic_onefile.yaml"
|
||||
When we run "jrnl --cf multiple.yaml this goes to default"
|
||||
And we run "jrnl -1"
|
||||
Then the output should not contain "this goes to default"
|
||||
When we run "jrnl --cf multiple.yaml -1"
|
||||
Then the output should contain "this goes to default"
|
||||
|
||||
Scenario: Write to specified journal using an alternate config
|
||||
Given the config "multiple.yaml" exists
|
||||
And we use the config "basic_onefile.yaml"
|
||||
When we run "jrnl work --cf multiple.yaml a long day in the office"
|
||||
And we run "jrnl default --cf multiple.yaml -1"
|
||||
Then the output should contain "But I'm better"
|
||||
When we run "jrnl work --cf multiple.yaml -1"
|
||||
Then the output should contain "a long day in the office"
|
||||
|
||||
Scenario: Tell user which journal was used while using an alternate config
|
||||
Given the config "multiple.yaml" exists
|
||||
And we use the config "basic_onefile.yaml"
|
||||
When we run "jrnl --cf multiple.yaml work a long day in the office"
|
||||
Then we should see the message "Entry added to work journal"
|
||||
|
||||
Scenario: Write to specified journal with a timestamp using an alternate config
|
||||
Given the config "multiple.yaml" exists
|
||||
And we use the config "basic_onefile.yaml"
|
||||
When we run "jrnl work --cf multiple.yaml 23 july 2012: a long day in the office"
|
||||
And we run "jrnl --cf multiple.yaml -1"
|
||||
Then the output should contain "But I'm better"
|
||||
When we run "jrnl --cf multiple.yaml work -1"
|
||||
Then the output should contain "a long day in the office"
|
||||
And the output should contain "2012-07-23"
|
||||
|
||||
Scenario: Write to specified journal without a timestamp but with colon using an alternate config
|
||||
Given the config "multiple.yaml" exists
|
||||
And we use the config "basic_onefile.yaml"
|
||||
When we run "jrnl work --cf multiple.yaml : a long day in the office"
|
||||
And we run "jrnl --cf multiple.yaml -1"
|
||||
Then the output should contain "But I'm better"
|
||||
When we run "jrnl --cf multiple.yaml work -1"
|
||||
Then the output should contain "a long day in the office"
|
||||
|
||||
Scenario: Create new journals as required using an alternate config
|
||||
Given the config "multiple.yaml" exists
|
||||
And we use the config "basic_onefile.yaml"
|
||||
When we run "jrnl ideas -1"
|
||||
Then the output should be empty
|
||||
When we run "jrnl ideas --cf multiple.yaml 23 july 2012: sell my junk on ebay and make lots of money"
|
||||
Then the output should contain "Journal 'ideas' created"
|
||||
When we run "jrnl ideas --cf multiple.yaml -1"
|
||||
Then the output should contain "sell my junk on ebay and make lots of money"
|
||||
|
||||
Scenario: Don't crash if no default journal is specified using an alternate config
|
||||
Given the config "bug343.yaml" exists
|
||||
And we use the config "basic_onefile.yaml"
|
||||
When we run "jrnl --cf bug343.yaml a long day in the office"
|
||||
Then we should see the message "No default journal configured"
|
||||
|
||||
Scenario: Don't crash if no file exists for a configured encrypted journal using an alternate config
|
||||
Given the config "multiple.yaml" exists
|
||||
And we use the config "basic_onefile.yaml"
|
||||
When we run "jrnl new_encrypted --cf multiple.yaml Adding first entry" and enter
|
||||
these three eyes
|
||||
these three eyes
|
||||
n
|
||||
Then we should see the message "Encrypted journal 'new_encrypted' created"
|
||||
|
||||
Scenario: Don't overwrite main config when encrypting a journal in an alternate config
|
||||
Given the config "basic_onefile.yaml" exists
|
||||
And we use the config "multiple.yaml"
|
||||
When we run "jrnl --cf basic_onefile.yaml --encrypt" and enter
|
||||
these three eyes
|
||||
these three eyes
|
||||
n
|
||||
Then we should see the message "Journal encrypted to features/journals/basic_onefile.journal"
|
||||
And the config should contain "encrypt: false" # multiple.yaml remains unchanged
|
||||
|
||||
Scenario: Don't overwrite main config when decrypting a journal in an alternate config
|
||||
Given the config "editor_encrypted.yaml" exists
|
||||
And we use the config "basic_encrypted.yaml"
|
||||
When we run "jrnl --cf editor_encrypted.yaml --decrypt"
|
||||
Then the config should contain "encrypt: true" # basic_encrypted remains unchanged
|
|
@ -1,6 +1,7 @@
|
|||
from pytest_bdd import scenarios
|
||||
|
||||
scenarios("features/build.feature")
|
||||
scenarios("features/config_file.feature")
|
||||
scenarios("features/core.feature")
|
||||
scenarios("features/datetime.feature")
|
||||
scenarios("features/delete.feature")
|
||||
|
|
|
@ -105,6 +105,14 @@ def we_use_the_config(config_file, temp_dir, working_dir):
|
|||
return config_dest
|
||||
|
||||
|
||||
@given(parse('the config "{config_file}" exists'), target_fixture="config_path")
|
||||
@given('the config "<config_file>" exists', target_fixture="config_path")
|
||||
def config_exists(config_file, temp_dir, working_dir):
|
||||
config_source = os.path.join(working_dir, "data", "configs", config_file)
|
||||
config_dest = os.path.join(temp_dir.name, config_file)
|
||||
shutil.copy2(config_source, config_dest)
|
||||
|
||||
|
||||
@given(parse('we use the password "{pw}" if prompted'), target_fixture="password")
|
||||
def use_password_forever(pw):
|
||||
return pw
|
||||
|
|
|
@ -74,6 +74,7 @@ def output_should_be_empty(cli_run):
|
|||
assert actual == ""
|
||||
|
||||
|
||||
@then(parse('the output should contain the date "{date}"'))
|
||||
@then('the output should contain the date "<date>"')
|
||||
def output_should_contain_date(date, cli_run):
|
||||
assert date and date in cli_run["stdout"]
|
||||
|
|
22
tests/unit/test_config_file.py
Normal file
22
tests/unit/test_config_file.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
import pytest
|
||||
import os
|
||||
|
||||
from jrnl.install import find_alt_config
|
||||
|
||||
|
||||
def test_find_alt_config(request):
|
||||
work_config_path = os.path.join(
|
||||
request.fspath.dirname, "..", "data", "configs", "basic_onefile.yaml"
|
||||
)
|
||||
found_alt_config = find_alt_config(work_config_path)
|
||||
assert found_alt_config == work_config_path
|
||||
|
||||
|
||||
def test_find_alt_config_not_exist(request):
|
||||
bad_config_path = os.path.join(
|
||||
request.fspath.dirname, "..", "data", "configs", "not-existing-config.yaml"
|
||||
)
|
||||
with pytest.raises(SystemExit) as ex:
|
||||
found_alt_config = find_alt_config(bad_config_path)
|
||||
assert found_alt_config is not None
|
||||
assert isinstance(ex.value, SystemExit)
|
|
@ -37,6 +37,7 @@ def expected_args(**kwargs):
|
|||
"tags": False,
|
||||
"text": [],
|
||||
"config_override": [],
|
||||
"config_file_path": "",
|
||||
}
|
||||
return {**default_args, **kwargs}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue