aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/pull.rb2
-rw-r--r--Library/Homebrew/tap.rb9
-rw-r--r--Library/Homebrew/test/test_tap.rb4
3 files changed, 14 insertions, 1 deletions
diff --git a/Library/Homebrew/cmd/pull.rb b/Library/Homebrew/cmd/pull.rb
index ad70f01f4..45c3bf76b 100644
--- a/Library/Homebrew/cmd/pull.rb
+++ b/Library/Homebrew/cmd/pull.rb
@@ -305,7 +305,7 @@ module Homebrew
files << $1 if line =~ %r{^\+\+\+ b/(.*)}
end
files.each do |file|
- if (tap.path/file).dirname == tap.formula_dir
+ if tap.formula_file?(file)
formula_name = File.basename(file, ".rb")
formulae << formula_name unless formulae.include?(formula_name)
else
diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb
index 712348d60..08e85688d 100644
--- a/Library/Homebrew/tap.rb
+++ b/Library/Homebrew/tap.rb
@@ -247,6 +247,15 @@ class Tap
end
end
+ # return true if given path would present a {Formula} file in this {Tap}.
+ # accepts both absolute path and relative path (relative to this {Tap}'s path)
+ # @private
+ def formula_file?(file)
+ file = Pathname.new(file) unless file.is_a? Pathname
+ file = file.expand_path(path)
+ file.extname == ".rb" && file.parent == formula_dir
+ end
+
# an array of all {Formula} names of this {Tap}.
def formula_names
@formula_names ||= formula_files.map { |f| formula_file_to_name(f) }
diff --git a/Library/Homebrew/test/test_tap.rb b/Library/Homebrew/test/test_tap.rb
index 6e497a070..1159eb992 100644
--- a/Library/Homebrew/test/test_tap.rb
+++ b/Library/Homebrew/test/test_tap.rb
@@ -95,6 +95,10 @@ class TapTest < Homebrew::TestCase
assert_equal @tap.formula_renames, "oldname" => "foo"
assert_equal [@cmd_file], @tap.command_files
assert_kind_of Hash, @tap.to_hash
+ assert_equal true, @tap.formula_file?(@formula_file)
+ assert_equal true, @tap.formula_file?("Formula/foo.rb")
+ assert_equal false, @tap.formula_file?("bar.rb")
+ assert_equal false, @tap.formula_file?("Formula/baz.sh")
end
def test_remote