juwelier 2.1.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 +7 -0
- data/.coveralls.yml +2 -0
- data/.document +8 -0
- data/.semver +5 -0
- data/.travis.yml +7 -0
- data/.yardopts +2 -0
- data/ChangeLog.markdown +230 -0
- data/Gemfile +40 -0
- data/LICENSE.txt +20 -0
- data/README.markdown +252 -0
- data/Rakefile +78 -0
- data/bin/juwelier +9 -0
- data/features/generator/cucumber.feature +103 -0
- data/features/generator/directory_layout.feature +86 -0
- data/features/generator/dotdocument.feature +13 -0
- data/features/generator/env_options.feature +9 -0
- data/features/generator/gemfile.feature +81 -0
- data/features/generator/git.feature +102 -0
- data/features/generator/license.feature +20 -0
- data/features/generator/rakefile.feature +158 -0
- data/features/generator/readme.feature +12 -0
- data/features/generator/test.feature +54 -0
- data/features/generator/test_helper.feature +149 -0
- data/features/placeholder.feature +5 -0
- data/features/step_definitions/debug_steps.rb +6 -0
- data/features/step_definitions/filesystem_steps.rb +70 -0
- data/features/step_definitions/generator_steps.rb +387 -0
- data/features/step_definitions/task_steps.rb +6 -0
- data/features/support/env.rb +41 -0
- data/features/tasks/build_gem.feature +9 -0
- data/features/tasks/version.feature +31 -0
- data/features/tasks/version_bumping.feature +49 -0
- data/juwelier.gemspec +241 -0
- data/lib/juwelier.rb +178 -0
- data/lib/juwelier/commands.rb +20 -0
- data/lib/juwelier/commands/build_gem.rb +40 -0
- data/lib/juwelier/commands/check_dependencies.rb +66 -0
- data/lib/juwelier/commands/install_gem.rb +31 -0
- data/lib/juwelier/commands/release_gemspec.rb +87 -0
- data/lib/juwelier/commands/release_to_git.rb +64 -0
- data/lib/juwelier/commands/release_to_rubygems.rb +28 -0
- data/lib/juwelier/commands/validate_gemspec.rb +30 -0
- data/lib/juwelier/commands/version/base.rb +55 -0
- data/lib/juwelier/commands/version/bump_major.rb +13 -0
- data/lib/juwelier/commands/version/bump_minor.rb +12 -0
- data/lib/juwelier/commands/version/bump_patch.rb +14 -0
- data/lib/juwelier/commands/version/write.rb +12 -0
- data/lib/juwelier/commands/write_gemspec.rb +39 -0
- data/lib/juwelier/errors.rb +8 -0
- data/lib/juwelier/gemcutter_tasks.rb +8 -0
- data/lib/juwelier/gemspec_helper.rb +87 -0
- data/lib/juwelier/generator.rb +304 -0
- data/lib/juwelier/generator/application.rb +63 -0
- data/lib/juwelier/generator/bacon_mixin.rb +43 -0
- data/lib/juwelier/generator/github_mixin.rb +22 -0
- data/lib/juwelier/generator/micronaut_mixin.rb +41 -0
- data/lib/juwelier/generator/minitest_mixin.rb +42 -0
- data/lib/juwelier/generator/options.rb +172 -0
- data/lib/juwelier/generator/rdoc_mixin.rb +13 -0
- data/lib/juwelier/generator/riot_mixin.rb +42 -0
- data/lib/juwelier/generator/rspec_mixin.rb +42 -0
- data/lib/juwelier/generator/shindo_mixin.rb +44 -0
- data/lib/juwelier/generator/shoulda_mixin.rb +42 -0
- data/lib/juwelier/generator/testspec_mixin.rb +42 -0
- data/lib/juwelier/generator/testunit_mixin.rb +39 -0
- data/lib/juwelier/generator/yard_mixin.rb +15 -0
- data/lib/juwelier/rubyforge_tasks.rb +95 -0
- data/lib/juwelier/rubygems_dot_org_tasks.rb +38 -0
- data/lib/juwelier/rubygems_tasks.rb +38 -0
- data/lib/juwelier/specification.rb +110 -0
- data/lib/juwelier/tasks.rb +239 -0
- data/lib/juwelier/templates/.document +5 -0
- data/lib/juwelier/templates/.gitignore +49 -0
- data/lib/juwelier/templates/Gemfile +12 -0
- data/lib/juwelier/templates/LICENSE.txt +20 -0
- data/lib/juwelier/templates/README.rdoc +19 -0
- data/lib/juwelier/templates/Rakefile +9 -0
- data/lib/juwelier/templates/bacon/flunking.rb +7 -0
- data/lib/juwelier/templates/bacon/helper.rb +10 -0
- data/lib/juwelier/templates/bundler_setup.erb +10 -0
- data/lib/juwelier/templates/features/default.feature +9 -0
- data/lib/juwelier/templates/features/support/env.rb +11 -0
- data/lib/juwelier/templates/juwelier_tasks.erb +31 -0
- data/lib/juwelier/templates/micronaut/flunking.rb +7 -0
- data/lib/juwelier/templates/micronaut/helper.rb +19 -0
- data/lib/juwelier/templates/minitest/flunking.rb +7 -0
- data/lib/juwelier/templates/minitest/helper.rb +13 -0
- data/lib/juwelier/templates/other_tasks.erb +70 -0
- data/lib/juwelier/templates/riot/flunking.rb +11 -0
- data/lib/juwelier/templates/riot/helper.rb +5 -0
- data/lib/juwelier/templates/rspec/.rspec +1 -0
- data/lib/juwelier/templates/rspec/flunking.rb +7 -0
- data/lib/juwelier/templates/rspec/helper.rb +14 -0
- data/lib/juwelier/templates/shindo/flunking.rb +8 -0
- data/lib/juwelier/templates/shindo/helper.rb +7 -0
- data/lib/juwelier/templates/shoulda/flunking.rb +7 -0
- data/lib/juwelier/templates/shoulda/helper.rb +12 -0
- data/lib/juwelier/templates/simplecov.erb +16 -0
- data/lib/juwelier/templates/testspec/flunking.rb +7 -0
- data/lib/juwelier/templates/testspec/helper.rb +7 -0
- data/lib/juwelier/templates/testunit/flunking.rb +7 -0
- data/lib/juwelier/templates/testunit/helper.rb +11 -0
- data/lib/juwelier/version.rb +10 -0
- data/lib/juwelier/version_helper.rb +141 -0
- data/test/fixtures/bar/VERSION.yml +4 -0
- data/test/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
- data/test/fixtures/bar/hey_include_me_in_gemspec +0 -0
- data/test/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
- data/test/fixtures/existing-project-with-version-constant/.document +5 -0
- data/test/fixtures/existing-project-with-version-constant/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-constant/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-constant/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-constant/Rakefile +85 -0
- data/test/fixtures/existing-project-with-version-constant/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-constant/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-constant/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-constant/test/test_helper.rb +10 -0
- data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
- data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-plaintext/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-plaintext/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-plaintext/Rakefile +84 -0
- data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
- data/test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb +10 -0
- data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
- data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-yaml/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-yaml/Rakefile +84 -0
- data/test/fixtures/existing-project-with-version-yaml/VERSION.yml +4 -0
- data/test/fixtures/existing-project-with-version-yaml/bin/foo_the_ultimate_bin +0 -0
- data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
- data/test/geminstaller.yml +12 -0
- data/test/juwelier/commands/test_build_gem.rb +112 -0
- data/test/juwelier/commands/test_install_gem.rb +35 -0
- data/test/juwelier/commands/test_release_to_gemcutter.rb +39 -0
- data/test/juwelier/commands/test_release_to_git.rb +271 -0
- data/test/juwelier/commands/test_release_to_github.rb +477 -0
- data/test/juwelier/commands/test_validate_gemspec.rb +27 -0
- data/test/juwelier/commands/test_write_gemspec.rb +103 -0
- data/test/juwelier/commands/version/test_base.rb +53 -0
- data/test/juwelier/commands/version/test_bump_major.rb +22 -0
- data/test/juwelier/commands/version/test_bump_minor.rb +19 -0
- data/test/juwelier/commands/version/test_bump_patch.rb +20 -0
- data/test/juwelier/commands/version/test_write.rb +22 -0
- data/test/juwelier/generator/test_application.rb +142 -0
- data/test/juwelier/generator/test_options.rb +227 -0
- data/test/juwelier/test_gemspec_helper.rb +44 -0
- data/test/juwelier/test_generator.rb +140 -0
- data/test/juwelier/test_generator_initialization.rb +150 -0
- data/test/juwelier/test_generator_mixins.rb +23 -0
- data/test/juwelier/test_specification.rb +245 -0
- data/test/juwelier/test_tasks.rb +50 -0
- data/test/juwelier/test_version_helper.rb +214 -0
- data/test/shoulda_macros/juwelier_macros.rb +35 -0
- data/test/test_helper.rb +174 -0
- data/test/test_juwelier.rb +177 -0
- metadata +396 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature: generated license
|
2
|
+
In order to start a new gem
|
3
|
+
A user should be able to
|
4
|
+
generate a default license
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a working directory
|
8
|
+
|
9
|
+
Scenario: crediting user
|
10
|
+
Given I have configured git sanely
|
11
|
+
When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
|
12
|
+
|
13
|
+
Then LICENSE.txt credits 'foo'
|
14
|
+
|
15
|
+
Scenario: copyright in the current year
|
16
|
+
Given it is the year 2005
|
17
|
+
And I have configured git sanely
|
18
|
+
When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
|
19
|
+
|
20
|
+
Then LICENSE.txt has a copyright in the year 2005
|
@@ -0,0 +1,158 @@
|
|
1
|
+
Feature: generated Rakefile
|
2
|
+
In order to start a new gem
|
3
|
+
A user should be able to
|
4
|
+
generate a Rakefile
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a working directory
|
8
|
+
And I have configured git sanely
|
9
|
+
|
10
|
+
Scenario: shared
|
11
|
+
When I generate a project named 'the-perfect-gem' that is 'zomg, so good' and described as 'Descriptive'
|
12
|
+
|
13
|
+
Then 'Rakefile' requires 'bundler'
|
14
|
+
And 'Rakefile' sets up bundler using the default and development groups
|
15
|
+
And 'Rakefile' requires 'rubygems'
|
16
|
+
And 'Rakefile' requires 'rake'
|
17
|
+
And 'Rakefile' requires 'rdoc/task'
|
18
|
+
And Rakefile has 'the-perfect-gem' for the Juwelier::Tasks name
|
19
|
+
And Rakefile has 'bar@example.com' for the Juwelier::Tasks email
|
20
|
+
And Rakefile has 'zomg, so good' for the Juwelier::Tasks summary
|
21
|
+
And Rakefile has 'Descriptive' for the Juwelier::Tasks description
|
22
|
+
And Rakefile has 'http://github.com/flajann2/the-perfect-gem' for the Juwelier::Tasks homepage
|
23
|
+
And Rakefile has 'MIT' for the Juwelier::Tasks license
|
24
|
+
And Rakefile instantiates a Juwelier::RubygemsDotOrgTasks
|
25
|
+
And Rakefile has a magic comment for UTF-8
|
26
|
+
|
27
|
+
Scenario: bacon
|
28
|
+
When I generate a bacon project named 'the-perfect-gem' that is 'zomg, so good'
|
29
|
+
Then 'Rakefile' requires 'rcov/rcovtask'
|
30
|
+
And Rakefile has 'spec/**/*_spec.rb' for the Rake::TestTask pattern
|
31
|
+
And Rakefile has 'spec/**/*_spec.rb' for the Rcov::RcovTask pattern
|
32
|
+
And Rakefile has 'spec' in the Rcov::RcovTask libs
|
33
|
+
And Rakefile has "spec" as the default task
|
34
|
+
|
35
|
+
Scenario: minitest
|
36
|
+
When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'
|
37
|
+
|
38
|
+
Then 'Rakefile' requires 'rcov/rcovtask'
|
39
|
+
And Rakefile has 'test/**/test_*.rb' for the Rake::TestTask pattern
|
40
|
+
And Rakefile has 'test/**/test_*.rb' for the Rcov::RcovTask pattern
|
41
|
+
And Rakefile has 'test' in the Rcov::RcovTask libs
|
42
|
+
And Rakefile has "test" as the default task
|
43
|
+
|
44
|
+
@rspec
|
45
|
+
Scenario: rspec
|
46
|
+
When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'
|
47
|
+
|
48
|
+
Then 'Rakefile' requires 'rspec/core'
|
49
|
+
And 'Rakefile' requires 'rspec/core/rake_task'
|
50
|
+
And Rakefile has 'spec/**/*_spec.rb' for the RSpec::Core::RakeTask pattern
|
51
|
+
And Rakefile has "spec" as the default task
|
52
|
+
|
53
|
+
Scenario: shoulda
|
54
|
+
When I generate a shoulda project named 'the-perfect-gem' that is 'zomg, so good'
|
55
|
+
|
56
|
+
Then 'Rakefile' requires 'rcov/rcovtask'
|
57
|
+
And Rakefile has 'test/**/test_*.rb' for the Rake::TestTask pattern
|
58
|
+
And Rakefile has 'test/**/test_*.rb' for the Rcov::RcovTask pattern
|
59
|
+
And Rakefile has 'test' in the Rcov::RcovTask libs
|
60
|
+
And Rakefile has "test" as the default task
|
61
|
+
|
62
|
+
Scenario: micronaut
|
63
|
+
When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'
|
64
|
+
|
65
|
+
Then 'Rakefile' requires 'micronaut/rake_task'
|
66
|
+
And Rakefile has 'examples/**/*_example.rb' for the Micronaut::RakeTask pattern
|
67
|
+
And Rakefile has "examples" as the default task
|
68
|
+
|
69
|
+
Scenario: testunit
|
70
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
71
|
+
|
72
|
+
Then 'Rakefile' requires 'rcov/rcovtask'
|
73
|
+
Then Rakefile has 'test/**/test_*.rb' for the Rake::TestTask pattern
|
74
|
+
And Rakefile has 'test/**/test_*.rb' for the Rcov::RcovTask pattern
|
75
|
+
And Rakefile has 'test' in the Rcov::RcovTask libs
|
76
|
+
And Rakefile has '--exclude "gems/*"' in the Rcov::RcovTask rcov_opts
|
77
|
+
And Rakefile has "test" as the default task
|
78
|
+
|
79
|
+
Scenario: no cucumber
|
80
|
+
Given I do not want cucumber stories
|
81
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
82
|
+
Then Rakefile does not require 'cucumber/rake/task'
|
83
|
+
And Rakefile does not instantiate a Cucumber::Rake::Task
|
84
|
+
|
85
|
+
Scenario: cucumber
|
86
|
+
Given I want cucumber stories
|
87
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
88
|
+
Then Rakefile requires 'cucumber/rake/task'
|
89
|
+
And Rakefile instantiates a Cucumber::Rake::Task
|
90
|
+
|
91
|
+
Scenario: no reek
|
92
|
+
Given I do not want reek
|
93
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
94
|
+
Then Rakefile does not require 'reek/rake/task'
|
95
|
+
And Rakefile does not instantiate a Reek::Rake::Task
|
96
|
+
|
97
|
+
Scenario: reek
|
98
|
+
Given I want reek
|
99
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
100
|
+
Then Rakefile requires 'reek/rake/task'
|
101
|
+
And Rakefile instantiates a Reek::Rake::Task
|
102
|
+
|
103
|
+
Scenario: no roodi
|
104
|
+
Given I do not want roodi
|
105
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
106
|
+
Then Rakefile does not require 'roodi'
|
107
|
+
And Rakefile does not require 'roodi_task'
|
108
|
+
And Rakefile does not instantiate a RoodiTask
|
109
|
+
|
110
|
+
Scenario: roodi
|
111
|
+
Given I want roodi
|
112
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
113
|
+
Then Rakefile requires 'roodi'
|
114
|
+
And Rakefile requires 'roodi_task'
|
115
|
+
And Rakefile instantiates a RoodiTask
|
116
|
+
|
117
|
+
Scenario: no rubyforge
|
118
|
+
Given I do not want rubyforge setup
|
119
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
120
|
+
Then Rakefile does not instantiate a Juwelier::RubyforgeTasks
|
121
|
+
|
122
|
+
Scenario: yard
|
123
|
+
Given I want to use yard instead of rdoc
|
124
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
125
|
+
|
126
|
+
Then 'Rakefile' does not require 'rdoc/task'
|
127
|
+
And 'Rakefile' requires 'yard'
|
128
|
+
And Rakefile instantiates a YARD::Rake::YardocTask
|
129
|
+
|
130
|
+
Scenario: rdoc
|
131
|
+
Given I want to use rdoc instead of yard
|
132
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
133
|
+
|
134
|
+
Then 'Rakefile' does not require 'yard'
|
135
|
+
And 'Rakefile' requires 'rdoc/task'
|
136
|
+
And Rakefile does not instantiate a YARD::Rake::YardocTask
|
137
|
+
And Rakefile instantiates a Rake::RDocTask.new
|
138
|
+
|
139
|
+
Scenario: shindo
|
140
|
+
When I generate a shindo project named 'the-perfect-gem' that is 'zomg, so good'
|
141
|
+
And 'Rakefile' requires 'shindo/rake'
|
142
|
+
And Rakefile instantiates a Shindo::Rake.new
|
143
|
+
And Rakefile has "tests" as the default task
|
144
|
+
|
145
|
+
|
146
|
+
Scenario: bundler
|
147
|
+
Given I want bundler
|
148
|
+
When I generate a project named 'the-perfect-gem' that is 'zomg, so good' and described as 'Descriptive'
|
149
|
+
Then 'Rakefile' requires 'bundler'
|
150
|
+
And 'Rakefile' sets up bundler using the default and development groups
|
151
|
+
And Rakefile does not add 'juwelier' as a development dependency to Juwelier::Tasks
|
152
|
+
|
153
|
+
Scenario: no bundler
|
154
|
+
Given I do not want bundler
|
155
|
+
When I generate a project named 'the-perfect-gem' that is 'zomg, so good' and described as 'Descriptive'
|
156
|
+
Then 'Rakefile' does not require 'bundler'
|
157
|
+
And 'Rakefile' does not setup bundler
|
158
|
+
And Rakefile adds 'juwelier' as a development dependency to Juwelier::Tasks
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Feature: generated license
|
2
|
+
In order to start a new gem
|
3
|
+
A user should be able to
|
4
|
+
generate a default license
|
5
|
+
|
6
|
+
Scenario: copyright
|
7
|
+
Given a working directory
|
8
|
+
And I have configured git sanely
|
9
|
+
When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
|
10
|
+
|
11
|
+
Then 'README.rdoc' contains '= the-perfect-gem'
|
12
|
+
And 'README.rdoc' mentions copyright belonging to me in the current year
|
@@ -0,0 +1,54 @@
|
|
1
|
+
Feature: generated test or spec
|
2
|
+
In order to start a new gem
|
3
|
+
A user should be able to
|
4
|
+
generate a test or spec
|
5
|
+
|
6
|
+
Scenario: bacon
|
7
|
+
Given a working directory
|
8
|
+
And I have configured git sanely
|
9
|
+
When I generate a bacon project named 'the-perfect-gem' that is 'zomg, so good'
|
10
|
+
Then 'spec/the-perfect-gem_spec.rb' should describe 'ThePerfectGem'
|
11
|
+
|
12
|
+
Scenario: minitest
|
13
|
+
Given a working directory
|
14
|
+
And I have configured git sanely
|
15
|
+
When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'
|
16
|
+
Then 'test/test_the-perfect-gem.rb' should define 'TestThePerfectGem' as a subclass of 'MiniTest::Unit::TestCase'
|
17
|
+
|
18
|
+
Scenario: rspec
|
19
|
+
Given a working directory
|
20
|
+
And I have configured git sanely
|
21
|
+
When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'
|
22
|
+
Then 'spec/the-perfect-gem_spec.rb' should describe 'ThePerfectGem'
|
23
|
+
|
24
|
+
Scenario: shoulda
|
25
|
+
Given a working directory
|
26
|
+
And I have configured git sanely
|
27
|
+
And I intend to test with shoulda
|
28
|
+
When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
|
29
|
+
Then 'test/test_the-perfect-gem.rb' should define 'TestThePerfectGem' as a subclass of 'Test::Unit::TestCase'
|
30
|
+
|
31
|
+
Scenario: testunit
|
32
|
+
Given a working directory
|
33
|
+
And I have configured git sanely
|
34
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
35
|
+
Then 'test/test_the-perfect-gem.rb' should define 'TestThePerfectGem' as a subclass of 'Test::Unit::TestCase'
|
36
|
+
|
37
|
+
Scenario: micronaut
|
38
|
+
Given a working directory
|
39
|
+
And I have configured git sanely
|
40
|
+
When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'
|
41
|
+
Then 'examples/the-perfect-gem_example.rb' should describe 'ThePerfectGem'
|
42
|
+
|
43
|
+
Scenario: riot
|
44
|
+
Given a working directory
|
45
|
+
And I have configured git sanely
|
46
|
+
When I generate a riot project named 'the-perfect-gem' that is 'zomg, so good'
|
47
|
+
Then 'test/the-perfect-gem_test.rb' should contextualize 'the-perfect-gem'
|
48
|
+
And 'test/the-perfect-gem_test.rb' requires 'teststrap'
|
49
|
+
|
50
|
+
Scenario: shindo
|
51
|
+
Given a working directory
|
52
|
+
And I have configured git sanely
|
53
|
+
When I generate a shindo project named 'the-perfect-gem' that is 'zomg, so good'
|
54
|
+
Then 'tests/the-perfect-gem_tests.rb' should have tests for 'ThePerfectGem'
|
@@ -0,0 +1,149 @@
|
|
1
|
+
Feature: generated test or spec
|
2
|
+
In order to start a new gem
|
3
|
+
A user should be able to
|
4
|
+
generate a test or spec
|
5
|
+
|
6
|
+
Scenario: bacon w/ bundler
|
7
|
+
Given a working directory
|
8
|
+
And I have configured git sanely
|
9
|
+
And I want bundler
|
10
|
+
When I generate a bacon project named 'the-perfect-gem' that is 'zomg, so good'
|
11
|
+
Then 'spec/spec_helper.rb' requires 'bundler'
|
12
|
+
And 'spec/spec_helper.rb' sets up bundler using the default and development groups
|
13
|
+
And 'spec/spec_helper.rb' requires 'bacon'
|
14
|
+
And 'spec/spec_helper.rb' requires 'the-perfect-gem'
|
15
|
+
|
16
|
+
Scenario: bacon w/o bundler
|
17
|
+
Given a working directory
|
18
|
+
And I have configured git sanely
|
19
|
+
And I do not want bundler
|
20
|
+
When I generate a bacon project named 'the-perfect-gem' that is 'zomg, so good'
|
21
|
+
Then 'spec/spec_helper.rb' does not require 'bundler'
|
22
|
+
And 'spec/spec_helper.rb' does not setup bundler
|
23
|
+
|
24
|
+
Scenario: minitest w/ bundler
|
25
|
+
Given a working directory
|
26
|
+
And I have configured git sanely
|
27
|
+
And I want bundler
|
28
|
+
When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'
|
29
|
+
Then 'test/helper.rb' requires 'bundler'
|
30
|
+
And 'test/helper.rb' sets up bundler using the default and development groups
|
31
|
+
And 'test/helper.rb' requires 'minitest/unit'
|
32
|
+
And 'test/helper.rb' requires 'the-perfect-gem'
|
33
|
+
And 'test/helper.rb' should autorun tests
|
34
|
+
|
35
|
+
Scenario: minitest w/o bundler
|
36
|
+
Given a working directory
|
37
|
+
And I have configured git sanely
|
38
|
+
And I do not want bundler
|
39
|
+
When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'
|
40
|
+
Then 'test/helper.rb' does not require 'bundler'
|
41
|
+
And 'test/helper.rb' does not setup bundler
|
42
|
+
|
43
|
+
Scenario: rspec w/ bundler
|
44
|
+
Given a working directory
|
45
|
+
And I have configured git sanely
|
46
|
+
And I want bundler
|
47
|
+
When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'
|
48
|
+
Then 'spec/spec_helper.rb' requires 'rspec'
|
49
|
+
And 'spec/spec_helper.rb' requires 'the-perfect-gem'
|
50
|
+
|
51
|
+
Scenario: rspec w/o bundler
|
52
|
+
Given a working directory
|
53
|
+
And I have configured git sanely
|
54
|
+
And I do not want bundler
|
55
|
+
When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'
|
56
|
+
Then 'spec/spec_helper.rb' does not require 'bundler'
|
57
|
+
And 'spec/spec_helper.rb' does not setup bundler
|
58
|
+
|
59
|
+
Scenario: shoulda w/ bundler
|
60
|
+
Given a working directory
|
61
|
+
And I have configured git sanely
|
62
|
+
And I want bundler
|
63
|
+
When I generate a shoulda project named 'the-perfect-gem' that is 'zomg, so good'
|
64
|
+
Then 'test/helper.rb' requires 'bundler'
|
65
|
+
And 'test/helper.rb' sets up bundler using the default and development groups
|
66
|
+
And 'test/helper.rb' requires 'test/unit'
|
67
|
+
And 'test/helper.rb' requires 'shoulda'
|
68
|
+
And 'test/helper.rb' requires 'the-perfect-gem'
|
69
|
+
|
70
|
+
Scenario: shoulda w/o bundler
|
71
|
+
Given a working directory
|
72
|
+
And I have configured git sanely
|
73
|
+
And I do not want bundler
|
74
|
+
When I generate a shoulda project named 'the-perfect-gem' that is 'zomg, so good'
|
75
|
+
And 'test/helper.rb' does not require 'bundler'
|
76
|
+
And 'test/helper.rb' does not setup bundler
|
77
|
+
|
78
|
+
Scenario: testunit w/ bundler
|
79
|
+
Given a working directory
|
80
|
+
And I have configured git sanely
|
81
|
+
And I want bundler
|
82
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
83
|
+
Then 'test/helper.rb' requires 'test/unit'
|
84
|
+
And 'test/helper.rb' requires 'the-perfect-gem'
|
85
|
+
And 'test/helper.rb' requires 'bundler'
|
86
|
+
And 'test/helper.rb' sets up bundler using the default and development groups
|
87
|
+
|
88
|
+
Scenario: testunit w/o bundler
|
89
|
+
Given a working directory
|
90
|
+
And I have configured git sanely
|
91
|
+
And I do not want bundler
|
92
|
+
When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
|
93
|
+
And 'test/helper.rb' does not require 'bundler'
|
94
|
+
And 'test/helper.rb' does not setup bundler
|
95
|
+
|
96
|
+
Scenario: micronaut w/ bundler
|
97
|
+
Given a working directory
|
98
|
+
And I have configured git sanely
|
99
|
+
And I want bundler
|
100
|
+
When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'
|
101
|
+
Then 'examples/example_helper.rb' requires 'rubygems'
|
102
|
+
Then 'examples/example_helper.rb' requires 'micronaut'
|
103
|
+
Then 'examples/example_helper.rb' requires 'the-perfect-gem'
|
104
|
+
And 'examples/example_helper.rb' requires 'bundler'
|
105
|
+
And 'examples/example_helper.rb' sets up bundler using the default and development groups
|
106
|
+
|
107
|
+
Scenario: micronaut w/o bundler
|
108
|
+
Given a working directory
|
109
|
+
And I have configured git sanely
|
110
|
+
And I do not want bundler
|
111
|
+
When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'
|
112
|
+
And 'examples/example_helper.rb' does not require 'bundler'
|
113
|
+
And 'examples/example_helper.rb' does not setup bundler
|
114
|
+
|
115
|
+
Scenario: riot w/ bundler
|
116
|
+
Given a working directory
|
117
|
+
And I have configured git sanely
|
118
|
+
And I want bundler
|
119
|
+
When I generate a riot project named 'the-perfect-gem' that is 'zomg, so good'
|
120
|
+
Then 'test/teststrap.rb' requires 'riot'
|
121
|
+
And 'test/teststrap.rb' requires 'the-perfect-gem'
|
122
|
+
And 'test/teststrap.rb' requires 'bundler'
|
123
|
+
And 'test/teststrap.rb' sets up bundler using the default and development groups
|
124
|
+
|
125
|
+
Scenario: riot w/o bundler
|
126
|
+
Given a working directory
|
127
|
+
And I have configured git sanely
|
128
|
+
And I do not want bundler
|
129
|
+
When I generate a riot project named 'the-perfect-gem' that is 'zomg, so good'
|
130
|
+
And 'test/teststrap.rb' does not require 'bundler'
|
131
|
+
And 'test/teststrap.rb' does not setup bundler
|
132
|
+
|
133
|
+
Scenario: shindo w/ bundler
|
134
|
+
Given a working directory
|
135
|
+
And I have configured git sanely
|
136
|
+
And I want bundler
|
137
|
+
When I generate a shindo project named 'the-perfect-gem' that is 'zomg, so good'
|
138
|
+
Then 'tests/tests_helper.rb' requires 'the-perfect-gem'
|
139
|
+
Then 'tests/tests_helper.rb' requires 'shindo'
|
140
|
+
Then 'tests/tests_helper.rb' requires 'bundler'
|
141
|
+
And 'tests/tests_helper.rb' sets up bundler using the default and development groups
|
142
|
+
|
143
|
+
Scenario: shindo w/o bundler
|
144
|
+
Given a working directory
|
145
|
+
And I have configured git sanely
|
146
|
+
And I do not want bundler
|
147
|
+
When I generate a shindo project named 'the-perfect-gem' that is 'zomg, so good'
|
148
|
+
Then 'tests/tests_helper.rb' does not require 'bundler'
|
149
|
+
And 'tests/tests_helper.rb' does not setup bundler
|
@@ -0,0 +1,70 @@
|
|
1
|
+
Given 'a working directory' do
|
2
|
+
@working_dir = create_construct
|
3
|
+
end
|
4
|
+
|
5
|
+
After do
|
6
|
+
@working_dir.destroy! if @working_dir
|
7
|
+
end
|
8
|
+
|
9
|
+
Given /^I use the juwelier command to generate the "([^"]+)" project in the working directory$/ do |name|
|
10
|
+
@name = name
|
11
|
+
|
12
|
+
return_to = Dir.pwd
|
13
|
+
path_to_juwelier = File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'bin', 'juwelier')
|
14
|
+
|
15
|
+
begin
|
16
|
+
FileUtils.cd @working_dir
|
17
|
+
@stdout = `#{path_to_juwelier} #{@name}`
|
18
|
+
ensure
|
19
|
+
FileUtils.cd return_to
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Given /^"([^"]+)" does not exist$/ do |file|
|
24
|
+
assert ! File.exists?(File.join(@working_dir, file))
|
25
|
+
end
|
26
|
+
|
27
|
+
When /^I run "([^"]+)" in "([^"]+)"$/ do |command, directory|
|
28
|
+
full_path = File.join(@working_dir, directory)
|
29
|
+
|
30
|
+
lib_path = File.expand_path 'lib'
|
31
|
+
command.gsub!(/^rake /, "rake --trace -I#{lib_path} ")
|
32
|
+
|
33
|
+
assert File.directory?(full_path), "#{full_path} is not a directory"
|
34
|
+
|
35
|
+
@stdout = `cd #{full_path} && #{command}`
|
36
|
+
@exited_cleanly = $?.exited?
|
37
|
+
end
|
38
|
+
|
39
|
+
Then /^the updated version, (.*), is displayed$/ do |version|
|
40
|
+
assert_match "Updated version: #{version}", @stdout
|
41
|
+
end
|
42
|
+
|
43
|
+
Then /^the current version, (\d+\.\d+\.\d+), is displayed$/ do |version|
|
44
|
+
assert_match "Current version: #{version}", @stdout
|
45
|
+
end
|
46
|
+
|
47
|
+
Then /^the process should exit cleanly$/ do
|
48
|
+
assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}"
|
49
|
+
end
|
50
|
+
|
51
|
+
Then /^the process should not exit cleanly$/ do
|
52
|
+
assert !@exited_cleanly, "Process did exit cleanly: #{@stdout}"
|
53
|
+
end
|
54
|
+
|
55
|
+
Given /^I use the existing project "([^"]+)" as a template$/ do |fixture_project|
|
56
|
+
@name = fixture_project
|
57
|
+
FileUtils.cp_r File.join(fixture_dir, fixture_project), @working_dir
|
58
|
+
end
|
59
|
+
|
60
|
+
Given /^"VERSION\.yml" contains hash "([^"]+)"$/ do |ruby_string|
|
61
|
+
version_hash = YAML.load(File.read(File.join(@working_dir, @name, 'VERSION.yml')))
|
62
|
+
evaled_hash = eval(ruby_string)
|
63
|
+
assert_equal evaled_hash, version_hash
|
64
|
+
end
|
65
|
+
|
66
|
+
Given /^"VERSION" contains "([^\"]*)"$/ do |expected|
|
67
|
+
version = File.read(File.join(@working_dir, @name, 'VERSION')).chomp
|
68
|
+
assert_equal expected, version
|
69
|
+
end
|
70
|
+
|