mcornick-jeweler 1.2.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.
Files changed (130) hide show
  1. data/.gitignore +9 -0
  2. data/ChangeLog.markdown +111 -0
  3. data/LICENSE +20 -0
  4. data/README.markdown +185 -0
  5. data/ROADMAP +12 -0
  6. data/Rakefile +103 -0
  7. data/VERSION.yml +4 -0
  8. data/bin/jeweler +8 -0
  9. data/features/generator/cucumber.feature +83 -0
  10. data/features/generator/directory_layout.feature +76 -0
  11. data/features/generator/dotdocument.feature +14 -0
  12. data/features/generator/env_options.feature +9 -0
  13. data/features/generator/git.feature +94 -0
  14. data/features/generator/license.feature +11 -0
  15. data/features/generator/rakefile.feature +151 -0
  16. data/features/generator/readme.feature +12 -0
  17. data/features/generator/test.feature +41 -0
  18. data/features/generator/test_helper.feature +49 -0
  19. data/features/placeholder.feature +5 -0
  20. data/features/step_definitions/debug_steps.rb +6 -0
  21. data/features/step_definitions/filesystem_steps.rb +68 -0
  22. data/features/step_definitions/generator_steps.rb +284 -0
  23. data/features/step_definitions/task_steps.rb +6 -0
  24. data/features/support/env.rb +29 -0
  25. data/features/tasks/build_gem.feature +9 -0
  26. data/features/tasks/version.feature +24 -0
  27. data/features/tasks/version_bumping.feature +33 -0
  28. data/jeweler.gemspec +225 -0
  29. data/lib/jeweler.rb +153 -0
  30. data/lib/jeweler/commands.rb +14 -0
  31. data/lib/jeweler/commands/build_gem.rb +31 -0
  32. data/lib/jeweler/commands/check_dependencies.rb +52 -0
  33. data/lib/jeweler/commands/install_gem.rb +40 -0
  34. data/lib/jeweler/commands/release.rb +86 -0
  35. data/lib/jeweler/commands/release_to_rubyforge.rb +51 -0
  36. data/lib/jeweler/commands/setup_rubyforge.rb +57 -0
  37. data/lib/jeweler/commands/validate_gemspec.rb +30 -0
  38. data/lib/jeweler/commands/version/base.rb +41 -0
  39. data/lib/jeweler/commands/version/bump_major.rb +13 -0
  40. data/lib/jeweler/commands/version/bump_minor.rb +12 -0
  41. data/lib/jeweler/commands/version/bump_patch.rb +14 -0
  42. data/lib/jeweler/commands/version/write.rb +12 -0
  43. data/lib/jeweler/commands/write_gemspec.rb +39 -0
  44. data/lib/jeweler/errors.rb +20 -0
  45. data/lib/jeweler/gemspec_helper.rb +79 -0
  46. data/lib/jeweler/generator.rb +306 -0
  47. data/lib/jeweler/generator/application.rb +54 -0
  48. data/lib/jeweler/generator/bacon_mixin.rb +43 -0
  49. data/lib/jeweler/generator/micronaut_mixin.rb +41 -0
  50. data/lib/jeweler/generator/minitest_mixin.rb +42 -0
  51. data/lib/jeweler/generator/options.rb +102 -0
  52. data/lib/jeweler/generator/rdoc_mixin.rb +9 -0
  53. data/lib/jeweler/generator/rspec_mixin.rb +42 -0
  54. data/lib/jeweler/generator/shoulda_mixin.rb +42 -0
  55. data/lib/jeweler/generator/testunit_mixin.rb +39 -0
  56. data/lib/jeweler/generator/yard_mixin.rb +14 -0
  57. data/lib/jeweler/rubyforge_tasks.rb +98 -0
  58. data/lib/jeweler/specification.rb +66 -0
  59. data/lib/jeweler/tasks.rb +135 -0
  60. data/lib/jeweler/templates/.document +5 -0
  61. data/lib/jeweler/templates/.gitignore +5 -0
  62. data/lib/jeweler/templates/LICENSE +20 -0
  63. data/lib/jeweler/templates/README.rdoc +18 -0
  64. data/lib/jeweler/templates/Rakefile +153 -0
  65. data/lib/jeweler/templates/bacon/flunking.rb +7 -0
  66. data/lib/jeweler/templates/bacon/helper.rb +8 -0
  67. data/lib/jeweler/templates/features/default.feature +9 -0
  68. data/lib/jeweler/templates/features/support/env.rb +8 -0
  69. data/lib/jeweler/templates/micronaut/flunking.rb +7 -0
  70. data/lib/jeweler/templates/micronaut/helper.rb +17 -0
  71. data/lib/jeweler/templates/minitest/flunking.rb +7 -0
  72. data/lib/jeweler/templates/minitest/helper.rb +11 -0
  73. data/lib/jeweler/templates/rspec/flunking.rb +7 -0
  74. data/lib/jeweler/templates/rspec/helper.rb +10 -0
  75. data/lib/jeweler/templates/shoulda/flunking.rb +7 -0
  76. data/lib/jeweler/templates/shoulda/helper.rb +10 -0
  77. data/lib/jeweler/templates/testunit/flunking.rb +7 -0
  78. data/lib/jeweler/templates/testunit/helper.rb +9 -0
  79. data/lib/jeweler/version_helper.rb +128 -0
  80. data/test/fixtures/bar/VERSION.yml +4 -0
  81. data/test/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
  82. data/test/fixtures/bar/hey_include_me_in_gemspec +0 -0
  83. data/test/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
  84. data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
  85. data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
  86. data/test/fixtures/existing-project-with-version-plaintext/LICENSE +20 -0
  87. data/test/fixtures/existing-project-with-version-plaintext/README.rdoc +7 -0
  88. data/test/fixtures/existing-project-with-version-plaintext/Rakefile +82 -0
  89. data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
  90. data/test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec +29 -0
  91. data/test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb +0 -0
  92. data/test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb +7 -0
  93. data/test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb +10 -0
  94. data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
  95. data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
  96. data/test/fixtures/existing-project-with-version-yaml/LICENSE +20 -0
  97. data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
  98. data/test/fixtures/existing-project-with-version-yaml/Rakefile +82 -0
  99. data/test/fixtures/existing-project-with-version-yaml/VERSION.yml +4 -0
  100. data/test/fixtures/existing-project-with-version-yaml/bin/foo_the_ultimate_bin +0 -0
  101. data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
  102. data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
  103. data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
  104. data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
  105. data/test/geminstaller.yml +12 -0
  106. data/test/jeweler/commands/test_build_gem.rb +72 -0
  107. data/test/jeweler/commands/test_install_gem.rb +74 -0
  108. data/test/jeweler/commands/test_release.rb +362 -0
  109. data/test/jeweler/commands/test_release_to_rubyforge.rb +157 -0
  110. data/test/jeweler/commands/test_setup_rubyforge.rb +182 -0
  111. data/test/jeweler/commands/test_validate_gemspec.rb +27 -0
  112. data/test/jeweler/commands/test_write_gemspec.rb +92 -0
  113. data/test/jeweler/commands/version/test_base.rb +32 -0
  114. data/test/jeweler/commands/version/test_bump_major.rb +22 -0
  115. data/test/jeweler/commands/version/test_bump_minor.rb +19 -0
  116. data/test/jeweler/commands/version/test_bump_patch.rb +20 -0
  117. data/test/jeweler/commands/version/test_write.rb +23 -0
  118. data/test/shoulda_macros/jeweler_macros.rb +35 -0
  119. data/test/test_application.rb +139 -0
  120. data/test/test_gemspec_helper.rb +40 -0
  121. data/test/test_generator.rb +166 -0
  122. data/test/test_generator_initialization.rb +156 -0
  123. data/test/test_generator_mixins.rb +18 -0
  124. data/test/test_helper.rb +159 -0
  125. data/test/test_jeweler.rb +174 -0
  126. data/test/test_options.rb +149 -0
  127. data/test/test_specification.rb +61 -0
  128. data/test/test_tasks.rb +35 -0
  129. data/test/test_version_helper.rb +153 -0
  130. metadata +283 -0
@@ -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,41 @@
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/the-perfect-gem_test.rb' should define 'ThePerfectGemTest' as a subclass of 'Mini::Test::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/the-perfect-gem_test.rb' should define 'ThePerfectGemTest' 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/the-perfect-gem_test.rb' should define 'ThePerfectGemTest' 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'
@@ -0,0 +1,49 @@
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/spec_helper.rb' requires 'bacon'
11
+ And 'spec/spec_helper.rb' requires 'the-perfect-gem'
12
+
13
+ Scenario: minitest
14
+ Given a working directory
15
+ And I have configured git sanely
16
+ When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'
17
+ Then 'test/test_helper.rb' requires 'mini/test'
18
+ And 'test/test_helper.rb' requires 'the-perfect-gem'
19
+ And 'test/test_helper.rb' should autorun tests
20
+
21
+ Scenario: rspec
22
+ Given a working directory
23
+ And I have configured git sanely
24
+ When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'
25
+ Then 'spec/spec_helper.rb' requires 'spec'
26
+ And 'spec/spec_helper.rb' requires 'the-perfect-gem'
27
+
28
+ Scenario: shoulda
29
+ Given a working directory
30
+ And I have configured git sanely
31
+ When I generate a shoulda project named 'the-perfect-gem' that is 'zomg, so good'
32
+ Then 'test/test_helper.rb' requires 'test/unit'
33
+ And 'test/test_helper.rb' requires 'shoulda'
34
+ And 'test/test_helper.rb' requires 'the-perfect-gem'
35
+
36
+ Scenario: testunit
37
+ Given a working directory
38
+ And I have configured git sanely
39
+ When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
40
+ Then 'test/test_helper.rb' requires 'test/unit'
41
+ And 'test/test_helper.rb' requires 'the-perfect-gem'
42
+
43
+ Scenario: micronaut
44
+ Given a working directory
45
+ And I have configured git sanely
46
+ When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'
47
+ Then 'examples/example_helper.rb' requires 'rubygems'
48
+ Then 'examples/example_helper.rb' requires 'micronaut'
49
+ Then 'examples/example_helper.rb' requires 'the-perfect-gem'
@@ -0,0 +1,5 @@
1
+ Feature: I am a placeholder
2
+
3
+ Scenario: I am also a placeholder
4
+ Given a working directory
5
+
@@ -0,0 +1,6 @@
1
+ Then /^I debug$/ do
2
+ require 'ruby-debug'
3
+ breakpoint
4
+ 0
5
+ end
6
+
@@ -0,0 +1,68 @@
1
+ Given 'a working directory' do
2
+ @working_dir = File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'tmp')
3
+ FileUtils.rm_rf @working_dir
4
+ FileUtils.mkdir_p @working_dir
5
+ end
6
+
7
+ Given /^I use the jeweler command to generate the "([^"]+)" project in the working directory$/ do |name|
8
+ @name = name
9
+
10
+ return_to = Dir.pwd
11
+ path_to_jeweler = File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'bin', 'jeweler')
12
+
13
+ begin
14
+ FileUtils.cd @working_dir
15
+ @stdout = `#{path_to_jeweler} #{@name}`
16
+ ensure
17
+ FileUtils.cd return_to
18
+ end
19
+ end
20
+
21
+ Given /^"([^"]+)" does not exist$/ do |file|
22
+ assert ! File.exists?(File.join(@working_dir, file))
23
+ end
24
+
25
+ When /^I run "([^"]+)" in "([^"]+)"$/ do |command, directory|
26
+ full_path = File.join(@working_dir, directory)
27
+
28
+ lib_path = File.expand_path 'lib'
29
+ command.gsub!(/^rake /, "rake -I#{lib_path} ")
30
+
31
+ assert File.directory?(full_path), "#{full_path} is not a directory"
32
+
33
+ @stdout = `cd #{full_path} && #{command}`
34
+ @exited_cleanly = $?.exited?
35
+ end
36
+
37
+ Then /^the updated version, (\d+\.\d+\.\d+), is displayed$/ do |version|
38
+ assert_match "Updated version: #{version}", @stdout
39
+ end
40
+
41
+ Then /^the current version, (\d+\.\d+\.\d+), is displayed$/ do |version|
42
+ assert_match "Current version: #{version}", @stdout
43
+ end
44
+
45
+ Then /^the process should exit cleanly$/ do
46
+ assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}"
47
+ end
48
+
49
+ Then /^the process should not exit cleanly$/ do
50
+ assert !@exited_cleanly, "Process did exit cleanly: #{@stdout}"
51
+ end
52
+
53
+ Given /^I use the existing project "([^"]+)" as a template$/ do |fixture_project|
54
+ @name = fixture_project
55
+ FileUtils.cp_r File.join(fixture_dir, fixture_project), @working_dir
56
+ end
57
+
58
+ Given /^"VERSION\.yml" contains hash "([^"]+)"$/ do |ruby_string|
59
+ version_hash = YAML.load(File.read(File.join(@working_dir, @name, 'VERSION.yml')))
60
+ evaled_hash = eval(ruby_string)
61
+ assert_equal evaled_hash, version_hash
62
+ end
63
+
64
+ Given /^"VERSION" contains "([^\"]*)"$/ do |expected|
65
+ version = File.read(File.join(@working_dir, @name, 'VERSION')).chomp
66
+ assert_equal expected, version
67
+ end
68
+
@@ -0,0 +1,284 @@
1
+ Given /^I do not want cucumber stories$/ do
2
+ @use_cucumber = false
3
+ end
4
+
5
+ Given /^I want cucumber stories$/ do
6
+ @use_cucumber = true
7
+ end
8
+
9
+ Given /^I do not want reek$/ do
10
+ @use_reek = false
11
+ end
12
+
13
+ Given /^I want reek$/ do
14
+ @use_reek = true
15
+ end
16
+
17
+ Given /^I do not want roodi$/ do
18
+ @use_roodi = false
19
+ end
20
+
21
+ Given /^I want roodi$/ do
22
+ @use_roodi = true
23
+ end
24
+
25
+ And /^I do not want rubyforge setup$/ do
26
+ @use_rubyforge = false
27
+ end
28
+
29
+ And /^I want rubyforge setup$/ do
30
+ @use_rubyforge = true
31
+ end
32
+
33
+ Given /^I want to use yard instead of rdoc$/ do
34
+ @documentation_framework = "yard"
35
+ end
36
+
37
+ Given /^I want to use rdoc instead of yard$/ do
38
+ @documentation_framework = "rdoc"
39
+ end
40
+
41
+
42
+ Given /^I intend to test with (\w+)$/ do |testing_framework|
43
+ @testing_framework = testing_framework.to_sym
44
+ end
45
+
46
+ Given /^I have configured git sanely$/ do
47
+ @user_email = 'bar@example.com'
48
+ @user_name = 'foo'
49
+ @github_user = 'technicalpickles'
50
+ @github_token = 'zomgtoken'
51
+
52
+ Jeweler::Generator.any_instance.stubs(:read_git_config).
53
+ returns({
54
+ 'user.name' => @user_name,
55
+ 'user.email' => @user_email,
56
+ 'github.user' => @github_user,
57
+ 'github.token' => @github_token})
58
+ end
59
+
60
+ Given /^I set JEWELER_OPTS env variable to "(.*)"$/ do |val|
61
+ ENV['JEWELER_OPTS'] = val
62
+ end
63
+
64
+ When /^I generate a (.*)project named '((?:\w|-|_)+)' that is '([^']*)'$/ do |testing_framework, name, summary|
65
+ When "I generate a #{testing_framework}project named '#{name}' that is '#{summary}' and described as ''"
66
+ end
67
+
68
+ When /^I generate a (.*)project named '((?:\w|-|_)+)' that is '([^']*)' and described as '([^']*)'$/ do |testing_framework, name, summary, description|
69
+ @name = name
70
+ @summary = summary
71
+ @description = description
72
+
73
+ testing_framework = testing_framework.squeeze.strip
74
+ unless testing_framework.blank?
75
+ @testing_framework = testing_framework.to_sym
76
+ end
77
+
78
+
79
+ arguments = ['--directory',
80
+ "#{@working_dir}/#{@name}",
81
+ '--summary', @summary,
82
+ '--description', @description,
83
+ @use_cucumber ? '--cucumber' : nil,
84
+ @testing_framework ? "--#{@testing_framework}" : nil,
85
+ @use_rubyforge ? '--rubyforge' : nil,
86
+ @use_roodi ? '--roodi' : nil,
87
+ @use_reek ? '--reek' : nil,
88
+ @documentation_framework ? "--#{@documentation_framework}" : nil,
89
+ @name].compact
90
+
91
+ @stdout = OutputCatcher.catch_out do
92
+ Jeweler::Generator::Application.run! *arguments
93
+ end
94
+
95
+ @repo = Git.open(File.join(@working_dir, @name))
96
+ end
97
+
98
+ Then /^a directory named '(.*)' is created$/ do |directory|
99
+ directory = File.join(@working_dir, directory)
100
+
101
+ assert File.exists?(directory), "#{directory} did not exist"
102
+ assert File.directory?(directory), "#{directory} is not a directory"
103
+ end
104
+
105
+ Then "cucumber directories are created" do
106
+ Then "a directory named 'the-perfect-gem/features' is created"
107
+ Then "a directory named 'the-perfect-gem/features/support' is created"
108
+ Then "a directory named 'the-perfect-gem/features/step_definitions' is created"
109
+ end
110
+
111
+
112
+ Then /^a file named '(.*)' is created$/ do |file|
113
+ file = File.join(@working_dir, file)
114
+
115
+ assert File.exists?(file), "#{file} expected to exist, but did not"
116
+ assert File.file?(file), "#{file} expected to be a file, but is not"
117
+ end
118
+
119
+ Then /^a file named '(.*)' is not created$/ do |file|
120
+ file = File.join(@working_dir, file)
121
+
122
+ assert ! File.exists?(file), "#{file} expected to not exist, but did"
123
+ end
124
+
125
+ Then /^a sane '.gitignore' is created$/ do
126
+ Then "a file named 'the-perfect-gem/.gitignore' is created"
127
+ Then "'coverage' is ignored by git"
128
+ Then "'*.sw?' is ignored by git"
129
+ Then "'.DS_Store' is ignored by git"
130
+ Then "'rdoc' is ignored by git"
131
+ Then "'pkg' is ignored by git"
132
+ end
133
+
134
+ Then /^'(.*)' is ignored by git$/ do |git_ignore|
135
+ @gitignore_content ||= File.read(File.join(@working_dir, @name, '.gitignore'))
136
+
137
+ assert_match git_ignore, @gitignore_content
138
+ end
139
+
140
+ Then /^Rakefile has '(.*)' for the (.*) (.*)$/ do |value, task_class, field|
141
+ @rakefile_content ||= File.read(File.join(@working_dir, @name, 'Rakefile'))
142
+ block_variable, task_block = yank_task_info(@rakefile_content, task_class)
143
+ #raise "Found in #{task_class}: #{block_variable.inspect}: #{task_block.inspect}"
144
+
145
+ assert_match /#{block_variable}\.#{field} = (%Q\{|"|')#{Regexp.escape(value)}(\}|"|')/, task_block
146
+ end
147
+
148
+ Then /^Rakefile has '(.*)' in the Rcov::RcovTask libs$/ do |libs|
149
+ @rakefile_content ||= File.read(File.join(@working_dir, @name, 'Rakefile'))
150
+ block_variable, task_block = yank_task_info(@rakefile_content, 'Rcov::RcovTask')
151
+
152
+ assert_match "#{block_variable}.libs << '#{libs}'", @rakefile_content
153
+ end
154
+
155
+
156
+ Then /^'(.*)' contains '(.*)'$/ do |file, expected_string|
157
+ contents = File.read(File.join(@working_dir, @name, file))
158
+ assert_match expected_string, contents
159
+ end
160
+
161
+ Then /^'(.*)' mentions copyright belonging to me in (\d{4})$/ do |file, year|
162
+ contents = File.read(File.join(@working_dir, @name, file))
163
+ assert_match "Copyright (c) #{year} #{@user_name}", contents
164
+ end
165
+
166
+ Then /^'(.*)' mentions copyright belonging to me in the current year$/ do |file|
167
+ current_year = Time.now.year
168
+ Then "'#{file}' mentions copyright belonging to me in #{current_year}"
169
+ end
170
+
171
+
172
+ Then /^LICENSE has the copyright as belonging to '(.*)' in '(\d{4})'$/ do |copyright_holder, year|
173
+ Then "a file named 'the-perfect-gem/LICENSE' is created"
174
+
175
+ @license_content ||= File.read(File.join(@working_dir, @name, 'LICENSE'))
176
+
177
+ assert_match copyright_holder, @license_content
178
+
179
+ assert_match year, @license_content
180
+ end
181
+
182
+ Then /^'(.*)' should define '(.*)' as a subclass of '(.*)'$/ do |file, class_name, superclass_name|
183
+ @test_content = File.read((File.join(@working_dir, @name, file)))
184
+
185
+ assert_match "class #{class_name} < #{superclass_name}", @test_content
186
+ end
187
+
188
+ Then /^'(.*)' should describe '(.*)'$/ do |file, describe_name|
189
+ @spec_content ||= File.read((File.join(@working_dir, @name, file)))
190
+
191
+ assert_match %Q{describe "#{describe_name}" do}, @spec_content
192
+ end
193
+
194
+ Then /^'(.*)' requires '(.*)'$/ do |file, lib|
195
+ content = File.read(File.join(@working_dir, @name, file))
196
+
197
+ assert_match /require ['"]#{Regexp.escape(lib)}['"]/, content
198
+ end
199
+
200
+ Then /^'(.*)' does not require '(.*)'$/ do |file, lib|
201
+ content = File.read(File.join(@working_dir, @name, file))
202
+
203
+ assert_no_match /require ['"]#{Regexp.escape(lib)}['"]/, content
204
+ end
205
+
206
+ Then /^Rakefile does not require '(.*)'$/ do |file|
207
+ Then "'Rakefile' does not require '#{file}'"
208
+ end
209
+
210
+ Then /^Rakefile requires '(.*)'$/ do |file|
211
+ Then "'Rakefile' requires '#{file}'"
212
+ end
213
+
214
+ Then /^Rakefile does not instantiate a (.*)$/ do |task_name|
215
+ content = File.read(File.join(@working_dir, @name, 'Rakefile'))
216
+ assert_no_match /#{task_name}/, content
217
+ end
218
+
219
+ Then /^Rakefile instantiates a (.*)$/ do |task_name|
220
+ content = File.read(File.join(@working_dir, @name, 'Rakefile'))
221
+ assert_match /#{task_name}/, content
222
+ end
223
+
224
+
225
+ Then /^'test\/test_helper\.rb' should autorun tests$/ do
226
+ content = File.read(File.join(@working_dir, @name, 'test/test_helper.rb'))
227
+
228
+ assert_match "Mini::Test.autorun", content
229
+ end
230
+
231
+ Then /^cucumber world extends "(.*)"$/ do |module_to_extend|
232
+ content = File.read(File.join(@working_dir, @name, 'features', 'support', 'env.rb'))
233
+ assert_match "World(#{module_to_extend})", content
234
+ end
235
+
236
+
237
+ Then /^'features\/support\/env\.rb' sets up features to use test\/unit assertions$/ do
238
+
239
+ end
240
+
241
+ Then /^'features\/support\/env\.rb' sets up features to use minitest assertions$/ do
242
+ content = File.read(File.join(@working_dir, @name, 'features', 'support', 'env.rb'))
243
+
244
+ assert_match "world.extend(Mini::Test::Assertions)", content
245
+ end
246
+
247
+ Then /^git repository has '(.*)' remote$/ do |remote|
248
+ remote = @repo.remotes.first
249
+
250
+ assert_equal 'origin', remote.name
251
+ end
252
+
253
+ Then /^git repository '(.*)' remote should be '(.*)'/ do |remote, remote_url|
254
+ remote = @repo.remotes.first
255
+
256
+ assert_equal 'git@github.com:technicalpickles/the-perfect-gem.git', remote.url
257
+ end
258
+
259
+ Then /^a commit with the message '(.*)' is made$/ do |message|
260
+ assert_match message, @repo.log.first.message
261
+ end
262
+
263
+ Then /^'(.*)' was checked in$/ do |file|
264
+ status = @repo.status[file]
265
+
266
+ assert_not_nil status, "wasn't able to get status for #{file}"
267
+ assert ! status.untracked, "#{file} was untracked"
268
+ assert_nil status.type, "#{file} had a type. it should have been nil"
269
+ end
270
+
271
+ Then /^no files are (\w+)$/ do |type|
272
+ assert_equal 0, @repo.status.send(type).size
273
+ end
274
+
275
+ Then /^Rakefile has "(.*)" as the default task$/ do |task|
276
+ @rakefile_content ||= File.read(File.join(@working_dir, @name, 'Rakefile'))
277
+ assert_match "task :default => :#{task}", @rakefile_content
278
+ end
279
+
280
+
281
+ After do
282
+ ENV['JEWELER_OPTS'] = nil
283
+ FileUtils.rm_rf @working_dir if @working_dir
284
+ end