PageRenderTime 71ms CodeModel.GetById 18ms RepoModel.GetById 2ms app.codeStats 0ms

/Bundles/eBundles/Ruby.tmbundle/Support/vendor/rcodetools/test/test_method_args.rb

https://bitbucket.org/missdeer/luapack
Ruby | 134 lines | 115 code | 15 blank | 4 comment | 3 complexity | 39114fca4806c33813ab02a0f8636d64 MD5 | raw file
Possible License(s): AGPL-3.0, LGPL-2.0, CC-BY-SA-3.0, ISC, LGPL-2.1, GPL-2.0
  1. require 'test/unit'
  2. module MethodArgsScriptConfig
  3. DIR = File.join(File.dirname(__FILE__))
  4. SCRIPT = File.join(DIR, "..", "bin", "rct-meth-args")
  5. DATAFILE = File.join(DIR, "data/method_args.data.rb")
  6. end
  7. class TestMethodArgs < Test::Unit::TestCase
  8. # (find-sh "cd ..; method_args.rb -n test/method_args.data.rb")
  9. include MethodArgsScriptConfig
  10. @@result = `ruby '#{SCRIPT}' -n '#{DATAFILE}'`.split(/\n/)
  11. @@result.delete_if{ |line| line =~ /Digest/ and line !~ /method_in_Digest_Base/ }
  12. @@result.delete "zzzz OK"
  13. @@expected = <<XXX.split(/\n/)
  14. method_args.data.rb:3:FixedArgsMethods.singleton (a1)
  15. method_args.data.rb:4:FixedArgsMethods#initialize (arg)
  16. method_args.data.rb:5:FixedArgsMethods#f (a1)
  17. method_args.data.rb:6:FixedArgsMethods#b (a1, &block)
  18. method_args.data.rb:7:FixedArgsMethods#defmethod (...)
  19. method_args.data.rb:8:FixedArgsMethods#by_attr_accessor
  20. method_args.data.rb:8:FixedArgsMethods#by_attr_accessor= (value)
  21. method_args.data.rb:9:FixedArgsMethods#by_attr_false
  22. method_args.data.rb:10:FixedArgsMethods#by_attr_true
  23. method_args.data.rb:10:FixedArgsMethods#by_attr_true= (value)
  24. method_args.data.rb:11:FixedArgsMethods#by_attr_reader_1
  25. method_args.data.rb:11:FixedArgsMethods#by_attr_reader_2
  26. method_args.data.rb:12:FixedArgsMethods#by_attr_writer= (value)
  27. method_args.data.rb:13:FixedArgsMethods#private_meth (x)
  28. method_args.data.rb:16:FixedArgsMethods.singleton_attr_accessor
  29. method_args.data.rb:16:FixedArgsMethods.singleton_attr_accessor= (value)
  30. method_args.data.rb:17:FixedArgsMethods.singleton_defmethod (...)
  31. method_args.data.rb:22:VariableArgsMethods#s (a1, *splat)
  32. method_args.data.rb:23:VariableArgsMethods#sb (a1, *splat, &block)
  33. method_args.data.rb:24:VariableArgsMethods#d (a1, default = nil)
  34. method_args.data.rb:25:VariableArgsMethods#ds (a1, default = nil, *splat)
  35. method_args.data.rb:26:VariableArgsMethods#dsb (a1, default = nil, *splat, &block)
  36. method_args.data.rb:27:VariableArgsMethods#db (a1, default = nil, &block)
  37. method_args.data.rb:31:Fixnum#method_in_Fixnum (arg1, arg2)
  38. method_args.data.rb:32:Fixnum.singleton_method_in_Fixnum (arg1, arg2)
  39. method_args.data.rb:35:Bignum#method_in_Bignum (arg1, arg2)
  40. method_args.data.rb:38:Float#method_in_Float (arg1, arg2)
  41. method_args.data.rb:41:Symbol#method_in_Symbol (arg1, arg2)
  42. method_args.data.rb:44:Binding#method_in_Binding (arg1, arg2)
  43. method_args.data.rb:47:UnboundMethod#method_in_UnboundMethod (arg1, arg2)
  44. method_args.data.rb:50:Method#method_in_Method (arg1, arg2)
  45. method_args.data.rb:53:Proc#method_in_Proc (arg1, arg2)
  46. method_args.data.rb:56:Continuation#method_in_Continuation (arg1, arg2)
  47. method_args.data.rb:59:Thread#method_in_Thread (arg1, arg2)
  48. method_args.data.rb:66:TrueClass#method_in_TrueClass (arg1, arg2)
  49. method_args.data.rb:69:NilClass#method_in_NilClass (arg1, arg2)
  50. method_args.data.rb:72:Struct#method_in_Struct (arg1, arg2)
  51. Digest::Base#method_in_Digest_Base (...)
  52. AnAbstractClass#method_in_AnAbstractClass (...)
  53. method_args.data.rb:93:include AClass <= VariableArgsMethods
  54. method_args.data.rb:94:extend AClass <- VariableArgsMethods
  55. method_args.data.rb:97:class ASubClass < AClass
  56. method_args.data.rb:100:class <Struct: a,b> < Struct
  57. method_args.data.rb:101:class SubclassOfStructA < StructA
  58. method_args.data.rb:102:SubclassOfStructA#method_in_b
  59. method_args.data.rb:104:class <Struct: c> < Struct
  60. method_args.data.rb:104:class StructSubclass < <Struct: c>
  61. method_args.data.rb:105:StructSubclass#method_in_c
  62. XXX
  63. # To avoid dependency of pwd.
  64. module StripDir
  65. def strip_dir!
  66. slice! %r!^.*/!
  67. self
  68. end
  69. end
  70. @@expected.each do |line|
  71. begin
  72. file_lineno_klass_meth, rest = line.split(/\s+/,2)
  73. if file_lineno_klass_meth =~ /:/
  74. file, lineno, klass_meth = file_lineno_klass_meth.split(/:/)
  75. klass_meth = rest if %w[class include extend].include? klass_meth
  76. else # filename/lineno is unknown
  77. klass_meth = file_lineno_klass_meth
  78. end
  79. test_method_name = "test_" + klass_meth
  80. define_method(test_method_name) do
  81. actual = @@result.grep(/#{klass_meth}/)[0].extend(StripDir).strip_dir!
  82. assert_equal line, actual
  83. end
  84. rescue Exception
  85. end
  86. end
  87. def test_all_tests
  88. assert_equal @@expected.length, @@result.length, @@result.join("\n")
  89. end
  90. def test_without_n_option
  91. first_line = "FixedArgsMethods.singleton (a1)"
  92. command_output = `ruby '#{SCRIPT}' '#{DATAFILE}'`
  93. assert_match(/\A#{Regexp.quote(first_line)}\n/, command_output)
  94. end
  95. end
  96. class TestTAGS < Test::Unit::TestCase
  97. include MethodArgsScriptConfig
  98. @@TAGS = `ruby '#{SCRIPT}' -t '#{DATAFILE}'`
  99. def test_filename
  100. # check whether full path is passed.
  101. assert_match %r!^\cl\n/.+method_args.data.rb,\d!, @@TAGS
  102. end
  103. def test_singleton_method
  104. # including line/byte test
  105. assert @@TAGS.include?(" def self.singleton(a1) end::FixedArgsMethods.singleton3,45")
  106. end
  107. def test_instance_method
  108. assert @@TAGS.include?(" def initialize(arg) end::FixedArgsMethods#initialize4,74")
  109. end
  110. def test_include
  111. assert_match(/^ include VariableArgsMethods::AClass/, @@TAGS)
  112. end
  113. def test_extend
  114. assert_match(/^ extend VariableArgsMethods::AClass/, @@TAGS)
  115. end
  116. def test_inheritance
  117. assert_match(/^class ASubClass < AClass::ASubClass/, @@TAGS)
  118. end
  119. end