PageRenderTime 74ms CodeModel.GetById 35ms RepoModel.GetById 15ms app.codeStats 0ms

/activesupport/test/core_ext/kernel_test.rb

https://bitbucket.org/druly/rails_cherry_pick
Ruby | 115 lines | 96 code | 18 blank | 1 comment | 0 complexity | d3f34907363d877c3ee9c522baac3791 MD5 | raw file
  1. require 'abstract_unit'
  2. require 'active_support/core_ext/kernel'
  3. class KernelTest < Test::Unit::TestCase
  4. def test_silence_warnings
  5. silence_warnings { assert_nil $VERBOSE }
  6. assert_equal 1234, silence_warnings { 1234 }
  7. end
  8. def test_silence_warnings_verbose_invariant
  9. old_verbose = $VERBOSE
  10. silence_warnings { raise }
  11. flunk
  12. rescue
  13. assert_equal old_verbose, $VERBOSE
  14. end
  15. def test_enable_warnings
  16. enable_warnings { assert_equal true, $VERBOSE }
  17. assert_equal 1234, enable_warnings { 1234 }
  18. end
  19. def test_enable_warnings_verbose_invariant
  20. old_verbose = $VERBOSE
  21. enable_warnings { raise }
  22. flunk
  23. rescue
  24. assert_equal old_verbose, $VERBOSE
  25. end
  26. def test_silence_stderr
  27. old_stderr_position = STDERR.tell
  28. silence_stderr { STDERR.puts 'hello world' }
  29. assert_equal old_stderr_position, STDERR.tell
  30. rescue Errno::ESPIPE
  31. # Skip if we can't STDERR.tell
  32. end
  33. def test_silence_stderr_with_return_value
  34. assert_equal 1, silence_stderr { 1 }
  35. end
  36. def test_singleton_class
  37. o = Object.new
  38. assert_equal class << o; self end, o.singleton_class
  39. end
  40. def test_class_eval
  41. o = Object.new
  42. class << o; @x = 1; end
  43. assert_equal 1, o.class_eval { @x }
  44. end
  45. def test_capture
  46. assert_equal 'STDERR', capture(:stderr) { $stderr.print 'STDERR' }
  47. assert_equal 'STDOUT', capture(:stdout) { print 'STDOUT' }
  48. end
  49. end
  50. class KernelSuppressTest < Test::Unit::TestCase
  51. def test_reraise
  52. assert_raise(LoadError) do
  53. suppress(ArgumentError) { raise LoadError }
  54. end
  55. end
  56. def test_suppression
  57. suppress(ArgumentError) { raise ArgumentError }
  58. suppress(LoadError) { raise LoadError }
  59. suppress(LoadError, ArgumentError) { raise LoadError }
  60. suppress(LoadError, ArgumentError) { raise ArgumentError }
  61. end
  62. end
  63. class MockStdErr
  64. attr_reader :output
  65. def puts(message)
  66. @output ||= []
  67. @output << message
  68. end
  69. def info(message)
  70. puts(message)
  71. end
  72. def write(message)
  73. puts(message)
  74. end
  75. end
  76. class KernelDebuggerTest < Test::Unit::TestCase
  77. def test_debugger_not_available_message_to_stderr
  78. old_stderr = $stderr
  79. $stderr = MockStdErr.new
  80. debugger
  81. assert_match(/Debugger requested/, $stderr.output.first)
  82. ensure
  83. $stderr = old_stderr
  84. end
  85. def test_debugger_not_available_message_to_rails_logger
  86. rails = Class.new do
  87. def self.logger
  88. @logger ||= MockStdErr.new
  89. end
  90. end
  91. Object.const_set("Rails", rails)
  92. debugger
  93. assert_match(/Debugger requested/, rails.logger.output.first)
  94. ensure
  95. Object.send(:remove_const, "Rails")
  96. end
  97. end