remove update-ruby
Closes Homebrew/homebrew#49523. Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
parent
61e9d43ead
commit
2496bdf280
@ -1,487 +0,0 @@
|
||||
require "cmd/tap"
|
||||
require "diagnostic"
|
||||
require "formula_versions"
|
||||
require "migrator"
|
||||
require "formulary"
|
||||
require "descriptions"
|
||||
|
||||
module Homebrew
|
||||
def update_ruby
|
||||
unless ARGV.named.empty?
|
||||
abort <<-EOS.undent
|
||||
This command updates brew itself, and does not take formula names.
|
||||
Use `brew upgrade <formula>`.
|
||||
EOS
|
||||
end
|
||||
|
||||
# check permissions
|
||||
checks = Diagnostic::Checks.new
|
||||
%w[
|
||||
check_access_usr_local
|
||||
check_access_homebrew_repository
|
||||
].each do |check|
|
||||
out = checks.send(check)
|
||||
odie out unless out.nil?
|
||||
end
|
||||
|
||||
# ensure git is installed
|
||||
Utils.ensure_git_installed!
|
||||
|
||||
# ensure GIT_CONFIG is unset as we need to operate on .git/config
|
||||
ENV.delete("GIT_CONFIG")
|
||||
|
||||
cd HOMEBREW_REPOSITORY
|
||||
git_init_if_necessary
|
||||
|
||||
# migrate to new directories based tap structure
|
||||
migrate_taps
|
||||
|
||||
report = Report.new
|
||||
master_updater = Updater.new(HOMEBREW_REPOSITORY)
|
||||
master_updater.pull!
|
||||
master_updated = master_updater.updated?
|
||||
if master_updated
|
||||
initial_short = shorten_revision(master_updater.initial_revision)
|
||||
current_short = shorten_revision(master_updater.current_revision)
|
||||
puts "Updated Homebrew from #{initial_short} to #{current_short}."
|
||||
end
|
||||
report.update(master_updater.report)
|
||||
|
||||
# rename Taps directories
|
||||
# this procedure will be removed in the future if it seems unnecessasry
|
||||
rename_taps_dir_if_necessary
|
||||
|
||||
updated_taps = []
|
||||
Tap.each do |tap|
|
||||
next unless tap.git?
|
||||
|
||||
tap.path.cd do
|
||||
updater = Updater.new(tap.path)
|
||||
|
||||
begin
|
||||
updater.pull!
|
||||
rescue
|
||||
onoe "Failed to update tap: #{tap}"
|
||||
else
|
||||
updated_taps << tap.name if updater.updated?
|
||||
report.update(updater.report) do |_key, oldval, newval|
|
||||
oldval.concat(newval)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
unless updated_taps.empty?
|
||||
puts "Updated #{updated_taps.size} tap#{plural(updated_taps.size)} " \
|
||||
"(#{updated_taps.join(", ")})."
|
||||
end
|
||||
puts "Already up-to-date." unless master_updated || !updated_taps.empty?
|
||||
|
||||
Tap.clear_cache
|
||||
Tap.each(&:link_manpages)
|
||||
|
||||
# automatically tap any migrated formulae's new tap
|
||||
report.select_formula(:D).each do |f|
|
||||
next unless (dir = HOMEBREW_CELLAR/f).exist?
|
||||
migration = TAP_MIGRATIONS[f]
|
||||
next unless migration
|
||||
tap = Tap.fetch(*migration.split("/"))
|
||||
tap.install unless tap.installed?
|
||||
|
||||
# update tap for each Tab
|
||||
tabs = dir.subdirs.map { |d| Tab.for_keg(Keg.new(d)) }
|
||||
next if tabs.first.source["tap"] != "Homebrew/homebrew"
|
||||
tabs.each { |tab| tab.source["tap"] = "#{tap.user}/homebrew-#{tap.repo}" }
|
||||
tabs.each(&:write)
|
||||
end if load_tap_migrations
|
||||
|
||||
load_formula_renames
|
||||
report.update_renamed
|
||||
|
||||
# Migrate installed renamed formulae from core and taps.
|
||||
report.select_formula(:R).each do |oldname, newname|
|
||||
if oldname.include?("/")
|
||||
user, repo, oldname = oldname.split("/", 3)
|
||||
newname = newname.split("/", 3).last
|
||||
else
|
||||
user = "homebrew"
|
||||
repo = "homebrew"
|
||||
end
|
||||
|
||||
next unless (dir = HOMEBREW_CELLAR/oldname).directory? && !dir.subdirs.empty?
|
||||
|
||||
begin
|
||||
f = Formulary.factory("#{user}/#{repo}/#{newname}")
|
||||
# short term fix to prevent situation like https://github.com/Homebrew/homebrew/issues/45616
|
||||
rescue Exception
|
||||
end
|
||||
|
||||
next unless f
|
||||
|
||||
begin
|
||||
migrator = Migrator.new(f)
|
||||
migrator.migrate
|
||||
rescue Migrator::MigratorDifferentTapsError
|
||||
end
|
||||
end
|
||||
|
||||
if report.empty?
|
||||
puts "No changes to formulae." if master_updated || !updated_taps.empty?
|
||||
else
|
||||
report.dump
|
||||
end
|
||||
Descriptions.update_cache(report)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def shorten_revision(revision)
|
||||
`git rev-parse --short #{revision}`.chomp
|
||||
end
|
||||
|
||||
def git_init_if_necessary
|
||||
if Dir[".git/*"].empty?
|
||||
safe_system "git", "init"
|
||||
safe_system "git", "config", "core.autocrlf", "false"
|
||||
safe_system "git", "config", "remote.origin.url", "https://github.com/Homebrew/homebrew.git"
|
||||
safe_system "git", "config", "remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*"
|
||||
safe_system "git", "fetch", "origin"
|
||||
safe_system "git", "reset", "--hard", "origin/master"
|
||||
end
|
||||
|
||||
if `git remote show origin -n` =~ /Fetch URL: \S+mxcl\/homebrew/
|
||||
safe_system "git", "remote", "set-url", "origin", "https://github.com/Homebrew/homebrew.git"
|
||||
safe_system "git", "remote", "set-url", "--delete", "origin", ".*mxcl\/homebrew.*"
|
||||
end
|
||||
rescue Exception
|
||||
FileUtils.rm_rf ".git"
|
||||
raise
|
||||
end
|
||||
|
||||
def rename_taps_dir_if_necessary
|
||||
Dir.glob("#{HOMEBREW_LIBRARY}/Taps/*/") do |tapd|
|
||||
begin
|
||||
if File.directory?(tapd + "/.git")
|
||||
tapd_basename = File.basename(tapd)
|
||||
if tapd_basename.include?("-")
|
||||
# only replace the *last* dash: yes, tap filenames suck
|
||||
user, repo = tapd_basename.reverse.sub("-", "/").reverse.split("/")
|
||||
|
||||
FileUtils.mkdir_p("#{HOMEBREW_LIBRARY}/Taps/#{user.downcase}")
|
||||
FileUtils.mv(tapd, "#{HOMEBREW_LIBRARY}/Taps/#{user.downcase}/homebrew-#{repo.downcase}")
|
||||
|
||||
if tapd_basename.count("-") >= 2
|
||||
opoo "Homebrew changed the structure of Taps like <someuser>/<sometap>. "\
|
||||
+ "So you may need to rename #{HOMEBREW_LIBRARY}/Taps/#{user.downcase}/homebrew-#{repo.downcase} manually."
|
||||
end
|
||||
else
|
||||
opoo "Homebrew changed the structure of Taps like <someuser>/<sometap>. "\
|
||||
"#{tapd} is incorrect name format. You may need to rename it like <someuser>/<sometap> manually."
|
||||
end
|
||||
end
|
||||
rescue => ex
|
||||
onoe ex.message
|
||||
next # next tap directory
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def load_tap_migrations
|
||||
load "tap_migrations.rb"
|
||||
rescue LoadError
|
||||
false
|
||||
end
|
||||
|
||||
def load_formula_renames
|
||||
load "formula_renames.rb"
|
||||
rescue LoadError
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
class Updater
|
||||
attr_reader :initial_revision, :current_revision, :repository
|
||||
|
||||
def initialize(repository)
|
||||
@repository = repository
|
||||
@stashed = false
|
||||
@quiet_args = []
|
||||
@quiet_args << "--quiet" unless ARGV.verbose?
|
||||
end
|
||||
|
||||
def pull!(options = {})
|
||||
# The upstream repository's default branch may not be master;
|
||||
# check refs/remotes/origin/HEAD to see what the default
|
||||
# origin branch name is, and use that. If not set, fall back to "master".
|
||||
begin
|
||||
@upstream_branch = `git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null`
|
||||
@upstream_branch = @upstream_branch.chomp.sub('refs/remotes/origin/', '')
|
||||
rescue ErrorDuringExecution
|
||||
@upstream_branch = "master"
|
||||
end
|
||||
|
||||
begin
|
||||
@initial_branch = `git symbolic-ref --short HEAD 2>/dev/null`.chomp
|
||||
rescue ErrorDuringExecution
|
||||
@initial_branch = ""
|
||||
end
|
||||
|
||||
unless `git status --untracked-files=all --porcelain 2>/dev/null`.chomp.empty?
|
||||
if ARGV.verbose?
|
||||
puts "Stashing uncommitted changes to #{repository}."
|
||||
system "git", "status", "--short", "--untracked-files=all"
|
||||
end
|
||||
safe_system "git", "-c", "user.email=brew-update@localhost",
|
||||
"-c", "user.name=brew update",
|
||||
"stash", "save", "--include-untracked", *@quiet_args
|
||||
safe_system "git", "reset", "--hard", *@quiet_args
|
||||
@stashed = true
|
||||
end
|
||||
|
||||
# Used for testing purposes, e.g., for testing formula migration after
|
||||
# renaming it in the currently checked-out branch. To test run
|
||||
# "brew update --simulate-from-current-branch"
|
||||
if ARGV.include?("--simulate-from-current-branch")
|
||||
@initial_revision = `git rev-parse -q --verify #{@upstream_branch}`.chomp
|
||||
@current_revision = read_current_revision
|
||||
begin
|
||||
safe_system "git", "merge-base", "--is-ancestor", @initial_revision, @current_revision
|
||||
rescue ErrorDuringExecution
|
||||
odie "Your HEAD is not a descendant of '#{@upstream_branch}'."
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if @initial_branch != @upstream_branch && !@initial_branch.empty?
|
||||
# Recreate and check out `#{upstream_branch}` if unable to fast-forward
|
||||
# it to `origin/#{@upstream_branch}`. Otherwise, just check it out.
|
||||
if system("git", "merge-base", "--is-ancestor", @upstream_branch, "origin/#{@upstream_branch}")
|
||||
safe_system "git", "checkout", "--force", @upstream_branch, *@quiet_args
|
||||
else
|
||||
safe_system "git", "checkout", "--force", "-B", @upstream_branch, "origin/#{@upstream_branch}", *@quiet_args
|
||||
end
|
||||
end
|
||||
|
||||
@initial_revision = read_current_revision
|
||||
|
||||
# ensure we don't munge line endings on checkout
|
||||
safe_system "git", "config", "core.autocrlf", "false"
|
||||
|
||||
args = ["pull"]
|
||||
args << "--ff"
|
||||
args << ((ARGV.include? "--rebase") ? "--rebase" : "--no-rebase")
|
||||
args += @quiet_args
|
||||
args << "origin"
|
||||
# the refspec ensures that the default upstream branch gets updated
|
||||
args << "refs/heads/#{@upstream_branch}:refs/remotes/origin/#{@upstream_branch}"
|
||||
|
||||
reset_on_interrupt { safe_system "git", *args }
|
||||
|
||||
@current_revision = read_current_revision
|
||||
|
||||
pop_stash_message
|
||||
end
|
||||
|
||||
def pop_stash
|
||||
return unless @stashed
|
||||
safe_system "git", "stash", "pop", *@quiet_args
|
||||
if ARGV.verbose?
|
||||
puts "Restoring your stashed changes to #{repository}:"
|
||||
system "git", "status", "--short", "--untracked-files"
|
||||
end
|
||||
@stashed = false
|
||||
end
|
||||
|
||||
def pop_stash_message
|
||||
return unless @stashed
|
||||
puts "To restore the stashed changes to #{repository} run:"
|
||||
puts " `cd #{repository} && git stash pop`"
|
||||
@stashed = false
|
||||
end
|
||||
|
||||
def reset_on_interrupt
|
||||
ignore_interrupts { yield }
|
||||
ensure
|
||||
if $?.signaled? && $?.termsig == 2 # SIGINT
|
||||
safe_system "git", "checkout", @initial_branch unless @initial_branch.empty?
|
||||
safe_system "git", "reset", "--hard", @initial_revision, *@quiet_args
|
||||
if @initial_branch
|
||||
pop_stash
|
||||
else
|
||||
pop_stash_message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def report
|
||||
map = Hash.new { |h, k| h[k] = [] }
|
||||
|
||||
if initial_revision && initial_revision != current_revision
|
||||
wc_revision = read_current_revision
|
||||
|
||||
diff.each_line do |line|
|
||||
status, *paths = line.split
|
||||
src = paths.first
|
||||
dst = paths.last
|
||||
|
||||
next unless File.extname(dst) == ".rb"
|
||||
next unless paths.any? { |p| File.dirname(p) == formula_directory }
|
||||
|
||||
case status
|
||||
when "A", "D"
|
||||
map[status.to_sym] << repository.join(src)
|
||||
when "M"
|
||||
file = repository.join(src)
|
||||
begin
|
||||
formula = Formulary.factory(file)
|
||||
new_version = if wc_revision == current_revision
|
||||
formula.pkg_version
|
||||
else
|
||||
FormulaVersions.new(formula).formula_at_revision(@current_revision, &:pkg_version)
|
||||
end
|
||||
old_version = FormulaVersions.new(formula).formula_at_revision(@initial_revision, &:pkg_version)
|
||||
next if new_version == old_version
|
||||
# short term fix to prevent situation like https://github.com/Homebrew/homebrew/issues/45616
|
||||
rescue Exception => e
|
||||
onoe e if ARGV.homebrew_developer?
|
||||
end
|
||||
map[:M] << file
|
||||
when /^R\d{0,3}/
|
||||
map[:D] << repository.join(src) if File.dirname(src) == formula_directory
|
||||
map[:A] << repository.join(dst) if File.dirname(dst) == formula_directory
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
map
|
||||
end
|
||||
|
||||
def updated?
|
||||
initial_revision && initial_revision != current_revision
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def formula_directory
|
||||
if repository == HOMEBREW_REPOSITORY
|
||||
"Library/Formula"
|
||||
elsif repository.join("Formula").directory?
|
||||
"Formula"
|
||||
elsif repository.join("HomebrewFormula").directory?
|
||||
"HomebrewFormula"
|
||||
else
|
||||
"."
|
||||
end
|
||||
end
|
||||
|
||||
def read_current_revision
|
||||
`git rev-parse -q --verify HEAD`.chomp
|
||||
end
|
||||
|
||||
def diff
|
||||
Utils.popen_read(
|
||||
"git", "diff-tree", "-r", "--name-status", "--diff-filter=AMDR",
|
||||
"-M85%", initial_revision, current_revision
|
||||
)
|
||||
end
|
||||
|
||||
def `(cmd)
|
||||
out = super
|
||||
unless $?.success?
|
||||
$stderr.puts(out) unless out.empty?
|
||||
raise ErrorDuringExecution.new(cmd)
|
||||
end
|
||||
ohai(cmd, out) if ARGV.verbose?
|
||||
out
|
||||
end
|
||||
end
|
||||
|
||||
class Report
|
||||
def initialize
|
||||
@hash = {}
|
||||
end
|
||||
|
||||
def fetch(*args, &block)
|
||||
@hash.fetch(*args, &block)
|
||||
end
|
||||
|
||||
def update(*args, &block)
|
||||
@hash.update(*args, &block)
|
||||
end
|
||||
|
||||
def empty?
|
||||
@hash.empty?
|
||||
end
|
||||
|
||||
def dump
|
||||
# Key Legend: Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R)
|
||||
|
||||
dump_formula_report :A, "New Formulae"
|
||||
dump_formula_report :M, "Updated Formulae"
|
||||
dump_formula_report :R, "Renamed Formulae"
|
||||
dump_formula_report :D, "Deleted Formulae"
|
||||
end
|
||||
|
||||
def update_renamed
|
||||
renamed_formulae = []
|
||||
|
||||
fetch(:D, []).each do |path|
|
||||
case path.to_s
|
||||
when HOMEBREW_TAP_PATH_REGEX
|
||||
oldname = path.basename(".rb").to_s
|
||||
next unless newname = Tap.fetch($1, $2).formula_renames[oldname]
|
||||
else
|
||||
oldname = path.basename(".rb").to_s
|
||||
next unless newname = CoreFormulaRepository.instance.formula_renames[oldname]
|
||||
end
|
||||
|
||||
if fetch(:A, []).include?(newpath = path.dirname.join("#{newname}.rb"))
|
||||
renamed_formulae << [path, newpath]
|
||||
end
|
||||
end
|
||||
|
||||
unless renamed_formulae.empty?
|
||||
@hash[:A] -= renamed_formulae.map(&:last) if @hash[:A]
|
||||
@hash[:D] -= renamed_formulae.map(&:first) if @hash[:D]
|
||||
@hash[:R] = renamed_formulae
|
||||
end
|
||||
end
|
||||
|
||||
def select_formula(key)
|
||||
fetch(key, []).map do |path, newpath|
|
||||
if path.to_s =~ HOMEBREW_TAP_PATH_REGEX
|
||||
tap = Tap.fetch($1, $2)
|
||||
if newpath
|
||||
["#{tap}/#{path.basename(".rb")}", "#{tap}/#{newpath.basename(".rb")}"]
|
||||
else
|
||||
"#{tap}/#{path.basename(".rb")}"
|
||||
end
|
||||
elsif newpath
|
||||
["#{path.basename(".rb")}", "#{newpath.basename(".rb")}"]
|
||||
else
|
||||
path.basename(".rb").to_s
|
||||
end
|
||||
end.sort
|
||||
end
|
||||
|
||||
def dump_formula_report(key, title)
|
||||
formula = select_formula(key).map do |name, new_name|
|
||||
# Format list items of renamed formulae
|
||||
if key == :R
|
||||
new_name = pretty_installed(new_name) if installed?(name)
|
||||
"#{name} -> #{new_name}"
|
||||
else
|
||||
installed?(name) ? pretty_installed(name) : name
|
||||
end
|
||||
end
|
||||
|
||||
unless formula.empty?
|
||||
# Dump formula list.
|
||||
ohai title
|
||||
puts_columns(formula)
|
||||
end
|
||||
end
|
||||
|
||||
def installed?(formula)
|
||||
(HOMEBREW_CELLAR/formula.split("/").last).directory?
|
||||
end
|
||||
end
|
||||
@ -1,133 +0,0 @@
|
||||
require "testing_env"
|
||||
require "cmd/update-ruby"
|
||||
require "formula_versions"
|
||||
require "yaml"
|
||||
|
||||
class UpdaterTests < Homebrew::TestCase
|
||||
class UpdaterMock < ::Updater
|
||||
attr_accessor :diff, :expected, :called
|
||||
|
||||
def initialize(*)
|
||||
super
|
||||
@outputs = Hash.new { |h, k| h[k] = [] }
|
||||
@expected = []
|
||||
@called = []
|
||||
end
|
||||
|
||||
def in_repo_expect(cmd, output = "")
|
||||
@expected << cmd
|
||||
@outputs[cmd] << output
|
||||
end
|
||||
|
||||
def `(*args)
|
||||
cmd = args.join(" ")
|
||||
if @expected.include?(cmd) && !@outputs[cmd].empty?
|
||||
@called << cmd
|
||||
@outputs[cmd].shift
|
||||
else
|
||||
raise "#{inspect} unexpectedly called backticks: `#{cmd}`"
|
||||
end
|
||||
end
|
||||
alias_method :safe_system, :`
|
||||
alias_method :system, :`
|
||||
|
||||
def inspect
|
||||
"#<#{self.class.name}>"
|
||||
end
|
||||
end
|
||||
|
||||
def fixture(name)
|
||||
self.class.fixture_data[name] || ""
|
||||
end
|
||||
|
||||
def self.fixture_data
|
||||
@fixture_data ||= YAML.load_file("#{TEST_DIRECTORY}/fixtures/updater_fixture.yaml")
|
||||
end
|
||||
|
||||
def setup
|
||||
@updater = UpdaterMock.new(HOMEBREW_REPOSITORY)
|
||||
@report = Report.new
|
||||
end
|
||||
|
||||
def teardown
|
||||
FileUtils.rm_rf HOMEBREW_LIBRARY.join("Taps")
|
||||
end
|
||||
|
||||
def perform_update(fixture_name = "")
|
||||
Formulary.stubs(:factory).returns(stub(:pkg_version => "1.0"))
|
||||
FormulaVersions.stubs(:new).returns(stub(:formula_at_revision => "2.0"))
|
||||
@updater.diff = fixture(fixture_name)
|
||||
@updater.in_repo_expect("git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null", "refs/remotes/origin/master")
|
||||
@updater.in_repo_expect("git symbolic-ref --short HEAD 2>/dev/null", "master")
|
||||
@updater.in_repo_expect("git status --untracked-files=all --porcelain 2>/dev/null", "")
|
||||
@updater.in_repo_expect("git rev-parse -q --verify HEAD", "1234abcd")
|
||||
@updater.in_repo_expect("git config core.autocrlf false")
|
||||
@updater.in_repo_expect("git pull --ff --no-rebase --quiet origin refs/heads/master:refs/remotes/origin/master")
|
||||
@updater.in_repo_expect("git rev-parse -q --verify HEAD", "3456cdef")
|
||||
@updater.pull!(:silent => true)
|
||||
@updater.in_repo_expect("git rev-parse -q --verify HEAD", "3456cdef")
|
||||
@report.update(@updater.report)
|
||||
assert_equal @updater.expected, @updater.called
|
||||
end
|
||||
|
||||
def test_update_homebrew_without_any_changes
|
||||
perform_update
|
||||
assert_empty @report
|
||||
end
|
||||
|
||||
def test_update_homebrew_without_formulae_changes
|
||||
perform_update("update_git_diff_output_without_formulae_changes")
|
||||
assert_empty @report.select_formula(:M)
|
||||
assert_empty @report.select_formula(:A)
|
||||
assert_empty @report.select_formula(:D)
|
||||
end
|
||||
|
||||
def test_update_homebrew_with_formulae_changes
|
||||
perform_update("update_git_diff_output_with_formulae_changes")
|
||||
assert_equal %w[xar yajl], @report.select_formula(:M)
|
||||
assert_equal %w[antiword bash-completion ddrescue dict lua], @report.select_formula(:A)
|
||||
end
|
||||
|
||||
def test_update_homebrew_with_removed_formulae
|
||||
perform_update("update_git_diff_output_with_removed_formulae")
|
||||
assert_equal %w[libgsasl], @report.select_formula(:D)
|
||||
end
|
||||
|
||||
def test_update_homebrew_with_changed_filetype
|
||||
perform_update("update_git_diff_output_with_changed_filetype")
|
||||
end
|
||||
|
||||
def test_update_homebrew_with_restructured_tap
|
||||
repo = HOMEBREW_LIBRARY.join("Taps", "foo", "bar")
|
||||
@updater = UpdaterMock.new(repo)
|
||||
repo.join("Formula").mkpath
|
||||
|
||||
perform_update("update_git_diff_output_with_restructured_tap")
|
||||
|
||||
assert_equal %w[foo/bar/git foo/bar/lua], @report.select_formula(:A)
|
||||
assert_empty @report.select_formula(:D)
|
||||
end
|
||||
|
||||
def test_update_homebrew_simulate_homebrew_php_restructuring
|
||||
repo = HOMEBREW_LIBRARY.join("Taps", "foo", "bar")
|
||||
@updater = UpdaterMock.new(repo)
|
||||
repo.join("Formula").mkpath
|
||||
|
||||
perform_update("update_git_diff_simulate_homebrew_php_restructuring")
|
||||
|
||||
assert_empty @report.select_formula(:A)
|
||||
assert_equal %w[foo/bar/git foo/bar/lua], @report.select_formula(:D)
|
||||
end
|
||||
|
||||
def test_update_homebrew_with_tap_formulae_changes
|
||||
repo = HOMEBREW_LIBRARY.join("Taps", "foo", "bar")
|
||||
@updater = UpdaterMock.new(repo)
|
||||
repo.join("Formula").mkpath
|
||||
|
||||
perform_update("update_git_diff_output_with_tap_formulae_changes")
|
||||
|
||||
assert_equal %w[foo/bar/lua], @report.select_formula(:A)
|
||||
assert_equal %w[foo/bar/git], @report.select_formula(:M)
|
||||
assert_empty @report.select_formula(:D)
|
||||
end
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user