mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 16:48:31 +02:00
* Update and modularize exception handling cc #1024 #1141 - Stack traces are no longer shown to users unless the --debug flag is being used - Errors, warnings, and other messages contain color as needed - Converted error messages to Enum - Adds print_msg function to centralize output (this should replace all other output in other modules) Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com> * format with black * add message to catch-all exception block * Unskip some tests (#1399) * remove skip_editor test and tag * remove useless test * unskip blank input test * formatting * rename test so it doesn't overwrite other test * unskip some dayone tests that now work * Bump ipython from 7.28.0 to 7.31.1 (#1401) Bumps [ipython](https://github.com/ipython/ipython) from 7.28.0 to 7.31.1. - [Release notes](https://github.com/ipython/ipython/releases) - [Commits](https://github.com/ipython/ipython/compare/7.28.0...7.31.1) --- updated-dependencies: - dependency-name: ipython dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update changelog [ci skip] * Bump asteval from 0.9.25 to 0.9.26 (#1400) Bumps [asteval](https://github.com/newville/asteval) from 0.9.25 to 0.9.26. - [Release notes](https://github.com/newville/asteval/releases) - [Commits](https://github.com/newville/asteval/compare/0.9.25...0.9.26) --- updated-dependencies: - dependency-name: asteval dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update changelog [ci skip] * Bump black from 21.12b0 to 22.1.0 (#1404) * Bump black from 21.12b0 to 22.1.0 Bumps [black](https://github.com/psf/black) from 21.12b0 to 22.1.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/commits/22.1.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> * Run make format Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com> * Update changelog [ci skip] * Add reference documentation to docs site and separate out "Tips and Tricks" and "External Editors" from "Recipes" (#1332) * First draft of command line reference, mostly pulled from help screen * Add first draft of config file reference, mostly pulled from advanced.md * Clean up config file doc for readability * Add --config-file and remove examples from CLI reference * Add warning about time zone in timeformat * More small changes, and adding template config keyword * Cleaning up and re-ordering config file reference * Clean up reference and anything else from advanced documentation that can live elsewhere and linking to config file reference wherever config file is mentioned * Fix syntax highlighting in command line reference, clean up content a bit, include --diagnostic * Mention version config key * Apply minor changes suggested in PR review * Rename "recipes" to "Tips and Tricks", pull "External Editors" out of it into its own page, and redirect old recipes link to tips-and-tricks * Revert broken mkdocs-redirects usage from last commit * Update changelog [ci skip] * Add --co alias for --config-override (#1397) * Add hash as a default tag symbol (#1398) * Update changelog [ci skip] * Increment version to v2.8.4-beta2 * Update changelog [ci skip] * Increment version to v2.8.4 * Update changelog [ci skip] * Bump pytest from 6.2.5 to 7.0.0 (#1407) Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.5 to 7.0.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/6.2.5...7.0.0) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update changelog [ci skip] * Drop support for Python 3.7 and 3.8 (#1412) * Remove Python 3.7 and 3.8 from github actions workflows * Update lockfile after running poetry update a couple times * Update poetry lock * Remove Python 3.7 and 3.8 from pyproject.toml and run poetry lock * Update changelog [ci skip] * Tidy up git ignore (#1414) * cleaned gitignore and add comments * removed colon for readbility * alphabetize files in sections Co-authored-by: nelnog <nel.nogales@gmail.com> * fix behavior that was confusing pytest * update test to match new message * whitespace change * clean up error for manually stopping the inline editor * udpate error to use new exception handling * move some exceptions and errors to the new exception handling * add line breaks to keyboard interrupt so it looks more like other exceptions * add handling for exceptions that happen earlier in the flow * add new 'NothingToDelete' error to replace old behavior * get rid of old exception * add new exception handling to 'nothing saved to file' errors * move exception for no editor configured into new handling * move exception for no alt config to new handling * get rid of old exception handling for encrypted journal * Move error for too many wrong passwords into new handling * fix merge errors * replace sys.exit call with new exception handling * replace sys.exit call with new exception handling * replace sys.exit call with new exception handling * reformat with black * clean up old code * clean up old code * clean up linting issue * update uncaught exception for new handling * update test * fix mangled lock file Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jrnl Bot <jrnl.bot@gmail.com> Co-authored-by: Nelson <35701520+nelnog@users.noreply.github.com> Co-authored-by: nelnog <nel.nogales@gmail.com>
300 lines
12 KiB
Gherkin
300 lines
12 KiB
Gherkin
Feature: Writing new entries.
|
|
|
|
Scenario Outline: Multiline entry with punctuation should keep title punctuation
|
|
Given we use the config "<config_file>"
|
|
And we use the password "bad doggie no biscuit" if prompted
|
|
When we run "jrnl This is. the title\\n This is the second line"
|
|
And we run "jrnl -n 1"
|
|
Then the output should contain "This is. the title"
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| simple.yaml |
|
|
| empty_folder.yaml |
|
|
| dayone.yaml |
|
|
| encrypted.yaml |
|
|
|
|
Scenario Outline: Single line entry with period should be split at period
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
When we run "jrnl This is. the title"
|
|
And we run "jrnl -1"
|
|
Then the output should contain "| the title"
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
| basic_dayone.yaml |
|
|
|
|
Scenario Outline: CJK entry should be split at fullwidth period without following space.
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
When we run "jrnl 七転び。八起き"
|
|
And we run "jrnl -1"
|
|
Then the output should contain "| 八起き"
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
| basic_dayone.yaml |
|
|
|
|
Scenario Outline: Writing an entry from command line should store the entry
|
|
Given we use the config "<config_file>"
|
|
And we use the password "bad doggie no biscuit" if prompted
|
|
When we run "jrnl 23 july 2013: A cold and stormy day. I ate crisps on the sofa."
|
|
Then the output should contain "Entry added"
|
|
When we run "jrnl -n 1"
|
|
Then the output should contain "2013-07-23 09:00 A cold and stormy day."
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| simple.yaml |
|
|
| empty_folder.yaml |
|
|
| dayone.yaml |
|
|
| encrypted.yaml |
|
|
|
|
Scenario Outline: Writing a partial entry from command line with edit flag should go to the editor
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
When we run "jrnl this is a partial --edit"
|
|
Then the output should contain "Entry added"
|
|
Then the editor should have been called
|
|
And the editor file content should be
|
|
this is a partial
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_dayone.yaml |
|
|
| basic_folder.yaml |
|
|
|
|
Scenario Outline: Writing an empty entry from the editor should yield "Nothing saved to file" message
|
|
Given we use the config "<config_file>"
|
|
And we write nothing to the editor if opened
|
|
And we use the password "test" if prompted
|
|
When we run "jrnl --edit"
|
|
Then the error output should contain "Nothing saved to file"
|
|
And the editor should have been called
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| editor.yaml |
|
|
| editor_empty_folder.yaml |
|
|
| dayone.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_onefile.yaml |
|
|
|
|
|
|
Scenario Outline: Writing an empty entry from the command line with no editor should yield nothing
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
When we run "jrnl --config-override editor ''" and enter ""
|
|
Then the stdin prompt should have been called
|
|
And the output should be empty
|
|
And the error output should contain "To finish writing, press"
|
|
And the editor should not have been called
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
| basic_dayone.yaml |
|
|
|
|
Scenario Outline: Writing an entry does not print the entire journal
|
|
# https://github.com/jrnl-org/jrnl/issues/87
|
|
Given we use the config "<config_file>"
|
|
And we use the password "bad doggie no biscuit" if prompted
|
|
When we run "jrnl 23 july 2013: A cold and stormy day. I ate crisps on the sofa."
|
|
Then the output should contain "Entry added"
|
|
When we run "jrnl -n 1"
|
|
Then the output should not contain "Life is good"
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| editor.yaml |
|
|
| editor_empty_folder.yaml |
|
|
| dayone.yaml |
|
|
| encrypted.yaml |
|
|
|
|
Scenario Outline: Embedded period stays in title
|
|
Given we use the config "<config_file>"
|
|
And we use the password "bad doggie no biscuit" if prompted
|
|
When we run "jrnl 04-24-2014: Created a new website - empty.com. Hope to get a lot of traffic."
|
|
Then the output should contain "Entry added"
|
|
When we run "jrnl -1"
|
|
Then the output should be
|
|
2014-04-24 09:00 Created a new website - empty.com.
|
|
| Hope to get a lot of traffic.
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| simple.yaml |
|
|
| empty_folder.yaml |
|
|
| dayone.yaml |
|
|
| encrypted.yaml |
|
|
|
|
Scenario Outline: Write and read emoji support
|
|
Given we use the config "<config_file>"
|
|
And we use the password "bad doggie no biscuit" if prompted
|
|
When we run "jrnl 23 july 2013: 🌞 sunny day. Saw an 🐘"
|
|
Then the output should contain "Entry added"
|
|
When we run "jrnl -n 1"
|
|
Then the output should contain "🌞"
|
|
And the output should contain "🐘"
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| simple.yaml |
|
|
| empty_folder.yaml |
|
|
| dayone.yaml |
|
|
| encrypted.yaml |
|
|
|
|
Scenario Outline: Writing an entry at the prompt (no editor) should store the entry
|
|
Given we use the config "<config_file>"
|
|
And we use the password "bad doggie no biscuit" if prompted
|
|
When we run "jrnl" and enter "25 jul 2013: I saw Elvis. He's alive."
|
|
Then we should get no error
|
|
When we run "jrnl -on '2013-07-25'"
|
|
Then the output should contain "2013-07-25 09:00 I saw Elvis."
|
|
And the output should contain "| He's alive."
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| simple.yaml |
|
|
| empty_folder.yaml |
|
|
| encrypted.yaml |
|
|
|
|
@todo
|
|
Scenario: Writing an entry at the prompt (no editor) in DayOne journal
|
|
# Need to test DayOne w/out an editor
|
|
|
|
Scenario: Writing into Dayone
|
|
Given we use the config "dayone.yaml"
|
|
When we run "jrnl 01 may 1979: Being born hurts."
|
|
And we run "jrnl -until 1980"
|
|
Then the output should be "1979-05-01 09:00 Being born hurts."
|
|
|
|
Scenario: Writing into Dayone adds extended metadata
|
|
Given we use the config "dayone.yaml"
|
|
When we run "jrnl 01 may 1979: Being born hurts."
|
|
And we run "jrnl --export json"
|
|
Then we should get no error
|
|
And the output should be valid JSON
|
|
Given we parse the output as JSON
|
|
Then "entries" in the parsed output should have 5 elements
|
|
And "entries.0.creator" in the parsed output should be
|
|
software_agent
|
|
os_agent
|
|
host_name
|
|
generation_date
|
|
device_agent
|
|
And "entries.0.creator.software_agent" in the parsed output should contain
|
|
jrnl
|
|
|
|
Scenario: Title with an embedded period on DayOne journal
|
|
Given we use the config "dayone.yaml"
|
|
When we run "jrnl 04-24-2014: Ran 6.2 miles today in 1:02:03. I am feeling sore because I forgot to stretch."
|
|
Then the output should contain "Entry added"
|
|
When we run "jrnl -1"
|
|
Then the output should be
|
|
2014-04-24 09:00 Ran 6.2 miles today in 1:02:03.
|
|
| I am feeling sore because I forgot to stretch.
|
|
|
|
Scenario: Opening an folder that's not a DayOne folder should treat as folder journal
|
|
Given we use the config "empty_folder.yaml"
|
|
When we run "jrnl 23 july 2013: Testing folder journal."
|
|
Then the output should contain "Entry added"
|
|
When we run "jrnl -1"
|
|
Then the output should be "2013-07-23 09:00 Testing folder journal."
|
|
|
|
Scenario Outline: Count when adding a single entry via --edit
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
And we append to the editor if opened
|
|
[2021-11-13] worked on jrnl tests
|
|
When we run "jrnl --edit"
|
|
Then the output should contain
|
|
[1 entry added]
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
#| basic_dayone.yaml | @todo
|
|
|
|
|
|
Scenario Outline: Correctly count when adding multiple entries via --edit
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
And we append to the editor if opened
|
|
[2021-11-11] worked on jrnl tests
|
|
[2021-11-12] worked on jrnl tests again
|
|
[2021-11-13] worked on jrnl tests a little bit more
|
|
When we run "jrnl --edit"
|
|
Then the output should contain
|
|
[3 entries added]
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
#| basic_dayone.yaml | @todo
|
|
|
|
|
|
Scenario Outline: Correctly count when removing entries via --edit
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
And we write to the editor if opened
|
|
[2021-11-13] I am replacing my whole journal with this entry
|
|
When we run "jrnl --edit"
|
|
Then the output should contain
|
|
[2 entries deleted, 1 entry modified]
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
#| basic_dayone.yaml | @todo
|
|
|
|
|
|
Scenario Outline: Correctly count modification when running --edit to replace a single entry
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
And we write to the editor if opened
|
|
[2021-11-13] I am replacing the last entry with this entry
|
|
When we run "jrnl --edit -1"
|
|
Then the output should contain
|
|
[1 entry modified]
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
#| basic_dayone.yaml | @todo
|
|
|
|
|
|
Scenario Outline: Count modifications when editing whole journal and adding to last entry
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
And we append to the editor if opened
|
|
This is a small addendum to my latest entry.
|
|
When we run "jrnl --edit"
|
|
Then the output should contain
|
|
[1 entry modified]
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
| basic_dayone.yaml |
|