gemgen 0.0.2 → 0.0.3
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/lib/gemgen/generator.rb +37 -6
- data/lib/gemgen/templates/Rakefile.tt +9 -2
- data/lib/gemgen/version.rb +1 -1
- data/test/gemgen_test.rb +40 -5
- data/test/test_helper.rb +20 -0
- metadata +3 -3
data/lib/gemgen/generator.rb
CHANGED
@@ -7,12 +7,12 @@ module Gemgen
|
|
7
7
|
# Define arguments and options
|
8
8
|
argument :gem_name
|
9
9
|
class_option :test_framework, :default => :mini_test
|
10
|
-
class_option :test_type, :default =>
|
10
|
+
class_option :test_type, :default => "unit"
|
11
11
|
|
12
12
|
def self.source_root
|
13
13
|
File.expand_path(File.dirname(__FILE__) +'/templates')
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def run_bundle_gem
|
17
17
|
run "bundle gem #{gem_name}", :verbose => true
|
18
18
|
commit "$> bundle gem #{gem_name}"
|
@@ -48,29 +48,56 @@ EOF
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def create_test_file
|
51
|
-
test = options[:
|
51
|
+
test = options[:test_type] == "spec" ? :spec : :test
|
52
52
|
test_path = "#{gem_name}/#{test}/"
|
53
53
|
helper_file = "#{test}_helper.rb"
|
54
54
|
create_file test_path + helper_file do
|
55
|
-
|
55
|
+
unit_str = <<EOF
|
56
56
|
$:.unshift File.expand_path('..', __FILE__)
|
57
57
|
$:.unshift File.expand_path('../../lib', __FILE__)
|
58
58
|
require 'minitest/unit'
|
59
59
|
require 'minitest/autorun'
|
60
60
|
EOF
|
61
|
+
spec_str = <<EOF
|
62
|
+
$:.unshift File.expand_path('..', __FILE__)
|
63
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
64
|
+
require '#{gem_name}'
|
65
|
+
require 'minitest/spec'
|
66
|
+
require 'minitest/autorun'
|
67
|
+
|
68
|
+
module SpecHelper
|
69
|
+
end
|
70
|
+
EOF
|
71
|
+
test == :spec ? spec_str : unit_str
|
61
72
|
end
|
62
73
|
create_file test_path + "#{gem_name}_#{test}.rb" do
|
63
|
-
|
74
|
+
unit_str = <<EOF
|
64
75
|
require '#{File.basename(helper_file, ".rb")}'
|
65
76
|
|
66
77
|
module #{module_name}
|
67
78
|
class #{module_name}Test < MiniTest::Unit::TestCase
|
68
79
|
def test_truth
|
69
|
-
assert true
|
80
|
+
assert true
|
70
81
|
end
|
71
82
|
end
|
72
83
|
end
|
73
84
|
EOF
|
85
|
+
spec_str = <<EOF
|
86
|
+
require File.expand_path('../spec_helper', __FILE__)
|
87
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
88
|
+
|
89
|
+
include SpecHelper
|
90
|
+
|
91
|
+
describe #{module_name} do
|
92
|
+
before do
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should test truth" do
|
96
|
+
true.must_equal true
|
97
|
+
end
|
98
|
+
end
|
99
|
+
EOF
|
100
|
+
test == :spec ? spec_str : unit_str
|
74
101
|
end
|
75
102
|
commit("Create test scaffold file")
|
76
103
|
end
|
@@ -100,5 +127,9 @@ EOF
|
|
100
127
|
def module_name
|
101
128
|
Thor::Util.camel_case(gem_name)
|
102
129
|
end
|
130
|
+
|
131
|
+
def test_type
|
132
|
+
@test_type ||= options[:test_type].to_s == "spec" ? :spec : :test
|
133
|
+
end
|
103
134
|
end
|
104
135
|
end
|
@@ -4,12 +4,19 @@ Bundler.require(:default, :development)
|
|
4
4
|
require 'bundler/gem_tasks'
|
5
5
|
|
6
6
|
require 'rake/testtask'
|
7
|
-
|
7
|
+
<%if test_type == :spec%>
|
8
|
+
Rake::TestTask.new do |t|
|
9
|
+
t.pattern = "spec/*_spec.rb"
|
10
|
+
# To avoid requirement of File.expand_path(File.dirname(__FILE__) + 'spec_helper') from test files
|
11
|
+
t.libs << 'spec'
|
12
|
+
end
|
13
|
+
<% else %>
|
8
14
|
Rake::TestTask.new do |t|
|
9
15
|
t.pattern = "test/*_test.rb"
|
10
16
|
# To avoid requirement of File.expand_path(File.dirname(__FILE__) + 'test_helper') from test files
|
11
17
|
t.libs << 'test'
|
12
18
|
end
|
13
|
-
|
19
|
+
<% end %>
|
20
|
+
|
14
21
|
task :default => [:test]
|
15
22
|
|
data/lib/gemgen/version.rb
CHANGED
data/test/gemgen_test.rb
CHANGED
@@ -1,6 +1,41 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
require 'gemgen/generator'
|
3
|
+
require 'pry'
|
4
|
+
|
5
|
+
module Gemgen
|
6
|
+
class GemgenTest < MiniTest::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
if File.exist? tmp_dir
|
9
|
+
rm_rf tmp_dir
|
10
|
+
end
|
11
|
+
mkdir tmp_dir
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_that_minitest_unit_tests_runs
|
15
|
+
gem_name = 'minitest_unit'
|
16
|
+
Dir.chdir(tmp_dir) do |dir|
|
17
|
+
@cli = Gemgen::Generator.new([gem_name])
|
18
|
+
@cli.invoke_all
|
19
|
+
assert(File.exist? 'minitest_test')
|
20
|
+
|
21
|
+
Dir.chdir(gem_name) do
|
22
|
+
output = `bundle exec rake`
|
23
|
+
assert_match /1 tests, 1 assertions, 0 failures, 0 errors, 0 skips/, output
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_that_minitest_spec_tests_runs
|
29
|
+
gem_name = 'minitest_spec'
|
30
|
+
Dir.chdir(tmp_dir) do |dir|
|
31
|
+
@cli = Gemgen::Generator.new([gem_name], :test_type => "spec")
|
32
|
+
@cli.invoke_all
|
33
|
+
assert(File.exist? 'minitest_spec')
|
34
|
+
Dir.chdir(gem_name) do
|
35
|
+
output = `bundle exec rake`
|
36
|
+
assert_match /1 tests, 1 assertions, 0 failures, 0 errors, 0 skips/, output
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -2,3 +2,23 @@ $:.unshift File.expand_path('..', __FILE__)
|
|
2
2
|
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
3
|
require 'minitest/unit'
|
4
4
|
require 'minitest/autorun'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
module Gemgen
|
8
|
+
class MiniTest::Unit::TestCase
|
9
|
+
include FileUtils
|
10
|
+
def tmp_dir
|
11
|
+
File.expand_path('../../tmp', __FILE__)
|
12
|
+
end
|
13
|
+
|
14
|
+
def local_io(in_str = "")
|
15
|
+
old_stdin, old_stdout = $stdin, $stdout
|
16
|
+
$stdin = StringIO.new(in_str)
|
17
|
+
$stdout = StringIO.new
|
18
|
+
yield
|
19
|
+
out_str = $stdout.string
|
20
|
+
$stdin, $stdout = old_stdin, old_stdout
|
21
|
+
out_str
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED