Skip to content
This repository has been archived by the owner on Apr 14, 2021. It is now read-only.

Add config variable and check for platform warnings #6309

Merged
merged 4 commits into from Mar 1, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/bundler/definition.rb
Expand Up @@ -878,7 +878,7 @@ def expand_dependencies(dependencies, remote = false)
dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name)
next if !remote && !dep.current_platform?
platforms = dep.gem_platforms(sorted_platforms)
if platforms.empty?
if platforms.empty? && !Bundler.settings[:disable_platform_warnings]
mapped_platforms = dep.platforms.map {|p| Dependency::PLATFORM_MAP[p] }
Bundler.ui.warn \
"The dependency #{dep} will be unused by any of the platforms Bundler is installing for. " \
Expand Down
1 change: 1 addition & 0 deletions lib/bundler/settings.rb
Expand Up @@ -26,6 +26,7 @@ class Settings
disable_exec_load
disable_local_branch_check
disable_multisource
disable_platform_warnings
disable_shared_gems
disable_version_check
error_on_stderr
Expand Down
2 changes: 2 additions & 0 deletions man/bundle-config.ronn
Expand Up @@ -166,6 +166,8 @@ learn more about their operation in [bundle install(1)][bundle-install(1)].
When set, Gemfiles containing multiple sources will produce errors
instead of warnings.
Use `bundle config --delete disable_multisource` to unset.
* `disable_platform_warnings` (`BUNDLE_DISABLE_PLATFORM_WARNINGS`):
Disable warnings during bundle install when a dependency is unused on the current platform.
* `disable_shared_gems` (`BUNDLE_DISABLE_SHARED_GEMS`):
Stop Bundler from accessing gems installed to RubyGems' normal location.
* `disable_version_check` (`BUNDLE_DISABLE_VERSION_CHECK`):
Expand Down
19 changes: 19 additions & 0 deletions spec/install/gemfile/platform_spec.rb
Expand Up @@ -246,6 +246,25 @@
The dependency #{Gem::Dependency.new("rack", ">= 0")} will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
O
end

context "when disable_platform_warnings is true" do
before { bundle! "config disable_platform_warnings true" }

it "does not print the warning when a dependency is unused on any platform" do
simulate_platform "ruby"
simulate_ruby_engine "ruby"

gemfile <<-G
source "file://#{gem_repo1}"

gem "rack", :platform => [:mingw, :mswin, :x64_mingw, :jruby]
G

bundle! "install"

expect(out).not_to match(/The dependency (.*) will be unused/)
end
end
end

RSpec.describe "when a gem has no architecture" do
Expand Down