Class: TestMethodCaching

Inherits:
Builder::Test show all
Defined in:
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/builder-3.2.4/test/test_method_caching.rb

Constant Summary

Constants inherited from Minitest::Test

Minitest::Test::PASSTHROUGH_EXCEPTIONS, Minitest::Test::SETUP_METHODS, Minitest::Test::TEARDOWN_METHODS

Constants included from Minitest::Assertions

Minitest::Assertions::E, Minitest::Assertions::UNDEFINED

Constants inherited from Minitest::Runnable

Minitest::Runnable::SIGNALS

Instance Attribute Summary

Attributes inherited from Minitest::Runnable

#assertions, #failures, #time

Instance Method Summary collapse

Methods inherited from Builder::Test

#assert_nothing_raised

Methods inherited from Minitest::Test

#capture_exceptions, #class_name, #clean, i_suck_and_my_tests_are_order_dependent!, make_my_diffs_pretty!, #neuter_exception, #new_exception, parallelize_me!, #run, runnable_methods, #sanitize_exception, test_order, #with_empty_backtrace_filter, #with_info_handler

Methods included from Minitest::Guard

#jruby?, #maglev?, #mri?, #osx?, #rubinius?, #windows?

Methods included from Minitest::Test::LifecycleHooks

#after_setup, #after_teardown, #before_setup, #before_teardown, #setup

Methods included from Minitest::Reportable

#class_name, #error?, #location, #passed?, #result_code, #skipped?

Methods included from Minitest::Assertions

#_synchronize, #assert, #assert_empty, #assert_equal, #assert_in_delta, #assert_in_epsilon, #assert_includes, #assert_instance_of, #assert_kind_of, #assert_match, #assert_mock, #assert_nil, #assert_operator, #assert_output, #assert_path_exists, #assert_predicate, #assert_raises, #assert_respond_to, #assert_same, #assert_send, #assert_silent, #assert_throws, #capture_io, #capture_subprocess_io, #diff, diff, diff=, #exception_details, #fail_after, #flunk, #message, #mu_pp, #mu_pp_for_diff, #pass, #refute, #refute_empty, #refute_equal, #refute_in_delta, #refute_in_epsilon, #refute_includes, #refute_instance_of, #refute_kind_of, #refute_match, #refute_nil, #refute_operator, #refute_path_exists, #refute_predicate, #refute_respond_to, #refute_same, #skip, #skip_until, #skipped?, #things_to_diff

Methods inherited from Minitest::Runnable

#failure, inherited, #initialize, #marshal_dump, #marshal_load, methods_matching, #name, #name=, on_signal, #passed?, reset, #result_code, run, #run, run_one_method, runnable_methods, runnables, #skipped?, #time_it, #whatever, with_info_handler

Constructor Details

This class inherits a constructor from Minitest::Runnable

Instance Method Details

#teardownObject

We can directly ask if xml object responds to the cache_me or do_not_cache_me methods because xml is derived from BasicObject (and repond_to? is not defined in BasicObject).

Instead we are going to stub out method_missing so that it throws an error, and then make sure that error is either thrown or not thrown as appropriate.



27
28
29
30
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/builder-3.2.4/test/test_method_caching.rb', line 27

def teardown
  super
  Builder::XmlBase.cache_method_calls = true
end

#test_caching_does_not_break_weird_symbolsObject



32
33
34
35
36
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/builder-3.2.4/test/test_method_caching.rb', line 32

def test_caching_does_not_break_weird_symbols
  xml = Builder::XmlMarkup.new
  xml.__send__("work-order", 1)
  assert_equal "<work-order>1</work-order>", xml.target!
end

#test_method_call_cachingObject



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/builder-3.2.4/test/test_method_caching.rb', line 38

def test_method_call_caching
  xml = Builder::XmlMarkup.new
  xml.cache_me

  def xml.method_missing(*args)
    ::Kernel.fail StandardError, "SHOULD NOT BE CALLED"
  end
  assert_nothing_raised do
    xml.cache_me
  end
end

#test_method_call_caching_disabledObject



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/builder-3.2.4/test/test_method_caching.rb', line 50

def test_method_call_caching_disabled
  Builder::XmlBase.cache_method_calls = false
  xml = Builder::XmlMarkup.new
  xml.do_not_cache_me

  def xml.method_missing(*args)
    ::Kernel.fail StandardError, "SHOULD BE CALLED"
  end
  assert_raise(StandardError, "SHOULD BE CALLED") do
    xml.do_not_cache_me
  end
end