From 0dff2a9a26ac5afcb76c65a2939f9f72ca613af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Mon, 22 Apr 2019 10:24:27 +0200 Subject: [PATCH] Add spec for using relative requires --- lib/bundler/rubygems_integration.rb | 2 +- spec/quality_spec.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb index 6d93ed6fa17..32ddf185a00 100644 --- a/lib/bundler/rubygems_integration.rb +++ b/lib/bundler/rubygems_integration.rb @@ -637,7 +637,7 @@ def path_separator end def all_specs - require "bundler/remote_specification" + require_relative "remote_specification" Gem::Specification.stubs.map do |stub| StubSpecification.from_stub(stub) end diff --git a/spec/quality_spec.rb b/spec/quality_spec.rb index 07bd05049a5..87279ebb743 100644 --- a/spec/quality_spec.rb +++ b/spec/quality_spec.rb @@ -275,4 +275,20 @@ def check_for_specific_pronouns(filename) expect(warnings).to be_well_formed end end + + it "does not use require internally, but require_relative" do + Dir.chdir(root) do + exempt = %r{templates/|vendor/} + all_bad_requires = [] + lib_files = ruby_core? ? `git ls-files -z -- lib/bundler lib/bundler.rb` : `git ls-files -z -- lib` + lib_files.split("\x0").each do |filename| + next if filename =~ exempt + File.readlines(filename).each_with_index do |line, number| + line.scan(/^ *require "bundler/).each { all_bad_requires << "#{filename}:#{number.succ}" } + end + end + + expect(all_bad_requires).to be_empty, "#{all_bad_requires.size} internal requires that should use `require_relative`: #{all_bad_requires}" + end + end end