Reformat messages and add new centralized exception handling (#1417)

* 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>
This commit is contained in:
Jonathan Wren 2022-03-12 12:43:26 -08:00 committed by GitHub
parent d6ff04cf17
commit 5273f8769d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 204 additions and 96 deletions

View file

@ -1,6 +1,6 @@
Feature: Writing new entries.
Scenario Outline: Multiline entry with punctuation should keep title punctuation
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"
@ -96,7 +96,7 @@ Feature: Writing new entries.
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 "Writing Entry; on a blank line"
And the error output should contain "To finish writing, press"
And the editor should not have been called
Examples: configs

View file

@ -1,19 +0,0 @@
import textwrap
from jrnl.exception import JrnlError
def test_config_directory_exception_message():
ex = JrnlError(
"ConfigDirectoryIsFile", config_directory_path="/config/directory/path"
)
assert ex.message == textwrap.dedent(
"""
The path to your jrnl configuration directory is a file, not a directory:
/config/directory/path
Removing this file will allow jrnl to save its configuration.
"""
)

View file

@ -1,6 +1,7 @@
import pytest
from jrnl.exception import JrnlError
from jrnl.exception import JrnlException
from jrnl.plugins.fancy_exporter import check_provided_linewrap_viability
@ -23,6 +24,5 @@ class TestFancy:
total_linewrap = 12
with pytest.raises(JrnlError) as e:
with pytest.raises(JrnlException):
check_provided_linewrap_viability(total_linewrap, [content], journal)
assert e.value.error_type == "LineWrapTooSmallForDateFormat"