release_notes 0.5.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/features/cli.feature +101 -0
- data/features/generator.feature +20 -0
- data/features/step_definitions/feature_steps.rb +122 -0
- data/features/support/setup.rb +8 -1
- data/lib/release_notes/cli.rb +1 -1
- data/lib/release_notes/version.rb +1 -1
- data/release_notes.gemspec +2 -0
- data/spec/controllers/release_notes/release_notes_controller_spec.rb +1 -1
- data/spec/dummy/release_notes/20140715165429_1_0_0.md +17 -0
- data/spec/dummy/release_notes/README.md +48 -0
- metadata +38 -3
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ebff1dc3ba451c2edfed2a67328825c11ece400
|
4
|
+
data.tar.gz: d202b99c8ad32195bad01bb6f0d94179ac7614fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1f6c8bf9b12f22fbc74a597740c031d862e42c3c3131de3f6c4b2e3bdad2c18b0ce6981059803ee3b3c1fb29d425154f3d18a41c3a63fe34244753a810ace0b
|
7
|
+
data.tar.gz: 77e4ca2480fe549a1986c0459f0c57d8a82252d011815546eb83ac7e24d65c5c047dc8eea4288defce4b4f911d8e4c7e1768ede098ce86cd38934a37f1374b2c
|
@@ -0,0 +1,101 @@
|
|
1
|
+
Feature: Cli
|
2
|
+
In order to run ReleaseNotes from the command line
|
3
|
+
Cli commands must run properly
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given a Rails app named "hello_world" exists
|
7
|
+
And this gem "release_notes" is installed in the app
|
8
|
+
And this gem is ready to use
|
9
|
+
|
10
|
+
|
11
|
+
Scenario: Generate a new release note
|
12
|
+
Given I am in "tmp/hello_world"
|
13
|
+
And I run `release_notes new`
|
14
|
+
Then a directory named "release_notes" should exist
|
15
|
+
And a file matching %r<[0-9]*_0_1_0.md$> should exist
|
16
|
+
|
17
|
+
|
18
|
+
Scenario: Save a release note to the database
|
19
|
+
Given I am in "tmp/hello_world"
|
20
|
+
And I run `release_notes new`
|
21
|
+
Then a model named "ReleaseNote" should have "0" records
|
22
|
+
|
23
|
+
And I run `release_notes update`
|
24
|
+
Then a model named "ReleaseNote" should have "1" records
|
25
|
+
|
26
|
+
|
27
|
+
Scenario: Generate release note to a specific destination
|
28
|
+
Given I am in "tmp/hello_world"
|
29
|
+
And I run `release_notes new -d="whatwhat"`
|
30
|
+
Then a directory named "whatwhat" should exist
|
31
|
+
And a directory named "release_notes" should not exist
|
32
|
+
And a file matching %r<[0-9]*_0_1_0.md$> should exist
|
33
|
+
|
34
|
+
|
35
|
+
Scenario: Overwrite a previous release note
|
36
|
+
Given I am in "tmp/hello_world"
|
37
|
+
And I run `release_notes new`
|
38
|
+
And I run `release_notes new -v=0.1.0 -f`
|
39
|
+
Then a file matching %r<[0-9]*_0_1_0.md$> should exist
|
40
|
+
|
41
|
+
|
42
|
+
Scenario: Generate release notes in increments
|
43
|
+
Given I am in "tmp/hello_world"
|
44
|
+
And I run `release_notes new`
|
45
|
+
And I run `release_notes new -i=m`
|
46
|
+
Then a file matching %r<[0-9]*_0_2_0.md$> should exist
|
47
|
+
|
48
|
+
And I run `release_notes new -i=M`
|
49
|
+
Then a file matching %r<[0-9]*_1_0_0.md$> should exist
|
50
|
+
|
51
|
+
And I run `release_notes new -i=major`
|
52
|
+
Then a file matching %r<[0-9]*_2_0_0.md$> should exist
|
53
|
+
|
54
|
+
And I run `release_notes new -i=minor`
|
55
|
+
Then a file matching %r<[0-9]*_2_1_0.md$> should exist
|
56
|
+
|
57
|
+
And I run `release_notes new`
|
58
|
+
Then a file matching %r<[0-9]*_2_1_1.md$> should exist
|
59
|
+
|
60
|
+
And I run `release_notes update`
|
61
|
+
Then a model named "ReleaseNote" should have "6" records
|
62
|
+
|
63
|
+
|
64
|
+
Scenario: Runs ReleaseNotes interatively
|
65
|
+
Given I am in "tmp/hello_world"
|
66
|
+
When I run `release_notes new -m` interactively
|
67
|
+
And I type "a: This is a test!"
|
68
|
+
And I type "done"
|
69
|
+
And I type "Some summary statement..."
|
70
|
+
Then a directory named "release_notes" should exist
|
71
|
+
And a file matching "/release_notes/[0-9]*_0_1_0.md" should contain "Some summary statement..."
|
72
|
+
|
73
|
+
|
74
|
+
Scenario: Update release notes in a specific directory
|
75
|
+
Given I am in "tmp/hello_world"
|
76
|
+
And I run `release_notes new`
|
77
|
+
And I run `release_notes new`
|
78
|
+
And I run `release_notes new -d=oye`
|
79
|
+
And I run `release_notes new -d=oye`
|
80
|
+
And I run `release_notes new -d=oye`
|
81
|
+
And I run `release_notes update -d=oye`
|
82
|
+
Then a model named "ReleaseNote" should have "3" records
|
83
|
+
|
84
|
+
|
85
|
+
Scenario: Use the given version
|
86
|
+
Given I am in "tmp/hello_world"
|
87
|
+
And I run `release_notes new -v=1.2.3`
|
88
|
+
Then a file matching %r<[0-9]*_1_2_3.md$> should exist
|
89
|
+
|
90
|
+
|
91
|
+
Scenario: Update release notes without creating a log
|
92
|
+
Given I am in "tmp/hello_world"
|
93
|
+
And I run `release_notes new`
|
94
|
+
And I run `release_notes update -n`
|
95
|
+
Then the file "release_notes/README.md" should not exist
|
96
|
+
|
97
|
+
|
98
|
+
Scenario: Returns the version of ReleaseNotes
|
99
|
+
Given I am in "tmp/hello_world"
|
100
|
+
When I run `release_notes -v`
|
101
|
+
Then the output from "release_notes -v" should contain "ReleaseNotes v"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature: Generators
|
2
|
+
In order to run ReleaseNotes properly
|
3
|
+
Generators must run properly
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given a Rails app named "hello_world" exists
|
7
|
+
And this gem "release_notes" is installed in the app
|
8
|
+
|
9
|
+
|
10
|
+
Scenario: Generate ReleaseNotes initializer
|
11
|
+
Given I am in "tmp/hello_world"
|
12
|
+
When I run `rails generate release_notes:install`
|
13
|
+
Then the file "config/initializers/release_notes.rb" should exist
|
14
|
+
|
15
|
+
|
16
|
+
Scenario: Generate ReleaseNote migration
|
17
|
+
Given I am in "tmp/hello_world"
|
18
|
+
When I run `rails generate release_notes ReleaseNote`
|
19
|
+
Then a file matching %r<[0-9]*_release_notes_create_release_notes.rb$> should exist
|
20
|
+
And the file "config/routes.rb" should contain "mount ReleaseNotes::Engine, at: '/release_notes', :as => 'release_notes'"
|
@@ -0,0 +1,122 @@
|
|
1
|
+
# Creates an app and sets the RAILS_ROOT and navigates to that app's root
|
2
|
+
Given /^a Rails app named "([^\"]*)" exists$/ do |app_name|
|
3
|
+
@app_name = app_name
|
4
|
+
step "I successfully run `rm -rf #{app_name}`" # ensure working directory is clean
|
5
|
+
step "a directory named \"#{app_name}\" should not exist"
|
6
|
+
step "I successfully run `rails new #{app_name}`"
|
7
|
+
|
8
|
+
ENV["RAILS_ENV"] ||= "test"
|
9
|
+
require File.expand_path("../../../tmp/hello_world/config/environment.rb", __FILE__)
|
10
|
+
ENV["RAILS_ROOT"] ||= File.dirname(__FILE__) + "/tmp/hello_world"
|
11
|
+
|
12
|
+
step "I cd to \"#{app_name}\""
|
13
|
+
end
|
14
|
+
|
15
|
+
When /^this gem "([^\"]*)" is installed in the app$/ do |gem_name|
|
16
|
+
gem_path = File.expand_path('../../../', __FILE__)
|
17
|
+
step "I append to \"Gemfile\" with \"gem '#{gem_name}', :path => '#{gem_path}'\""
|
18
|
+
step "I successfully run `bundle check`"
|
19
|
+
end
|
20
|
+
|
21
|
+
When /^this gem is ready to use$/ do
|
22
|
+
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => 'db/test.sqlite3')
|
23
|
+
|
24
|
+
step "I run `rails generate release_notes:install`"
|
25
|
+
step "I run `rails generate release_notes ReleaseNote`"
|
26
|
+
step "I run `rake db:migrate`"
|
27
|
+
end
|
28
|
+
|
29
|
+
Then /^a file matching "([^\"]*)" should contain "([^\"]*)"$/ do |simple_regex, partial_content|
|
30
|
+
file = Dir[[@basedir, simple_regex].join][0]
|
31
|
+
file.slice! @basedir + '/'
|
32
|
+
check_file_content(file, partial_content, true)
|
33
|
+
end
|
34
|
+
|
35
|
+
Then /^a model named "([^\"]*)" should have "([0-9]+)" records$/ do |model_name, record_count|
|
36
|
+
expect(model_name.constantize.count).to eq(record_count.to_i)
|
37
|
+
end
|
38
|
+
|
39
|
+
Given /^I am in "([^\"]*)"$/ do |directory|
|
40
|
+
@basedir = directory
|
41
|
+
end
|
42
|
+
|
43
|
+
Given /^the file "([^\"]*)" exists$/ do |filename|
|
44
|
+
expect(File.exists?(File.join(@basedir, filename))).to eq(true)
|
45
|
+
end
|
46
|
+
|
47
|
+
When /^I copy the file "([^\"]*)" to "([^\"]*)"$/ do |src, dest|
|
48
|
+
FileUtils.cp(File.join(@basedir, src), File.join(@basedir, dest))
|
49
|
+
end
|
50
|
+
|
51
|
+
Then /^the file "([^\"]*)" should exist$/ do |filename|
|
52
|
+
expect(File.exists?(File.join(@basedir, filename))).to eq(true)
|
53
|
+
end
|
54
|
+
|
55
|
+
Given /^the following files exist:$/ do |table|
|
56
|
+
(@files_i_care_about || table.hashes).each do |file|
|
57
|
+
expect(File.exists?(File.join(@basedir, file["filename"]))).to eq(true)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
When /^I copy the following files to "([^\"]*)":$/ do |destination, table|
|
62
|
+
table.hashes.each do |file|
|
63
|
+
filename = File.join(@basedir, file["filename"])
|
64
|
+
FileUtils.cp(filename, destination)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
Then /^the following files should exist in "([^\"]*)":$/ do |destination, table|
|
69
|
+
table.hashes.each do |file|
|
70
|
+
expect(File.exists?(File.join(destination, file["filename"]))).to eq(true)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
When /^I create the directory "([^\"]*)"$/ do |directory|
|
75
|
+
FileUtils.mkdir_p(directory).should_not be_nil
|
76
|
+
end
|
77
|
+
|
78
|
+
Given /^the following table of (.+):$/ do |name, table|
|
79
|
+
@tables = {}
|
80
|
+
@tables[name] = table.hashes
|
81
|
+
end
|
82
|
+
|
83
|
+
When /^I copy the (.+) in the table to "([^\"]*)"$/ do |name, destination|
|
84
|
+
@tables[name].each do |file|
|
85
|
+
filename = File.join(@basedir, file["filename"])
|
86
|
+
FileUtils.cp(filename, destination)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
Then /^the (.+) in the table should exist in "([^\"]*)"$/ do |name, destination|
|
91
|
+
@tables[name].each do |file|
|
92
|
+
expect(File.exists?(File.join(destination, file["filename"]))).to eq(true)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
When /^I copy files beginning with the letters (\S+) to "([^\"]*)"$/ do |pattern, destination|
|
97
|
+
patterns = pattern.split(',')
|
98
|
+
@filelist = []
|
99
|
+
@destination = destination
|
100
|
+
patterns.each do |pattern|
|
101
|
+
glob = Dir.glob(File.join(@basedir, "#{pattern}*"))
|
102
|
+
|
103
|
+
actual_files = glob.find_all do |filename|
|
104
|
+
File.file?(filename)
|
105
|
+
end
|
106
|
+
|
107
|
+
@filelist << actual_files.map do |filename|
|
108
|
+
File.basename(filename)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
@filelist.flatten!
|
112
|
+
@filelist.each do |filename|
|
113
|
+
FileUtils.cp(File.join(@basedir, filename), @destination)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
Then /^they should exist there$/ do
|
118
|
+
raise unless @filelist && @destination
|
119
|
+
@filelist.each do |filename|
|
120
|
+
expect(File.exists?(File.join(@destination, filename))).to eq(true)
|
121
|
+
end
|
122
|
+
end
|
data/features/support/setup.rb
CHANGED
data/lib/release_notes/cli.rb
CHANGED
data/release_notes.gemspec
CHANGED
@@ -25,7 +25,9 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency "bootstrap-sass", "~> 3.2.0"
|
26
26
|
spec.add_dependency "redcarpet", "~> 3.0.0"
|
27
27
|
|
28
|
+
spec.add_development_dependency "pry-rails"
|
28
29
|
spec.add_development_dependency "rspec-rails", "~> 3.0.0"
|
29
30
|
spec.add_development_dependency "factory_girl_rails", "~> 4.4.1"
|
31
|
+
spec.add_development_dependency "aruba", "~> 0.6.0"
|
30
32
|
spec.add_development_dependency "sqlite3"
|
31
33
|
end
|
@@ -48,7 +48,7 @@ module ReleaseNotes
|
|
48
48
|
it "assigns @release_notes" do
|
49
49
|
get :show, { version: @release_note.version, use_route: :release_notes }
|
50
50
|
|
51
|
-
expect(assigns(:release_notes)).to eq(@release_note)
|
51
|
+
expect(assigns(:release_notes)).to eq([@release_note])
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -1,3 +1,51 @@
|
|
1
|
+
# Demo App 1.0.0 Release Notes
|
2
|
+
###### Full test coverage, I think...
|
3
|
+
|
4
|
+
#### 07/15/2014
|
5
|
+
|
6
|
+
Additions
|
7
|
+
----
|
8
|
+
* Added Cucumber generator tests.
|
9
|
+
* Added Cucumber CLI tests.
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
*the end*
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
# Demo App 0.5.1 Release Notes
|
22
|
+
###### Added release_note_indicator helper.
|
23
|
+
|
24
|
+
#### 07/13/2014
|
25
|
+
|
26
|
+
Additions
|
27
|
+
----
|
28
|
+
* Added release_note_indicator helper.
|
29
|
+
* Added release_note_indicator snippet to dummy app view.
|
30
|
+
|
31
|
+
Changes
|
32
|
+
----
|
33
|
+
* Updated gemspec.
|
34
|
+
* Updated README.
|
35
|
+
|
36
|
+
Fixes
|
37
|
+
----
|
38
|
+
* Fixed a template error that occurred when trying to navigate to a specific release note by version.
|
39
|
+
|
40
|
+
Upcoming
|
41
|
+
----
|
42
|
+
* Add generator tests.
|
43
|
+
* Add command line tests.
|
44
|
+
|
45
|
+
*the end*
|
46
|
+
|
47
|
+
---
|
48
|
+
|
1
49
|
# Demo App 0.5.1 Release Notes
|
2
50
|
###### Added release_note_indicator helper.
|
3
51
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: release_notes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Robins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 3.0.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry-rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rspec-rails
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,20 @@ dependencies:
|
|
108
122
|
- - ~>
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: 4.4.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: aruba
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.6.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ~>
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.6.0
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: sqlite3
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,7 +160,6 @@ extra_rdoc_files: []
|
|
132
160
|
files:
|
133
161
|
- .gitignore
|
134
162
|
- .rspec
|
135
|
-
- .ruby-version
|
136
163
|
- Gemfile
|
137
164
|
- LICENSE.txt
|
138
165
|
- README.md
|
@@ -149,6 +176,9 @@ files:
|
|
149
176
|
- app/views/release_notes/release_notes/show.html.erb
|
150
177
|
- bin/release_notes
|
151
178
|
- config/routes.rb
|
179
|
+
- features/cli.feature
|
180
|
+
- features/generator.feature
|
181
|
+
- features/step_definitions/feature_steps.rb
|
152
182
|
- features/support/setup.rb
|
153
183
|
- lib/generators/active_record/release_notes_generator.rb
|
154
184
|
- lib/generators/active_record/templates/release_notes_migration.rb
|
@@ -220,6 +250,7 @@ files:
|
|
220
250
|
- spec/dummy/release_notes/20140703165131_0_4_0.md
|
221
251
|
- spec/dummy/release_notes/20140703165820_0_5_0.md
|
222
252
|
- spec/dummy/release_notes/20140713050803_0_5_1.md
|
253
|
+
- spec/dummy/release_notes/20140715165429_1_0_0.md
|
223
254
|
- spec/dummy/release_notes/README.md
|
224
255
|
- spec/dummy/release_notes/stamp
|
225
256
|
- spec/factories/release_notes.rb
|
@@ -252,6 +283,9 @@ signing_key:
|
|
252
283
|
specification_version: 4
|
253
284
|
summary: An easy way to incorporate and manage release notes.
|
254
285
|
test_files:
|
286
|
+
- features/cli.feature
|
287
|
+
- features/generator.feature
|
288
|
+
- features/step_definitions/feature_steps.rb
|
255
289
|
- features/support/setup.rb
|
256
290
|
- spec/controllers/release_notes/release_notes_controller_spec.rb
|
257
291
|
- spec/dummy/README.rdoc
|
@@ -304,6 +338,7 @@ test_files:
|
|
304
338
|
- spec/dummy/release_notes/20140703165131_0_4_0.md
|
305
339
|
- spec/dummy/release_notes/20140703165820_0_5_0.md
|
306
340
|
- spec/dummy/release_notes/20140713050803_0_5_1.md
|
341
|
+
- spec/dummy/release_notes/20140715165429_1_0_0.md
|
307
342
|
- spec/dummy/release_notes/README.md
|
308
343
|
- spec/dummy/release_notes/stamp
|
309
344
|
- spec/factories/release_notes.rb
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ruby-2.0.0-p353@eanlain
|