From 2a3fd820b98407bab3e3b7d9c6fa0b87e6625097 Mon Sep 17 00:00:00 2001 From: eshrh Date: Sat, 13 Jun 2020 14:08:22 -0400 Subject: [PATCH] Create journal with absolute path when no path is specified (#972) * create jrnl with abspath Co-authored-by: = --- features/core.feature | 11 +++++++++++ features/environment.py | 5 ++++- features/steps/core.py | 5 +++++ jrnl/install.py | 2 +- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/features/core.feature b/features/core.feature index ab61eb87..f9b335e6 100644 --- a/features/core.feature +++ b/features/core.feature @@ -119,3 +119,14 @@ Feature: Basic reading and writing to a journal When we run "jrnl Life is good" and we run "jrnl -n 1" Then the output should contain "Life is good" + + Scenario: Installation with relative journal and referencing from another folder + Given we use the config "missingconfig" + When we run "jrnl hello world" and enter + """ + test.txt + n + """ + and we change directory to "features" + and we run "jrnl -n 1" + Then the output should contain "hello world" diff --git a/features/environment.py b/features/environment.py index 0032cf13..bc4a8dcb 100644 --- a/features/environment.py +++ b/features/environment.py @@ -2,6 +2,8 @@ import os import shutil import sys +CWD = os.getcwd() + def clean_all_working_dirs(): for folder in ("configs", "journals", "cache"): @@ -26,7 +28,6 @@ def before_scenario(context, scenario): """Before each scenario, backup all config and journal test data.""" # Clean up in case something went wrong clean_all_working_dirs() - for folder in ("configs", "journals"): original = os.path.join("features", "data", folder) working_dir = os.path.join("features", folder) @@ -52,4 +53,6 @@ def before_scenario(context, scenario): def after_scenario(context, scenario): """After each scenario, restore all test data and remove working_dirs.""" + if os.getcwd() != CWD: + os.chdir(CWD) clean_all_working_dirs() diff --git a/features/steps/core.py b/features/steps/core.py index 3befe4bd..13b11bd2 100644 --- a/features/steps/core.py +++ b/features/steps/core.py @@ -96,6 +96,11 @@ def set_config(context, config_file): cf.write("version: {}".format(__version__)) +@when('we change directory to "{path}"') +def move_up_dir(context, path): + os.chdir(path) + + @when('we open the editor and enter "{text}"') @when("we open the editor and enter nothing") def open_editor_and_enter(context, text=""): diff --git a/jrnl/install.py b/jrnl/install.py index 58c8cf01..78745161 100644 --- a/jrnl/install.py +++ b/jrnl/install.py @@ -135,7 +135,7 @@ def install(): # Where to create the journal? path_query = f"Path to your journal file (leave blank for {JOURNAL_FILE_PATH}): " - journal_path = input(path_query).strip() or JOURNAL_FILE_PATH + journal_path = os.path.abspath(input(path_query).strip() or JOURNAL_FILE_PATH) default_config["journals"][DEFAULT_JOURNAL_KEY] = os.path.expanduser( os.path.expandvars(journal_path) )