mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 08:38:32 +02:00
Yaml export errors now don't show stack trace (#1449)
* Yaml export errors now don't show stacktrace * Add test for user-friendly error when exporting YAML to a nonexistent directory * Leave partially written to files after export error * unskip working tests Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com> Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
This commit is contained in:
parent
048c9d40e7
commit
74200f8dc4
3 changed files with 22 additions and 8 deletions
|
@ -35,6 +35,8 @@ class TextExporter:
|
|||
return f"[Journal exported to {path}]"
|
||||
except IOError as e:
|
||||
return f"[{ERROR_COLOR}ERROR{RESET_COLOR}: {e.filename} {e.strerror}]"
|
||||
except RuntimeError as e:
|
||||
return e
|
||||
|
||||
@classmethod
|
||||
def make_filename(cls, entry):
|
||||
|
@ -54,6 +56,8 @@ class TextExporter:
|
|||
return "[{2}ERROR{3}: {0} {1}]".format(
|
||||
e.filename, e.strerror, ERROR_COLOR, RESET_COLOR
|
||||
)
|
||||
except RuntimeError as e:
|
||||
return e
|
||||
return "[Journal exported to {}]".format(path)
|
||||
|
||||
def _slugify(string):
|
||||
|
|
|
@ -23,12 +23,10 @@ class YAMLExporter(TextExporter):
|
|||
def export_entry(cls, entry, to_multifile=True):
|
||||
"""Returns a markdown representation of a single entry, with YAML front matter."""
|
||||
if to_multifile is False:
|
||||
print(
|
||||
raise RuntimeError(
|
||||
f"{ERROR_COLOR}ERROR{RESET_COLOR}: YAML export must be to individual files. Please \
|
||||
specify a directory to export to.",
|
||||
file=sys.stderr,
|
||||
specify a directory to export to."
|
||||
)
|
||||
return
|
||||
|
||||
date_str = entry.date.strftime(entry.journal.config["timeformat"])
|
||||
body_wrapper = "\n" if entry.body else ""
|
||||
|
@ -131,10 +129,8 @@ class YAMLExporter(TextExporter):
|
|||
@classmethod
|
||||
def export_journal(cls, journal):
|
||||
"""Returns an error, as YAML export requires a directory as a target."""
|
||||
print(
|
||||
raise RuntimeError(
|
||||
"{}ERROR{}: YAML export must be to individual files. Please specify a directory to export to.".format(
|
||||
ERROR_COLOR, RESET_COLOR
|
||||
),
|
||||
file=sys.stderr,
|
||||
)
|
||||
)
|
||||
return
|
||||
|
|
|
@ -425,6 +425,20 @@ Feature: Custom formats
|
|||
| basic_folder.yaml |
|
||||
# | basic_dayone.yaml |
|
||||
|
||||
Scenario Outline: Exporting YAML to nonexistent directory leads to user-friendly error with no traceback
|
||||
Given we use the config "<config_file>"
|
||||
And we use the password "test" if prompted
|
||||
When we run "jrnl --export yaml --file nonexistent_dir"
|
||||
Then the output should contain "YAML export must be to individual files"
|
||||
And the output should not contain "Traceback"
|
||||
|
||||
Examples: configs
|
||||
| config_file |
|
||||
| basic_onefile.yaml |
|
||||
| basic_encrypted.yaml |
|
||||
| basic_folder.yaml |
|
||||
| basic_dayone.yaml |
|
||||
|
||||
@skip_win # @todo YAML exporter does not correctly export emoji on Windows
|
||||
Scenario Outline: Add a blank line to YAML export if there isn't one already
|
||||
# https://github.com/jrnl-org/jrnl/issues/768
|
||||
|
|
Loading…
Add table
Reference in a new issue