parse_a_changelog 1.3.0 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +162 -0
  3. data/.github/CODEOWNERS +9 -0
  4. data/.gitignore +2 -0
  5. data/.rspec +3 -0
  6. data/CHANGELOG.md +12 -3
  7. data/CONTRIBUTING.md +20 -0
  8. data/Contributing_OSS/CyberArk_Open_Source_Contributor_Agreement.pdf +0 -0
  9. data/Dockerfile +14 -0
  10. data/Gemfile +3 -0
  11. data/Gemfile.lock +51 -0
  12. data/Jenkinsfile +160 -0
  13. data/NOTICES.txt +25 -0
  14. data/README.md +2 -2
  15. data/Rakefile +10 -0
  16. data/SECURITY.md +42 -0
  17. data/build.sh +5 -0
  18. data/parse_a_changelog.gemspec +26 -0
  19. data/publish.sh +25 -0
  20. data/spec/fixtures/correct.md +31 -0
  21. data/spec/fixtures/correct_empty_diff.md +28 -0
  22. data/spec/fixtures/correct_empty_unreleased.md +26 -0
  23. data/spec/fixtures/correct_https.md +31 -0
  24. data/spec/fixtures/correct_initial_tag.md +32 -0
  25. data/spec/fixtures/correct_no_semver.md +30 -0
  26. data/spec/fixtures/correct_with_4_digit_version.md +20 -0
  27. data/spec/fixtures/correct_with_4_digit_version_and_metadata.md +20 -0
  28. data/spec/fixtures/correct_with_4_digit_version_and_pre_release.md +52 -0
  29. data/spec/fixtures/correct_with_metadata.md +20 -0
  30. data/spec/fixtures/correct_with_pre_release.md +52 -0
  31. data/spec/fixtures/incorrect_change_prefix.md +31 -0
  32. data/spec/fixtures/incorrect_release_header_delimiter.md +31 -0
  33. data/spec/fixtures/malformed_change_header.md +31 -0
  34. data/spec/fixtures/malformed_changelog_header.md +31 -0
  35. data/spec/fixtures/malformed_diff_version.md +10 -0
  36. data/spec/fixtures/malformed_release_date.md +31 -0
  37. data/spec/fixtures/malformed_release_header.md +31 -0
  38. data/spec/fixtures/malformed_release_version.md +31 -0
  39. data/spec/fixtures/malformed_unreleased_header.md +31 -0
  40. data/spec/fixtures/missing_newline_at_eof.md +31 -0
  41. data/spec/fixtures/missing_newline_before_diffs.md +30 -0
  42. data/spec/fixtures/missing_newline_before_releases.md +30 -0
  43. data/spec/fixtures/missing_newline_before_unreleased.md +30 -0
  44. data/spec/fixtures/missing_newline_between_changes.md +30 -0
  45. data/spec/fixtures/missing_release_date.md +31 -0
  46. data/spec/fixtures/no_releases.md +12 -0
  47. data/spec/fixtures/unknown_change_type.md +31 -0
  48. data/spec/parser_spec.rb +163 -0
  49. data/test.sh +17 -0
  50. metadata +85 -11
  51. data/VERSION +0 -1
@@ -0,0 +1,30 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+ ## [Unreleased]
7
+ ### Added
8
+ - Added a thing.
9
+
10
+ ### Changed
11
+ - Changed a thing.
12
+
13
+ ## [1.0.0] - 2019-01-03
14
+ ### Deprecated
15
+ - Some things were deprecated.
16
+
17
+ ## 0.1.0 - 2018-11-28
18
+ ### Removed
19
+ - Removed all
20
+ the things.
21
+
22
+ ### Fixed
23
+ - Fixed all the bugs from the non-existent previous release.
24
+
25
+ ### Security
26
+ - We are so secure now.
27
+ - The securest.
28
+
29
+ [Unreleased]: https://github.com/conjurinc/evoke/compare/v1.0.0...HEAD
30
+ [1.0.0]: https://github.com/conjurinc/evoke/compare/v0.1.0...v1.0.0
@@ -0,0 +1,30 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+ ### Added
9
+ - Added a thing.
10
+ ### Changed
11
+ - Changed a thing.
12
+
13
+ ## [1.0.0] - 2019-01-03
14
+ ### Deprecated
15
+ - Some things were deprecated.
16
+
17
+ ## 0.1.0 - 2018-11-28
18
+ ### Removed
19
+ - Removed all
20
+ the things.
21
+
22
+ ### Fixed
23
+ - Fixed all the bugs from the non-existent previous release.
24
+
25
+ ### Security
26
+ - We are so secure now.
27
+ - The securest.
28
+
29
+ [Unreleased]: https://github.com/conjurinc/evoke/compare/v1.0.0...HEAD
30
+ [1.0.0]: https://github.com/conjurinc/evoke/compare/v0.1.0...v1.0.0
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+ ### Added
9
+ - Added a thing.
10
+
11
+ ### Changed
12
+ - Changed a thing.
13
+
14
+ ## [1.0.0] - 2019-01-03
15
+ ### Deprecated
16
+ - Some things were deprecated.
17
+
18
+ ## 0.1.0
19
+ ### Removed
20
+ - Removed all
21
+ the things.
22
+
23
+ ### Fixed
24
+ - Fixed all the bugs from the non-existent previous release.
25
+
26
+ ### Security
27
+ - We are so secure now.
28
+ - The securest.
29
+
30
+ [Unreleased]: https://github.com/conjurinc/evoke/compare/v1.0.0...HEAD
31
+ [1.0.0]: https://github.com/conjurinc/evoke/compare/v0.1.0...v1.0.0
@@ -0,0 +1,12 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+ ## Unreleased
8
+ ### Added
9
+ - Added a thing.
10
+
11
+ ### Changed
12
+ - Changed a thing.
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+ ### Added
9
+ - Added a thing.
10
+
11
+ ### Changed
12
+ - Changed a thing.
13
+
14
+ ## [1.0.0] - 2019-01-03
15
+ ### Deprecated
16
+ - Some things were deprecated.
17
+
18
+ ## 0.1.0 - 2018-11-28
19
+ ### Squashed
20
+ - Removed all
21
+ the things.
22
+
23
+ ### Fixed
24
+ - Fixed all the bugs from the non-existent previous release.
25
+
26
+ ### Security
27
+ - We are so secure now.
28
+ - The securest.
29
+
30
+ [Unreleased]: https://github.com/conjurinc/evoke/compare/v1.0.0...HEAD
31
+ [1.0.0]: https://github.com/conjurinc/evoke/compare/v0.1.0...v1.0.0
@@ -0,0 +1,163 @@
1
+ require_relative '../lib/parse_a_changelog.rb'
2
+
3
+ describe ParseAChangelog do
4
+ subject(:parser) { ParseAChangelog }
5
+
6
+ it "parses a correctly-formatted changelog" do
7
+ expect(parser.parse("spec/fixtures/correct.md")).
8
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
9
+ end
10
+
11
+ it "parses a 4 digit version" do
12
+ expect(parser.parse("spec/fixtures/correct_with_4_digit_version.md")).
13
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
14
+ end
15
+
16
+ it "parses a 4 digit version with version metadata" do
17
+ expect(parser.parse("spec/fixtures/correct_with_4_digit_version_and_metadata.md")).
18
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
19
+ end
20
+
21
+ it "parses a 4 digit version with a release candidate version" do
22
+ expect(parser.parse("spec/fixtures/correct_with_4_digit_version_and_pre_release.md")).
23
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
24
+ end
25
+
26
+ it "parses an initial release tag link" do
27
+ expect(parser.parse("spec/fixtures/correct_initial_tag.md")).
28
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
29
+ end
30
+
31
+ it "parses an empty unreleased section" do
32
+ expect(parser.parse("spec/fixtures/correct_empty_unreleased.md")).
33
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
34
+ end
35
+
36
+ it "parses an empty diff section" do
37
+ expect(parser.parse("spec/fixtures/correct_empty_diff.md")).
38
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
39
+ end
40
+
41
+ it "parses a changelog with no releases" do
42
+ expect(parser.parse("spec/fixtures/no_releases.md")).
43
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
44
+ end
45
+
46
+ it "parses a changelog with https header links" do
47
+ expect(parser.parse("spec/fixtures/correct_https.md")).
48
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
49
+ end
50
+
51
+ it "parses a changelog with a release candidate version" do
52
+ expect(parser.parse("spec/fixtures/correct_with_pre_release.md")).
53
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
54
+ end
55
+
56
+ it "parses a changelog with version metadata" do
57
+ expect(parser.parse("spec/fixtures/correct_with_metadata.md")).
58
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
59
+ end
60
+
61
+ it "parses a changelog without a SemVer declaration" do
62
+ expect(parser.parse("spec/fixtures/correct_no_semver.md")).
63
+ to be_an_instance_of(Treetop::Runtime::SyntaxNode)
64
+ end
65
+
66
+ it "errors on malformed changelog header" do
67
+ expect {
68
+ parser.parse("spec/fixtures/malformed_changelog_header.md")
69
+ }.to raise_error(ParseAChangelog::ParseError, /line 4/)
70
+ end
71
+
72
+ it "errors on malformed unreleased header" do
73
+ expect {
74
+ parser.parse("spec/fixtures/malformed_unreleased_header.md")
75
+ }.to raise_error(ParseAChangelog::ParseError, /line 7/)
76
+ end
77
+
78
+ it "errors on malformed release header" do
79
+ expect {
80
+ parser.parse("spec/fixtures/malformed_release_header.md")
81
+ }.to raise_error(ParseAChangelog::ParseError, /line 14/)
82
+ end
83
+
84
+ # TODO: this may be too strict as keep-a-changelog doesn't require semver.
85
+ it "errors on malformed release version" do
86
+ expect {
87
+ parser.parse("spec/fixtures/malformed_release_version.md")
88
+ }.to raise_error(ParseAChangelog::ParseError, /line 14/)
89
+ end
90
+
91
+ # TODO: this maybe be too strict as keep-a-changelog doesn't specify.
92
+ it "errors on incorrect releaser header delimiter" do
93
+ expect {
94
+ parser.parse("spec/fixtures/incorrect_release_header_delimiter.md")
95
+ }.to raise_error(ParseAChangelog::ParseError, /line 18/)
96
+ end
97
+
98
+ it "errors on release header with missing release date" do
99
+ expect {
100
+ parser.parse("spec/fixtures/missing_release_date.md")
101
+ }.to raise_error(ParseAChangelog::ParseError, /line 18/)
102
+ end
103
+
104
+ it "errors on malformed release date" do
105
+ expect {
106
+ parser.parse("spec/fixtures/malformed_release_date.md")
107
+ }.to raise_error(ParseAChangelog::ParseError, /line 14/)
108
+ end
109
+
110
+ it "errors on malformed change header" do
111
+ expect {
112
+ parser.parse("spec/fixtures/malformed_change_header.md")
113
+ }.to raise_error(ParseAChangelog::ParseError, /line 15/)
114
+ end
115
+
116
+ it "errors on unknown change type" do
117
+ expect {
118
+ parser.parse("spec/fixtures/unknown_change_type.md")
119
+ }.to raise_error(ParseAChangelog::ParseError, /line 19/)
120
+ end
121
+
122
+ it "errors on incorrect change prefix" do
123
+ expect {
124
+ parser.parse("spec/fixtures/incorrect_change_prefix.md")
125
+ }.to raise_error(ParseAChangelog::ParseError, /line 12/)
126
+ end
127
+
128
+ it "errors on missing newline at end of file" do
129
+ expect {
130
+ parser.parse("spec/fixtures/missing_newline_at_eof.md")
131
+ }.to raise_error(ParseAChangelog::ParseError, /line 31/)
132
+ end
133
+
134
+ it "errors on missing newline before unreleased section" do
135
+ expect {
136
+ parser.parse("spec/fixtures/missing_newline_before_unreleased.md")
137
+ }.to raise_error(ParseAChangelog::ParseError, /line 6/)
138
+ end
139
+
140
+ it "errors on missing newline before releases sections" do
141
+ expect {
142
+ parser.parse("spec/fixtures/missing_newline_before_releases.md")
143
+ }.to raise_error(ParseAChangelog::ParseError, /line 13/)
144
+ end
145
+
146
+ it "errors on missing newline between change sections" do
147
+ expect {
148
+ parser.parse("spec/fixtures/missing_newline_between_changes.md")
149
+ }.to raise_error(ParseAChangelog::ParseError, /line 10/)
150
+ end
151
+
152
+ it "errors on missing newline before diff sections" do
153
+ expect {
154
+ parser.parse("spec/fixtures/missing_newline_before_diffs.md")
155
+ }.to raise_error(ParseAChangelog::ParseError, /line 29/)
156
+ end
157
+
158
+ it "errors on malformed diff version" do
159
+ expect {
160
+ parser.parse("spec/fixtures/malformed_diff_version.md")
161
+ }.to raise_error(ParseAChangelog::ParseError, /line 10/)
162
+ end
163
+ end
data/test.sh ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -eux
4
+
5
+ echo "==> Starting test.sh"
6
+
7
+ echo "==> Docker Run"
8
+
9
+ docker run --rm \
10
+ --volume $PWD:/work \
11
+ --workdir /work \
12
+ cyberark/ubuntu-ruby-builder \
13
+ bash -c 'git config --global \
14
+ --add safe.directory /work && \
15
+ bundle install && bundle exec rspec'
16
+
17
+ echo "==> End of test.sh"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_a_changelog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Tuttle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-12 00:00:00.000000000 Z
11
+ date: 2024-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop
@@ -30,42 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.8'
33
+ version: '3.12'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.8'
40
+ version: '3.12'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec_junit_formatter
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.1
47
+ version: '0.6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.4.1
54
+ version: '0.6'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry-byebug
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 3.9.0
61
+ version: '3.10'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 3.9.0
68
+ version: '3.10'
69
69
  description: Uses a grammar describing the keep-a-changelog format to attempt to parse
70
70
  a given file.
71
71
  email: jtuttle.develops@gmail.com
@@ -74,13 +74,58 @@ executables:
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
+ - ".codeclimate.yml"
78
+ - ".github/CODEOWNERS"
79
+ - ".gitignore"
80
+ - ".rspec"
77
81
  - CHANGELOG.md
82
+ - CONTRIBUTING.md
83
+ - Contributing_OSS/CyberArk_Open_Source_Contributor_Agreement.pdf
84
+ - Dockerfile
85
+ - Gemfile
86
+ - Gemfile.lock
87
+ - Jenkinsfile
78
88
  - LICENSE
89
+ - NOTICES.txt
79
90
  - README.md
80
- - VERSION
91
+ - Rakefile
92
+ - SECURITY.md
81
93
  - bin/parse
94
+ - build.sh
82
95
  - lib/grammar.tt
83
96
  - lib/parse_a_changelog.rb
97
+ - parse_a_changelog.gemspec
98
+ - publish.sh
99
+ - spec/fixtures/correct.md
100
+ - spec/fixtures/correct_empty_diff.md
101
+ - spec/fixtures/correct_empty_unreleased.md
102
+ - spec/fixtures/correct_https.md
103
+ - spec/fixtures/correct_initial_tag.md
104
+ - spec/fixtures/correct_no_semver.md
105
+ - spec/fixtures/correct_with_4_digit_version.md
106
+ - spec/fixtures/correct_with_4_digit_version_and_metadata.md
107
+ - spec/fixtures/correct_with_4_digit_version_and_pre_release.md
108
+ - spec/fixtures/correct_with_metadata.md
109
+ - spec/fixtures/correct_with_pre_release.md
110
+ - spec/fixtures/incorrect_change_prefix.md
111
+ - spec/fixtures/incorrect_release_header_delimiter.md
112
+ - spec/fixtures/malformed_change_header.md
113
+ - spec/fixtures/malformed_changelog_header.md
114
+ - spec/fixtures/malformed_diff_version.md
115
+ - spec/fixtures/malformed_release_date.md
116
+ - spec/fixtures/malformed_release_header.md
117
+ - spec/fixtures/malformed_release_version.md
118
+ - spec/fixtures/malformed_unreleased_header.md
119
+ - spec/fixtures/missing_newline_at_eof.md
120
+ - spec/fixtures/missing_newline_before_diffs.md
121
+ - spec/fixtures/missing_newline_before_releases.md
122
+ - spec/fixtures/missing_newline_before_unreleased.md
123
+ - spec/fixtures/missing_newline_between_changes.md
124
+ - spec/fixtures/missing_release_date.md
125
+ - spec/fixtures/no_releases.md
126
+ - spec/fixtures/unknown_change_type.md
127
+ - spec/parser_spec.rb
128
+ - test.sh
84
129
  homepage: http://github.com/cyberark/parse-a-changelog
85
130
  licenses:
86
131
  - Apache-2.0
@@ -100,8 +145,37 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
145
  - !ruby/object:Gem::Version
101
146
  version: '0'
102
147
  requirements: []
103
- rubygems_version: 3.1.6
148
+ rubygems_version: 3.4.19
104
149
  signing_key:
105
150
  specification_version: 4
106
151
  summary: A validator for the keep-a-changelog format
107
- test_files: []
152
+ test_files:
153
+ - spec/fixtures/correct.md
154
+ - spec/fixtures/correct_empty_diff.md
155
+ - spec/fixtures/correct_empty_unreleased.md
156
+ - spec/fixtures/correct_https.md
157
+ - spec/fixtures/correct_initial_tag.md
158
+ - spec/fixtures/correct_no_semver.md
159
+ - spec/fixtures/correct_with_4_digit_version.md
160
+ - spec/fixtures/correct_with_4_digit_version_and_metadata.md
161
+ - spec/fixtures/correct_with_4_digit_version_and_pre_release.md
162
+ - spec/fixtures/correct_with_metadata.md
163
+ - spec/fixtures/correct_with_pre_release.md
164
+ - spec/fixtures/incorrect_change_prefix.md
165
+ - spec/fixtures/incorrect_release_header_delimiter.md
166
+ - spec/fixtures/malformed_change_header.md
167
+ - spec/fixtures/malformed_changelog_header.md
168
+ - spec/fixtures/malformed_diff_version.md
169
+ - spec/fixtures/malformed_release_date.md
170
+ - spec/fixtures/malformed_release_header.md
171
+ - spec/fixtures/malformed_release_version.md
172
+ - spec/fixtures/malformed_unreleased_header.md
173
+ - spec/fixtures/missing_newline_at_eof.md
174
+ - spec/fixtures/missing_newline_before_diffs.md
175
+ - spec/fixtures/missing_newline_before_releases.md
176
+ - spec/fixtures/missing_newline_before_unreleased.md
177
+ - spec/fixtures/missing_newline_between_changes.md
178
+ - spec/fixtures/missing_release_date.md
179
+ - spec/fixtures/no_releases.md
180
+ - spec/fixtures/unknown_change_type.md
181
+ - spec/parser_spec.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.3.0