technicalpickles-jeweler 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -16,4 +16,13 @@ begin
16
16
  end
17
17
  rescue LoadError
18
18
  puts "Jeweler not available. Try installing technicalpickles-jeweler."
19
- end
19
+ end
20
+
21
+ Rake::TestTask.new do |t|
22
+ t.libs << 'lib'
23
+ t.pattern = 'test/**/*_test.rb'
24
+ t.verbose = false
25
+ end
26
+
27
+ desc "Run the test suite"
28
+ task :default => :test
data/lib/jeweler/tasks.rb CHANGED
@@ -19,30 +19,20 @@ namespace :version do
19
19
  jeweler.bump_version(major, 0, 0)
20
20
  jeweler.write_gemspec
21
21
 
22
- puts "Version bumped to #{Jeweler.version}"
22
+ puts "Version bumped to #{jeweler.version}"
23
23
  end
24
24
 
25
25
  desc "Bump the gemspec a minor version."
26
26
  task :minor do
27
27
  jeweler = Jeweler.instance
28
-
29
- minor = jeweler.minor_version + 1
30
-
31
- jeweler.bump_version(jeweler.major_version, minor, 0)
32
- jeweler.write_gemspec
33
-
28
+ jeweler.bump_minor_version
34
29
  puts "Version bumped to #{jeweler.version}"
35
30
  end
36
31
 
37
32
  desc "Bump the gemspec a patch version."
38
33
  task :patch do
39
34
  jeweler = Jeweler.instance
40
-
41
- patch = jeweler.patch_version + 1
42
-
43
- jeweler.bump_version(jeweler.major_version, jeweler.minor_version, patch)
44
- jeweler.write_gemspec
45
-
35
+ jeweler.bump_patch_version
46
36
  puts "Version bumped to #{jeweler.version}"
47
37
  end
48
38
  end
@@ -2,6 +2,6 @@ class Jeweler
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- PATCH = 4
5
+ PATCH = 5
6
6
  end
7
7
  end
data/lib/jeweler.rb CHANGED
@@ -1,17 +1,22 @@
1
1
  require 'date'
2
2
 
3
+ require 'jeweler/bumping'
4
+ require 'jeweler/versioning'
5
+ require 'jeweler/singleton'
6
+ require 'jeweler/gemspec'
7
+
3
8
  class Jeweler
4
- def self.gemspec=(gemspec)
5
- @@instance = new(gemspec)
6
- end
7
-
8
- def self.instance
9
- @@instance
10
- end
9
+ include Jeweler::Singleton
10
+ include Jeweler::Bumping
11
+ include Jeweler::Versioning
12
+ include Jeweler::Gemspec
11
13
 
12
14
  attr_reader :gemspec
13
- def initialize(gemspec)
15
+ attr_accessor :base_dir
16
+
17
+ def initialize(gemspec, base_dir = '.')
14
18
  @gemspec = gemspec
19
+ @base_dir = base_dir
15
20
 
16
21
  load_version()
17
22
 
@@ -19,96 +24,10 @@ class Jeweler
19
24
  @gemspec.files ||= FileList["[A-Z]*", "{generators,lib,test,spec}/**/*"]
20
25
  end
21
26
 
22
- def major_version
23
- version_module.const_get(:MAJOR)
24
- end
25
-
26
- def minor_version
27
- version_module.const_get(:MINOR)
28
- end
29
-
30
- def patch_version
31
- version_module.const_get(:PATCH)
32
- end
33
-
34
- def version
35
- "#{major_version}.#{minor_version}.#{patch_version}"
36
- end
37
-
38
- def date
39
- date = DateTime.now
40
- "#{date.year}-#{date.month}-#{date.day}"
41
- end
42
-
43
- def bump_version(major, minor, patch)
44
- main_module_or_class = constantize(main_module_name)
45
- keyword = top_level_keyword
46
-
47
- File.open(version_module_path, 'w') do |file|
48
- file.write <<-END
49
- #{keyword} #{main_module_name}
50
- module Version
51
- MAJOR = #{major}
52
- MINOR = #{minor}
53
- PATCH = #{patch}
54
- end
55
- end
56
- END
57
- end
58
- @gemspec.version = "#{major}.#{minor}.#{patch}"
59
- refresh_version
60
- end
61
-
62
- def write_gemspec
63
- @gemspec.date = self.date
64
- File.open(gemspec_path, 'w') do |f|
65
- f.write @gemspec.to_ruby
66
- end
67
- end
68
-
69
- private
70
-
71
- def top_level_keyword
72
- main_module_or_class = constantize(main_module_name)
73
- case main_module_or_class
74
- when Class
75
- 'class'
76
- when Module
77
- 'module'
78
- else
79
- raise "Uh, main_module_name should be a class or module, but was a #{main_module_or_class.class}"
80
- end
81
- end
82
-
83
- def gemspec_path
84
- "#{@gemspec.name}.gemspec"
85
- end
86
-
87
- def version_module_path
88
- "lib/#{@gemspec.name}/version.rb"
89
- end
90
-
91
- def version_module
92
- constantize("#{main_module_name}::Version")
93
- end
94
-
27
+ private
95
28
  def main_module_name
96
29
  camelize(@gemspec.name)
97
30
  end
98
-
99
- def refresh_version
100
- # Remove the constants, so we can reload the version_module
101
- version_module.module_eval do
102
- remove_const(:MAJOR) if const_defined?(:MAJOR)
103
- remove_const(:MINOR) if const_defined?(:MINOR)
104
- remove_const(:PATCH) if const_defined?(:PATCH)
105
- end
106
- load_version
107
- end
108
-
109
- def load_version
110
- load version_module_path
111
- end
112
31
  end
113
32
 
114
33
  require 'jeweler/active_support' # Adds the stolen camelize and constantize
@@ -0,0 +1,174 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class JewelerTest < Test::Unit::TestCase
4
+
5
+ def write_version_file(name, keyword, const_name, major, minor, patch)
6
+ dir = "#{File.dirname(__FILE__)}/lib/#{name}"
7
+ FileUtils.mkdir_p(dir)
8
+ File.open("#{dir}/version.rb", 'w+') do |file|
9
+ file.write <<-END
10
+ #{keyword} #{const_name}
11
+ module Version
12
+ MAJOR = #{major}
13
+ MINOR = #{minor}
14
+ PATCH = #{patch}
15
+ end
16
+ end
17
+ END
18
+ end
19
+ end
20
+
21
+ def teardown
22
+ FileUtils.rm_rf("#{File.dirname(__FILE__)}/lib")
23
+ FileUtils.rm_f("#{File.dirname(__FILE__)}/foo.gemspec")
24
+ FileUtils.rm_f("#{File.dirname(__FILE__)}/bar.gemspec")
25
+ end
26
+
27
+ class << self
28
+ def should_have_major_version(version)
29
+ should "have major version of #{version}" do
30
+ assert_equal version, @jeweler.major_version
31
+ end
32
+ end
33
+
34
+ def should_have_minor_version(version)
35
+ should "have minor version of #{version}" do
36
+ assert_equal version, @jeweler.minor_version
37
+ end
38
+ end
39
+
40
+ def should_have_patch_version(version)
41
+ should "have patch version of #{version}" do
42
+ assert_equal version, @jeweler.patch_version
43
+ end
44
+ end
45
+
46
+ def should_be_version(version)
47
+ should "be version #{version}" do
48
+ assert_equal version, @jeweler.version
49
+ end
50
+ end
51
+
52
+ def should_have_toplevel_keyword(keyword)
53
+ should "have '#{keyword}' top level keyword" do
54
+ assert_equal keyword, @jeweler.send(:top_level_keyword)
55
+ end
56
+ end
57
+ end
58
+
59
+ context 'A gem, with top level module,' do
60
+ setup do
61
+ write_version_file('foo', 'module', 'Foo', 0, 1, 0)
62
+ @spec = Gem::Specification.new do |s|
63
+ s.name = 'foo'
64
+ s.summary = "Simple and opinionated helper for creating Rubygem projects on GitHub"
65
+ s.email = "josh@technicalpickles.com"
66
+ s.homepage = "http://github.com/technicalpickles/jeweler"
67
+ s.description = "Simple and opinionated helper for creating Rubygem projects on GitHub"
68
+ s.authors = ["Josh Nichols", "Dan Croak"]
69
+ s.files = FileList["[A-Z]*", "{generators,lib,test}/**/*"]
70
+ end
71
+ @jeweler = Jeweler.new(@spec, File.dirname(__FILE__))
72
+ end
73
+
74
+ teardown do
75
+ @jeweler.send(:undefine_versions) if @jeweler
76
+ end
77
+
78
+ should_have_major_version 0
79
+ should_have_minor_version 1
80
+ should_have_patch_version 0
81
+ should_be_version '0.1.0'
82
+
83
+ should_have_toplevel_keyword 'module'
84
+
85
+ context "bumping the patch version" do
86
+ setup do
87
+ @jeweler.bump_patch_version
88
+ end
89
+
90
+ should_have_major_version 0
91
+ should_have_minor_version 1
92
+ should_have_patch_version 1
93
+ should_be_version '0.1.1'
94
+
95
+ should "still have module Foo" do
96
+ # do some regexp of version.rb
97
+ end
98
+ end
99
+
100
+ context "bumping the minor version" do
101
+ setup do
102
+ @jeweler.bump_minor_version
103
+ end
104
+
105
+ should_have_major_version 0
106
+ should_have_minor_version 2
107
+ should_have_patch_version 0
108
+ should_be_version '0.2.0'
109
+
110
+ should "still have module Foo" do
111
+ # do some regexp of version.rb
112
+ end
113
+ end
114
+
115
+ context "bumping the major version" do
116
+ setup do
117
+ @jeweler.bump_major_version
118
+ end
119
+
120
+ should_have_major_version 1
121
+ should_have_minor_version 0
122
+ should_have_patch_version 0
123
+ should_be_version '1.0.0'
124
+
125
+ should "still have module Foo" do
126
+ # do some regexp of version.rb
127
+ end
128
+ end
129
+
130
+ end
131
+
132
+ context "A gem, with top level class," do
133
+ setup do
134
+ write_version_file('bar', 'class', 'Bar', 1, 5, 2)
135
+
136
+ @spec = Gem::Specification.new do |s|
137
+ s.name = "bar"
138
+ s.summary = "Simple and opinionated helper for creating Rubygem projects on GitHub"
139
+ s.email = "josh@technicalpickles.com"
140
+ s.homepage = "http://github.com/technicalpickles/jeweler"
141
+ s.description = "Simple and opinionated helper for creating Rubygem projects on GitHub"
142
+ s.authors = ["Josh Nichols", "Dan Croak"]
143
+ s.files = FileList["[A-Z]*", "{generators,lib,test}/**/*"]
144
+ end
145
+ @jeweler = Jeweler.new(@spec, File.dirname(__FILE__))
146
+ end
147
+
148
+ teardown do
149
+ @jeweler.send(:undefine_versions) if @jeweler
150
+ end
151
+
152
+ should_have_major_version 1
153
+ should_have_minor_version 5
154
+ should_have_patch_version 2
155
+ should_be_version '1.5.2'
156
+ should_have_toplevel_keyword 'class'
157
+
158
+ context "bumping the patch version" do
159
+ setup do
160
+ @jeweler.bump_patch_version
161
+ end
162
+
163
+ should_have_major_version 1
164
+ should_have_minor_version 5
165
+ should_have_patch_version 3
166
+ should_be_version '1.5.3'
167
+
168
+ should_eventually "still have class Bar" do
169
+ # do some regexp of version.rb
170
+ end
171
+ end
172
+ end
173
+
174
+ end
@@ -0,0 +1,17 @@
1
+ require 'test/unit'
2
+
3
+ require 'rubygems'
4
+ gem 'thoughtbot-shoulda'
5
+ require 'shoulda'
6
+ gem 'ruby-debug'
7
+ require 'ruby-debug'
8
+
9
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
10
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
11
+ require 'jeweler'
12
+
13
+ # Fake out FileList from Rake
14
+ class FileList
15
+ def self.[](*args)
16
+ end
17
+ 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.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Nichols
@@ -31,6 +31,8 @@ files:
31
31
  - lib/jeweler/tasks.rb
32
32
  - lib/jeweler/version.rb
33
33
  - lib/jeweler.rb
34
+ - test/jeweler_test.rb
35
+ - test/test_helper.rb
34
36
  has_rdoc: false
35
37
  homepage: http://github.com/technicalpickles/jeweler
36
38
  post_install_message: