aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/bottle.rb6
l---------Library/Homebrew/test/resources/source-with-broken-symlink/broken-link1
-rw-r--r--Library/Homebrew/test/test_bottle.rb8
3 files changed, 14 insertions, 1 deletions
diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb
index fe2829c19..4c629cdbb 100644
--- a/Library/Homebrew/cmd/bottle.rb
+++ b/Library/Homebrew/cmd/bottle.rb
@@ -140,6 +140,10 @@ module Homebrew
erb.result(bottle.instance_eval { binding }).gsub(/^\s*$\n/, "")
end
+ def most_recent_mtime(pathname)
+ pathname.to_enum(:find).select(&:exist?).map(&:mtime).max
+ end
+
def bottle_formula(f)
unless f.installed?
return ofail "Formula not installed or up-to-date: #{f.full_name}"
@@ -187,7 +191,7 @@ module Homebrew
skip_relocation = false
formula_source_time = f.stable.stage do
- Pathname.pwd.to_enum(:find).map(&:mtime).max
+ most_recent_mtime(Pathname.pwd)
end
keg.lock do
diff --git a/Library/Homebrew/test/resources/source-with-broken-symlink/broken-link b/Library/Homebrew/test/resources/source-with-broken-symlink/broken-link
new file mode 120000
index 000000000..cfa0a4651
--- /dev/null
+++ b/Library/Homebrew/test/resources/source-with-broken-symlink/broken-link
@@ -0,0 +1 @@
+does-not-exist \ No newline at end of file
diff --git a/Library/Homebrew/test/test_bottle.rb b/Library/Homebrew/test/test_bottle.rb
new file mode 100644
index 000000000..f4398cc1d
--- /dev/null
+++ b/Library/Homebrew/test/test_bottle.rb
@@ -0,0 +1,8 @@
+require "testing_env"
+require "cmd/bottle"
+
+class BottleTests < Homebrew::TestCase
+ def test_most_recent_mtime_with_broken_symlink()
+ refute_nil Homebrew.most_recent_mtime(Pathname(File.join(TEST_DIRECTORY, 'resources/source-with-broken-symlink')))
+ end
+end