PageRenderTime 44ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://bitbucket.org/missdeer/luapack
Ruby | 99 lines | 75 code | 21 blank | 3 comment | 0 complexity | 0d2bfada821b3b2a2861e95fc41ce0a1 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 ScriptConfig
  3. DIR = File.join(File.expand_path(File.dirname(__FILE__)))
  4. SCRIPT = File.join(DIR, "..", "lib", "method_analyzer.rb")
  5. DATAFILE = File.join(DIR, "data", "method_analyzer-data.rb")
  6. end
  7. class MethodAnalyzerTextOutput < Test::Unit::TestCase
  8. include ScriptConfig
  9. # test (find-sh "ruby -r../method_analyzer data/method_analyzer-data.rb")
  10. # attr_accessor is actually Module#attr_accessor.
  11. # But `f?ri Module.attr_accessor' answers correctly.
  12. expected = <<XXX
  13. method fullnames
  14. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:8:Fixnum#+
  15. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:17:String#length
  16. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:20:Time.now Time#initialize
  17. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:21:Time#year Time#month Time#day Array#<<
  18. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:22:Class.new Object#initialize
  19. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:23:A#a
  20. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:24:Class.new B#initialize
  21. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:25:A#a
  22. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:26:B#b
  23. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:27:A#a B#b
  24. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:28:A#a B#b Fixnum#+
  25. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:29:A.foo
  26. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:30:A.foo
  27. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:31:B#bb=
  28. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:32:B#bb
  29. method definitions
  30. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:3:A.foo
  31. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:7:A#a
  32. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:12:B#initialize
  33. /m/home/rubikitch/src/xmpfilter/test/data/method_analyzer-data.rb:16:B#b
  34. XXX
  35. def self.strip_dir(output)
  36. output.gsub(/^.+(method_analyzer-data)/, '\1')
  37. end
  38. def self.split_output(output)
  39. strip_dir(output).split(/\n\n/,2)
  40. end
  41. @@fullnames_expected, @@definitions_expected = split_output expected
  42. actual = strip_dir `ruby -r#{SCRIPT} '#{DATAFILE}'`
  43. @@fullnames_actual, @@definitions_actual = split_output actual
  44. def test_plain_fullnames
  45. assert_equal @@fullnames_expected, @@fullnames_actual
  46. end
  47. def test_plain_definitions
  48. assert_equal @@definitions_expected, @@definitions_actual
  49. end
  50. end
  51. class MethodAnalyzerMarshalOutput < Test::Unit::TestCase
  52. include ScriptConfig
  53. METHOD_ANALYSIS = File.join(DIR, "method_analysis")
  54. at_exit { File.unlink METHOD_ANALYSIS rescue nil}
  55. def setup
  56. ENV['METHOD_ANALYZER_FORMAT'] = 'marshal'
  57. @pwd = Dir.pwd
  58. Dir.chdir DIR
  59. end
  60. def teardown
  61. ENV['METHOD_ANALYZER_FORMAT'] = nil
  62. Dir.chdir @pwd
  63. end
  64. def write_temp_file(str, file)
  65. file.replace File.expand_path(file)
  66. at_exit { File.unlink file }
  67. open(file, "w"){ |f| f.write(str) }
  68. end
  69. def test_marshal_merged
  70. a = write_temp_file "z=1+2", "mergeA.rb"
  71. b = write_temp_file "[].empty?", "mergeB.rb"
  72. system "ruby -r#{SCRIPT} mergeA.rb"
  73. system "ruby -r#{SCRIPT} mergeB.rb"
  74. method_analysis = Marshal.load(File.read(METHOD_ANALYSIS))
  75. assert_equal ["Fixnum#+"], method_analysis[File.join(DIR, "mergeA.rb")][1]
  76. assert_equal ["Array#empty?"], method_analysis[File.join(DIR, "mergeB.rb")][1]
  77. end
  78. end