diff --git a/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
index e182716c..9721dd55 100644
--- a/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
+++ b/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
@@ -31,7 +31,11 @@ conubia nostra, per inceptos himenaeos.
UUID
D04D335AFED711EABA18FAFFC2100C3D
Tags
-
+
+ ipsum
+ tagone
+ tagtwo
+
Creator
Device Agent
diff --git a/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
index 9c2f0a54..8c2f3c52 100644
--- a/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
+++ b/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
@@ -35,7 +35,9 @@ Quisque auctor lacinia consectetur.
UUID
FC8A86CAFED711EA8892FAFFC2100C3D
Tags
-
+
+ tagtwo
+
Creator
Device Agent
diff --git a/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry
index 6eb2a2cc..d998c36b 100644
--- a/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry
+++ b/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry
@@ -23,7 +23,10 @@ ante eget fringilla. @tagthree and also @tagone
UUID
FD8ABC8EFED711EABC35FAFFC2100C3D
Tags
-
+
+ tagthree
+ tagone
+
Creator
Device Agent
diff --git a/features/format.feature b/features/format.feature
index d5189aad..b1d1ce78 100644
--- a/features/format.feature
+++ b/features/format.feature
@@ -12,6 +12,40 @@ Feature: Custom formats
And entry 1 should have an array "tags" with 2 elements
And entry 2 should have an array "tags" with 2 elements
+ Scenario Outline: Printing a journal that has multiline entries with tags
+ Given we use the config ".yaml"
+ When we run "jrnl -n 1 @ipsum"
+ Then we should get no error
+ And the output should be
+ """
+ 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.
+ """
+
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |
+
Scenario: Exporting using filters should only export parts of the journal
Given we use the config "tags.yaml"
When we run "jrnl -until 'may 2013' --export json"
diff --git a/features/search.feature b/features/search.feature
index b3f7d1e3..0c8e1cd5 100644
--- a/features/search.feature
+++ b/features/search.feature
@@ -68,7 +68,6 @@ Feature: Searching in a journal
| basic_folder |
| basic_dayone |
- @todo # Day One tag search is broken
Scenario Outline: Searching for a string within tag results
Given we use the config ".yaml"
When we run "jrnl @tagone -contains maybe"
@@ -79,9 +78,8 @@ Feature: Searching in a journal
| config |
| basic_onefile |
| basic_folder |
- #| basic_dayone |
+ | basic_dayone |
- @todo # Day One tag search is broken
Scenario Outline: Searching for a string within AND tag results
Given we use the config ".yaml"
When we run "jrnl -and @tagone @tagtwo -contains maybe"
@@ -92,9 +90,8 @@ Feature: Searching in a journal
| config |
| basic_onefile |
| basic_folder |
- #| basic_dayone |
+ | basic_dayone |
- @todo # Day One tag search is broken
Scenario Outline: Searching for a string within NOT tag results
Given we use the config ".yaml"
When we run "jrnl -not @tagone -contains lonesome"
@@ -105,7 +102,7 @@ Feature: Searching in a journal
| config |
| basic_onefile |
| basic_folder |
- #| basic_dayone |
+ | basic_dayone |
Scenario Outline: Searching for dates
Given we use the config ".yaml"
@@ -119,7 +116,7 @@ Feature: Searching in a journal
| config |
| basic_onefile |
| basic_folder |
- #| basic_dayone |
+ | basic_dayone |
Scenario: Out of order entries to a Folder journal should be listed in date order
Given we use the config "empty_folder.yaml"
@@ -135,8 +132,69 @@ Feature: Searching in a journal
2014-03-07 16:37 Second entry of journal.
"""
- # fails when system time is UTC (as on Travis-CI)
- @skip
+ Scenario Outline: Searching for all tags should show counts of each tag
+ Given we use the config ".yaml"
+ When we run "jrnl --tags"
+ Then we should get no error
+ And the output should be
+ """
+ @tagtwo : 2
+ @tagone : 2
+ @tagthree : 1
+ @ipsum : 1
+ """
+
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |
+
+ Scenario Outline: Filtering journals should also filter tags
+ Given we use the config ".yaml"
+ When we run "jrnl -from 'september 2020' --tags"
+ Then we should get no error
+ And the output should be
+ """
+ @tagthree : 1
+ @tagone : 1
+ """
+
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |
+
+ Scenario Outline: Excluding a tag should filter out all entries with that tag
+ Given we use the config ".yaml"
+ When we run "jrnl --tags -not @tagtwo"
+ Then the output should be
+ """
+ @tagthree : 1
+ @tagone : 1
+ """
+
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |
+
+ Scenario Outline: Excluding multiple tags should filter out all entries with those tags
+ Given we use the config ".yaml"
+ When we run "jrnl --tags -not @tagone -not @tagthree"
+ Then the output should be
+ """
+ @tagtwo : 1
+ """
+
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |
+
Scenario: DayOne tag searching should work with tags containing a mixture of upper and lower case.
# https://github.com/jrnl-org/jrnl/issues/354
Given we use the config "dayone.yaml"
diff --git a/features/tag.feature b/features/tag.feature
index 28bd639d..8c1fff4e 100644
--- a/features/tag.feature
+++ b/features/tag.feature
@@ -1,29 +1,11 @@
Feature: Tagging
+# See search.feature for tag-related searches
+# And format.feature for tag-related output
- Scenario: Displaying tags
- Given we use the config "tags.yaml"
- When we run "jrnl --tags"
- Then we should get no error
- And the output should be
- """
- @idea : 2
- @journal : 1
- @dan : 1
- """
-
- Scenario: Filtering journals should also filter tags
- Given we use the config "tags.yaml"
- When we run "jrnl -from 'may 2013' --tags"
- Then we should get no error
- And the output should be
- """
- @idea : 1
- @dan : 1
- """
-
- Scenario: Tags should allow certain special characters
- Given we use the config "tags-216.yaml"
- When we run "jrnl --tags"
+ Scenario Outline: Tags should allow certain special characters such as /, +, #
+ Given we use the config ".yaml"
+ When we run "jrnl 2020-09-26: This is an entry about @os/2 and @c++ and @c#"
+ When we run "jrnl --tags -on 2020-09-26"
Then we should get no error
And the output should be
"""
@@ -32,114 +14,56 @@ Feature: Tagging
@c# : 1
"""
- Scenario: An email should not be a tag
- Given we use the config "tags-237.yaml"
- When we run "jrnl --tags"
- Then we should get no error
- And the output should be
- """
- @newline : 1
- @email : 1
- """
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |
- Scenario: Entry cans start and end with tags
- 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"
+ Scenario Outline: Emails addresses should not be parsed as tags
+ Given we use the config ".yaml"
+ When we run "jrnl 2020-09-26: The email address test@example.com doesn't seem to work for me"
+ When we run "jrnl 2020-09-26: The email address test@example.org also doesn't work for me"
+ When we run "jrnl 2020-09-26: I tried test@example.org and test@example.edu too"
+ Then we flush the output
+ When we run "jrnl --tags -on 2020-09-26"
+ Then we should get no error
+ And the output should be "[No tags found in journal.]"
+
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |
+
+ Scenario Outline: Emails addresses should not be parsed as tags
+ Given we use the config ".yaml"
+ When we run "jrnl 2020-09-26: The email address test@example.com doesn't seem to work for me"
+ When we run "jrnl 2020-09-26: The email address test@example.org also doesn't work for me"
+ When we run "jrnl 2020-09-26: I tried test@example.org and test@example.edu too"
+ Then we flush the output
+ When we run "jrnl --tags -on 2020-09-26"
+ Then we should get no error
+ And the output should be "[No tags found in journal.]"
+
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |
+
+ Scenario Outline: Entry can start and end with tags
+ Given we use the config ".yaml"
+ When we run "jrnl 2020-09-26: @foo came over, we went to a @bar"
+ When we run "jrnl --tags -on 2020-09-26"
Then the output should be
"""
@foo : 1
@bar : 1
"""
- Scenario: Excluding a tag should filter it
- 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"
- Then the output should be
- """
- @foo : 1
- """
-
- Scenario: Excluding a tag should filter an entry, even if an unfiltered tag is in that entry
- 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"
- Then the output should be
- """
- @thought : 1
- """
-
- Scenario: Excluding multiple tags should filter them
- 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"
- And we run "jrnl today: What a nice day for filtering @thought"
- And we run "jrnl --tags -not @not -not @never"
- Then the output should be
- """
- @thought : 2
- """
-
- Scenario: Printing a journal that has multiline entries with tags
- Given we use the config "multiline-tags.yaml"
- When we run "jrnl -n 1"
- Then we should get no error
- And the output should be
- """
- 2013-06-09 15:39 Multiple @line entry with @tags.
- | Tag with @punctuation. afterwards
- | @TagOnLineAloneWithOutPunctuation
- | @TagOnLineAloneWithPunctuation.
- | Text before @tag. And After.
- | @hi. Hello
- | hi Hello
- """
-
- Scenario: Searching a journal for tags should display entries with that tag.
- Given we use the config "tags.yaml"
- When we run "jrnl @dan"
- Then the output should be
- """
- 2013-06-10 15:40 I met with @dan.
- | As alway's he shared his latest @idea on how to rule the world with me.
- | inst
- """
-
- Scenario: Searching a journal for multiple tags with -and should display entries with those tags.
- Given we use the config "tags.yaml"
- When we run "jrnl -and @idea @journal"
- Then the output should be
- """
- 2013-04-09 15:39 I have an @idea:
- | (1) write a command line @journal software
- | (2) ???
- | (3) PROFIT!
- """
-
- Scenario: Loading tags from a DayOne Journal
- Given we use the config "dayone.yaml"
- When we run "jrnl --tags"
- Then the output should be
- """
- @work : 1
- @play : 1
- """
-
- Scenario: Saving tags from a DayOne Journal
- Given we use the config "dayone.yaml"
- When we run "jrnl A hard day at @work"
- And we run "jrnl --tags"
- Then the output should be
- """
- @work : 2
- @play : 1
- """
-
- Scenario: Filtering by tags from a DayOne Journal
- Given we use the config "dayone.yaml"
- When we run "jrnl @work"
- Then the output should be "2013-05-17 11:39 This entry has tags!"
+ Examples: configs
+ | config |
+ | basic_onefile |
+ | basic_folder |
+ | basic_dayone |