technicalpickles-jeweler 0.6.0 → 0.6.1
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.
- data/README.markdown +8 -11
- data/VERSION.yml +1 -1
- data/bin/jeweler +4 -0
- data/lib/jeweler/gemspec.rb +6 -1
- data/lib/jeweler/generator.rb +36 -11
- data/lib/jeweler/tasks.rb +11 -2
- data/lib/jeweler/templates/Rakefile +1 -1
- data/lib/jeweler/templates/{spec → bacon}/flunking_spec.rb +0 -0
- data/lib/jeweler/templates/{spec → bacon}/spec_helper.rb +0 -0
- data/lib/jeweler/templates/{test → shoulda}/flunking_test.rb +0 -0
- data/lib/jeweler/templates/{test → shoulda}/test_helper.rb +0 -0
- data/test/jeweler_generator_test.rb +80 -265
- metadata +7 -7
data/README.markdown
CHANGED
@@ -75,14 +75,16 @@ Here's a rundown of what's happening:
|
|
75
75
|
|
76
76
|
## Bootstrap a new project
|
77
77
|
|
78
|
-
Before proceeding, take a minute to setup your git environment, specifically your name and
|
78
|
+
Before proceeding, take a minute to setup your git environment, specifically your name, email address, and GitHub username
|
79
79
|
|
80
80
|
$ git config --global user.email johndoe@example.com
|
81
81
|
$ git config --global user.name 'John Doe'
|
82
|
+
$ git config --global github.user johndoe
|
83
|
+
$ git config --global github.token 55555555555555
|
82
84
|
|
83
|
-
Jeweler provides a generator of sorts, `jeweler`. It takes
|
85
|
+
Jeweler provides a generator of sorts, `jeweler`. It requires only argument, the name of a repo you want to create. It also takes a few options: --[shoulda](http://github.com/thoughtbot/shoulda) and --[bacon](http://github.com/chneukirchen/bacon/tree/master). These control what type of tests are created, with the default being shoulda.
|
84
86
|
|
85
|
-
$ jeweler
|
87
|
+
$ jeweler --create-repo the-perfect-gem
|
86
88
|
|
87
89
|
Basically, this does:
|
88
90
|
|
@@ -96,14 +98,9 @@ Basically, this does:
|
|
96
98
|
* `test/the_perfect_gem.rb`, placeholder failing test
|
97
99
|
* `lib/the_perfect_gem.rb`, placeholder library file
|
98
100
|
* Makes it a git repo
|
99
|
-
* Sets up `git@github.com:
|
100
|
-
* Makes an initial commit
|
101
|
-
|
102
|
-
At this point, you probably should create a repository by wandering to [http://github.com/repositories/new](http://github.com/repositories/new). Be sure to use the same project name you told Jeweler.
|
103
|
-
|
104
|
-
With the repository firmly created, just push it:
|
105
|
-
|
106
|
-
$ git push origin master
|
101
|
+
* Sets up `git@github.com:johndoe/jeweler.git` as the `origin` git remote
|
102
|
+
* Makes an initial commit
|
103
|
+
* Sets up a new repository on GitHub and pushes to it (omit --create-repo to skip this)
|
107
104
|
|
108
105
|
You also probably should [enable RubyGem creation for you repository](http://github.com/blog/51-github-s-rubygem-server): Go to your project's edit page and check the 'RubyGem' box.
|
109
106
|
|
data/VERSION.yml
CHANGED
data/bin/jeweler
CHANGED
data/lib/jeweler/gemspec.rb
CHANGED
@@ -38,6 +38,11 @@ class Jeweler
|
|
38
38
|
Thread.new { eval("$SAFE = 3\n#{data}", binding, gemspec_path) }.join
|
39
39
|
end
|
40
40
|
|
41
|
+
def unsafe_parse_gemspec(data = nil)
|
42
|
+
data ||= File.read(gemspec_path)
|
43
|
+
eval(data, binding, gemspec_path)
|
44
|
+
end
|
45
|
+
|
41
46
|
protected
|
42
47
|
def gemspec_path
|
43
48
|
denormalized_path = File.join(@base_dir, "#{@gemspec.name}.gemspec")
|
@@ -45,4 +50,4 @@ class Jeweler
|
|
45
50
|
absolute_path.gsub(Dir.getwd + File::SEPARATOR, '')
|
46
51
|
end
|
47
52
|
end
|
48
|
-
end
|
53
|
+
end
|
data/lib/jeweler/generator.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'git'
|
2
2
|
require 'erb'
|
3
3
|
|
4
|
+
require 'net/http'
|
5
|
+
require 'uri'
|
6
|
+
|
4
7
|
class Jeweler
|
5
8
|
class NoGitUserName < StandardError
|
6
9
|
end
|
@@ -12,14 +15,16 @@ class Jeweler
|
|
12
15
|
end
|
13
16
|
class NoGitHubUser < StandardError
|
14
17
|
end
|
15
|
-
class
|
18
|
+
class NoGitHubToken < StandardError
|
16
19
|
end
|
17
|
-
|
20
|
+
class GitInitFailed < StandardError
|
21
|
+
end
|
18
22
|
|
19
|
-
class Generator
|
23
|
+
class Generator
|
20
24
|
attr_accessor :target_dir, :user_name, :user_email,
|
21
|
-
:github_repo_name, :github_remote, :github_url, :github_username,
|
22
|
-
:lib_dir, :constant_name, :file_name_prefix, :config, :test_style
|
25
|
+
:github_repo_name, :github_remote, :github_url, :github_username, :github_token,
|
26
|
+
:lib_dir, :constant_name, :file_name_prefix, :config, :test_style,
|
27
|
+
:repo, :should_create_repo
|
23
28
|
|
24
29
|
def initialize(github_repo_name, options = {})
|
25
30
|
check_user_git_config()
|
@@ -37,11 +42,17 @@ class Jeweler
|
|
37
42
|
self.lib_dir = File.join(target_dir, 'lib')
|
38
43
|
self.constant_name = self.github_repo_name.split(/[-_]/).collect{|each| each.capitalize }.join
|
39
44
|
self.file_name_prefix = self.github_repo_name.gsub('-', '_')
|
45
|
+
self.should_create_repo = options[:create_repo]
|
40
46
|
end
|
41
47
|
|
42
48
|
def run
|
43
49
|
create_files
|
44
50
|
gitify
|
51
|
+
puts "Jeweler has prepared your gem in #{github_repo_name}"
|
52
|
+
if should_create_repo
|
53
|
+
create_and_push_repo
|
54
|
+
puts "Jeweler has pushed your repo to #{github_url}"
|
55
|
+
end
|
45
56
|
end
|
46
57
|
|
47
58
|
def testspec
|
@@ -73,8 +84,8 @@ class Jeweler
|
|
73
84
|
output_template_in_target('Rakefile')
|
74
85
|
output_template_in_target('LICENSE')
|
75
86
|
output_template_in_target('README')
|
76
|
-
output_template_in_target("#{testspec}/#{testspec}_helper.rb")
|
77
|
-
output_template_in_target("#{
|
87
|
+
output_template_in_target("#{test_style}/#{testspec}_helper.rb", "#{testspec}/#{testspec}_helper.rb")
|
88
|
+
output_template_in_target("#{test_style}/flunking_#{testspec}.rb", "#{testspec}/#{file_name_prefix}_#{testspec}.rb")
|
78
89
|
|
79
90
|
FileUtils.touch File.join(lib_dir, "#{file_name_prefix}.rb")
|
80
91
|
end
|
@@ -93,10 +104,15 @@ class Jeweler
|
|
93
104
|
unless config.has_key? 'github.user'
|
94
105
|
raise NoGitHubUser, %Q{No github.user set in ~/.gitconfig. Set it with: git config --global github.user 'Your username here'}
|
95
106
|
end
|
107
|
+
|
108
|
+
unless config.has_key? 'github.token'
|
109
|
+
raise NoGitHubToken, %Q{No github.token set in ~/.gitconfig. Set it with: git config --global github.token 'Your token here'}
|
110
|
+
end
|
96
111
|
|
97
112
|
self.user_name = config['user.name']
|
98
113
|
self.user_email = config['user.email']
|
99
114
|
self.github_username = config['github.user']
|
115
|
+
self.github_token = config['github.token']
|
100
116
|
end
|
101
117
|
|
102
118
|
def output_template_in_target(source, destination = source)
|
@@ -110,26 +126,26 @@ class Jeweler
|
|
110
126
|
Dir.chdir(target_dir)
|
111
127
|
begin
|
112
128
|
begin
|
113
|
-
repo = Git.init()
|
129
|
+
@repo = Git.init()
|
114
130
|
rescue Git::GitExecuteError => e
|
115
131
|
raise GitInitFailed, "Encountered an error during gitification. Maybe the repo already exists, or has already been pushed to?"
|
116
132
|
end
|
117
133
|
|
118
134
|
begin
|
119
|
-
repo.add('.')
|
135
|
+
@repo.add('.')
|
120
136
|
rescue Git::GitExecuteError => e
|
121
137
|
#raise GitAddFailed, "There was some problem adding this directory to the git changeset"
|
122
138
|
raise
|
123
139
|
end
|
124
140
|
|
125
141
|
begin
|
126
|
-
repo.commit "Initial commit to #{github_repo_name}."
|
142
|
+
@repo.commit "Initial commit to #{github_repo_name}."
|
127
143
|
rescue Git::GitExecuteError => e
|
128
144
|
raise
|
129
145
|
end
|
130
146
|
|
131
147
|
begin
|
132
|
-
repo.add_remote('origin', github_remote)
|
148
|
+
@repo.add_remote('origin', github_remote)
|
133
149
|
rescue Git::GitExecuteError => e
|
134
150
|
puts "Encountered an error while adding origin remote. Maybe you have some weird settings in ~/.gitconfig?"
|
135
151
|
raise
|
@@ -138,6 +154,15 @@ class Jeweler
|
|
138
154
|
Dir.chdir(saved_pwd)
|
139
155
|
end
|
140
156
|
end
|
157
|
+
|
158
|
+
def create_and_push_repo
|
159
|
+
Net::HTTP.post_form URI.parse('http://github.com/repositories'),
|
160
|
+
'login' => github_username,
|
161
|
+
'token' => github_token,
|
162
|
+
'repository[name]' => github_repo_name
|
163
|
+
sleep 2
|
164
|
+
@repo.push('origin')
|
165
|
+
end
|
141
166
|
|
142
167
|
def read_git_config
|
143
168
|
# we could just use Git::Base's .config, but that relies on a repo being around already
|
data/lib/jeweler/tasks.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
require 'rake'
|
2
2
|
require 'rake/tasklib'
|
3
|
+
require 'rubygems/builder'
|
3
4
|
|
4
5
|
class Jeweler
|
5
6
|
class Tasks < ::Rake::TaskLib
|
7
|
+
attr_accessor :gemspec, :jeweler
|
8
|
+
|
6
9
|
def initialize(gemspec = nil, &block)
|
7
10
|
@gemspec = gemspec || Gem::Specification.new()
|
8
11
|
yield @gemspec if block_given?
|
9
12
|
|
10
13
|
@jeweler = Jeweler.new(@gemspec)
|
11
14
|
|
12
|
-
|
15
|
+
define
|
13
16
|
end
|
14
17
|
|
15
18
|
private
|
@@ -20,7 +23,13 @@ class Jeweler
|
|
20
23
|
block.call if block
|
21
24
|
end
|
22
25
|
|
23
|
-
def
|
26
|
+
def define
|
27
|
+
desc "Generate a gem"
|
28
|
+
task :gem => :'gemspec:validate' do
|
29
|
+
gemspec = @jeweler.unsafe_parse_gemspec
|
30
|
+
Gem::Builder.new(gemspec).build
|
31
|
+
end
|
32
|
+
|
24
33
|
desc "Generate and validates gemspec"
|
25
34
|
task :gemspec => ['gemspec:generate', 'gemspec:validate']
|
26
35
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -9,145 +9,104 @@ class JewelerTest < Test::Unit::TestCase
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.
|
13
|
-
should "create
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
def self.should_be_checked_in(file)
|
20
|
-
should "have #{file} checked in" do
|
21
|
-
status = @repo.status[file]
|
22
|
-
assert_not_nil status, "wasn't able to get status for #{file}"
|
23
|
-
assert ! status.untracked, "#{file} was untracked"
|
24
|
-
assert_nil status.type, "#{file} had a type. it should have been nil"
|
12
|
+
def self.should_create_files(*files)
|
13
|
+
should "create #{files.join ', '}" do
|
14
|
+
files.each do |file|
|
15
|
+
assert File.exists?(File.join(@tmp_dir, file))
|
16
|
+
assert File.file?(File.join(@tmp_dir, file))
|
17
|
+
end
|
25
18
|
end
|
26
19
|
end
|
27
20
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
@block.call
|
21
|
+
def self.should_be_checked_in(*files)
|
22
|
+
should "have #{files.join ', '} checked in" do
|
23
|
+
files.each do |file|
|
24
|
+
status = @repo.status[file]
|
25
|
+
assert_not_nil status, "wasn't able to get status for #{file}"
|
26
|
+
assert ! status.untracked, "#{file} was untracked"
|
27
|
+
assert_nil status.type, "#{file} had a type. it should have been nil"
|
36
28
|
end
|
37
29
|
end
|
38
30
|
end
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
Jeweler::Generator.any_instance.stubs(:read_git_config).returns({'user.email' => 'bar@example.com'})
|
43
|
-
end
|
44
|
-
|
45
|
-
context "instantiating new generator" do
|
31
|
+
|
32
|
+
def self.should_have_sane_license
|
33
|
+
context "LICENSE" do
|
46
34
|
setup do
|
47
|
-
@
|
35
|
+
@content = File.read((File.join(@tmp_dir, 'LICENSE')))
|
48
36
|
end
|
49
37
|
|
50
|
-
should "
|
51
|
-
|
52
|
-
@block.call
|
53
|
-
end
|
38
|
+
should "include copyright for this year with user's name" do
|
39
|
+
assert_match 'Copyright (c) 2008 foo', @content
|
54
40
|
end
|
55
41
|
end
|
56
42
|
end
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
Jeweler::Generator.any_instance.stubs(:read_git_config).returns({'user.name' => 'foo'})
|
61
|
-
end
|
62
|
-
|
63
|
-
context "instantiating new generator" do
|
43
|
+
|
44
|
+
def self.should_have_sane_gitignore
|
45
|
+
context ".gitignore" do
|
64
46
|
setup do
|
65
|
-
@
|
47
|
+
@content = File.read((File.join(@tmp_dir, '.gitignore')))
|
66
48
|
end
|
67
49
|
|
68
|
-
should "
|
69
|
-
|
70
|
-
@block.call
|
71
|
-
end
|
50
|
+
should "include vim swap files" do
|
51
|
+
assert_match '*.sw?', @content
|
72
52
|
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
context "without github username set" do
|
77
|
-
setup do
|
78
|
-
Jeweler::Generator.any_instance.stubs(:read_git_config).
|
79
|
-
returns({'user.email' => 'bar@example.com', 'user.name' => 'foo'})
|
80
|
-
end
|
81
53
|
|
82
|
-
|
83
|
-
|
84
|
-
@block = lambda { Jeweler::Generator.new('the-perfect-gem')}
|
54
|
+
should "include coverage" do
|
55
|
+
assert_match 'coverage', @content
|
85
56
|
end
|
86
57
|
|
87
|
-
should "
|
88
|
-
|
89
|
-
@block.call
|
90
|
-
end
|
58
|
+
should "include .DS_Store" do
|
59
|
+
assert_match '.DS_Store', @content
|
91
60
|
end
|
92
61
|
end
|
93
62
|
end
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
Jeweler::Generator.any_instance.stubs(:read_git_config).
|
98
|
-
returns({'user.name' => 'foo', 'user.email' => 'bar@example.com', 'github.user' => 'technicalpickles'})
|
99
|
-
end
|
100
|
-
|
101
|
-
context "for technicalpickle's the-perfect-gem repository" do
|
63
|
+
|
64
|
+
def self.should_have_sane_rakefile(options)
|
65
|
+
context "Rakefile" do
|
102
66
|
setup do
|
103
|
-
@
|
104
|
-
end
|
105
|
-
|
106
|
-
should "assign 'foo' to user's name" do
|
107
|
-
assert_equal 'foo', @generator.user_name
|
108
|
-
end
|
109
|
-
|
110
|
-
should "assign 'bar@example.com to user's email" do
|
111
|
-
assert_equal 'bar@example.com', @generator.user_email
|
112
|
-
end
|
113
|
-
|
114
|
-
should "assign github remote" do
|
115
|
-
assert_equal 'git@github.com:technicalpickles/the-perfect-gem.git', @generator.github_remote
|
67
|
+
@content = File.read((File.join(@tmp_dir, 'Rakefile')))
|
116
68
|
end
|
117
69
|
|
118
|
-
should "
|
119
|
-
|
70
|
+
should "include repo's name as the gem's name" do
|
71
|
+
assert_match 's.name = "the-perfect-gem"', @content
|
120
72
|
end
|
121
73
|
|
122
|
-
should "
|
123
|
-
|
74
|
+
should "include the user's email as the gem's email" do
|
75
|
+
assert_match 's.email = "bar@example.com"', @content
|
124
76
|
end
|
125
77
|
|
126
|
-
should "
|
127
|
-
|
78
|
+
should "include the github repo's url as the gem's url" do
|
79
|
+
assert_match 's.homepage = "http://github.com/technicalpickles/the-perfect-gem"', @content
|
128
80
|
end
|
129
81
|
|
130
|
-
should "
|
131
|
-
|
82
|
+
should "include #{options[:pattern]} in the TestTask" do
|
83
|
+
assert_match "t.pattern = '#{options[:pattern]}'", @content
|
132
84
|
end
|
133
85
|
|
134
|
-
should "
|
135
|
-
|
86
|
+
should "include #{options[:pattern]} in the RcovTask" do
|
87
|
+
assert_match "t.test_files = FileList['#{options[:pattern]}']", @content
|
136
88
|
end
|
137
89
|
|
138
|
-
should "
|
139
|
-
|
140
|
-
end
|
141
|
-
|
142
|
-
should "determine constant name as ThePerfectGem" do
|
143
|
-
assert_equal 'ThePerfectGem', @generator.constant_name
|
144
|
-
end
|
145
|
-
|
146
|
-
should "determine file name prefix as the_perfect_gem" do
|
147
|
-
assert_equal 'the_perfect_gem', @generator.file_name_prefix
|
90
|
+
should "push #{options[:libs]} dir into RcovTask libs" do
|
91
|
+
assert_match "t.libs << '#{options[:libs]}'", @content
|
148
92
|
end
|
149
93
|
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.should_have_sane_origin_remote
|
97
|
+
should "have git@github.com:technicalpickles/the-perfect-gem.git as origin remote" do
|
98
|
+
assert_equal 1, @repo.remotes.size
|
99
|
+
remote = @repo.remotes.first
|
100
|
+
assert_equal 'origin', remote.name
|
101
|
+
assert_equal 'git@github.com:technicalpickles/the-perfect-gem.git', remote.url
|
102
|
+
end
|
103
|
+
end
|
150
104
|
|
105
|
+
context "with valid git user configuration" do
|
106
|
+
setup do
|
107
|
+
Jeweler::Generator.any_instance.stubs(:read_git_config).
|
108
|
+
returns({'user.name' => 'foo', 'user.email' => 'bar@example.com', 'github.user' => 'technicalpickles', 'github.token' => 'zomgtoken'})
|
109
|
+
end
|
151
110
|
|
152
111
|
context "and cleaned out tmp directory" do
|
153
112
|
setup do
|
@@ -161,7 +120,7 @@ class JewelerTest < Test::Unit::TestCase
|
|
161
120
|
FileUtils.rm_rf(@tmp_dir)
|
162
121
|
end
|
163
122
|
|
164
|
-
context "for technicalpickles's the-perfect-gem repo
|
123
|
+
context "for generating technicalpickles's the-perfect-gem repo in 'tmp'" do
|
165
124
|
setup do
|
166
125
|
@generator = Jeweler::Generator.new('the-perfect-gem', :directory => @tmp_dir)
|
167
126
|
end
|
@@ -170,9 +129,9 @@ class JewelerTest < Test::Unit::TestCase
|
|
170
129
|
assert_equal @tmp_dir, @generator.target_dir
|
171
130
|
end
|
172
131
|
|
173
|
-
context "running
|
132
|
+
context "running with default test style" do
|
174
133
|
setup do
|
175
|
-
@generator.run
|
134
|
+
@output = catch_out { @generator.run }
|
176
135
|
end
|
177
136
|
|
178
137
|
should 'create target directory' do
|
@@ -182,70 +141,11 @@ class JewelerTest < Test::Unit::TestCase
|
|
182
141
|
should_create_directory 'lib'
|
183
142
|
should_create_directory 'test'
|
184
143
|
|
185
|
-
|
186
|
-
should_create_file 'README'
|
187
|
-
should_create_file 'lib/the_perfect_gem.rb'
|
188
|
-
should_create_file 'test/test_helper.rb'
|
189
|
-
should_create_file 'test/the_perfect_gem_test.rb'
|
190
|
-
should_create_file '.gitignore'
|
191
|
-
|
192
|
-
context "LICENSE" do
|
193
|
-
setup do
|
194
|
-
@content = File.read((File.join(@tmp_dir, 'LICENSE')))
|
195
|
-
end
|
196
|
-
|
197
|
-
should "include copyright for this year with user's name" do
|
198
|
-
assert_match 'Copyright (c) 2008 foo', @content
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
context "Rakefile" do
|
203
|
-
setup do
|
204
|
-
@content = File.read((File.join(@tmp_dir, 'Rakefile')))
|
205
|
-
end
|
206
|
-
|
207
|
-
should "include repo's name as the gem's name" do
|
208
|
-
assert_match 's.name = "the-perfect-gem"', @content
|
209
|
-
end
|
210
|
-
|
211
|
-
should "include the user's email as the gem's email" do
|
212
|
-
assert_match 's.email = "bar@example.com"', @content
|
213
|
-
end
|
214
|
-
|
215
|
-
should "include the github repo's url as the gem's url" do
|
216
|
-
assert_match 's.homepage = "http://github.com/technicalpickles/the-perfect-gem"', @content
|
217
|
-
end
|
218
|
-
|
219
|
-
should "include a glob to match test files in the TestTask" do
|
220
|
-
assert_match "t.pattern = 'test/**/*_test.rb'", @content
|
221
|
-
end
|
222
|
-
|
223
|
-
should "include a glob to match test files in the RcovTask" do
|
224
|
-
assert_match "t.test_files = FileList['test/**/*_test.rb']", @content
|
225
|
-
end
|
226
|
-
|
227
|
-
should "push test dir into RcovTask libs" do
|
228
|
-
assert_match 't.libs << "test"', @content
|
229
|
-
end
|
230
|
-
end
|
231
|
-
|
232
|
-
context ".gitignore" do
|
233
|
-
setup do
|
234
|
-
@content = File.read((File.join(@tmp_dir, '.gitignore')))
|
235
|
-
end
|
236
|
-
|
237
|
-
should "include vim swap files" do
|
238
|
-
assert_match '*.sw?', @content
|
239
|
-
end
|
144
|
+
should_create_files 'LICENSE', 'README', 'lib/the_perfect_gem.rb', 'test/test_helper.rb', 'test/the_perfect_gem_test.rb', '.gitignore'
|
240
145
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
should "include .DS_Store" do
|
246
|
-
assert_match '.DS_Store', @content
|
247
|
-
end
|
248
|
-
end
|
146
|
+
should_have_sane_rakefile :libs => 'test', :pattern => 'test/**/*_test.rb'
|
147
|
+
should_have_sane_license
|
148
|
+
should_have_sane_gitignore
|
249
149
|
|
250
150
|
|
251
151
|
context "test/the_perfect_gem_test.rb" do
|
@@ -264,22 +164,13 @@ class JewelerTest < Test::Unit::TestCase
|
|
264
164
|
@repo = Git.open(@tmp_dir)
|
265
165
|
end
|
266
166
|
|
267
|
-
should 'have one commit log' do
|
268
|
-
assert_equal 1, @repo.log.size
|
269
|
-
end
|
270
|
-
|
271
167
|
should "have one commit log an initial commit message" do
|
168
|
+
assert_equal 1, @repo.log.size
|
272
169
|
# TODO message seems to include leading whitespace, could probably fix that in ruby-git
|
273
170
|
assert_match 'Initial commit to the-perfect-gem.', @repo.log.first.message
|
274
171
|
end
|
275
172
|
|
276
|
-
should_be_checked_in 'README'
|
277
|
-
should_be_checked_in 'Rakefile'
|
278
|
-
should_be_checked_in 'LICENSE'
|
279
|
-
should_be_checked_in 'lib/the_perfect_gem.rb'
|
280
|
-
should_be_checked_in 'test/test_helper.rb'
|
281
|
-
should_be_checked_in 'test/the_perfect_gem_test.rb'
|
282
|
-
should_be_checked_in '.gitignore'
|
173
|
+
should_be_checked_in 'README', 'Rakefile', 'LICENSE', 'lib/the_perfect_gem.rb', 'test/test_helper.rb', 'test/the_perfect_gem_test.rb', '.gitignore'
|
283
174
|
|
284
175
|
should "have no untracked files" do
|
285
176
|
assert_equal 0, @repo.status.untracked.size
|
@@ -297,20 +188,16 @@ class JewelerTest < Test::Unit::TestCase
|
|
297
188
|
assert_equal 0, @repo.status.deleted.size
|
298
189
|
end
|
299
190
|
|
300
|
-
|
301
|
-
should "have git@github.com:technicalpickles/the-perfect-gem.git as origin remote" do
|
302
|
-
assert_equal 1, @repo.remotes.size
|
303
|
-
remote = @repo.remotes.first
|
304
|
-
assert_equal 'origin', remote.name
|
305
|
-
assert_equal 'git@github.com:technicalpickles/the-perfect-gem.git', remote.url
|
306
|
-
end
|
191
|
+
should_have_sane_origin_remote
|
307
192
|
end
|
308
193
|
end
|
309
194
|
|
310
|
-
context "running bacon" do
|
195
|
+
context "running with bacon test style" do
|
311
196
|
setup do
|
312
197
|
@generator.test_style = :bacon
|
313
|
-
@
|
198
|
+
@output = catch_out {
|
199
|
+
@generator.run
|
200
|
+
}
|
314
201
|
end
|
315
202
|
|
316
203
|
should 'create target directory' do
|
@@ -320,70 +207,11 @@ class JewelerTest < Test::Unit::TestCase
|
|
320
207
|
should_create_directory 'lib'
|
321
208
|
should_create_directory 'spec'
|
322
209
|
|
323
|
-
|
324
|
-
should_create_file 'README'
|
325
|
-
should_create_file 'lib/the_perfect_gem.rb'
|
326
|
-
should_create_file 'spec/spec_helper.rb'
|
327
|
-
should_create_file 'spec/the_perfect_gem_spec.rb'
|
328
|
-
should_create_file '.gitignore'
|
329
|
-
|
330
|
-
context "LICENSE" do
|
331
|
-
setup do
|
332
|
-
@content = File.read((File.join(@tmp_dir, 'LICENSE')))
|
333
|
-
end
|
334
|
-
|
335
|
-
should "include copyright for this year with user's name" do
|
336
|
-
assert_match 'Copyright (c) 2008 foo', @content
|
337
|
-
end
|
338
|
-
end
|
339
|
-
|
340
|
-
context "Rakefile" do
|
341
|
-
setup do
|
342
|
-
@content = File.read((File.join(@tmp_dir, 'Rakefile')))
|
343
|
-
end
|
344
|
-
|
345
|
-
should "include repo's name as the gem's name" do
|
346
|
-
assert_match 's.name = "the-perfect-gem"', @content
|
347
|
-
end
|
348
|
-
|
349
|
-
should "include the user's email as the gem's email" do
|
350
|
-
assert_match 's.email = "bar@example.com"', @content
|
351
|
-
end
|
352
|
-
|
353
|
-
should "include the github repo's url as the gem's url" do
|
354
|
-
assert_match 's.homepage = "http://github.com/technicalpickles/the-perfect-gem"', @content
|
355
|
-
end
|
356
|
-
|
357
|
-
should "include a glob to match spec files in the TestTask" do
|
358
|
-
assert_match "t.pattern = 'spec/**/*_spec.rb'", @content
|
359
|
-
end
|
360
|
-
|
361
|
-
should "include a glob to match spec files in the RcovTask" do
|
362
|
-
assert_match "t.test_files = FileList['spec/**/*_spec.rb']", @content
|
363
|
-
end
|
210
|
+
should_create_files 'LICENSE', 'README', 'lib/the_perfect_gem.rb', 'spec/spec_helper.rb', 'spec/the_perfect_gem_spec.rb', '.gitignore'
|
364
211
|
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
end
|
369
|
-
|
370
|
-
context ".gitignore" do
|
371
|
-
setup do
|
372
|
-
@content = File.read((File.join(@tmp_dir, '.gitignore')))
|
373
|
-
end
|
374
|
-
|
375
|
-
should "include vim swap files" do
|
376
|
-
assert_match '*.sw?', @content
|
377
|
-
end
|
378
|
-
|
379
|
-
should "include coverage" do
|
380
|
-
assert_match 'coverage', @content
|
381
|
-
end
|
382
|
-
|
383
|
-
should "include .DS_Store" do
|
384
|
-
assert_match '.DS_Store', @content
|
385
|
-
end
|
386
|
-
end
|
212
|
+
should_have_sane_rakefile :libs => 'spec', :pattern => 'spec/**/*_spec.rb'
|
213
|
+
should_have_sane_license
|
214
|
+
should_have_sane_gitignore
|
387
215
|
|
388
216
|
|
389
217
|
context "spec/the_perfect_gem_spec.rb" do
|
@@ -411,13 +239,7 @@ class JewelerTest < Test::Unit::TestCase
|
|
411
239
|
assert_match 'Initial commit to the-perfect-gem.', @repo.log.first.message
|
412
240
|
end
|
413
241
|
|
414
|
-
should_be_checked_in 'README'
|
415
|
-
should_be_checked_in 'Rakefile'
|
416
|
-
should_be_checked_in 'LICENSE'
|
417
|
-
should_be_checked_in 'lib/the_perfect_gem.rb'
|
418
|
-
should_be_checked_in 'spec/spec_helper.rb'
|
419
|
-
should_be_checked_in 'spec/the_perfect_gem_spec.rb'
|
420
|
-
should_be_checked_in '.gitignore'
|
242
|
+
should_be_checked_in 'README', 'Rakefile', 'LICENSE', 'lib/the_perfect_gem.rb', 'spec/spec_helper.rb', 'spec/the_perfect_gem_spec.rb', '.gitignore'
|
421
243
|
|
422
244
|
should "have no untracked files" do
|
423
245
|
assert_equal 0, @repo.status.untracked.size
|
@@ -435,17 +257,10 @@ class JewelerTest < Test::Unit::TestCase
|
|
435
257
|
assert_equal 0, @repo.status.deleted.size
|
436
258
|
end
|
437
259
|
|
438
|
-
|
439
|
-
should "have git@github.com:technicalpickles/the-perfect-gem.git as origin remote" do
|
440
|
-
assert_equal 1, @repo.remotes.size
|
441
|
-
remote = @repo.remotes.first
|
442
|
-
assert_equal 'origin', remote.name
|
443
|
-
assert_equal 'git@github.com:technicalpickles/the-perfect-gem.git', remote.url
|
444
|
-
end
|
260
|
+
should_have_sane_origin_remote
|
445
261
|
end
|
446
262
|
end
|
447
263
|
end
|
448
264
|
end
|
449
265
|
end
|
450
|
-
|
451
266
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: technicalpickles-jeweler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Nichols
|
@@ -43,15 +43,15 @@ files:
|
|
43
43
|
- lib/jeweler/release.rb
|
44
44
|
- lib/jeweler/tasks.rb
|
45
45
|
- lib/jeweler/templates
|
46
|
+
- lib/jeweler/templates/bacon
|
47
|
+
- lib/jeweler/templates/bacon/flunking_spec.rb
|
48
|
+
- lib/jeweler/templates/bacon/spec_helper.rb
|
46
49
|
- lib/jeweler/templates/LICENSE
|
47
50
|
- lib/jeweler/templates/Rakefile
|
48
51
|
- lib/jeweler/templates/README
|
49
|
-
- lib/jeweler/templates/
|
50
|
-
- lib/jeweler/templates/
|
51
|
-
- lib/jeweler/templates/
|
52
|
-
- lib/jeweler/templates/test
|
53
|
-
- lib/jeweler/templates/test/flunking_test.rb
|
54
|
-
- lib/jeweler/templates/test/test_helper.rb
|
52
|
+
- lib/jeweler/templates/shoulda
|
53
|
+
- lib/jeweler/templates/shoulda/flunking_test.rb
|
54
|
+
- lib/jeweler/templates/shoulda/test_helper.rb
|
55
55
|
- lib/jeweler/versioning.rb
|
56
56
|
- lib/jeweler.rb
|
57
57
|
- test/fixtures
|