Fix bug that prevented --format pretty and --format short from working (#1177)

This commit is contained in:
Suhas 2021-03-06 13:47:03 -05:00 committed by GitHub
parent b9a6d029e2
commit a3f4f6b944
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 79 additions and 2 deletions

View file

@ -1,5 +1,31 @@
Feature: Custom formats
Scenario Outline: Short printing via --format flag
Given We use the config "<config>.yaml"
And we use the password "test" if prompted
When we run "jrnl --format short -3"
Then we should get no error
Examples: configs
| config |
| basic_onefile |
| basic_encrypted |
| basic_folder |
| basic_dayone |
Scenario Outline: Pretty Printing aka the Default
Given We use the config "<config>.yaml"
And we use the password "test" if prompted
When we run "jrnl --format pretty -3"
Then we should get no error
Examples: configs
| config |
| basic_onefile |
| basic_encrypted |
| basic_folder |
| basic_dayone |
Scenario Outline: JSON format
Given we use the config "<config>.yaml"
And we use the password "test" if prompted

View file

@ -407,6 +407,12 @@ def all_input_was_used(context):
def run(context, command, text=""):
text = text or context.text or ""
if "config_path" in context and context.config_path is not None:
with open(context.config_path) as f:
context.jrnl_config = yaml.load(f, Loader=yaml.FullLoader)
else:
context.jrnl_config = None
if "cache_dir" in context and context.cache_dir is not None:
cache_dir = os.path.join("features", "cache", context.cache_dir)
command = command.format(cache_dir=cache_dir)

View file

@ -1,13 +1,13 @@
# Copyright (C) 2012-2021 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import json
import os
import shutil
import random
import string
from xml.etree import ElementTree
from behave import given
from behave import then

View file

@ -323,9 +323,12 @@ def _delete_search_results(journal, old_entries, **kwargs):
def _display_search_results(args, journal, **kwargs):
if args.short:
if args.short or args.export == "short":
print(journal.pprint(short=True))
elif args.export == "pretty":
print(journal.pprint())
elif args.tags:
print(plugins.get_exporter("tags").export(journal))

View file

@ -27,6 +27,8 @@ __exporters = [
__importers = [JRNLImporter]
__exporter_types = {name: plugin for plugin in __exporters for name in plugin.names}
__exporter_types["pretty"] = None
__exporter_types["short"] = None
__importer_types = {name: plugin for plugin in __importers for name in plugin.names}
EXPORT_FORMATS = sorted(__exporter_types.keys())

17
tests/test_color.py Normal file
View file

@ -0,0 +1,17 @@
import pytest
from jrnl.color import colorize
from colorama import Fore, Style
@pytest.fixture()
def data_fixture():
string = "Zwei peanuts walked into a bar"
yield string
def test_colorize(data_fixture):
string = data_fixture
colorized_string = colorize(string, "BLUE", True)
assert colorized_string == Style.BRIGHT + Fore.BLUE + string + Style.RESET_ALL

23
tests/test_display.py Normal file
View file

@ -0,0 +1,23 @@
import argparse
import jrnl
import pytest
from unittest import mock
from jrnl.jrnl import _display_search_results
# fmt: off
# see: https://github.com/psf/black/issues/664
@pytest.mark.parametrize("export_format", [ "pretty", "short","markdown"])
#fmt: on
@mock.patch.object(argparse, "Namespace", return_value={"export": "markdown", "filename": "irrele.vant"})
def test_export_format(mock_args, export_format):
test_journal = jrnl.Journal.Journal
mock_args.export = export_format
#fmt: off
# see: https://github.com/psf/black/issues/664
with mock.patch("builtins.print") as mock_spy_print, \
mock.patch('jrnl.Journal.Journal.pprint') as mock_pprint:
_display_search_results(mock_args, test_journal)
mock_spy_print.assert_called_once_with(mock_pprint())
#fmt: on