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,44 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestGemspecHelper < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
Rake.application.instance_variable_set(:@rakefile, "Rakefile")
|
6
|
+
end
|
7
|
+
|
8
|
+
context "given a gemspec" do
|
9
|
+
setup do
|
10
|
+
@spec = build_spec
|
11
|
+
@helper = Juwelier::GemSpecHelper.new(@spec, File.dirname(__FILE__))
|
12
|
+
end
|
13
|
+
|
14
|
+
should 'have sane gemspec path' do
|
15
|
+
assert_equal "test/juwelier/#{@spec.name}.gemspec", @helper.path
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context "#write" do
|
20
|
+
setup do
|
21
|
+
@spec = build_spec
|
22
|
+
@helper = Juwelier::GemSpecHelper.new(@spec, File.dirname(__FILE__))
|
23
|
+
FileUtils.rm_f(@helper.path)
|
24
|
+
|
25
|
+
@helper.write
|
26
|
+
end
|
27
|
+
|
28
|
+
teardown do
|
29
|
+
FileUtils.rm_f(@helper.path)
|
30
|
+
end
|
31
|
+
|
32
|
+
should "create gemspec file" do
|
33
|
+
assert File.exists?(@helper.path)
|
34
|
+
end
|
35
|
+
|
36
|
+
should "make valid spec" do
|
37
|
+
assert @helper.valid?
|
38
|
+
end
|
39
|
+
|
40
|
+
should "parse" do
|
41
|
+
@helper.parse
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestGenerator < Test::Unit::TestCase
|
4
|
+
def build_generator(testing_framework = :shoulda, options = {})
|
5
|
+
options = {
|
6
|
+
:project_name => 'the-perfect-gem',
|
7
|
+
:user_name => 'John Doe',
|
8
|
+
:user_email => 'john@example.com',
|
9
|
+
:github_username => 'johndoe',
|
10
|
+
:documentation_framework => :rdoc
|
11
|
+
}.merge(options)
|
12
|
+
|
13
|
+
options[:testing_framework] = testing_framework
|
14
|
+
Juwelier::Generator.new(options)
|
15
|
+
end
|
16
|
+
|
17
|
+
should "have the correct constant name" do
|
18
|
+
assert_equal "ThePerfectGem", build_generator.constant_name
|
19
|
+
end
|
20
|
+
|
21
|
+
should "have the correct file name prefix" do
|
22
|
+
assert_equal "the_perfect_gem", build_generator.file_name_prefix
|
23
|
+
end
|
24
|
+
|
25
|
+
should "have the correct require name" do
|
26
|
+
assert_equal "the-perfect-gem", build_generator.require_name
|
27
|
+
end
|
28
|
+
|
29
|
+
should "have the correct lib file name" do
|
30
|
+
assert_equal "the-perfect-gem.rb", build_generator.lib_filename
|
31
|
+
end
|
32
|
+
|
33
|
+
should "have the correct git-remote" do
|
34
|
+
assert_equal 'user@host:/path/to/repo', build_generator(:shoulda, {:git_remote => "user@host:/path/to/repo"}).git_remote
|
35
|
+
assert_equal 'git@github.com:johndoe/the-perfect-gem.git', build_generator.git_remote
|
36
|
+
end
|
37
|
+
|
38
|
+
should "extract project name from absolut path" do
|
39
|
+
assert_equal "my-project", build_generator(:shoulda, {:project_name => "/tmp/my-project"}).project_name
|
40
|
+
end
|
41
|
+
|
42
|
+
should "extract project name from relative path" do
|
43
|
+
assert_equal "my-project", build_generator(:shoulda, {:project_name => "../my-project"}).project_name
|
44
|
+
end
|
45
|
+
|
46
|
+
should "extract project name from direct path" do
|
47
|
+
assert_equal "my-project", build_generator(:shoulda, {:project_name => "my-project"}).project_name
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.should_have_generator_attribute(attribute, value)
|
51
|
+
should "have #{value} for #{attribute}" do
|
52
|
+
assert_equal value, build_generator(@framework).send(attribute)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "shoulda" do
|
57
|
+
setup { @framework = :shoulda }
|
58
|
+
should_have_generator_attribute :test_task, 'test'
|
59
|
+
should_have_generator_attribute :test_dir, 'test'
|
60
|
+
should_have_generator_attribute :default_task, 'test'
|
61
|
+
should_have_generator_attribute :feature_support_require, 'test/unit/assertions'
|
62
|
+
should_have_generator_attribute :feature_support_extend, 'Test::Unit::Assertions'
|
63
|
+
should_have_generator_attribute :test_pattern, 'test/**/test_*.rb'
|
64
|
+
should_have_generator_attribute :test_filename, 'test_the-perfect-gem.rb'
|
65
|
+
should_have_generator_attribute :test_helper_filename, 'helper.rb'
|
66
|
+
end
|
67
|
+
|
68
|
+
context "testunit" do
|
69
|
+
setup { @framework = :testunit }
|
70
|
+
should_have_generator_attribute :test_task, 'test'
|
71
|
+
should_have_generator_attribute :test_dir, 'test'
|
72
|
+
should_have_generator_attribute :default_task, 'test'
|
73
|
+
should_have_generator_attribute :feature_support_require, 'test/unit/assertions'
|
74
|
+
should_have_generator_attribute :feature_support_extend, 'Test::Unit::Assertions'
|
75
|
+
should_have_generator_attribute :test_pattern, 'test/**/test_*.rb'
|
76
|
+
should_have_generator_attribute :test_filename, 'test_the-perfect-gem.rb'
|
77
|
+
should_have_generator_attribute :test_helper_filename, 'helper.rb'
|
78
|
+
end
|
79
|
+
|
80
|
+
context "minitest" do
|
81
|
+
setup { @framework = :minitest }
|
82
|
+
should_have_generator_attribute :test_task, 'test'
|
83
|
+
should_have_generator_attribute :test_dir, 'test'
|
84
|
+
should_have_generator_attribute :default_task, 'test'
|
85
|
+
should_have_generator_attribute :feature_support_require, 'minitest/unit'
|
86
|
+
should_have_generator_attribute :feature_support_extend, 'MiniTest::Assertions'
|
87
|
+
should_have_generator_attribute :test_pattern, 'test/**/test_*.rb'
|
88
|
+
should_have_generator_attribute :test_filename, 'test_the-perfect-gem.rb'
|
89
|
+
should_have_generator_attribute :test_helper_filename, 'helper.rb'
|
90
|
+
end
|
91
|
+
|
92
|
+
context "bacon" do
|
93
|
+
setup { @framework = :bacon }
|
94
|
+
should_have_generator_attribute :test_task, 'spec'
|
95
|
+
should_have_generator_attribute :test_dir, 'spec'
|
96
|
+
should_have_generator_attribute :default_task, 'spec'
|
97
|
+
should_have_generator_attribute :feature_support_require, 'test/unit/assertions'
|
98
|
+
should_have_generator_attribute :feature_support_extend, 'Test::Unit::Assertions'
|
99
|
+
should_have_generator_attribute :test_pattern, 'spec/**/*_spec.rb'
|
100
|
+
should_have_generator_attribute :test_filename, 'the-perfect-gem_spec.rb'
|
101
|
+
should_have_generator_attribute :test_helper_filename, 'spec_helper.rb'
|
102
|
+
end
|
103
|
+
|
104
|
+
context "rspec" do
|
105
|
+
setup { @framework = :rspec }
|
106
|
+
should_have_generator_attribute :test_task, 'spec'
|
107
|
+
should_have_generator_attribute :test_dir, 'spec'
|
108
|
+
should_have_generator_attribute :default_task, 'spec'
|
109
|
+
should_have_generator_attribute :feature_support_require, 'rspec/expectations'
|
110
|
+
should_have_generator_attribute :feature_support_extend, nil
|
111
|
+
should_have_generator_attribute :test_pattern, 'spec/**/*_spec.rb'
|
112
|
+
should_have_generator_attribute :test_filename, 'the-perfect-gem_spec.rb'
|
113
|
+
should_have_generator_attribute :test_helper_filename, 'spec_helper.rb'
|
114
|
+
end
|
115
|
+
|
116
|
+
context "micronaut" do
|
117
|
+
setup { @framework = :micronaut }
|
118
|
+
should_have_generator_attribute :test_task, 'examples'
|
119
|
+
should_have_generator_attribute :test_dir, 'examples'
|
120
|
+
should_have_generator_attribute :default_task, 'examples'
|
121
|
+
should_have_generator_attribute :feature_support_require, 'micronaut/expectations'
|
122
|
+
should_have_generator_attribute :feature_support_extend, 'Micronaut::Matchers'
|
123
|
+
should_have_generator_attribute :test_pattern, 'examples/**/*_example.rb'
|
124
|
+
should_have_generator_attribute :test_filename, 'the-perfect-gem_example.rb'
|
125
|
+
should_have_generator_attribute :test_helper_filename, 'example_helper.rb'
|
126
|
+
end
|
127
|
+
|
128
|
+
context "testspec" do
|
129
|
+
setup { @framework = :testspec }
|
130
|
+
should_have_generator_attribute :test_task, 'test'
|
131
|
+
should_have_generator_attribute :test_dir, 'test'
|
132
|
+
should_have_generator_attribute :default_task, 'test'
|
133
|
+
should_have_generator_attribute :feature_support_require, 'test/unit/assertions'
|
134
|
+
should_have_generator_attribute :feature_support_extend, 'Test::Unit::Assertions'
|
135
|
+
should_have_generator_attribute :test_pattern, 'test/**/*_test.rb'
|
136
|
+
should_have_generator_attribute :test_filename, 'the-perfect-gem_test.rb'
|
137
|
+
should_have_generator_attribute :test_helper_filename, 'test_helper.rb'
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestGeneratorInitialization < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
set_default_git_config
|
6
|
+
end
|
7
|
+
|
8
|
+
context "given a nil github repo name" do
|
9
|
+
setup do
|
10
|
+
stub_git_config
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'raise NoGithubRepoNameGiven' do
|
14
|
+
assert_raise Juwelier::NoGitHubRepoNameGiven do
|
15
|
+
Juwelier::Generator.new()
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "without git user's name set" do
|
21
|
+
setup do
|
22
|
+
stub_git_config
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'raise an NoGitUserName' do
|
26
|
+
assert_raise Juwelier::NoGitUserName do
|
27
|
+
Juwelier::Generator.new(:project_name => @project_name, :testing_framework => :shoulda, :documentation_framework => :rdoc)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "without git user's email set" do
|
33
|
+
setup do
|
34
|
+
stub_git_config
|
35
|
+
end
|
36
|
+
|
37
|
+
should 'raise NoGitUserEmail' do
|
38
|
+
assert_raise Juwelier::NoGitUserEmail do
|
39
|
+
Juwelier::Generator.new(:project_name => @project_name, :user_name => @git_name, :testing_framework => :shoulda, :documentation_framework => :rdoc)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "without github username set" do
|
45
|
+
setup do
|
46
|
+
stub_git_config
|
47
|
+
end
|
48
|
+
|
49
|
+
should 'raise NotGitHubUser' do
|
50
|
+
assert_raise Juwelier::NoGitHubUser do
|
51
|
+
Juwelier::Generator.new(:project_name => @project_name, :user_name => @git_name, :user_email => @git_email, :testing_framework => :shoulda, :documentation_framework => :rdoc)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
def build_generator(options = {})
|
56
|
+
defaults = { :project_name => @project_name,
|
57
|
+
:user_name => @git_name,
|
58
|
+
:user_email => @git_email,
|
59
|
+
:github_username => @github_user,
|
60
|
+
:testing_framework => :shoulda,
|
61
|
+
:documentation_framework => :rdoc }
|
62
|
+
|
63
|
+
options = defaults.merge(options)
|
64
|
+
Juwelier::Generator.new(options)
|
65
|
+
end
|
66
|
+
|
67
|
+
context "default configuration" do
|
68
|
+
setup do
|
69
|
+
stub_git_config
|
70
|
+
@generator = build_generator
|
71
|
+
end
|
72
|
+
|
73
|
+
should "use shoulda for testing" do
|
74
|
+
assert_equal :shoulda, @generator.testing_framework
|
75
|
+
end
|
76
|
+
|
77
|
+
should "use rdoc for documentation" do
|
78
|
+
assert_equal :rdoc, @generator.documentation_framework
|
79
|
+
end
|
80
|
+
|
81
|
+
should "set todo in summary" do
|
82
|
+
assert_match /todo/i, @generator.summary
|
83
|
+
end
|
84
|
+
|
85
|
+
should "set todo in description" do
|
86
|
+
assert_match /todo/i, @generator.description
|
87
|
+
end
|
88
|
+
|
89
|
+
should "set target directory to the project name" do
|
90
|
+
assert_equal @project_name, File.split(@generator.target_dir).last
|
91
|
+
end
|
92
|
+
|
93
|
+
should "set user's name from git config" do
|
94
|
+
assert_equal @git_name, @generator.user_name
|
95
|
+
end
|
96
|
+
|
97
|
+
should "set email from git config" do
|
98
|
+
assert_equal @git_email, @generator.user_email
|
99
|
+
end
|
100
|
+
|
101
|
+
should "set origin remote as github, based on username and project name" do
|
102
|
+
assert_equal "git@github.com:#{@github_user}/#{@project_name}.git", @generator.git_remote
|
103
|
+
end
|
104
|
+
|
105
|
+
should "set homepage as github based on username and project name" do
|
106
|
+
assert_equal "http://github.com/#{@github_user}/#{@project_name}", @generator.homepage
|
107
|
+
end
|
108
|
+
|
109
|
+
should "set github username from git config" do
|
110
|
+
assert_equal @github_user, @generator.github_username
|
111
|
+
end
|
112
|
+
|
113
|
+
should "set project name as the-perfect-gem" do
|
114
|
+
assert_equal @project_name, @generator.project_name
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context "using yard" do
|
119
|
+
setup do
|
120
|
+
@generator = build_generator(:documentation_framework => :yard)
|
121
|
+
end
|
122
|
+
|
123
|
+
should "set the doc_task to yardoc" do
|
124
|
+
assert_equal "yardoc", @generator.doc_task
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
|
129
|
+
context "using rdoc" do
|
130
|
+
setup do
|
131
|
+
@generator = build_generator(:documentation_framework => :rdoc)
|
132
|
+
end
|
133
|
+
|
134
|
+
should "set the doc_task to rdoc" do
|
135
|
+
assert_equal "rdoc", @generator.doc_task
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "using a custom homepage" do
|
140
|
+
setup do
|
141
|
+
@generator = build_generator(:homepage => 'http://zomg.com')
|
142
|
+
end
|
143
|
+
|
144
|
+
should "set the homepage" do
|
145
|
+
assert_equal "http://zomg.com", @generator.homepage
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestGeneratorMixins < Test::Unit::TestCase
|
4
|
+
|
5
|
+
[Juwelier::Generator::BaconMixin,
|
6
|
+
Juwelier::Generator::MicronautMixin,
|
7
|
+
Juwelier::Generator::MinitestMixin,
|
8
|
+
Juwelier::Generator::RspecMixin,
|
9
|
+
Juwelier::Generator::ShouldaMixin,
|
10
|
+
Juwelier::Generator::TestspecMixin,
|
11
|
+
Juwelier::Generator::TestunitMixin,
|
12
|
+
].each do |mixin|
|
13
|
+
context "#{mixin}" do
|
14
|
+
%w(default_task feature_support_require feature_support_extend
|
15
|
+
test_dir test_task test_pattern test_filename
|
16
|
+
test_helper_filename).each do |method|
|
17
|
+
should "define #{method}" do
|
18
|
+
assert mixin.method_defined?(method)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,245 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSpecification < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@project = create_construct
|
6
|
+
end
|
7
|
+
|
8
|
+
def teardown
|
9
|
+
@project.destroy!
|
10
|
+
end
|
11
|
+
|
12
|
+
def build_juwelier_gemspec(&block)
|
13
|
+
gemspec = if block
|
14
|
+
Gem::Specification.new(&block)
|
15
|
+
else
|
16
|
+
Gem::Specification.new()
|
17
|
+
end
|
18
|
+
gemspec.extend(Juwelier::Specification)
|
19
|
+
gemspec
|
20
|
+
end
|
21
|
+
|
22
|
+
should "be able to use to_ruby on a duped gemspec without error" do
|
23
|
+
gemspec = build_juwelier_gemspec
|
24
|
+
gemspec.files.include 'throwaway value'
|
25
|
+
|
26
|
+
gemspec.dup.to_ruby
|
27
|
+
end
|
28
|
+
|
29
|
+
context "basic defaults" do
|
30
|
+
setup do
|
31
|
+
@gemspec = build_juwelier_gemspec
|
32
|
+
end
|
33
|
+
|
34
|
+
should "make files a FileList" do
|
35
|
+
assert_equal FileList, @gemspec.files.class
|
36
|
+
end
|
37
|
+
|
38
|
+
should "make extra_rdoc_files a FileList" do
|
39
|
+
assert_equal FileList, @gemspec.extra_rdoc_files.class
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
context "there aren't any executables in the project directory" do
|
45
|
+
setup do
|
46
|
+
@project.directory 'bin'
|
47
|
+
end
|
48
|
+
|
49
|
+
context "and there hasn't been any set on the gemspec" do
|
50
|
+
setup do
|
51
|
+
@gemspec = build_juwelier_gemspec
|
52
|
+
@gemspec.set_juwelier_defaults(@project)
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
should "have empty gemspec executables" do
|
57
|
+
assert_equal [], @gemspec.executables
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "and has been previously set executables" do
|
62
|
+
setup do
|
63
|
+
@gemspec = build_juwelier_gemspec do |gemspec|
|
64
|
+
gemspec.executables = %w(non-existant)
|
65
|
+
end
|
66
|
+
@gemspec.set_juwelier_defaults(@project)
|
67
|
+
end
|
68
|
+
|
69
|
+
should "have only the original executables in the gemspec" do
|
70
|
+
assert_equal %w(non-existant), @gemspec.executables
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context "there are multiple executables in the project directory" do
|
76
|
+
setup do
|
77
|
+
@project.directory('bin') do |bin|
|
78
|
+
bin.file 'burnination'
|
79
|
+
bin.file 'trogdor'
|
80
|
+
end
|
81
|
+
repo = Git.init(@project.to_s)
|
82
|
+
repo.config('user.name', 'who')
|
83
|
+
repo.config('user.email', 'who@where.com')
|
84
|
+
repo.add('bin/burnination')
|
85
|
+
repo.commit('Initial commit')
|
86
|
+
end
|
87
|
+
|
88
|
+
context "and there hasn't been any set on the gemspec" do
|
89
|
+
setup do
|
90
|
+
@gemspec = build_juwelier_gemspec
|
91
|
+
@gemspec.set_juwelier_defaults(@project)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "have the executables under version control in the gemspec" do
|
95
|
+
assert_equal %w(burnination), @gemspec.executables
|
96
|
+
end
|
97
|
+
end
|
98
|
+
context "and has been previously set executables" do
|
99
|
+
setup do
|
100
|
+
@gemspec = build_juwelier_gemspec do |gemspec|
|
101
|
+
gemspec.executables = %w(burnination)
|
102
|
+
end
|
103
|
+
@gemspec.set_juwelier_defaults(@project)
|
104
|
+
end
|
105
|
+
should "have only the original executables in the gemspec" do
|
106
|
+
assert_equal %w(burnination), @gemspec.executables
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context "there are mutiple extconf.rb and mkrf_conf.rb in the project directory" do
|
112
|
+
setup do
|
113
|
+
@project.directory('ext') do |ext|
|
114
|
+
ext.file 'extconf.rb'
|
115
|
+
ext.file 'mkrf_conf.rb'
|
116
|
+
ext.directory('trogdor_native') do |trogdor_native|
|
117
|
+
trogdor_native.file 'extconf.rb'
|
118
|
+
trogdor_native.file 'mkrf_conf.rb'
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
context "and there hasn't been any extensions set on the gemspec" do
|
124
|
+
setup do
|
125
|
+
@gemspec = build_juwelier_gemspec
|
126
|
+
@gemspec.set_juwelier_defaults(@project)
|
127
|
+
end
|
128
|
+
|
129
|
+
should "have all the extconf.rb and mkrf_config.rb files in extensions" do
|
130
|
+
assert_equal %w(ext/mkrf_conf.rb ext/trogdor_native/mkrf_conf.rb ext/extconf.rb ext/trogdor_native/extconf.rb).sort, @gemspec.extensions.sort
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
context "there are some files and is setup for git" do
|
138
|
+
setup do
|
139
|
+
@project.file 'Rakefile'
|
140
|
+
@project.directory('lib') do |lib|
|
141
|
+
lib.file 'example.rb'
|
142
|
+
end
|
143
|
+
|
144
|
+
repo = Git.init(@project.to_s)
|
145
|
+
repo.config('user.name', 'who')
|
146
|
+
repo.config('user.email', 'who@where.com')
|
147
|
+
repo.add('.')
|
148
|
+
repo.commit('Initial commit')
|
149
|
+
end
|
150
|
+
|
151
|
+
context "and the files defaults are used" do
|
152
|
+
setup do
|
153
|
+
@gemspec = build_juwelier_gemspec
|
154
|
+
@gemspec.set_juwelier_defaults(@project, @project)
|
155
|
+
end
|
156
|
+
|
157
|
+
should "populate files from git" do
|
158
|
+
assert_equal %w(Rakefile lib/example.rb), @gemspec.files.sort
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context "and the files specified manually" do
|
163
|
+
setup do
|
164
|
+
@gemspec = build_juwelier_gemspec do |gemspec|
|
165
|
+
gemspec.files = %w(Rakefile)
|
166
|
+
end
|
167
|
+
@gemspec.set_juwelier_defaults(@project, @project)
|
168
|
+
end
|
169
|
+
|
170
|
+
should "not be overridden by files from git" do
|
171
|
+
assert_equal %w(Rakefile), @gemspec.files
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
end
|
176
|
+
|
177
|
+
context "there are some files and is setup for git with ignored files" do
|
178
|
+
setup do
|
179
|
+
@project.file '.gitignore', 'ignored'
|
180
|
+
@project.file 'ignored'
|
181
|
+
@project.file 'Rakefile'
|
182
|
+
@project.directory('lib') do |lib|
|
183
|
+
lib.file 'example.rb'
|
184
|
+
end
|
185
|
+
|
186
|
+
repo = Git.init(@project.to_s)
|
187
|
+
repo.config('user.name', 'who')
|
188
|
+
repo.config('user.email', 'who@where.com')
|
189
|
+
repo.add('.')
|
190
|
+
repo.commit('Initial commit')
|
191
|
+
|
192
|
+
|
193
|
+
@gemspec = build_juwelier_gemspec
|
194
|
+
@gemspec.set_juwelier_defaults(@project, @project)
|
195
|
+
end
|
196
|
+
|
197
|
+
should "populate files from git excluding ignored and .gitignore" do
|
198
|
+
assert_equal %w(Rakefile lib/example.rb), @gemspec.files.sort
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
context "there are some files and is setup for git and working in a sub directory" do
|
203
|
+
setup do
|
204
|
+
@subproject = File.join(@project, 'subproject')
|
205
|
+
@project.file 'Rakefile'
|
206
|
+
@project.file 'README'
|
207
|
+
@project.directory 'subproject' do |subproject|
|
208
|
+
subproject.file 'README'
|
209
|
+
subproject.directory('lib') do |lib|
|
210
|
+
lib.file 'subproject_example.rb'
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
repo = Git.init(@project.to_s)
|
215
|
+
repo.config('user.name', 'who')
|
216
|
+
repo.config('user.email', 'who@where.com')
|
217
|
+
repo.add('.')
|
218
|
+
repo.commit('Initial commit')
|
219
|
+
|
220
|
+
@gemspec = build_juwelier_gemspec
|
221
|
+
@gemspec.set_juwelier_defaults(@subproject, @project)
|
222
|
+
end
|
223
|
+
|
224
|
+
should "populate files from git relative to sub directory" do
|
225
|
+
assert_equal %w(lib/subproject_example.rb README).sort, @gemspec.files.sort
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
context "there are some files and is not setup for git" do
|
230
|
+
setup do
|
231
|
+
@project.file 'Rakefile'
|
232
|
+
@project.directory('lib') do |lib|
|
233
|
+
lib.file 'example.rb'
|
234
|
+
end
|
235
|
+
|
236
|
+
@gemspec = build_juwelier_gemspec
|
237
|
+
@gemspec.set_juwelier_defaults(@project, @project)
|
238
|
+
end
|
239
|
+
|
240
|
+
should "not populate files" do
|
241
|
+
assert_equal [], @gemspec.files.sort
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
end
|