diff --git a/features/build.feature b/features/build.feature
index a7b03af4..4725ea85 100644
--- a/features/build.feature
+++ b/features/build.feature
@@ -2,7 +2,7 @@ Feature: Build process
@deployment_tests
Scenario: Version numbers should stay in sync
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --version"
Then we should get no error
And the output should contain pyproject.toml version
diff --git a/features/config.feature b/features/config.feature
deleted file mode 100644
index c1c7fcce..00000000
--- a/features/config.feature
+++ /dev/null
@@ -1,36 +0,0 @@
-Feature: Reading & writing the config file
-
- Scenario: Sending an argument with spaces to the editor should work
- Given we use the config "editor-args.yaml"
- When we open the editor and enter "lorem ipsum"
- Then the editor should have been called with 5 arguments
- And one editor argument should be "vim"
- And one editor argument should be "-f"
- And one editor argument should be "-c"
- And one editor argument should match "'?setf markdown'?"
-
- Scenario: Invalid color configuration
- Given we use the config "invalid_color.yaml"
- When we run "jrnl -on 2013-06-10 -s"
- Then the output should be
- """
- 2013-06-10 15:40 Life is good.
- """
- And we should get no error
- And the error output should contain
- """
- body set to invalid color
- """
-
- @todo
- Scenario: Missing values in config are given a default
-
- @todo
- Scenario: Journal-level config values override global-level config values
-
- @todo
- Scenario: Config with a lower version number updates to current version
-
- @todo
- Scenario: Nested config values are written to the config file
-
diff --git a/features/core.feature b/features/core.feature
index 941deefc..dc78a7a3 100644
--- a/features/core.feature
+++ b/features/core.feature
@@ -1,13 +1,13 @@
Feature: Functionality of jrnl outside of actually handling journals
Scenario: Displaying the version number
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --version"
Then we should get no error
Then the output should match "^jrnl version v\d+\.\d+\.\d+(-(alpha|beta))?$"
Scenario: Displaying the version number
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl -v"
Then we should get no error
Then the output should match "^jrnl version v\d+\.\d+\.\d+(-(alpha|beta))?$"
diff --git a/features/data/configs/basic_encrypted.yaml b/features/data/configs/basic_encrypted.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/features/data/configs/basic_folder.yaml b/features/data/configs/basic_folder.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/features/data/configs/basic_onefile.yaml b/features/data/configs/basic_onefile.yaml
new file mode 100644
index 00000000..422be860
--- /dev/null
+++ b/features/data/configs/basic_onefile.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_onefile.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/features/data/configs/basic.yaml b/features/data/configs/simple.yaml
similarity index 100%
rename from features/data/configs/basic.yaml
rename to features/data/configs/simple.yaml
diff --git a/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
new file mode 100644
index 00000000..e182716c
--- /dev/null
+++ b/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
@@ -0,0 +1,49 @@
+
+
+
+
+ Creation Date
+ 2020-08-29T18:11:00Z
+ Starred
+
+ Entry Text
+ Entry the first.
+Lorem @ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu
+consequat. Aenean ante ex, elementum ut interdum et, mattis eget lacus. In
+commodo nulla nec tellus placerat, sed ultricies metus bibendum. Duis eget
+venenatis erat. In at dolor dui. @tagone and maybe also @tagtwo.
+
+Curabitur accumsan nunc ac neque tristique, eleifend faucibus justo
+ullamcorper. Suspendisse at mattis nunc. Nullam eget lacinia urna. Suspendisse
+potenti. Ut urna est, venenatis sed ante in, ultrices congue mi. Maecenas eget
+molestie metus. Mauris porttitor dui ornare gravida porta. Quisque sed lectus
+hendrerit, lacinia ante eget, vulputate ante. Aliquam vitae erat non felis
+feugiat sagittis. Phasellus quis arcu fringilla, mattis ligula id, vestibulum
+urna. Vivamus facilisis leo a mi tincidunt condimentum. Donec eu euismod enim.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu ligula eget
+velit scelerisque fringilla. Phasellus pharetra justo et nulla fringilla, ac
+porta sapien accumsan. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos.
+ Time Zone
+ America/Los_Angeles
+ UUID
+ D04D335AFED711EABA18FAFFC2100C3D
+ Tags
+
+ Creator
+
+ Device Agent
+
+ Generation Date
+ 2020-09-25T02:35:45Z
+ Host Name
+ iris.lan
+ OS Agent
+ Darwin/19.3.0
+ Software Agent
+ jrnl/v2.4.5
+
+
+
diff --git a/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
new file mode 100644
index 00000000..9c2f0a54
--- /dev/null
+++ b/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
@@ -0,0 +1,53 @@
+
+
+
+
+ Creation Date
+ 2020-08-31T21:32:00Z
+ Starred
+
+ Entry Text
+ A second entry in what I hope to be a long series.
+Sed sit amet metus et sapien feugiat elementum. Aliquam bibendum lobortis leo
+vitae tempus. Donec eleifend nec mi non volutpat. Lorem ipsum dolor sit amet,
+consectetur adipiscing elit. Praesent ut sodales libero. Maecenas nisl lorem,
+vestibulum in tempus sit amet, fermentum ut arcu. Donec vel vestibulum lectus,
+eget pretium enim. Maecenas diam nunc, imperdiet vitae pharetra sed, pretium id
+lectus. Donec eu metus et turpis tempor tristique ac non ex. In tellus arcu,
+egestas at efficitur et, ultrices vel est. Sed commodo et nibh non elementum.
+Mauris tempus vitae neque vel viverra. @tagtwo all by its lonesome.
+
+Nulla mattis elementum magna, viverra pretium dui fermentum et. Cras vel
+vestibulum odio. Quisque sit amet turpis et urna finibus maximus. Interdum et
+malesuada fames ac ante ipsum primis in faucibus. Fusce porttitor iaculis sem,
+non dictum ipsum varius nec. Nulla eu erat at risus gravida blandit non vel
+ante. Nam egestas ipsum leo, eu ultricies ipsum tincidunt vel. Morbi a commodo
+eros.
+
+Nullam dictum, nisl ac varius tempus, ex tortor fermentum nisl, non
+tempus dolor neque a lorem. Suspendisse a faucibus ex, vel ornare tortor.
+Maecenas tincidunt id felis quis semper. Pellentesque enim libero, fermentum
+quis metus id, rhoncus euismod magna. Nulla finibus velit eu purus bibendum
+interdum. Integer id justo dui. Integer eu tellus in turpis bibendum blandit.
+Quisque auctor lacinia consectetur.
+ Time Zone
+ America/Los_Angeles
+ UUID
+ FC8A86CAFED711EA8892FAFFC2100C3D
+ Tags
+
+ Creator
+
+ Device Agent
+
+ Generation Date
+ 2020-09-25T02:36:59Z
+ Host Name
+ iris.lan
+ OS Agent
+ Darwin/19.3.0
+ Software Agent
+ jrnl/v2.4.5
+
+
+
diff --git a/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry
new file mode 100644
index 00000000..2480c71e
--- /dev/null
+++ b/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry
@@ -0,0 +1,41 @@
+
+
+
+
+ Creation Date
+ 2020-09-24T16:14:00Z
+ Starred
+
+ Entry Text
+ The third entry finally after weeks without writing.
+I'm so excited about emojis. 💯 🎶 💩
+
+Donec semper pellentesque iaculis. Nullam cursus et justo sit amet venenatis.
+Vivamus tempus ex dictum metus vehicula gravida. Aliquam sed sem dolor. Nulla
+eget ultrices purus. Quisque at nunc at quam pharetra consectetur vitae quis
+dolor. Fusce ultricies purus eu est feugiat, quis scelerisque nibh malesuada.
+Quisque egestas semper nibh in hendrerit. Nam finibus ex in mi mattis
+vulputate. Sed mauris urna, consectetur in justo eu, volutpat accumsan justo.
+Phasellus aliquam lacus placerat convallis vestibulum. Curabitur maximus at
+ante eget fringilla. @tagthree and also @tagone
+ Time Zone
+ America/Los_Angeles
+ UUID
+ FD8ABC8EFED711EABC35FAFFC2100C3D
+ Tags
+
+ Creator
+
+ Device Agent
+
+ Generation Date
+ 2020-09-25T02:37:01Z
+ Host Name
+ iris.lan
+ OS Agent
+ Darwin/19.3.0
+ Software Agent
+ jrnl/v2.4.5
+
+
+
diff --git a/features/data/journals/basic_encrypted.journal b/features/data/journals/basic_encrypted.journal
new file mode 100644
index 00000000..c1bc70f4
--- /dev/null
+++ b/features/data/journals/basic_encrypted.journal
@@ -0,0 +1 @@
+gAAAAABfbVS35o3E9LTX67HBLWu-gJiJI4t63YSime7LqohFOVS91k6uOBLqbZRtEZfBQ7mF9tmY_LB2BzX_x9ys05t1ePoKVr8X5MjWWkiz_4vlw6f58g5rlE0YMCCgGv_CW4awJdmrtnTqcXD8NJ5FwhPCT20KRrBGRRvFkmSROO_ziaLC8B2UTeZECkh8Pb_k6r2PvC7uf0DRXRyBXM9S6gLBnGklIo-1HjkGe45ih_VuRwP6IQV3zCQere5NIIx-O_oEFBYsBakOYm5lQjs8F1zQz8GlL7YtcCq2EbeiNoKKM-fleYmsa2FXML-U_5r3chFMYD5oOyb8VVVydCqDMhK8MrNltDj1exCD6Dl3Y9FnntsiVT6TEFCVZtGQT5XvbC4kBDQF6bgbxoAip0tmIliaKyXBSj1K6viC88nemyuMnoYZ0sOudc6iAg0jfWeh3fAu2Zg1-ridddbUdNK11-O6yTapWjjh2T6eFuAUcnQsfWEnTV2l1m2TwVoa801-IS87z69y7akiJfDztZMPFdziC0HYkRq9-5RUHtTIxgqyQR8u1biOdjHHZibsMnHFbTnAdAtXPmo9s55R0VQMf8hkVUmoecH8J9FbjfJTgmOyUlOPs0pjPBk4oMU9QGqV6rflFRi1CEEZNd-YHeHIEr8hh5GfznxTg9CuRxtw1mqa9438d4yNYb37ln_VgKs6G8QA8lMXxvCw_tUtbi7LhdmI3Sn7LfyfsWX1hJUlL-WNYzb882KD_QvjO9mSEkPjOKipPE7Pu2XvyNR8EBTrRGXUpEXOrxvTXmWKlJvo-f8hF80W5uuS5MXkqip-zS30_QRbE5yARG2BluAwax9bSFDnaaSR2P8J9rYE6c3wewLim93SOkTMPa95PSBBtLxBGqVWdUvuac3oqPO4-oPZS8zO5HTwRUrgR1fvf1-yylhHfYFbskQUz9GRKsKMOGh2Bne7f4aKDf9Qz8WtnYuAYhbhlwb88IbTtSlWPrv-yMCg7aIXhZRN1u_4FBWCjtY2QePVc0DjVnzQ-oL6sSIzvLIVoVaLQOMthkIQ6kBVvBiGaP8-BAkLCsVU8knhx-87xH4NYXp5hYEHSGPV5pIVC5__bY1WcbzO5yzfeo4CTeW5bKhjf5Hbr4dL7tvipYYgLgvnOG-iFpA3EKFNR0URw6bOvqJtbu-4EFqU--gY0oEDwv7T_gkhyXjd755Uq1L21UdSbbD3T6ldTv7UH8gnWYwA2uzPdibbRhvGmITFDLMNr0x5535lJuMeS1GQJUGe_4w_Z0eqj_S4DoynkeayCzZZeQFxKEKSqQGO2A2YxJaNN5o8o4QnTvHw6vCQWs2aH0Lkt2j_DBeetzKQD6C7kVQT_nVMK74Jm-Kg_CVblWQ_rbw5rrE9fUmRilfK6OJX2lBs9EAv1eVn_PxkXSPVqB0QjEYrFgpjnQ5uFt2zH3WHoUJ-TFr0FgjGKm3qwbl9e8uh1Rl1pud-LxYUaOIuzz_e1uwbVOcyzKgHxcVrTdAoI8TNgUqb3crUGPVAgusT-GKEpRNA8GQdIjcGXU6XkcDaBBzzflAlCIEf79iGANLYw2rwUN6XbQuAkcZH-Gf4p-oUa1WaclQP6YSIUVIz9dUoc6veCHM9DJyGwz6g5IhhsI_32AFv-E5sSVmb-BhCVHna5HwJoQOWAvcE2AL2v4rxx0Ipo1uY0hiDY2_oB9hiVOG0VW1jFCx8BEKqs35VBssl308I40TdHl1e8jDOnb308-C8SMqkryojhniOnVcOdY4i78pQKONZUXXeO2cKDWVmerzLNeBb_pSFWtjpPDGP0w_8fPQvH0ewzb7UNVRDEIOH6H2uZSXbeSwh6t7h_jULA0Q9iRvhtgdWCS_EnPr_N9D01XZ2Y8JjLDC5GMfZxk4nvetekHu3bcMMgeLt3DmQ4qfIKq9vsjg22hvdDvqYz6CgXmk7NrtKnrkPCYZ-GRnUl-Yu4psGupb14AggmnrB7raEH_3LtfQPFXOhcRaDdtayZZFdYIC7-BYn6p7v-NBA57fJZMY4e8vJG26WE1CS_iFFLfdW2l5OwDq1uOg9ugQuTiXXeCDHo1yjGMiyY-H9aaZKQecutdK8z4WVHI9ZZHexVhlXAOYNAA96yuCzizA0NtcugB7ohntgUIDW7Xm-b2lP84uAVT9hNPs7Gu5Lj_R-KScaBPIGEwtTxZRTber8acJNyIFqzHGG0E-rwOjCou-TsStMx0i9bJAmPu-LKPGfeWDTuxuDxgG4dWsxJSCUq4CKsF3V2CMf1qcrgRahIb17z2vOv5dXhH3SX_LhUDpalHVg5ZzLrH9KyQJeGeou6KLvXdPql1aCWIUlaNt3I5wg-UpB-VoA4UuvD0R5jui5trzUNiASlM6tJP2NhrHi1alzdxghn7AepRegCuIQfLbfD9D1zLUrbmsT2xDfZAwwTg0PVRtjS0PSHjZwvqJsKMX8v9HRUn5nfSEn_NKXzG-Yr89X_f7lsuWOajtv3FfCGt1E2ezVUejavpDcH0BM7j5OWnmSXfhAbgMJYRV6-7NUi2PlfUlpTjILO3znKvOQRjl498seHuW149KuoLjU_Ma3aFBRmx5n3mC40B2rvLPpq0dF3W9wRsFbcmECzUWoKQQxkkiyrGr-HDktWkDaISXpJ41smGB0N8zSlFThrZAXD12IGWB9PANTDW-UsnzdWjL6Kje8WHksTCFv84CLmuNuvU_ZdZG13oY5f_PgJqnXuyRYW4wCBsu9fqhIFIuC0aR6PjqxIJU8txoApfFtd_Q97sKaVPjFLtrTVfmI8NkH9Ha1ZwVdJ28JHDqXrsdzmSYmy7zzmekB2ix7-yLxgkutHFzmjjVNBeUxcgReZxrqG2Ur39cU1M2LjKmR7GURtAbYH5wSboq7_a8IRo6OH2pvGp5YqI4MvoSY0Yzv1XB6ojsFTDU1WPoenrb-ZMrPkBHYUVA6mr8v__SVLmlJD8b3KFbZJ1krVim9yJf6HsJcFvi7a-Jv4FPyc3NZU5MKQpnn0yzpXU3cBFYZcUiZtf9pzQ7VFr2UIg5OrJx0gpi8nzxLImT_wkj4QiBQ7CwD9i7BmzqLZeqQq0WA-khmDn_ezcpLMGtT2tWrV0U1125HiEfrkbhhbCAu9Fps3yw74xWkH3XnPZRmu_t_htB0iF2LbkrC1AfkhG8l0IfM9gBrE94Hl3cvTYaBr9tVc4TOIzrg7GPl9bJ-rUmohAb4T9bz73_9lhEvi4NxksQtNC061hK1xIbwbQaR6UvoUBz2-5kKYMvYYSPSbEwVbl6ngcUfhmbcZuq2gTQ84PsBJfXA6bfvMCiDFs_059_eoAQ-8AnVkjHj2wId-2SGXETF8ZDin3E4lNfsCB5TqzGJtSI9RPDuZtiUf5GxvBqzl5hVVbZ6rAEO78Ye8I3w-k2kUEqh0Ww3_EwuPbAxPP9-qoE3QIBqgvHj3BBw7Gm2-yiOnVPFQSwBpVcRIy-1J8vlabKJ7oUqgCjjOHbRpuoSsN34HrvCsonHBbqj0cP27jfUC-nIbcbzFR-UOpuOc78bRuznYhRVBcVmgQRlW6AxtrVU76QFI4jUGr6OYEfryIrj99XogH73mnp57d2gpgJSXdBN_TlXEAKIiJWmc_MW68X62AEtcaT2gFlcCDeLNMFn9mZcKXfP4wRzN2GHYemV-CLl4P64bc-93xMzH8hEJkwIyt4IgNgXU6XQE-z09CN1mSiGScmJ0ILQjG_nTivChe23i5KLKecsCjAaMoi770qiSlGCpAsoEokWQpIHnPd-r2YxxFLaH5K1Teu5CXTIA4yWrynsyIn1Au-1ueABwZxXR3s3g7QsFbjum1jJxGToUIRk5HaKbanfx-7aztqIQ9rRWPLJWM33p3hnooEGV41_VsYbsQ2GNO5my8qV_YnLQ6_WmhTyCbpTxHnXi0pf7oItGTnFBOJ1KL7gU7KarfcgyF6MjzJxC7tr9fLxhZjNgEP6QNqVCV6ocNRLs6DFNkhwoOzFh1dKOYV6vlSCXG_vfukawijfPYhtTKNJ3eM8kvDD0MhxJIUo29KkdsOV9HecmxaAo0TXQ_zjOwbw1OEG7IKiJGAvoWVp7sG6PxktC3aW_FKLcrYvmldHLYgQCSUuCiJtt0sA9NO-IhVpn-XS24lMSN0Q4VktAdpnvUVLDgI54iffivIUHvvvJHL6N69Da8A85D3L_IduGyr88YicA6nqSWEPL9GF3xWO-mWxaVaWTvNGRJSb_ZWFOf7XLMGaTEHeS5BAGxYimaUmlnhsfsO2TwBhf2zuEJFsxDrsu31q6C2joV9nga2XGCNzuMtEatJ9xJ4beL5DTsQ52OG3DGFs5BFF-eWnkmFLHClGvQgnC7kUVxApdoBMlvusespEuQ4VSadeXbG9YbMXzSaARg1UG_1wY7R3NaXeHbYlMcC1rQ1gLih8PaWH80WX0MAeTyUPrzexk_BtQSvyVH_dfyst8L-nisRQ78YoXJIjNmt93udk0r2oyoprhg_xHMpOt2_C2FYuJmoR9pnfOvcDdyGU1_qV7liA0mAQ60BXz94Gae5AvWOglcfooRwMLxjikyzqWwiEcVS9fPK_6lOSqM5EoBq-2QWMtcrNFD7x4knZVoLr7JXERo6kogDKK5xlFhgrUfsr3VRvSOBC-27v-U8yuM4N4nMt9ZEPAeT6T-okCIc2fEF6s-l8itNJMnYD3I2jd8w6FLT5i63H369v6YSg8aawhY_aFEhJKmCZ
diff --git a/features/data/journals/basic_folder/2020/08/29.txt b/features/data/journals/basic_folder/2020/08/29.txt
new file mode 100644
index 00000000..c8af54ca
--- /dev/null
+++ b/features/data/journals/basic_folder/2020/08/29.txt
@@ -0,0 +1,19 @@
+[2020-08-29 11:11:00 AM] Entry the first.
+Lorem @ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu
+consequat. Aenean ante ex, elementum ut interdum et, mattis eget lacus. In
+commodo nulla nec tellus placerat, sed ultricies metus bibendum. Duis eget
+venenatis erat. In at dolor dui. @tagone and maybe also @tagtwo.
+
+Curabitur accumsan nunc ac neque tristique, eleifend faucibus justo
+ullamcorper. Suspendisse at mattis nunc. Nullam eget lacinia urna. Suspendisse
+potenti. Ut urna est, venenatis sed ante in, ultrices congue mi. Maecenas eget
+molestie metus. Mauris porttitor dui ornare gravida porta. Quisque sed lectus
+hendrerit, lacinia ante eget, vulputate ante. Aliquam vitae erat non felis
+feugiat sagittis. Phasellus quis arcu fringilla, mattis ligula id, vestibulum
+urna. Vivamus facilisis leo a mi tincidunt condimentum. Donec eu euismod enim.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu ligula eget
+velit scelerisque fringilla. Phasellus pharetra justo et nulla fringilla, ac
+porta sapien accumsan. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos.
diff --git a/features/data/journals/basic_folder/2020/08/31.txt b/features/data/journals/basic_folder/2020/08/31.txt
new file mode 100644
index 00000000..46cc28b6
--- /dev/null
+++ b/features/data/journals/basic_folder/2020/08/31.txt
@@ -0,0 +1,23 @@
+[2020-08-31 02:32:00 PM] A second entry in what I hope to be a long series.
+Sed sit amet metus et sapien feugiat elementum. Aliquam bibendum lobortis leo
+vitae tempus. Donec eleifend nec mi non volutpat. Lorem ipsum dolor sit amet,
+consectetur adipiscing elit. Praesent ut sodales libero. Maecenas nisl lorem,
+vestibulum in tempus sit amet, fermentum ut arcu. Donec vel vestibulum lectus,
+eget pretium enim. Maecenas diam nunc, imperdiet vitae pharetra sed, pretium id
+lectus. Donec eu metus et turpis tempor tristique ac non ex. In tellus arcu,
+egestas at efficitur et, ultrices vel est. Sed commodo et nibh non elementum.
+Mauris tempus vitae neque vel viverra. @tagtwo all by its lonesome.
+
+Nulla mattis elementum magna, viverra pretium dui fermentum et. Cras vel
+vestibulum odio. Quisque sit amet turpis et urna finibus maximus. Interdum et
+malesuada fames ac ante ipsum primis in faucibus. Fusce porttitor iaculis sem,
+non dictum ipsum varius nec. Nulla eu erat at risus gravida blandit non vel
+ante. Nam egestas ipsum leo, eu ultricies ipsum tincidunt vel. Morbi a commodo
+eros.
+
+Nullam dictum, nisl ac varius tempus, ex tortor fermentum nisl, non
+tempus dolor neque a lorem. Suspendisse a faucibus ex, vel ornare tortor.
+Maecenas tincidunt id felis quis semper. Pellentesque enim libero, fermentum
+quis metus id, rhoncus euismod magna. Nulla finibus velit eu purus bibendum
+interdum. Integer id justo dui. Integer eu tellus in turpis bibendum blandit.
+Quisque auctor lacinia consectetur.
diff --git a/features/data/journals/basic_folder/2020/09/24.txt b/features/data/journals/basic_folder/2020/09/24.txt
new file mode 100644
index 00000000..2bd885ce
--- /dev/null
+++ b/features/data/journals/basic_folder/2020/09/24.txt
@@ -0,0 +1,11 @@
+[2020-09-24 09:14:00 AM] The third entry finally after weeks without writing.
+I'm so excited about emojis. 💯 🎶 💩
+
+Donec semper pellentesque iaculis. Nullam cursus et justo sit amet venenatis.
+Vivamus tempus ex dictum metus vehicula gravida. Aliquam sed sem dolor. Nulla
+eget ultrices purus. Quisque at nunc at quam pharetra consectetur vitae quis
+dolor. Fusce ultricies purus eu est feugiat, quis scelerisque nibh malesuada.
+Quisque egestas semper nibh in hendrerit. Nam finibus ex in mi mattis
+vulputate. Sed mauris urna, consectetur in justo eu, volutpat accumsan justo.
+Phasellus aliquam lacus placerat convallis vestibulum. Curabitur maximus at
+ante eget fringilla. @tagthree and also @tagone
diff --git a/features/data/journals/basic_onefile.journal b/features/data/journals/basic_onefile.journal
new file mode 100644
index 00000000..916f7d88
--- /dev/null
+++ b/features/data/journals/basic_onefile.journal
@@ -0,0 +1,58 @@
+[2020-08-29 11:11] Entry the first.
+
+Lorem @ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu
+consequat. Aenean ante ex, elementum ut interdum et, mattis eget lacus. In
+commodo nulla nec tellus placerat, sed ultricies metus bibendum. Duis eget
+venenatis erat. In at dolor dui. @tagone and maybe also @tagtwo.
+
+Curabitur accumsan nunc ac neque tristique, eleifend faucibus justo
+ullamcorper. Suspendisse at mattis nunc. Nullam eget lacinia urna. Suspendisse
+potenti. Ut urna est, venenatis sed ante in, ultrices congue mi. Maecenas eget
+molestie metus. Mauris porttitor dui ornare gravida porta. Quisque sed lectus
+hendrerit, lacinia ante eget, vulputate ante. Aliquam vitae erat non felis
+feugiat sagittis. Phasellus quis arcu fringilla, mattis ligula id, vestibulum
+urna. Vivamus facilisis leo a mi tincidunt condimentum. Donec eu euismod enim.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu ligula eget
+velit scelerisque fringilla. Phasellus pharetra justo et nulla fringilla, ac
+porta sapien accumsan. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos.
+
+[2020-08-31 14:32] A second entry in what I hope to be a long series.
+
+Sed sit amet metus et sapien feugiat elementum. Aliquam bibendum lobortis leo
+vitae tempus. Donec eleifend nec mi non volutpat. Lorem ipsum dolor sit amet,
+consectetur adipiscing elit. Praesent ut sodales libero. Maecenas nisl lorem,
+vestibulum in tempus sit amet, fermentum ut arcu. Donec vel vestibulum lectus,
+eget pretium enim. Maecenas diam nunc, imperdiet vitae pharetra sed, pretium id
+lectus. Donec eu metus et turpis tempor tristique ac non ex. In tellus arcu,
+egestas at efficitur et, ultrices vel est. Sed commodo et nibh non elementum.
+Mauris tempus vitae neque vel viverra. @tagtwo all by its lonesome.
+
+Nulla mattis elementum magna, viverra pretium dui fermentum et. Cras vel
+vestibulum odio. Quisque sit amet turpis et urna finibus maximus. Interdum et
+malesuada fames ac ante ipsum primis in faucibus. Fusce porttitor iaculis sem,
+non dictum ipsum varius nec. Nulla eu erat at risus gravida blandit non vel
+ante. Nam egestas ipsum leo, eu ultricies ipsum tincidunt vel. Morbi a commodo
+eros.
+
+Nullam dictum, nisl ac varius tempus, ex tortor fermentum nisl, non
+tempus dolor neque a lorem. Suspendisse a faucibus ex, vel ornare tortor.
+Maecenas tincidunt id felis quis semper. Pellentesque enim libero, fermentum
+quis metus id, rhoncus euismod magna. Nulla finibus velit eu purus bibendum
+interdum. Integer id justo dui. Integer eu tellus in turpis bibendum blandit.
+Quisque auctor lacinia consectetur.
+
+[2020-09-24 09:14] The third entry finally after weeks without writing.
+
+I'm so excited about emojis. 💯 🎶 💩
+
+Donec semper pellentesque iaculis. Nullam cursus et justo sit amet venenatis.
+Vivamus tempus ex dictum metus vehicula gravida. Aliquam sed sem dolor. Nulla
+eget ultrices purus. Quisque at nunc at quam pharetra consectetur vitae quis
+dolor. Fusce ultricies purus eu est feugiat, quis scelerisque nibh malesuada.
+Quisque egestas semper nibh in hendrerit. Nam finibus ex in mi mattis
+vulputate. Sed mauris urna, consectetur in justo eu, volutpat accumsan justo.
+Phasellus aliquam lacus placerat convallis vestibulum. Curabitur maximus at
+ante eget fringilla. @tagthree and also @tagone
diff --git a/features/datetime.feature b/features/datetime.feature
index f28eac8c..80c26098 100644
--- a/features/datetime.feature
+++ b/features/datetime.feature
@@ -2,14 +2,14 @@ Feature: Reading and writing to journal with custom date formats
Scenario: Dates can include a time
# https://github.com/jrnl-org/jrnl/issues/117
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl 2013-11-30 15:42: Project Started."
Then we should see the message "Entry added"
And the journal should contain "[2013-11-30 15:42] Project Started."
Scenario: Dates can be in the future
# https://github.com/jrnl-org/jrnl/issues/185
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl 26/06/2099: Planet? Earth. Year? 2099."
Then we should see the message "Entry added"
And the journal should contain "[2099-06-26 09:00] Planet?"
@@ -70,13 +70,13 @@ Feature: Reading and writing to journal with custom date formats
Scenario: Viewing today's entries does not print the entire journal
# https://github.com/jrnl-org/jrnl/issues/741
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl -on today"
Then the output should not contain "Life is good"
And the output should not contain "But I'm better."
Scenario Outline: Create entry using day of the week as entry date.
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl : This is an entry on a ."
Then we should see the message "Entry added"
When we run "jrnl -1"
@@ -96,7 +96,7 @@ Feature: Reading and writing to journal with custom date formats
| sUndAy |
Scenario Outline: Create entry using day of the week abbreviations as entry date.
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl : This is an entry on a ."
Then we should see the message "Entry added"
When we run "jrnl -1"
diff --git a/features/delete.feature b/features/delete.feature
index 32bcfb36..d39fb131 100644
--- a/features/delete.feature
+++ b/features/delete.feature
@@ -1,6 +1,6 @@
Feature: Delete entries from journal
- Scenario: --delete flag allows deletion of single entry
- Given we use the config "deletion.yaml"
+ Scenario Outline: Delete flag allows deletion of single entry
+ Given we use the config ".yaml"
Then the journal should have 3 entries
When we run "jrnl -n 1"
Then the output should contain "2019-10-29 11:13 Third entry."
@@ -14,6 +14,12 @@ Feature: Delete entries from journal
When we run "jrnl -n 1"
Then the output should contain "2019-10-29 11:11 Second entry."
+ Examples: Configs
+ | config |
+ | deletion |
+ | empty_folder |
+ | dayone_empty |
+
Scenario: Backing out of interactive delete does not change journal
Given we use the config "deletion.yaml"
Then the journal should have 3 entries
@@ -26,7 +32,7 @@ Feature: Delete entries from journal
And the journal should contain "[2019-10-29 11:11] Second entry."
And the journal should contain "[2019-10-29 11:13] Third entry."
- Scenario: --delete flag with nonsense input deletes nothing (issue #932)
+ Scenario: Delete flag with nonsense input deletes nothing (issue #932)
Given we use the config "deletion.yaml"
Then the journal should have 3 entries
When we run "jrnl --delete asdfasdf"
@@ -34,7 +40,7 @@ Feature: Delete entries from journal
When we run "jrnl -n 1"
Then the output should contain "2019-10-29 11:13 Third entry."
- Scenario: --delete flag with tag only deletes tagged entries
+ Scenario: Delete flag with tag only deletes tagged entries
Given we use the config "deletion_filters.yaml"
Then the journal should have 5 entries
When we run "jrnl --delete @holidays" and enter
@@ -47,7 +53,7 @@ Feature: Delete entries from journal
And the journal should contain "[2020-03-01 08:00] It's just another day in March."
And the journal should contain "[2020-05-02 12:10] Writing tests."
- Scenario: --delete flag with multiple tags deletes all entries matching any of the tags
+ Scenario: Delete flag with multiple tags deletes all entries matching any of the tags
Given we use the config "deletion_filters.yaml"
Then the journal should have 5 entries
When we run "jrnl --delete @holidays @springtime" and enter
@@ -63,7 +69,7 @@ Feature: Delete entries from journal
But the journal should not contain "[2020-05-01 09:00] Happy May Day!"
But the journal should not contain "[2020-05-02 12:10] Writing tests. *"
- Scenario: --delete flag with -and and tags only deletes boolean AND of tagged entries
+ Scenario: Delete flag with -and deletes boolean AND of tagged entries
Given we use the config "deletion_filters.yaml"
Then the journal should have 5 entries
When we run "jrnl --delete -and @holidays @springtime" and enter
@@ -77,7 +83,7 @@ Feature: Delete entries from journal
And the journal should contain "[2020-05-02 12:10] Writing tests. *"
But the journal should not contain "[2020-05-01 09:00] Happy May Day!"
- Scenario: --delete flag with -not does not delete entries with -not tag
+ Scenario: Delete flag with -not does not delete entries from given tag
Given we use the config "deletion_filters.yaml"
Then the journal should have 5 entries
When we run "jrnl --delete @holidays -not @springtime" and enter
@@ -91,7 +97,7 @@ Feature: Delete entries from journal
And the journal should contain "[2020-05-02 12:10] Writing tests. *"
But the journal should not contain "[2020-01-01 08:00] Happy New Year!"
- Scenario: --delete flag with -from only deletes entries since a specified date
+ Scenario: Delete flag with -from search operator only deletes entries since that date
Given we use the config "deletion_filters.yaml"
Then the journal should have 5 entries
When we run "jrnl --delete -from 2020-01-02" and enter
@@ -107,7 +113,7 @@ Feature: Delete entries from journal
And the journal should not contain "[2020-05-01 09:00] Happy May Day!"
And the journal should not contain "[2020-05-02 12:10] Writing tests."
- Scenario: --delete flag with -to only deletes entries up to specified date
+ Scenario: Delete flag with -to only deletes entries up to specified date
Given we use the config "deletion_filters.yaml"
Then the journal should have 5 entries
When we run "jrnl --delete -to 2020-01-02" and enter
@@ -122,7 +128,7 @@ Feature: Delete entries from journal
But the journal should not contain "[2019-10-01 08:00] It's just another day in October."
But the journal should not contain "[2020-01-01 08:00] Happy New Year!"
- Scenario: --delete flag with -starred only deletes starred entries
+ Scenario: Delete flag with -starred only deletes starred entries
Given we use the config "deletion_filters.yaml"
Then the journal should have 5 entries
When we run "jrnl --delete -starred" and enter
@@ -136,7 +142,7 @@ Feature: Delete entries from journal
And the journal should contain "[2020-05-01 09:00] Happy May Day!"
But the journal should not contain "[2020-05-02 12:10] Writing tests. *"
- Scenario: --delete flag with -contains only entries containing expression
+ Scenario: Delete flag with -contains only entries containing expression
Given we use the config "deletion_filters.yaml"
Then the journal should have 5 entries
When we run "jrnl --delete -contains happy" and enter
diff --git a/features/encrypt.feature b/features/encrypt.feature
index fc25661a..f736ae4c 100644
--- a/features/encrypt.feature
+++ b/features/encrypt.feature
@@ -10,7 +10,7 @@ Feature: Encrypting and decrypting journals
@todo
Scenario: Trying to decrypt an already unencrypted journal
# This should warn the user that the journal is already encrypted
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --decrypt"
Then the config for journal "default" should have "encrypt" set to "bool:False"
And the journal should have 2 entries
@@ -20,7 +20,7 @@ Feature: Encrypting and decrypting journals
# This should warn the user that the journal is already encrypted
Scenario: Encrypting a journal
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --encrypt" and enter
"""
swordfish
diff --git a/features/environment.py b/features/environment.py
index 8e21c4c9..ae3fb546 100644
--- a/features/environment.py
+++ b/features/environment.py
@@ -8,19 +8,23 @@ CWD = os.getcwd()
# @see https://behave.readthedocs.io/en/latest/tutorial.html#debug-on-error-in-case-of-step-failures
BEHAVE_DEBUG_ON_ERROR = False
+
def setup_debug_on_error(userdata):
global BEHAVE_DEBUG_ON_ERROR
BEHAVE_DEBUG_ON_ERROR = userdata.getbool("BEHAVE_DEBUG_ON_ERROR")
+
def before_all(context):
setup_debug_on_error(context.config.userdata)
+
# def after_step(context, step):
- # if BEHAVE_DEBUG_ON_ERROR and step.status == "failed":
- # -- ENTER DEBUGGER: Zoom in on failure location.
- # NOTE: Use IPython debugger, same for pdb (basic python debugger).
- # import ipdb
- # ipdb.post_mortem(step.exc_traceback)
+# if BEHAVE_DEBUG_ON_ERROR and step.status == "failed":
+# -- ENTER DEBUGGER: Zoom in on failure location.
+# NOTE: Use IPython debugger, same for pdb (basic python debugger).
+# import ipdb
+# ipdb.post_mortem(step.exc_traceback)
+
def clean_all_working_dirs():
if os.path.exists("test.txt"):
@@ -78,4 +82,3 @@ def after_scenario(context, scenario):
# only clean up if debugging is off and the scenario passed
if not BEHAVE_DEBUG_ON_ERROR and scenario.status != "failed":
clean_all_working_dirs()
-
diff --git a/features/format.feature b/features/format.feature
index c0757d2d..d5189aad 100644
--- a/features/format.feature
+++ b/features/format.feature
@@ -22,7 +22,7 @@ Feature: Custom formats
And "tags" in the json output should not contain "@dan"
Scenario: Exporting using custom templates
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
And we load template "sample.template"
When we run "jrnl --export sample"
Then the output should be
@@ -220,12 +220,12 @@ Feature: Custom formats
Then we should get no error
Scenario: --short displays the short version of entries (only the title)
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl -on 2013-06-10 --short"
Then the output should be "2013-06-10 15:40 Life is good."
Scenario: -s displays the short version of entries (only the title)
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl -on 2013-06-10 -s"
Then the output should be "2013-06-10 15:40 Life is good."
diff --git a/features/import.feature b/features/import.feature
index f05ca98a..e874304b 100644
--- a/features/import.feature
+++ b/features/import.feature
@@ -1,14 +1,14 @@
Feature: Importing data
Scenario: --import allows new entry from stdin
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --import" and pipe "[2020-07-05 15:00] Observe and import."
And we run "jrnl -1"
Then the journal should contain "[2020-07-05 15:00] Observe and import."
And the output should contain "Observe and import"
Scenario: --import allows new large entry from stdin
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --import" and pipe
"""
[2020-07-05 15:00] Observe and import.
@@ -26,7 +26,7 @@ Feature: Importing data
And the output should contain "end of entry."
Scenario: --import allows multiple new entries from stdin
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --import" and pipe
"""
[2020-07-05 15:00] Observe and import.
@@ -39,7 +39,7 @@ Feature: Importing data
Then the journal should contain "[2020-07-05 15:01] Twice as nice."
Scenario: --import allows import new entries from file
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
Then the journal should contain "My first entry."
And the journal should contain "Life is good."
But the journal should not contain "I have an @idea"
@@ -50,7 +50,7 @@ Feature: Importing data
And the journal should contain "PROFIT!"
Scenario: --import prioritizes --file over pipe data if both are given
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
Then the journal should contain "My first entry."
And the journal should contain "Life is good."
But the journal should not contain "I have an @idea"
diff --git a/features/password.feature b/features/password.feature
index e182c499..ead0f6fe 100644
--- a/features/password.feature
+++ b/features/password.feature
@@ -15,7 +15,7 @@ Feature: Using the installed keyring
But the output should not contain "Password"
Scenario: Encrypt journal with no keyring backend and do not store in keyring
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
And we do not have a keyring
When we run "jrnl test entry"
And we run "jrnl --encrypt" and enter
@@ -27,7 +27,7 @@ Feature: Using the installed keyring
Then we should get no error
Scenario: Encrypt journal with no keyring backend and do store in keyring
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
And we do not have a keyring
When we run "jrnl test entry"
And we run "jrnl --encrypt" and enter
@@ -53,7 +53,7 @@ Feature: Using the installed keyring
And the output should contain "2013-06-10 15:40 Life is good"
Scenario: Mistyping your password
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --encrypt" and enter
"""
swordfish
@@ -65,7 +65,7 @@ Feature: Using the installed keyring
And the journal should have 2 entries
Scenario: Mistyping your password, then getting it right
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl --encrypt" and enter
"""
swordfish
diff --git a/features/search.feature b/features/search.feature
index 85ef3278..d0e1946b 100644
--- a/features/search.feature
+++ b/features/search.feature
@@ -1,7 +1,7 @@
Feature: Searching in a journal
Scenario: Displaying entries using -on today should display entries created today.
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl today: Adding an entry right now."
Then we should see the message "Entry added"
When we run "jrnl -on today"
@@ -10,7 +10,7 @@ Feature: Searching in a journal
And the output should not contain "Life is good"
Scenario: Displaying entries using -from day should display correct entries
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl yesterday: This thing happened yesterday"
Then we should see the message "Entry added"
When we run "jrnl today at 11:59pm: Adding an entry right now."
@@ -23,7 +23,7 @@ Feature: Searching in a journal
And the output should not contain "This thing happened yesterday"
Scenario: Displaying entries using -from and -to day should display correct entries
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl yesterday: This thing happened yesterday"
Then we should see the message "Entry added"
When we run "jrnl today at 11:59pm: Adding an entry right now."
@@ -36,7 +36,7 @@ Feature: Searching in a journal
And the output should not contain "A future entry."
Scenario: Searching for a string
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl -contains life"
Then we should get no error
And the output should be
@@ -64,7 +64,7 @@ Feature: Searching in a journal
And the output should contain "software"
Scenario: Searching for dates
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl -on 2013-06-10 --short"
Then the output should be "2013-06-10 15:40 Life is good."
When we run "jrnl -on 'june 6 2013' --short"
@@ -93,7 +93,7 @@ Feature: Searching in a journal
Then the output should contain "2013-05-17 11:39 This entry has tags!"
Scenario: Loading a sample journal
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl -2"
Then we should get no error
And the output should be
diff --git a/features/tag.feature b/features/tag.feature
index 8cff30be..28bd639d 100644
--- a/features/tag.feature
+++ b/features/tag.feature
@@ -43,7 +43,7 @@ Feature: Tagging
"""
Scenario: Entry cans start and end with tags
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl today: @foo came over, we went to a @bar"
When we run "jrnl --tags"
Then the output should be
@@ -53,7 +53,7 @@ Feature: Tagging
"""
Scenario: Excluding a tag should filter it
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl today: @foo came over, we went to a bar"
When we run "jrnl I have decided I did not enjoy that @bar"
When we run "jrnl --tags -not @bar"
@@ -63,7 +63,7 @@ Feature: Tagging
"""
Scenario: Excluding a tag should filter an entry, even if an unfiltered tag is in that entry
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl today: I do @not think this will show up @thought"
When we run "jrnl today: I think this will show up @thought"
When we run "jrnl --tags -not @not"
@@ -73,7 +73,7 @@ Feature: Tagging
"""
Scenario: Excluding multiple tags should filter them
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl today: I do @not think this will show up @thought"
And we run "jrnl today: I think this will show up @thought"
And we run "jrnl today: This should @never show up @thought"