Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions lib/appium_lib/appium.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
require 'appium_lib_core'

# base
require_relative 'error'
Comment thread
KazuCocoa marked this conversation as resolved.
Resolved
require_relative 'driver'
require_relative 'sauce_labs'

Expand Down Expand Up @@ -173,7 +174,7 @@ def promote_singleton_appium_methods(modules, driver = $driver)

const.send(:define_singleton_method, m) do |*args, **kwargs, &block|
super(*args, **kwargs, &block) # promote.rb
rescue NoMethodError, ArgumentError
rescue NoMethodError, ::ArgumentError
driver.send m, *args, **kwargs, &block if driver.respond_to?(m)
end
end
Expand Down Expand Up @@ -229,7 +230,7 @@ def promote_appium_methods(class_array, driver = $driver)
# minitest also defines a name method,
# so rescue argument error
# and call the name method on $driver
rescue NoMethodError, ArgumentError
rescue NoMethodError, ::ArgumentError
if args.size == 1 && args.first.is_a?(Hash)
# To prevent warnings by keyword arguments (for Ruby 2.7 and 3)
driver.send method, **args.first, &block if driver.respond_to?(method)
Expand Down
2 changes: 1 addition & 1 deletion lib/appium_lib/common/helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ def result
"#{string} #{attr[0]}: #{attr1}\n"
end

return r if attr_string.nil? || attr_string.empty?
next r if attr_string.nil? || attr_string.empty?

"#{r}\n#{name}\n#{attr_string}"
end
Expand Down
4 changes: 2 additions & 2 deletions lib/appium_lib/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -888,9 +888,9 @@ def log_event(vendor:, event:)
end

def log_event=(log_event)
raise if @driver.nil?
raise NoDriverInstanceError if @driver.nil?
unless log_event.is_a?(Hash)
raise ::Appium::Core::Error::ArgumentError('log_event should be Hash like { vendor: "appium", event: "funEvent"}')
raise ::Appium::Core::Error::ArgumentError, 'log_event should be Hash like { vendor: "appium", event: "funEvent"}'
end

@driver.logs.event vendor: log_event[:vendor], event: log_event[:event]
Expand Down
45 changes: 45 additions & 0 deletions test/regression_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,36 @@ def driver.back
assert_equal :inherited, child.new.back
end

def test_promote_falls_back_to_driver_on_arity_mismatch
parent = Class.new do
def name
:parent_name
end
end
child = Class.new(parent)
driver = Object.new
def driver.name(value)
:"driver_#{value}"
end

Appium.promote_appium_methods(child, driver)
assert_equal :parent_name, child.new.name
assert_equal :driver_arg, child.new.name(:arg)

base_mod = Module.new do
def name
:mod_name
end
end
target_mod = Module.new do
extend base_mod
end

Appium.promote_singleton_appium_methods([target_mod], driver)
assert_equal :mod_name, target_mod.name
assert_equal :driver_arg, target_mod.name(:arg)
end

def test_promote_again_uses_new_driver
target = Class.new
first = Object.new
Expand Down Expand Up @@ -142,6 +172,21 @@ def stub_driver.lazy_load_strings
assert_equal expected, doc.result
end

def test_html_elements_result_continues_after_attribute_free_elements
parser = Nokogiri::HTML::SAX::Parser.new(Appium::Common::HTMLElements.new)
parser.parse('<html><head></head><body><div></div><a href="/login">Sign in</a></body></html>')

assert_equal "\na\n href: /login\n text: Sign in\n", parser.document.result
end

def test_log_event_writer_raises_no_driver_and_argument_errors
driver = build_driver
assert_raises(Appium::NoDriverInstanceError) { driver.log_event = { vendor: 'appium', event: 'funEvent' } }

driver.instance_variable_set(:@driver, Object.new)
assert_raises(Appium::Core::Error::ArgumentError) { driver.log_event = 'invalid' }
end

private

def build_driver
Expand Down
Loading