diff options
author | Tim Fischbach <mail@timfischbach.de> | 2015-07-05 22:18:42 +0200 |
---|---|---|
committer | Andre Arko <andre@arko.net> | 2015-07-27 13:22:41 -0700 |
commit | 1691f6ab287d047913b9cee3c25e7e2493311034 (patch) | |
tree | 596ca851ca66291846cfbad59b9bcd9f13c7f7a8 | |
parent | 0433b83757cf8e5e424221f8752bf59b1ac5d693 (diff) | |
download | bundler-1691f6ab287d047913b9cee3c25e7e2493311034.tar.gz |
Pessimistic test framework versions for bundle gem command
Use a pessimistic version requirement for RSpec and Minitest in
gemspecs generated by the `bundle gem` command. It is best practice to
at least depend on major versions of development dependency gems.
* Hard code major versions of the two testing frameworks.
* Add a spec that tests that only specific version requirements are
used in development dependencies.
-rw-r--r-- | lib/bundler/cli/gem.rb | 7 | ||||
-rw-r--r-- | lib/bundler/templates/newgem/newgem.gemspec.tt | 2 | ||||
-rw-r--r-- | spec/commands/newgem_spec.rb | 12 |
3 files changed, 20 insertions, 1 deletions
diff --git a/lib/bundler/cli/gem.rb b/lib/bundler/cli/gem.rb index cef64f27a8..4a4d0d1ac5 100644 --- a/lib/bundler/cli/gem.rb +++ b/lib/bundler/cli/gem.rb @@ -2,6 +2,11 @@ require "pathname" module Bundler class CLI::Gem + TEST_FRAMEWORK_VERSIONS = { + 'rspec' => '3.0', + 'minitest' => '5.0' + } + attr_reader :options, :gem_name, :thor, :name, :target def initialize(options, gem_name, thor) @@ -63,6 +68,8 @@ module Bundler if test_framework = ask_and_set_test_framework config[:test] = test_framework + config[:test_framework_version] = TEST_FRAMEWORK_VERSIONS[test_framework] + templates.merge!(".travis.yml.tt" => ".travis.yml") case test_framework diff --git a/lib/bundler/templates/newgem/newgem.gemspec.tt b/lib/bundler/templates/newgem/newgem.gemspec.tt index 89f669120b..c35ee72dff 100644 --- a/lib/bundler/templates/newgem/newgem.gemspec.tt +++ b/lib/bundler/templates/newgem/newgem.gemspec.tt @@ -38,6 +38,6 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rake-compiler" <%- end -%> <%- if config[:test] -%> - spec.add_development_dependency "<%=config[:test]%>" + spec.add_development_dependency "<%=config[:test]%>", "~> <%=config[:test_framework_version]%>" <%- end -%> end diff --git a/spec/commands/newgem_spec.rb b/spec/commands/newgem_spec.rb index 8acde88b5e..4df2760696 100644 --- a/spec/commands/newgem_spec.rb +++ b/spec/commands/newgem_spec.rb @@ -54,6 +54,14 @@ describe "bundle gem" do end end + shared_examples_for "following best practices for gem dependencies" do + it "only adds development dependencies with specific version requirements" do + unspecific_dev_dependencies = generated_gem.gemspec.development_dependencies.reject(&:specific?) + + expect(unspecific_dev_dependencies).to eq([]) + end + end + it "generates a valid gemspec" do system_gems ["rake-10.0.2"] @@ -238,6 +246,8 @@ describe "bundle gem" do bundle "gem #{gem_name} --test=rspec" end + it_should_behave_like("following best practices for gem dependencies") + it "builds spec skeleton" do expect(bundled_app("test_gem/.rspec")).to exist expect(bundled_app("test_gem/spec/test_gem_spec.rb")).to exist @@ -289,6 +299,8 @@ describe "bundle gem" do bundle "gem #{gem_name} --test=minitest" end + it_should_behave_like("following best practices for gem dependencies") + it "builds spec skeleton" do expect(bundled_app("test_gem/test/test_gem_test.rb")).to exist expect(bundled_app("test_gem/test/test_helper.rb")).to exist |