lib/calabash/utility.rb in calabash-2.0.0.pre10 vs lib/calabash/utility.rb in calabash-2.0.0.pre11
- old
+ new
@@ -5,32 +5,31 @@
end
# Utility methods for testing.
module Utility
-
# @!visibility private
- def abstract_method!
- method_name = if Kernel.method_defined?(:caller_locations)
+ def abstract_method!(method_name=nil)
+ method_name ||= if Kernel.method_defined?(:caller_locations)
caller_locations.first.label
else
caller.first[/\`(.*)\'/, 1]
end
- raise AbstractMethodError.new("Abstract method '#{method_name}'")
+ raise AbstractMethodError.new("Abstract method '#{method_name.to_s}'")
end
# @!visibility private
class RetryError < RuntimeError; end
# A convenience method for creating a percentage hash that that can be
# passed to gestures.
#
# @example
# # These are equivalent.
- # pan("*", percent(20, 50), percent(20, 100))
- # pan("*", {x: 20, y: 50}, {x: 20, y: 100})
+ # cal.pan("*", percent(20, 50), percent(20, 100))
+ # cal.pan("*", {x: 20, y: 50}, {x: 20, y: 100})
#
# @param [Number] x The value of the x percent.
# @param [Number] y The value of the y percent.
# @return [Hash] Representing the given values.
def percent(x, y)
@@ -42,18 +41,52 @@
# A convenience method for creating a coordinate hash that that can be
# passed to the tap_coordinate gesture.
#
# @example
# # These are equivalent.
- # tap_coordinate(coordinate(20, 50)
- # tap_coordinate({x: 20, y: 50})
+ # cal.tap("button", offset: coordinate(20, 50))
+ # cal.tap("button", offset: {x: 20, y: 50})
#
# @param [Number] x The value of the x.
# @param [Number] y The value of the y.
# @return [Hash] Representing the given values.
def coordinate(x, y)
{x: x, y: y}
end
alias_method :coord, :coordinate
+
+ # @!visibility private
+ # Sets the default values for a hash. The hash is not mutated by duplicated
+ #
+ # @example
+ # default_hash_values({a: 'b'}, {a: 'q', b: 'c'}) # => {a: 'b', b: 'c'}
+ #
+ # @notice
+ # This method does not overwrite nil
+ def self.default_hash_values(hash, defaults)
+ res = hash.dup
+
+ defaults.each do |key, value|
+ unless res.key?(key)
+ res[key] = value
+ end
+ end
+
+ res
+ end
+
+ # @!visibility private
+ def self.used_bundler?
+ defined?(Bundler) && !ENV['BUNDLE_BIN_PATH'].nil?
+ end
+
+ # @!visibility private
+ def self.bundle_exec_prepend
+ if used_bundler?
+ 'bundle exec '
+ else
+ ''
+ end
+ end
end
end