Give a proper message when trying to use an empty config file (#1461)

* Added check for empty config file and if so, use default config

* Added check for empty config file and if so, use default config

* Fix and add tests for empty config file

* Exit program with message if config is empty.
bdd-test doesn't add version if file is (and should stay) empty.

* Exit program with message if config is empty.

* bdd-test doesn't add version if file is (and should stay) empty.

Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
This commit is contained in:
Jonathan van der Steege 2022-05-07 21:13:36 +02:00 committed by GitHub
parent 71c1d38d50
commit 792f188ecc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 2 deletions

View file

@ -75,6 +75,10 @@ def load_or_install_jrnl(alt_config_path):
logging.debug("Reading configuration from file %s", config_path) logging.debug("Reading configuration from file %s", config_path)
config = load_config(config_path) config = load_config(config_path)
if config is None:
print("Unable to parse config file", file=sys.stderr)
sys.exit()
if is_old_version(config_path): if is_old_version(config_path):
from jrnl import upgrade from jrnl import upgrade

View file

@ -85,7 +85,6 @@ Feature: Multiple journals
Then the output should contain "Journal encrypted to features/journals/basic_onefile.journal" Then the output should contain "Journal encrypted to features/journals/basic_onefile.journal"
And the config should contain "encrypt: false" And the config should contain "encrypt: false"
Scenario: Don't overwrite main config when decrypting a journal in an alternate config Scenario: Don't overwrite main config when decrypting a journal in an alternate config
Given the config "editor_encrypted.yaml" exists Given the config "editor_encrypted.yaml" exists
And we use the password "bad doggie no biscuit" if prompted And we use the password "bad doggie no biscuit" if prompted
@ -93,3 +92,14 @@ Feature: Multiple journals
When we run "jrnl --cf editor_encrypted.yaml --decrypt" When we run "jrnl --cf editor_encrypted.yaml --decrypt"
Then the config should contain "encrypt: true" Then the config should contain "encrypt: true"
And the output should not contain "Wrong password" And the output should not contain "Wrong password"
Scenario: Show an error message when the config file is empty
Given we use the config "empty_file.yaml"
When we run "jrnl -1"
Then the error output should contain "Unable to parse config file"
Scenario: Show an error message when using --config-file with empty file
Given the config "empty_file.yaml" exists
And we use the config "basic_onefile.yaml"
When we run "jrnl --cf empty_file.yaml"
Then the error output should contain "Unable to parse config file"

View file

View file

@ -101,7 +101,11 @@ def we_use_the_config(request, temp_dir, working_dir):
# @todo get rid of this by using default config values # @todo get rid of this by using default config values
# merge in version number # merge in version number
if config_file.endswith("yaml") and os.path.exists(config_dest): if (
config_file.endswith("yaml")
and os.path.exists(config_dest)
and os.path.getsize(config_dest) > 0
):
# Add jrnl version to file for 2.x journals # Add jrnl version to file for 2.x journals
with open(config_dest, "a") as cf: with open(config_dest, "a") as cf:
cf.write("version: {}".format(__version__)) cf.write("version: {}".format(__version__))