Skip to content

Commit

Permalink
Support running specs against a tarball
Browse files Browse the repository at this point in the history
When bundler specs are run from a ruby tarball (ruby-core does this),
there's no git folder, so `git ls-files` fails.

Support this case by making specs rely on the list of files from the
bundler gemspec instead, and invert the spec that makes sure we ship the
right set of files.

As per the other quality specs, skip them in this case.
  • Loading branch information
deivid-rodriguez committed May 27, 2020
1 parent 1cc0293 commit b28d5ec
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
2 changes: 1 addition & 1 deletion bundler/spec/quality_spec.rb
Expand Up @@ -216,7 +216,7 @@ def check_for_specific_pronouns(filename)
end

it "ships the correct set of files" do
git_list = shipped_files
git_list = git_ls_files(ruby_core? ? "lib/bundler lib/bundler.rb man/bundle* man/gemfile* libexec/bundle*" : "lib man exe CHANGELOG.md LICENSE.md README.md bundler.gemspec")

gem_list = loaded_gemspec.files

Expand Down
2 changes: 1 addition & 1 deletion bundler/spec/support/helpers.rb
Expand Up @@ -331,7 +331,7 @@ def with_built_bundler(version = nil)

build_metadata = {
:built_at => loaded_gemspec.date.utc.strftime("%Y-%m-%d"),
:git_commit_sha => sys_exec("git rev-parse --short HEAD", :dir => source_root).strip,
:git_commit_sha => git_commit_sha,
}

replace_build_metadata(build_metadata, dir: build_path) # rubocop:disable Style/HashSyntax
Expand Down
22 changes: 16 additions & 6 deletions bundler/spec/support/path.rb
Expand Up @@ -68,7 +68,7 @@ def tracked_files
end

def shipped_files
@shipped_files ||= git_ls_files(shipped_files_glob)
@shipped_files ||= loaded_gemspec.files
end

def lib_tracked_files
Expand Down Expand Up @@ -231,20 +231,22 @@ def ruby_core?
end
end

def git_commit_sha
ruby_core_tarball? ? "unknown" : sys_exec("git rev-parse --short HEAD", :dir => source_root).strip
end

private

def git_ls_files(glob)
sys_exec("git ls-files -z -- #{glob}", :dir => source_root).split("\x0")
skip "Not running on a git context, since running tests from a tarball" if ruby_core_tarball?

sys_exec!("git ls-files -z -- #{glob}", :dir => source_root).split("\x0")
end

def tracked_files_glob
ruby_core? ? "lib/bundler lib/bundler.rb spec/bundler man/bundle*" : ""
end

def shipped_files_glob
ruby_core? ? "lib/bundler lib/bundler.rb man/bundle* man/gemfile* libexec/bundle*" : "lib man exe CHANGELOG.md LICENSE.md README.md bundler.gemspec"
end

def lib_tracked_files_glob
ruby_core? ? "lib/bundler lib/bundler.rb" : "lib"
end
Expand All @@ -253,6 +255,14 @@ def man_tracked_files_glob
ruby_core? ? "man/bundle* man/gemfile*" : "man"
end

def git_root
ruby_core? ? source_root : source_root.parent
end

def ruby_core_tarball?
!git_root.join(".git").directory?
end

extend self
end
end

0 comments on commit b28d5ec

Please sign in to comment.