summaryrefslogtreecommitdiff
path: root/spec/bundler/commands/pristine_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/bundler/commands/pristine_spec.rb')
-rw-r--r--spec/bundler/commands/pristine_spec.rb168
1 files changed, 0 insertions, 168 deletions
diff --git a/spec/bundler/commands/pristine_spec.rb b/spec/bundler/commands/pristine_spec.rb
deleted file mode 100644
index 24291c1918..0000000000
--- a/spec/bundler/commands/pristine_spec.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-# frozen_string_literal: true
-
-require "bundler/vendored_fileutils"
-
-RSpec.describe "bundle pristine", :ruby_repo do
- before :each do
- build_lib "baz", :path => bundled_app do |s|
- s.version = "1.0.0"
- s.add_development_dependency "baz-dev", "=1.0.0"
- end
-
- build_repo2 do
- build_gem "weakling"
- build_gem "baz-dev", "1.0.0"
- build_gem "very_simple_binary", &:add_c_extension
- build_git "foo", :path => lib_path("foo")
- build_lib "bar", :path => lib_path("bar")
- end
-
- install_gemfile! <<-G
- source "file://#{gem_repo2}"
- gem "weakling"
- gem "very_simple_binary"
- gem "foo", :git => "#{lib_path("foo")}"
- gem "bar", :path => "#{lib_path("bar")}"
-
- gemspec
- G
- end
-
- context "when sourced from RubyGems" do
- it "reverts using cached .gem file" do
- spec = Bundler.definition.specs["weakling"].first
- changes_txt = Pathname.new(spec.full_gem_path).join("lib/changes.txt")
-
- FileUtils.touch(changes_txt)
- expect(changes_txt).to be_file
-
- bundle "pristine"
- expect(changes_txt).to_not be_file
- end
-
- it "does not delete the bundler gem", :ruby_repo do
- ENV["BUNDLER_SPEC_KEEP_DEFAULT_BUNDLER_GEM"] = "true"
- system_gems :bundler
- bundle! "install"
- bundle! "pristine", :system_bundler => true
- bundle! "-v", :system_bundler => true
- # An old rubygems couldn't handle a correct version of vendoered bundler.
- bundler_version = Gem::VERSION < "2.1" ? "1.16.0" : Bundler::VERSION
- expect(out).to end_with(bundler_version)
- end
- end
-
- context "when sourced from git repo" do
- it "reverts by resetting to current revision`" do
- spec = Bundler.definition.specs["foo"].first
- changed_file = Pathname.new(spec.full_gem_path).join("lib/foo.rb")
- diff = "#Pristine spec changes"
-
- File.open(changed_file, "a") {|f| f.puts diff }
- expect(File.read(changed_file)).to include(diff)
-
- bundle! "pristine"
- expect(File.read(changed_file)).to_not include(diff)
- end
-
- it "removes added files" do
- spec = Bundler.definition.specs["foo"].first
- changes_txt = Pathname.new(spec.full_gem_path).join("lib/changes.txt")
-
- FileUtils.touch(changes_txt)
- expect(changes_txt).to be_file
-
- bundle! "pristine"
- expect(changes_txt).not_to be_file
- end
- end
-
- context "when sourced from gemspec" do
- it "displays warning and ignores changes when sourced from gemspec" do
- spec = Bundler.definition.specs["baz"].first
- changed_file = Pathname.new(spec.full_gem_path).join("lib/baz.rb")
- diff = "#Pristine spec changes"
-
- File.open(changed_file, "a") {|f| f.puts diff }
- expect(File.read(changed_file)).to include(diff)
-
- bundle "pristine"
- expect(File.read(changed_file)).to include(diff)
- expect(out).to include("Cannot pristine #{spec.name} (#{spec.version}#{spec.git_version}). Gem is sourced from local path.")
- end
-
- it "reinstall gemspec dependency" do
- spec = Bundler.definition.specs["baz-dev"].first
- changed_file = Pathname.new(spec.full_gem_path).join("lib/baz-dev.rb")
- diff = "#Pristine spec changes"
-
- File.open(changed_file, "a") {|f| f.puts "#Pristine spec changes" }
- expect(File.read(changed_file)).to include(diff)
-
- bundle "pristine"
- expect(File.read(changed_file)).to_not include(diff)
- end
- end
-
- context "when sourced from path" do
- it "displays warning and ignores changes when sourced from local path" do
- spec = Bundler.definition.specs["bar"].first
- changes_txt = Pathname.new(spec.full_gem_path).join("lib/changes.txt")
- FileUtils.touch(changes_txt)
- expect(changes_txt).to be_file
- bundle "pristine"
- expect(out).to include("Cannot pristine #{spec.name} (#{spec.version}#{spec.git_version}). Gem is sourced from local path.")
- expect(changes_txt).to be_file
- end
- end
-
- context "when passing a list of gems to pristine" do
- it "resets them" do
- foo = Bundler.definition.specs["foo"].first
- foo_changes_txt = Pathname.new(foo.full_gem_path).join("lib/changes.txt")
- FileUtils.touch(foo_changes_txt)
- expect(foo_changes_txt).to be_file
-
- bar = Bundler.definition.specs["bar"].first
- bar_changes_txt = Pathname.new(bar.full_gem_path).join("lib/changes.txt")
- FileUtils.touch(bar_changes_txt)
- expect(bar_changes_txt).to be_file
-
- weakling = Bundler.definition.specs["weakling"].first
- weakling_changes_txt = Pathname.new(weakling.full_gem_path).join("lib/changes.txt")
- FileUtils.touch(weakling_changes_txt)
- expect(weakling_changes_txt).to be_file
-
- bundle! "pristine foo bar weakling"
-
- expect(out).to include("Cannot pristine bar (1.0). Gem is sourced from local path.").
- and include("Installing weakling 1.0")
-
- expect(weakling_changes_txt).not_to be_file
- expect(foo_changes_txt).not_to be_file
- expect(bar_changes_txt).to be_file
- end
-
- it "raises when one of them is not in the lockfile" do
- bundle "pristine abcabcabc"
- expect(out).to include("Could not find gem 'abcabcabc'.")
- end
- end
-
- context "when a build config exists for one of the gems" do
- let(:very_simple_binary) { Bundler.definition.specs["very_simple_binary"].first }
- let(:c_ext_dir) { Pathname.new(very_simple_binary.full_gem_path).join("ext") }
- let(:build_opt) { "--with-ext-lib=#{c_ext_dir}" }
- before { bundle "config build.very_simple_binary -- #{build_opt}" }
-
- # This just verifies that the generated Makefile from the c_ext gem makes
- # use of the build_args from the bundle config
- it "applies the config when installing the gem" do
- bundle! "pristine"
-
- makefile_contents = File.read(c_ext_dir.join("Makefile").to_s)
- expect(makefile_contents).to match(/libpath =.*#{c_ext_dir}/)
- expect(makefile_contents).to match(/LIBPATH =.*-L#{c_ext_dir}/)
- end
- end
-end