rackjour 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1497) hide show
  1. data/Gemfile +7 -0
  2. data/Rakefile +21 -0
  3. data/bin/rackjour +20 -0
  4. data/lib/rackjour.rb +16 -0
  5. data/lib/rackjour/master.rb +109 -0
  6. data/lib/rackjour/server.rb +46 -0
  7. data/lib/rackjour/worker.rb +71 -0
  8. data/rackjour.gemspec +29 -0
  9. data/spec/rackjour_worker_spec.rb +34 -0
  10. data/spec/spec_helper.rb +4 -0
  11. data/vendor/gems/cache/builder-2.1.2.gem +0 -0
  12. data/vendor/gems/cache/columnize-0.3.1.gem +0 -0
  13. data/vendor/gems/cache/cucumber-0.4.4.gem +0 -0
  14. data/vendor/gems/cache/diff-lcs-1.1.2.gem +0 -0
  15. data/vendor/gems/cache/dnssd-1.3.1.gem +0 -0
  16. data/vendor/gems/cache/gemcutter-0.1.6.gem +0 -0
  17. data/vendor/gems/cache/geokit-1.5.0.gem +0 -0
  18. data/vendor/gems/cache/json_pure-1.1.9.gem +0 -0
  19. data/vendor/gems/cache/linecache-0.43.gem +0 -0
  20. data/vendor/gems/cache/memcached-0.17.4.gem +0 -0
  21. data/vendor/gems/cache/net-scp-1.0.2.gem +0 -0
  22. data/vendor/gems/cache/net-ssh-2.0.15.gem +0 -0
  23. data/vendor/gems/cache/polyglot-0.2.9.gem +0 -0
  24. data/vendor/gems/cache/rack-1.0.1.gem +0 -0
  25. data/vendor/gems/cache/rackjour-0.0.1.gem +0 -0
  26. data/vendor/gems/cache/rackjour-0.0.10.gem +0 -0
  27. data/vendor/gems/cache/rackjour-0.0.2.gem +0 -0
  28. data/vendor/gems/cache/rackjour-0.0.3.gem +0 -0
  29. data/vendor/gems/cache/rackjour-0.0.4.gem +0 -0
  30. data/vendor/gems/cache/rackjour-0.0.5.gem +0 -0
  31. data/vendor/gems/cache/rackjour-0.0.6.gem +0 -0
  32. data/vendor/gems/cache/rackjour-0.0.7.gem +0 -0
  33. data/vendor/gems/cache/rackjour-0.0.8.gem +0 -0
  34. data/vendor/gems/cache/rackjour-0.0.9.gem +0 -0
  35. data/vendor/gems/cache/rackjour-0.1.1.gem +0 -0
  36. data/vendor/gems/cache/rackjour-0.1.2.gem +0 -0
  37. data/vendor/gems/cache/rackjour-0.1.3.gem +0 -0
  38. data/vendor/gems/cache/rackjour-0.1.4.gem +0 -0
  39. data/vendor/gems/cache/rackjour-0.1.5.gem +0 -0
  40. data/vendor/gems/cache/rspec-1.2.9.gem +0 -0
  41. data/vendor/gems/cache/ruby-debug-0.10.3.gem +0 -0
  42. data/vendor/gems/cache/ruby-debug-base-0.10.3.gem +0 -0
  43. data/vendor/gems/cache/sinatra-0.9.4.gem +0 -0
  44. data/vendor/gems/cache/term-ansicolor-1.0.4.gem +0 -0
  45. data/vendor/gems/cache/treetop-1.4.2.gem +0 -0
  46. data/vendor/gems/environment.rb +139 -0
  47. data/vendor/gems/gems/builder-2.1.2/CHANGES +85 -0
  48. data/vendor/gems/gems/builder-2.1.2/README +210 -0
  49. data/vendor/gems/gems/builder-2.1.2/Rakefile +263 -0
  50. data/vendor/gems/gems/builder-2.1.2/doc/releases/builder-1.2.4.rdoc +31 -0
  51. data/vendor/gems/gems/builder-2.1.2/doc/releases/builder-2.0.0.rdoc +46 -0
  52. data/vendor/gems/gems/builder-2.1.2/doc/releases/builder-2.1.1.rdoc +58 -0
  53. data/vendor/gems/gems/builder-2.1.2/lib/blankslate.rb +113 -0
  54. data/vendor/gems/gems/builder-2.1.2/lib/builder.rb +13 -0
  55. data/vendor/gems/gems/builder-2.1.2/lib/builder/blankslate.rb +20 -0
  56. data/vendor/gems/gems/builder-2.1.2/lib/builder/xchar.rb +115 -0
  57. data/vendor/gems/gems/builder-2.1.2/lib/builder/xmlbase.rb +139 -0
  58. data/vendor/gems/gems/builder-2.1.2/lib/builder/xmlevents.rb +63 -0
  59. data/vendor/gems/gems/builder-2.1.2/lib/builder/xmlmarkup.rb +328 -0
  60. data/vendor/gems/gems/builder-2.1.2/scripts/publish.rb +17 -0
  61. data/vendor/gems/gems/builder-2.1.2/test/performance.rb +30 -0
  62. data/vendor/gems/gems/builder-2.1.2/test/preload.rb +29 -0
  63. data/vendor/gems/gems/builder-2.1.2/test/test_xchar.rb +37 -0
  64. data/vendor/gems/gems/builder-2.1.2/test/testblankslate.rb +183 -0
  65. data/vendor/gems/gems/builder-2.1.2/test/testeventbuilder.rb +133 -0
  66. data/vendor/gems/gems/builder-2.1.2/test/testmarkupbuilder.rb +449 -0
  67. data/vendor/gems/gems/columnize-0.3.1/AUTHORS +1 -0
  68. data/vendor/gems/gems/columnize-0.3.1/COPYING +340 -0
  69. data/vendor/gems/gems/columnize-0.3.1/ChangeLog +97 -0
  70. data/vendor/gems/gems/columnize-0.3.1/NEWS +24 -0
  71. data/vendor/gems/gems/columnize-0.3.1/README +41 -0
  72. data/vendor/gems/gems/columnize-0.3.1/Rakefile +117 -0
  73. data/vendor/gems/gems/columnize-0.3.1/VERSION +1 -0
  74. data/vendor/gems/gems/columnize-0.3.1/lib/columnize.rb +245 -0
  75. data/vendor/gems/gems/columnize-0.3.1/test/test-columnize.rb +81 -0
  76. data/vendor/gems/gems/cucumber-0.4.4/History.txt +1269 -0
  77. data/vendor/gems/gems/cucumber-0.4.4/LICENSE +22 -0
  78. data/vendor/gems/gems/cucumber-0.4.4/Manifest.txt +0 -0
  79. data/vendor/gems/gems/cucumber-0.4.4/README.rdoc +26 -0
  80. data/vendor/gems/gems/cucumber-0.4.4/Rakefile +63 -0
  81. data/vendor/gems/gems/cucumber-0.4.4/VERSION.yml +5 -0
  82. data/vendor/gems/gems/cucumber-0.4.4/bin/cucumber +16 -0
  83. data/vendor/gems/gems/cucumber-0.4.4/cucumber.gemspec +750 -0
  84. data/vendor/gems/gems/cucumber-0.4.4/cucumber.yml +4 -0
  85. data/vendor/gems/gems/cucumber-0.4.4/examples/dos_line_endings/Rakefile +6 -0
  86. data/vendor/gems/gems/cucumber-0.4.4/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
  87. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/README.textile +18 -0
  88. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/Rakefile +32 -0
  89. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ar/Rakefile +6 -0
  90. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ar/features/addition.feature +17 -0
  91. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ar/features/step_definitons/calculator_steps.rb +24 -0
  92. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ar/lib/calculator.rb +11 -0
  93. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/Rakefile +6 -0
  94. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/addition.feature +12 -0
  95. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/consecutive_calculations.feature +19 -0
  96. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/division.feature +17 -0
  97. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/step_definitons/calculator_steps.rb +24 -0
  98. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/support/env.rb +6 -0
  99. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/support/world.rb +8 -0
  100. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/lib/calculator.rb +24 -0
  101. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/cat/Rakefile +6 -0
  102. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/cat/features/step_definitons/calculator_steps.rb +21 -0
  103. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/cat/features/suma.feature +17 -0
  104. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/cat/lib/calculadora.rb +16 -0
  105. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/da/Rakefile +6 -0
  106. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/da/features/sammenlaegning.feature +18 -0
  107. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/da/features/step_definitons/lommeregner_steps.rb +24 -0
  108. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/da/lib/lommeregner.rb +11 -0
  109. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/Rakefile +6 -0
  110. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/features/addition.feature +17 -0
  111. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/features/division.feature +10 -0
  112. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/features/step_definitons/calculator_steps.rb +24 -0
  113. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/lib/calculator.rb +14 -0
  114. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/Rakefile +6 -0
  115. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
  116. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/features/stuffing.feature +8 -0
  117. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/features/support/env.rb +8 -0
  118. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/lib/basket.rb +12 -0
  119. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/lib/belly.rb +11 -0
  120. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/Rakefile +6 -0
  121. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/features/addition.feature +17 -0
  122. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/features/division.feature +10 -0
  123. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/features/step_definitons/calculator_steps.rb +24 -0
  124. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/lib/calculator.rb +14 -0
  125. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/es/Rakefile +6 -0
  126. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/es/features/adicion.feature +17 -0
  127. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/es/features/step_definitons/calculador_steps.rb +21 -0
  128. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/es/lib/calculador.rb +14 -0
  129. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/Rakefile +6 -0
  130. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/features/jagamine.feature +10 -0
  131. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/features/liitmine.feature +17 -0
  132. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +24 -0
  133. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/lib/kalkulaator.rb +14 -0
  134. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/Rakefile +6 -0
  135. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/features/jakolasku.feature +10 -0
  136. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
  137. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/features/yhteenlasku.feature +17 -0
  138. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/lib/laskin.rb +14 -0
  139. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fr/Rakefile +6 -0
  140. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fr/features/addition.feature +18 -0
  141. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +25 -0
  142. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fr/lib/calculatrice.rb +10 -0
  143. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/Rakefile +6 -0
  144. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/features/addition.feature +17 -0
  145. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/features/division.feature +10 -0
  146. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/features/step_definitons/calculator_steps.rb +24 -0
  147. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/lib/calculator.rb +14 -0
  148. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/Rakefile +6 -0
  149. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/features/addition.feature +17 -0
  150. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/features/division.feature +10 -0
  151. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/features/step_definitons/calculator_steps.rb +25 -0
  152. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/lib/calculator.rb +14 -0
  153. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/Rakefile +6 -0
  154. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/features/addition.feature +17 -0
  155. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/features/division.feature +10 -0
  156. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/features/step_definitons/calculator_steps.rb +24 -0
  157. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/lib/calculator.rb +14 -0
  158. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/it/Rakefile +6 -0
  159. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/it/features/somma.feature +11 -0
  160. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +24 -0
  161. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/it/lib/calcolatrice.rb +11 -0
  162. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/Rakefile +6 -0
  163. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/features/addition.feature +17 -0
  164. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/features/division.feature +10 -0
  165. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/features/step_definitons/calculator_steps.rb +24 -0
  166. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/lib/calculator.rb +14 -0
  167. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/Rakefile +6 -0
  168. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/features/addition.feature +17 -0
  169. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/features/division.feature +11 -0
  170. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/features/step_definitons/calculator_steps.rb +24 -0
  171. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/lib/calculator.rb +14 -0
  172. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/Rakefile +6 -0
  173. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/features/addition.feature +17 -0
  174. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/features/division.feature +10 -0
  175. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/features/step_definitons/calculator_steps.rb +24 -0
  176. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/lib/calculator.rb +14 -0
  177. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/Rakefile +6 -0
  178. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/features/addition.feature +17 -0
  179. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/features/division.feature +10 -0
  180. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/features/step_definitons/calculator_steps.rb +24 -0
  181. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/lib/calculator.rb +14 -0
  182. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/Rakefile +6 -0
  183. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +17 -0
  184. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/features/summering.feature +19 -0
  185. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/features/support/env.rb +6 -0
  186. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/lib/kalkulator.rb +11 -0
  187. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/Rakefile +6 -0
  188. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/features/addition.feature +17 -0
  189. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/features/division.feature +10 -0
  190. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/features/step_definitons/calculator_steps.rb +24 -0
  191. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/features/support/env.rb +6 -0
  192. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/lib/calculator.rb +14 -0
  193. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/Rakefile +6 -0
  194. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/features/adicao.feature +11 -0
  195. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +20 -0
  196. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/features/support/env.rb +6 -0
  197. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/lib/calculadora.rb +10 -0
  198. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ro/Rakefile +6 -0
  199. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ro/features/step_definitons/calculator_steps.rb +24 -0
  200. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ro/features/suma.feature +11 -0
  201. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ro/lib/calculator.rb +11 -0
  202. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/Rakefile +6 -0
  203. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/addition.feature +11 -0
  204. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/consecutive_calculations.feature +17 -0
  205. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/division.feature +16 -0
  206. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/step_definitons/calculator_steps.rb +19 -0
  207. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/support/env.rb +6 -0
  208. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/support/world.rb +8 -0
  209. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/lib/calculator.rb +24 -0
  210. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/se/Rakefile +6 -0
  211. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +24 -0
  212. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/se/features/summering.feature +18 -0
  213. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/se/lib/kalkulator.rb +11 -0
  214. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/Rakefile +6 -0
  215. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/features/addition.feature +17 -0
  216. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/features/division.feature +10 -0
  217. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/features/step_definitons/calculator_steps.rb +24 -0
  218. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/lib/calculator.rb +14 -0
  219. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr-latn/Rakefile +6 -0
  220. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr-latn/features/sabiranje.feature +18 -0
  221. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr-latn/features/step_definitons/calculator_steps.rb +24 -0
  222. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr-latn/lib/calculator.rb +12 -0
  223. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr/Rakefile +6 -0
  224. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr/features/sabiranje.feature +18 -0
  225. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr/features/step_definitons/calculator_steps.rb +24 -0
  226. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr/lib/calculator.rb +12 -0
  227. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/Rakefile +6 -0
  228. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/features/bolme.feature +10 -0
  229. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb +24 -0
  230. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/features/toplama.feature +18 -0
  231. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/lib/hesap_makinesi.rb +15 -0
  232. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/Rakefile +6 -0
  233. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/addition.feature +10 -0
  234. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/consecutive_calculations.feature +17 -0
  235. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/division.feature +17 -0
  236. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/step_definitons/calculator_steps.rb +19 -0
  237. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/support/env.rb +6 -0
  238. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/support/world.rb +8 -0
  239. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/lib/calculator.rb +24 -0
  240. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-CN/Rakefile +6 -0
  241. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-CN/features/addition.feature +18 -0
  242. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +26 -0
  243. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-CN/lib/calculator.rb +10 -0
  244. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/Rakefile +6 -0
  245. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/features/addition.feature +17 -0
  246. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/features/division.feature +11 -0
  247. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +24 -0
  248. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/lib/calculator.rb +14 -0
  249. data/vendor/gems/gems/cucumber-0.4.4/examples/junit/features/one_passing_one_failing.feature +8 -0
  250. data/vendor/gems/gems/cucumber-0.4.4/examples/junit/features/pending.feature +5 -0
  251. data/vendor/gems/gems/cucumber-0.4.4/examples/junit/features/step_definitions/steps.rb +11 -0
  252. data/vendor/gems/gems/cucumber-0.4.4/examples/python/features/fibonacci.feature +19 -0
  253. data/vendor/gems/gems/cucumber-0.4.4/examples/python/features/step_definitions/fib_steps.py +11 -0
  254. data/vendor/gems/gems/cucumber-0.4.4/examples/python/lib/fib.py +7 -0
  255. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/README.textile +7 -0
  256. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/Rakefile +6 -0
  257. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/app.rb +21 -0
  258. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/features/add.feature +11 -0
  259. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/features/step_definitions/add_steps.rb +15 -0
  260. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/features/support/env.rb +32 -0
  261. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/layout/default.html.erb +8 -0
  262. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/view/index.html.erb +5 -0
  263. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/features/fibonacci.feature +19 -0
  264. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/features/step_definitions/fib_steps.rb +7 -0
  265. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/features/support/env.rb +21 -0
  266. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/lib/fib.py +7 -0
  267. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium/Rakefile +6 -0
  268. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium/features/search.feature +9 -0
  269. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium/features/step_definitons/search_steps.rb +13 -0
  270. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium/features/support/env.rb +19 -0
  271. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/Rakefile +6 -0
  272. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/config.ru +0 -0
  273. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/features/search.feature +9 -0
  274. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/features/step_definitons/search_steps.rb +13 -0
  275. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/features/support/env.rb +45 -0
  276. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/README.textile +6 -0
  277. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/Rakefile +6 -0
  278. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/background_tagged_before_on_outline.feature +12 -0
  279. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/background_with_name.feature +7 -0
  280. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/failing_background.feature +12 -0
  281. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  282. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/multiline_args_background.feature +32 -0
  283. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/passing_background.feature +10 -0
  284. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/pending_background.feature +10 -0
  285. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  286. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  287. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  288. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/failing_expectation.feature +4 -0
  289. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/lots_of_undefined.feature +8 -0
  290. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/multiline_name.feature +27 -0
  291. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/outline_sample.feature +15 -0
  292. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/sample.feature +21 -0
  293. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/search_sample.feature +32 -0
  294. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/step_definitions/sample_steps.rb +81 -0
  295. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/support/env.rb +18 -0
  296. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/tags_sample.feature +17 -0
  297. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/tons_of_cukes.feature +52 -0
  298. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/undefined_multiline_args.feature +12 -0
  299. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/list-of-features.txt +1 -0
  300. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/tmp/features/step_definitions/steps.rb +10 -0
  301. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/README.textile +13 -0
  302. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/Rakefile +6 -0
  303. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/app.rb +14 -0
  304. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/features/add.feature +11 -0
  305. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
  306. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/features/support/env.rb +30 -0
  307. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/views/add.erb +5 -0
  308. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/views/layout.erb +8 -0
  309. data/vendor/gems/gems/cucumber-0.4.4/examples/steps_library/features/step_definitions/steps_lib1.rb +8 -0
  310. data/vendor/gems/gems/cucumber-0.4.4/examples/steps_library/features/step_definitions/steps_lib2.rb +8 -0
  311. data/vendor/gems/gems/cucumber-0.4.4/examples/test_unit/Rakefile +6 -0
  312. data/vendor/gems/gems/cucumber-0.4.4/examples/test_unit/features/step_definitions/test_unit_steps.rb +23 -0
  313. data/vendor/gems/gems/cucumber-0.4.4/examples/test_unit/features/test_unit.feature +9 -0
  314. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/Rakefile +20 -0
  315. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features.html +138 -0
  316. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/172.feature +28 -0
  317. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/177/1.feature +29 -0
  318. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/177/2.feature +21 -0
  319. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/177/3.feature +18 -0
  320. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/180.feature +7 -0
  321. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/229/tagged_hooks.feature +8 -0
  322. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/229/tagged_hooks.rb +14 -0
  323. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/236.feature +13 -0
  324. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/241.feature +13 -0
  325. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/246.feature +4 -0
  326. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/248.feature +11 -0
  327. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/270/back.feature +14 -0
  328. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/270/back.steps.rb +14 -0
  329. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/272/hooks.feature +26 -0
  330. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/272/hooks_steps.rb +53 -0
  331. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/279/py_string_indent.feature +25 -0
  332. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/279/py_string_indent.steps.rb +12 -0
  333. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/279/wrong.feature_ +11 -0
  334. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/301/filter_background_tagged_hooks.feature +6 -0
  335. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/301/filter_background_tagged_hooks_steps.rb +12 -0
  336. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/306/only_background.feature +4 -0
  337. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/lib/eatting_machine.rb +18 -0
  338. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/lib/pantry.rb +20 -0
  339. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/scenario_outline.feature +95 -0
  340. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/step_definitons/246_steps.rb +3 -0
  341. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/step_definitons/248_steps.rb +15 -0
  342. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
  343. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/step_definitons/tickets_steps.rb +81 -0
  344. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/table_diffing.feature +13 -0
  345. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/tickets.feature +28 -0
  346. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/README.textile +16 -0
  347. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/Rakefile +10 -0
  348. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/features/search.feature +12 -0
  349. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/features/step_definitions/search_steps.rb +26 -0
  350. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/features/support/env.rb +32 -0
  351. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/features/support/screenshots.rb +44 -0
  352. data/vendor/gems/gems/cucumber-0.4.4/examples/webrat/features/search.feature +12 -0
  353. data/vendor/gems/gems/cucumber-0.4.4/examples/webrat/features/step_definitions/kvasir_steps.rb +14 -0
  354. data/vendor/gems/gems/cucumber-0.4.4/examples/webrat/features/support/env.rb +17 -0
  355. data/vendor/gems/gems/cucumber-0.4.4/features/announce.feature +122 -0
  356. data/vendor/gems/gems/cucumber-0.4.4/features/background.feature +308 -0
  357. data/vendor/gems/gems/cucumber-0.4.4/features/bug_371.feature +32 -0
  358. data/vendor/gems/gems/cucumber-0.4.4/features/bug_464.feature +16 -0
  359. data/vendor/gems/gems/cucumber-0.4.4/features/bug_475.feature +43 -0
  360. data/vendor/gems/gems/cucumber-0.4.4/features/call_many_steps.feature +124 -0
  361. data/vendor/gems/gems/cucumber-0.4.4/features/cucumber_cli.feature +652 -0
  362. data/vendor/gems/gems/cucumber-0.4.4/features/cucumber_cli_diff_disabled.feature +52 -0
  363. data/vendor/gems/gems/cucumber-0.4.4/features/cucumber_cli_outlines.feature +105 -0
  364. data/vendor/gems/gems/cucumber-0.4.4/features/custom_formatter.feature +46 -0
  365. data/vendor/gems/gems/cucumber-0.4.4/features/default_snippets.feature +42 -0
  366. data/vendor/gems/gems/cucumber-0.4.4/features/drb_server_integration.feature +174 -0
  367. data/vendor/gems/gems/cucumber-0.4.4/features/exception_in_after_block.feature +100 -0
  368. data/vendor/gems/gems/cucumber-0.4.4/features/exception_in_after_step_block.feature +102 -0
  369. data/vendor/gems/gems/cucumber-0.4.4/features/exception_in_before_block.feature +78 -0
  370. data/vendor/gems/gems/cucumber-0.4.4/features/exclude_files.feature +20 -0
  371. data/vendor/gems/gems/cucumber-0.4.4/features/expand.feature +60 -0
  372. data/vendor/gems/gems/cucumber-0.4.4/features/html_formatter.feature +7 -0
  373. data/vendor/gems/gems/cucumber-0.4.4/features/html_formatter/a.html +183 -0
  374. data/vendor/gems/gems/cucumber-0.4.4/features/junit_formatter.feature +88 -0
  375. data/vendor/gems/gems/cucumber-0.4.4/features/language_from_header.feature +30 -0
  376. data/vendor/gems/gems/cucumber-0.4.4/features/language_help.feature +70 -0
  377. data/vendor/gems/gems/cucumber-0.4.4/features/listener_debugger_formatter.feature +41 -0
  378. data/vendor/gems/gems/cucumber-0.4.4/features/multiline_names.feature +43 -0
  379. data/vendor/gems/gems/cucumber-0.4.4/features/negative_tagged_hooks.feature +61 -0
  380. data/vendor/gems/gems/cucumber-0.4.4/features/post_configuration_hook.feature +37 -0
  381. data/vendor/gems/gems/cucumber-0.4.4/features/profiles.feature +112 -0
  382. data/vendor/gems/gems/cucumber-0.4.4/features/rake_task.feature +152 -0
  383. data/vendor/gems/gems/cucumber-0.4.4/features/report_called_undefined_steps.feature +34 -0
  384. data/vendor/gems/gems/cucumber-0.4.4/features/simplest.feature +11 -0
  385. data/vendor/gems/gems/cucumber-0.4.4/features/snippet.feature +22 -0
  386. data/vendor/gems/gems/cucumber-0.4.4/features/step_definitions/cucumber_steps.rb +154 -0
  387. data/vendor/gems/gems/cucumber-0.4.4/features/step_definitions/extra_steps.rb +2 -0
  388. data/vendor/gems/gems/cucumber-0.4.4/features/step_definitions/simplest_steps.rb +3 -0
  389. data/vendor/gems/gems/cucumber-0.4.4/features/step_definitions/wire_steps.rb +14 -0
  390. data/vendor/gems/gems/cucumber-0.4.4/features/support/env.rb +141 -0
  391. data/vendor/gems/gems/cucumber-0.4.4/features/support/env.rb.simplest +7 -0
  392. data/vendor/gems/gems/cucumber-0.4.4/features/support/fake_wire_server.rb +63 -0
  393. data/vendor/gems/gems/cucumber-0.4.4/features/table_diffing.feature +45 -0
  394. data/vendor/gems/gems/cucumber-0.4.4/features/table_mapping.feature +35 -0
  395. data/vendor/gems/gems/cucumber-0.4.4/features/tag_logic.feature +258 -0
  396. data/vendor/gems/gems/cucumber-0.4.4/features/transform.feature +231 -0
  397. data/vendor/gems/gems/cucumber-0.4.4/features/unicode_table.feature +35 -0
  398. data/vendor/gems/gems/cucumber-0.4.4/features/usage_and_stepdefs_formatter.feature +169 -0
  399. data/vendor/gems/gems/cucumber-0.4.4/features/wire_protocol.feature +177 -0
  400. data/vendor/gems/gems/cucumber-0.4.4/features/work_in_progress.feature +156 -0
  401. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/contributors.rake +13 -0
  402. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/environment.rake +7 -0
  403. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/features.rake +16 -0
  404. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/fix_cr_lf.rake +10 -0
  405. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/flog.rake +4 -0
  406. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/rspec.rake +15 -0
  407. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/sass.rake +4 -0
  408. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/sdoc.rake +12 -0
  409. data/vendor/gems/gems/cucumber-0.4.4/lib/README.rdoc +12 -0
  410. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber.rb +6 -0
  411. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber_mixin.rb +131 -0
  412. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber_rails.rb +6 -0
  413. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber_rails_rspec.rb +6 -0
  414. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber_rspec.rb +6 -0
  415. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/discover.rb +9 -0
  416. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber.rb +15 -0
  417. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast.rb +30 -0
  418. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/background.rb +75 -0
  419. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/comment.rb +31 -0
  420. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/examples.rb +36 -0
  421. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/feature.rb +85 -0
  422. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/feature_element.rb +68 -0
  423. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/features.rb +40 -0
  424. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/outline_table.rb +166 -0
  425. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/py_string.rb +59 -0
  426. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/scenario.rb +111 -0
  427. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/scenario_outline.rb +100 -0
  428. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/step.rb +121 -0
  429. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/step_collection.rb +76 -0
  430. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/step_invocation.rb +190 -0
  431. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/table.rb +655 -0
  432. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/tags.rb +122 -0
  433. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/tree_walker.rb +201 -0
  434. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/visitor.rb +11 -0
  435. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/broadcaster.rb +13 -0
  436. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/configuration.rb +195 -0
  437. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/drb_client.rb +32 -0
  438. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/language_help_formatter.rb +72 -0
  439. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/main.rb +121 -0
  440. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/options.rb +403 -0
  441. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/profile_loader.rb +82 -0
  442. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/constantize.rb +34 -0
  443. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/core_ext/instance_exec.rb +98 -0
  444. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/core_ext/proc.rb +30 -0
  445. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/core_ext/string.rb +16 -0
  446. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/feature_file.rb +54 -0
  447. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/filter.rb +41 -0
  448. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/ansicolor.rb +157 -0
  449. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/color_io.rb +23 -0
  450. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/console.rb +205 -0
  451. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/cucumber.css +132 -0
  452. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/cucumber.sass +139 -0
  453. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/debug.rb +33 -0
  454. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/duration.rb +13 -0
  455. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/html.rb +369 -0
  456. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/junit.rb +140 -0
  457. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
  458. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/pdf.rb +234 -0
  459. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/pretty.rb +239 -0
  460. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/progress.rb +73 -0
  461. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/rerun.rb +48 -0
  462. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/stepdefs.rb +14 -0
  463. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/steps.rb +49 -0
  464. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/summary.rb +35 -0
  465. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/tag_cloud.rb +30 -0
  466. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/unicode.rb +35 -0
  467. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/usage.rb +127 -0
  468. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/language_support.rb +30 -0
  469. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/language_support/language_methods.rb +110 -0
  470. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/languages.yml +611 -0
  471. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser.rb +8 -0
  472. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/common.rb +170 -0
  473. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/common.tt +21 -0
  474. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/feature.rb +1517 -0
  475. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/feature.tt +281 -0
  476. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/i18n.tt +44 -0
  477. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/natural_language.rb +81 -0
  478. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/py_string.rb +276 -0
  479. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/py_string.tt +45 -0
  480. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/table.rb +305 -0
  481. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/table.tt +60 -0
  482. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/treetop_ext.rb +53 -0
  483. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/platform.rb +31 -0
  484. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/py_support/py_dsl.py +10 -0
  485. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/py_support/py_language.py +10 -0
  486. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/py_support/py_language.rb +81 -0
  487. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/action_controller.rb +38 -0
  488. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/active_record.rb +30 -0
  489. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/rspec.rb +10 -0
  490. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/test_unit.rb +9 -0
  491. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/world.rb +30 -0
  492. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rake/task.rb +166 -0
  493. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_dsl.rb +102 -0
  494. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_hook.rb +19 -0
  495. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_language.rb +179 -0
  496. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_step_definition.rb +75 -0
  497. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_transform.rb +37 -0
  498. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_world.rb +81 -0
  499. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/regexp_argument_matcher.rb +21 -0
  500. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rspec_neuter.rb +23 -0
  501. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/step_argument.rb +9 -0
  502. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/step_definition_light.rb +20 -0
  503. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/step_match.rb +107 -0
  504. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/step_mother.rb +351 -0
  505. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/webrat/element_locator.rb +89 -0
  506. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/webrat/table_locator.rb +1 -0
  507. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/connection.rb +42 -0
  508. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/request_handler.rb +19 -0
  509. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_exception.rb +10 -0
  510. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_language.rb +52 -0
  511. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_packet.rb +34 -0
  512. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_protocol.rb +64 -0
  513. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_step_definition.rb +21 -0
  514. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/USAGE +11 -0
  515. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/cucumber_generator.rb +117 -0
  516. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/cucumber +17 -0
  517. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/cucumber.rake +46 -0
  518. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/cucumber_environment.rb +30 -0
  519. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/env.rb +49 -0
  520. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/paths.rb +27 -0
  521. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/spork_env.rb +57 -0
  522. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/version_check.rb +31 -0
  523. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/webrat_steps.rb +241 -0
  524. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/feature/USAGE +12 -0
  525. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/feature/feature_generator.rb +40 -0
  526. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/feature/templates/feature.erb +31 -0
  527. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/feature/templates/steps.erb +14 -0
  528. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/background_spec.rb +54 -0
  529. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/feature_element_spec.rb +41 -0
  530. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/feature_factory.rb +62 -0
  531. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/feature_spec.rb +44 -0
  532. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/outline_table_spec.rb +21 -0
  533. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/py_string_spec.rb +51 -0
  534. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/scenario_outline_spec.rb +73 -0
  535. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/scenario_spec.rb +45 -0
  536. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/step_collection_spec.rb +17 -0
  537. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/step_spec.rb +66 -0
  538. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/table_spec.rb +422 -0
  539. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/tags_spec.rb +29 -0
  540. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/tree_walker_spec.rb +11 -0
  541. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/broadcaster_spec.rb +15 -0
  542. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/configuration_spec.rb +396 -0
  543. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/drb_client_spec.rb +77 -0
  544. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/main_spec.rb +172 -0
  545. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/options_spec.rb +338 -0
  546. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/profile_loader_spec.rb +10 -0
  547. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/core_ext/proc_spec.rb +68 -0
  548. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
  549. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/color_io_spec.rb +27 -0
  550. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/console_spec.rb +20 -0
  551. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/duration_spec.rb +22 -0
  552. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/html_spec.rb +200 -0
  553. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/junit_spec.rb +107 -0
  554. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/progress_spec.rb +38 -0
  555. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/spec_helper.rb +50 -0
  556. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/parser/feature_parser_spec.rb +400 -0
  557. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/parser/table_parser_spec.rb +52 -0
  558. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/rb_support/rb_step_definition_spec.rb +132 -0
  559. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +18 -0
  560. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/sell_cucumbers.feature +19 -0
  561. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/step_match_spec.rb +56 -0
  562. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/step_mother_spec.rb +270 -0
  563. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/empty_feature.feature +4 -0
  564. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/empty_scenario.feature +9 -0
  565. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/empty_scenario_outline.feature +3 -0
  566. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/fit_scenario.feature +8 -0
  567. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/given_scenario.feature +9 -0
  568. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +7 -0
  569. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/multiline_steps.feature +17 -0
  570. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/multiple_tables.feature +27 -0
  571. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/scenario_outline.feature +16 -0
  572. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/spaces.feature +12 -0
  573. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/test_dos.feature +25 -0
  574. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/with_comments.feature +23 -0
  575. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  576. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/wire_support/wire_language_spec.rb +47 -0
  577. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/wire_support/wire_packet_spec.rb +26 -0
  578. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/world/pending_spec.rb +46 -0
  579. data/vendor/gems/gems/cucumber-0.4.4/spec/spec.opts +4 -0
  580. data/vendor/gems/gems/cucumber-0.4.4/spec/spec_helper.rb +18 -0
  581. data/vendor/gems/gems/diff-lcs-1.1.2/ChangeLog +46 -0
  582. data/vendor/gems/gems/diff-lcs-1.1.2/Install +6 -0
  583. data/vendor/gems/gems/diff-lcs-1.1.2/README +76 -0
  584. data/vendor/gems/gems/diff-lcs-1.1.2/Rakefile +116 -0
  585. data/vendor/gems/gems/diff-lcs-1.1.2/bin/htmldiff +112 -0
  586. data/vendor/gems/gems/diff-lcs-1.1.2/bin/ldiff +45 -0
  587. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs.rb +1105 -0
  588. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/array.rb +21 -0
  589. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/block.rb +51 -0
  590. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb +322 -0
  591. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb +169 -0
  592. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/hunk.rb +257 -0
  593. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/ldiff.rb +226 -0
  594. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/string.rb +19 -0
  595. data/vendor/gems/gems/diff-lcs-1.1.2/tests/00test.rb +626 -0
  596. data/vendor/gems/gems/dnssd-1.3.1/History.txt +66 -0
  597. data/vendor/gems/gems/dnssd-1.3.1/Manifest.txt +43 -0
  598. data/vendor/gems/gems/dnssd-1.3.1/README.txt +74 -0
  599. data/vendor/gems/gems/dnssd-1.3.1/Rakefile +38 -0
  600. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/Makefile +157 -0
  601. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/dnssd.bundle +0 -0
  602. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/dnssd.c +102 -0
  603. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/dnssd.h +30 -0
  604. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/dnssd.o +0 -0
  605. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/errors.c +133 -0
  606. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/errors.o +0 -0
  607. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/extconf.rb +66 -0
  608. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/flags.c +240 -0
  609. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/flags.o +0 -0
  610. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/mkmf.log +325 -0
  611. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/record.c +218 -0
  612. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/record.o +0 -0
  613. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/service.c +709 -0
  614. data/vendor/gems/gems/dnssd-1.3.1/ext/dnssd/service.o +0 -0
  615. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd.bundle +0 -0
  616. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd.rb +217 -0
  617. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/flags.rb +116 -0
  618. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/record.rb +97 -0
  619. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/reply.rb +103 -0
  620. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/reply/addr_info.rb +47 -0
  621. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/reply/browse.rb +52 -0
  622. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/reply/domain.rb +22 -0
  623. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/reply/query_record.rb +183 -0
  624. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/reply/register.rb +37 -0
  625. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/reply/resolve.rb +105 -0
  626. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/service.rb +265 -0
  627. data/vendor/gems/gems/dnssd-1.3.1/lib/dnssd/text_record.rb +78 -0
  628. data/vendor/gems/gems/dnssd-1.3.1/sample/browse.rb +29 -0
  629. data/vendor/gems/gems/dnssd-1.3.1/sample/enumerate_domains.rb +19 -0
  630. data/vendor/gems/gems/dnssd-1.3.1/sample/getaddrinfo.rb +28 -0
  631. data/vendor/gems/gems/dnssd-1.3.1/sample/growl.rb +16 -0
  632. data/vendor/gems/gems/dnssd-1.3.1/sample/query_record.rb +15 -0
  633. data/vendor/gems/gems/dnssd-1.3.1/sample/register.rb +29 -0
  634. data/vendor/gems/gems/dnssd-1.3.1/sample/resolve.rb +37 -0
  635. data/vendor/gems/gems/dnssd-1.3.1/sample/resolve_ichat.rb +35 -0
  636. data/vendor/gems/gems/dnssd-1.3.1/sample/server.rb +21 -0
  637. data/vendor/gems/gems/dnssd-1.3.1/sample/socket.rb +22 -0
  638. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd.rb +77 -0
  639. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_flags.rb +143 -0
  640. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_record.rb +92 -0
  641. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_reply.rb +68 -0
  642. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_reply_browse.rb +28 -0
  643. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_reply_query_record.rb +92 -0
  644. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_reply_resolve.rb +47 -0
  645. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_service.rb +12 -0
  646. data/vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_text_record.rb +83 -0
  647. data/vendor/gems/gems/linecache-0.43/AUTHORS +1 -0
  648. data/vendor/gems/gems/linecache-0.43/COPYING +340 -0
  649. data/vendor/gems/gems/linecache-0.43/ChangeLog +317 -0
  650. data/vendor/gems/gems/linecache-0.43/NEWS +29 -0
  651. data/vendor/gems/gems/linecache-0.43/README +38 -0
  652. data/vendor/gems/gems/linecache-0.43/Rakefile +166 -0
  653. data/vendor/gems/gems/linecache-0.43/VERSION +1 -0
  654. data/vendor/gems/gems/linecache-0.43/ext/Makefile +157 -0
  655. data/vendor/gems/gems/linecache-0.43/ext/extconf.rb +16 -0
  656. data/vendor/gems/gems/linecache-0.43/ext/trace_nums.bundle +0 -0
  657. data/vendor/gems/gems/linecache-0.43/ext/trace_nums.c +716 -0
  658. data/vendor/gems/gems/linecache-0.43/ext/trace_nums.h +111 -0
  659. data/vendor/gems/gems/linecache-0.43/ext/trace_nums.o +0 -0
  660. data/vendor/gems/gems/linecache-0.43/lib/linecache.rb +399 -0
  661. data/vendor/gems/gems/linecache-0.43/lib/trace_nums.bundle +0 -0
  662. data/vendor/gems/gems/linecache-0.43/lib/tracelines.rb +47 -0
  663. data/vendor/gems/gems/linecache-0.43/test/data/begin1.rb +3 -0
  664. data/vendor/gems/gems/linecache-0.43/test/data/begin2.rb +3 -0
  665. data/vendor/gems/gems/linecache-0.43/test/data/begin3.rb +6 -0
  666. data/vendor/gems/gems/linecache-0.43/test/data/block1.rb +7 -0
  667. data/vendor/gems/gems/linecache-0.43/test/data/block2.rb +4 -0
  668. data/vendor/gems/gems/linecache-0.43/test/data/case1.rb +6 -0
  669. data/vendor/gems/gems/linecache-0.43/test/data/case2.rb +5 -0
  670. data/vendor/gems/gems/linecache-0.43/test/data/case3.rb +5 -0
  671. data/vendor/gems/gems/linecache-0.43/test/data/case4.rb +4 -0
  672. data/vendor/gems/gems/linecache-0.43/test/data/case5.rb +10 -0
  673. data/vendor/gems/gems/linecache-0.43/test/data/class1.rb +5 -0
  674. data/vendor/gems/gems/linecache-0.43/test/data/comments1.rb +6 -0
  675. data/vendor/gems/gems/linecache-0.43/test/data/def1.rb +9 -0
  676. data/vendor/gems/gems/linecache-0.43/test/data/each1.rb +3 -0
  677. data/vendor/gems/gems/linecache-0.43/test/data/end.rb +3 -0
  678. data/vendor/gems/gems/linecache-0.43/test/data/for1.rb +4 -0
  679. data/vendor/gems/gems/linecache-0.43/test/data/if1.rb +4 -0
  680. data/vendor/gems/gems/linecache-0.43/test/data/if2.rb +4 -0
  681. data/vendor/gems/gems/linecache-0.43/test/data/if3.rb +9 -0
  682. data/vendor/gems/gems/linecache-0.43/test/data/if4.rb +14 -0
  683. data/vendor/gems/gems/linecache-0.43/test/data/if5.rb +7 -0
  684. data/vendor/gems/gems/linecache-0.43/test/data/if6.rb +4 -0
  685. data/vendor/gems/gems/linecache-0.43/test/data/if7.rb +8 -0
  686. data/vendor/gems/gems/linecache-0.43/test/data/match.rb +3 -0
  687. data/vendor/gems/gems/linecache-0.43/test/data/match3.rb +5 -0
  688. data/vendor/gems/gems/linecache-0.43/test/data/match3a.rb +6 -0
  689. data/vendor/gems/gems/linecache-0.43/test/data/not-lit.rb +6 -0
  690. data/vendor/gems/gems/linecache-0.43/test/lnum-diag.rb +130 -0
  691. data/vendor/gems/gems/linecache-0.43/test/parse-show.rb +14 -0
  692. data/vendor/gems/gems/linecache-0.43/test/rcov-bug.rb +10 -0
  693. data/vendor/gems/gems/linecache-0.43/test/short-file +2 -0
  694. data/vendor/gems/gems/linecache-0.43/test/test-linecache.rb +151 -0
  695. data/vendor/gems/gems/linecache-0.43/test/test-lnum.rb +36 -0
  696. data/vendor/gems/gems/linecache-0.43/test/test-tracelines.rb +41 -0
  697. data/vendor/gems/gems/polyglot-0.2.9/History.txt +57 -0
  698. data/vendor/gems/gems/polyglot-0.2.9/License.txt +20 -0
  699. data/vendor/gems/gems/polyglot-0.2.9/Manifest.txt +7 -0
  700. data/vendor/gems/gems/polyglot-0.2.9/README.txt +87 -0
  701. data/vendor/gems/gems/polyglot-0.2.9/Rakefile +4 -0
  702. data/vendor/gems/gems/polyglot-0.2.9/lib/polyglot.rb +81 -0
  703. data/vendor/gems/gems/polyglot-0.2.9/lib/polyglot/version.rb +9 -0
  704. data/vendor/gems/gems/polyglot-0.2.9/test/test_helper.rb +2 -0
  705. data/vendor/gems/gems/polyglot-0.2.9/test/test_polyglot.rb +44 -0
  706. data/vendor/gems/gems/rack-1.0.1/COPYING +18 -0
  707. data/vendor/gems/gems/rack-1.0.1/KNOWN-ISSUES +18 -0
  708. data/vendor/gems/gems/rack-1.0.1/RDOX +428 -0
  709. data/vendor/gems/gems/rack-1.0.1/README +364 -0
  710. data/vendor/gems/gems/rack-1.0.1/Rakefile +164 -0
  711. data/vendor/gems/gems/rack-1.0.1/SPEC +164 -0
  712. data/vendor/gems/gems/rack-1.0.1/bin/rackup +176 -0
  713. data/vendor/gems/gems/rack-1.0.1/contrib/rack_logo.svg +111 -0
  714. data/vendor/gems/gems/rack-1.0.1/example/lobster.ru +4 -0
  715. data/vendor/gems/gems/rack-1.0.1/example/protectedlobster.rb +14 -0
  716. data/vendor/gems/gems/rack-1.0.1/example/protectedlobster.ru +8 -0
  717. data/vendor/gems/gems/rack-1.0.1/lib/rack.rb +90 -0
  718. data/vendor/gems/gems/rack-1.0.1/lib/rack/adapter/camping.rb +22 -0
  719. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/abstract/handler.rb +37 -0
  720. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/abstract/request.rb +37 -0
  721. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/basic.rb +58 -0
  722. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/digest/md5.rb +124 -0
  723. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/digest/nonce.rb +51 -0
  724. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/digest/params.rb +55 -0
  725. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/digest/request.rb +40 -0
  726. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/openid.rb +480 -0
  727. data/vendor/gems/gems/rack-1.0.1/lib/rack/builder.rb +63 -0
  728. data/vendor/gems/gems/rack-1.0.1/lib/rack/cascade.rb +36 -0
  729. data/vendor/gems/gems/rack-1.0.1/lib/rack/chunked.rb +49 -0
  730. data/vendor/gems/gems/rack-1.0.1/lib/rack/commonlogger.rb +61 -0
  731. data/vendor/gems/gems/rack-1.0.1/lib/rack/conditionalget.rb +47 -0
  732. data/vendor/gems/gems/rack-1.0.1/lib/rack/content_length.rb +29 -0
  733. data/vendor/gems/gems/rack-1.0.1/lib/rack/content_type.rb +23 -0
  734. data/vendor/gems/gems/rack-1.0.1/lib/rack/deflater.rb +96 -0
  735. data/vendor/gems/gems/rack-1.0.1/lib/rack/directory.rb +153 -0
  736. data/vendor/gems/gems/rack-1.0.1/lib/rack/file.rb +88 -0
  737. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler.rb +69 -0
  738. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/cgi.rb +61 -0
  739. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/evented_mongrel.rb +8 -0
  740. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/fastcgi.rb +90 -0
  741. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/lsws.rb +60 -0
  742. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/mongrel.rb +87 -0
  743. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/scgi.rb +62 -0
  744. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  745. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/thin.rb +18 -0
  746. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/webrick.rb +71 -0
  747. data/vendor/gems/gems/rack-1.0.1/lib/rack/head.rb +19 -0
  748. data/vendor/gems/gems/rack-1.0.1/lib/rack/lint.rb +546 -0
  749. data/vendor/gems/gems/rack-1.0.1/lib/rack/lobster.rb +65 -0
  750. data/vendor/gems/gems/rack-1.0.1/lib/rack/lock.rb +16 -0
  751. data/vendor/gems/gems/rack-1.0.1/lib/rack/methodoverride.rb +27 -0
  752. data/vendor/gems/gems/rack-1.0.1/lib/rack/mime.rb +204 -0
  753. data/vendor/gems/gems/rack-1.0.1/lib/rack/mock.rb +163 -0
  754. data/vendor/gems/gems/rack-1.0.1/lib/rack/recursive.rb +57 -0
  755. data/vendor/gems/gems/rack-1.0.1/lib/rack/reloader.rb +106 -0
  756. data/vendor/gems/gems/rack-1.0.1/lib/rack/request.rb +246 -0
  757. data/vendor/gems/gems/rack-1.0.1/lib/rack/response.rb +183 -0
  758. data/vendor/gems/gems/rack-1.0.1/lib/rack/rewindable_input.rb +100 -0
  759. data/vendor/gems/gems/rack-1.0.1/lib/rack/session/abstract/id.rb +142 -0
  760. data/vendor/gems/gems/rack-1.0.1/lib/rack/session/cookie.rb +91 -0
  761. data/vendor/gems/gems/rack-1.0.1/lib/rack/session/memcache.rb +109 -0
  762. data/vendor/gems/gems/rack-1.0.1/lib/rack/session/pool.rb +100 -0
  763. data/vendor/gems/gems/rack-1.0.1/lib/rack/showexceptions.rb +349 -0
  764. data/vendor/gems/gems/rack-1.0.1/lib/rack/showstatus.rb +106 -0
  765. data/vendor/gems/gems/rack-1.0.1/lib/rack/static.rb +38 -0
  766. data/vendor/gems/gems/rack-1.0.1/lib/rack/urlmap.rb +55 -0
  767. data/vendor/gems/gems/rack-1.0.1/lib/rack/utils.rb +401 -0
  768. data/vendor/gems/gems/rack-1.0.1/rack.gemspec +54 -0
  769. data/vendor/gems/gems/rack-1.0.1/test/cgi/lighttpd.conf +20 -0
  770. data/vendor/gems/gems/rack-1.0.1/test/cgi/test +9 -0
  771. data/vendor/gems/gems/rack-1.0.1/test/cgi/test.fcgi +8 -0
  772. data/vendor/gems/gems/rack-1.0.1/test/cgi/test.ru +7 -0
  773. data/vendor/gems/gems/rack-1.0.1/test/multipart/binary +0 -0
  774. data/vendor/gems/gems/rack-1.0.1/test/multipart/empty +10 -0
  775. data/vendor/gems/gems/rack-1.0.1/test/multipart/ie +6 -0
  776. data/vendor/gems/gems/rack-1.0.1/test/multipart/nested +10 -0
  777. data/vendor/gems/gems/rack-1.0.1/test/multipart/none +9 -0
  778. data/vendor/gems/gems/rack-1.0.1/test/multipart/semicolon +6 -0
  779. data/vendor/gems/gems/rack-1.0.1/test/multipart/text +10 -0
  780. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_auth_basic.rb +73 -0
  781. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_auth_digest.rb +226 -0
  782. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_auth_openid.rb +84 -0
  783. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_builder.rb +84 -0
  784. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_camping.rb +51 -0
  785. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_cascade.rb +50 -0
  786. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_cgi.rb +89 -0
  787. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_chunked.rb +62 -0
  788. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_commonlogger.rb +32 -0
  789. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_conditionalget.rb +41 -0
  790. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_content_length.rb +43 -0
  791. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_content_type.rb +30 -0
  792. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_deflater.rb +127 -0
  793. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_directory.rb +61 -0
  794. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_fastcgi.rb +89 -0
  795. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_file.rb +75 -0
  796. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_handler.rb +43 -0
  797. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_head.rb +30 -0
  798. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_lint.rb +521 -0
  799. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_lobster.rb +45 -0
  800. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_lock.rb +38 -0
  801. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_methodoverride.rb +60 -0
  802. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_mock.rb +157 -0
  803. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_mongrel.rb +189 -0
  804. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_recursive.rb +77 -0
  805. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_request.rb +504 -0
  806. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_response.rb +218 -0
  807. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_rewindable_input.rb +118 -0
  808. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_session_cookie.rb +82 -0
  809. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_session_memcache.rb +240 -0
  810. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_session_pool.rb +172 -0
  811. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_showexceptions.rb +21 -0
  812. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_showstatus.rb +72 -0
  813. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_static.rb +37 -0
  814. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_thin.rb +91 -0
  815. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_urlmap.rb +185 -0
  816. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_utils.rb +387 -0
  817. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_webrick.rb +130 -0
  818. data/vendor/gems/gems/rack-1.0.1/test/testrequest.rb +57 -0
  819. data/vendor/gems/gems/rack-1.0.1/test/unregistered_handler/rack/handler/unregistered.rb +7 -0
  820. data/vendor/gems/gems/rack-1.0.1/test/unregistered_handler/rack/handler/unregistered_long_one.rb +7 -0
  821. data/vendor/gems/gems/rackjour-0.1.5/Gemfile +7 -0
  822. data/vendor/gems/gems/rackjour-0.1.5/Rakefile +21 -0
  823. data/vendor/gems/gems/rackjour-0.1.5/bin/worker +20 -0
  824. data/vendor/gems/gems/rackjour-0.1.5/lib/rackjour.rb +16 -0
  825. data/vendor/gems/gems/rackjour-0.1.5/lib/rackjour/master.rb +109 -0
  826. data/vendor/gems/gems/rackjour-0.1.5/lib/rackjour/server.rb +46 -0
  827. data/vendor/gems/gems/rackjour-0.1.5/lib/rackjour/worker.rb +71 -0
  828. data/vendor/gems/gems/rackjour-0.1.5/rackjour.gemspec +28 -0
  829. data/vendor/gems/gems/rackjour-0.1.5/spec/rackjour_worker_spec.rb +34 -0
  830. data/vendor/gems/gems/rackjour-0.1.5/spec/spec_helper.rb +4 -0
  831. data/vendor/gems/gems/rspec-1.2.9/History.rdoc +1496 -0
  832. data/vendor/gems/gems/rspec-1.2.9/License.txt +22 -0
  833. data/vendor/gems/gems/rspec-1.2.9/Manifest.txt +377 -0
  834. data/vendor/gems/gems/rspec-1.2.9/README.rdoc +55 -0
  835. data/vendor/gems/gems/rspec-1.2.9/Rakefile +145 -0
  836. data/vendor/gems/gems/rspec-1.2.9/Ruby1.9.rdoc +31 -0
  837. data/vendor/gems/gems/rspec-1.2.9/TODO.txt +17 -0
  838. data/vendor/gems/gems/rspec-1.2.9/Upgrade.rdoc +199 -0
  839. data/vendor/gems/gems/rspec-1.2.9/bin/autospec +4 -0
  840. data/vendor/gems/gems/rspec-1.2.9/bin/spec +5 -0
  841. data/vendor/gems/gems/rspec-1.2.9/cucumber.yml +5 -0
  842. data/vendor/gems/gems/rspec-1.2.9/examples/failing/README.txt +11 -0
  843. data/vendor/gems/gems/rspec-1.2.9/examples/failing/diffing_spec.rb +36 -0
  844. data/vendor/gems/gems/rspec-1.2.9/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  845. data/vendor/gems/gems/rspec-1.2.9/examples/failing/failure_in_after.rb +10 -0
  846. data/vendor/gems/gems/rspec-1.2.9/examples/failing/failure_in_before.rb +10 -0
  847. data/vendor/gems/gems/rspec-1.2.9/examples/failing/mocking_example.rb +38 -0
  848. data/vendor/gems/gems/rspec-1.2.9/examples/failing/mocking_with_flexmock.rb +26 -0
  849. data/vendor/gems/gems/rspec-1.2.9/examples/failing/mocking_with_mocha.rb +25 -0
  850. data/vendor/gems/gems/rspec-1.2.9/examples/failing/mocking_with_rr.rb +27 -0
  851. data/vendor/gems/gems/rspec-1.2.9/examples/failing/partial_mock_example.rb +18 -0
  852. data/vendor/gems/gems/rspec-1.2.9/examples/failing/pending_example.rb +7 -0
  853. data/vendor/gems/gems/rspec-1.2.9/examples/failing/predicate_example.rb +32 -0
  854. data/vendor/gems/gems/rspec-1.2.9/examples/failing/raising_example.rb +47 -0
  855. data/vendor/gems/gems/rspec-1.2.9/examples/failing/syntax_error_example.rb +7 -0
  856. data/vendor/gems/gems/rspec-1.2.9/examples/failing/team_spec.rb +41 -0
  857. data/vendor/gems/gems/rspec-1.2.9/examples/failing/timeout_behaviour.rb +5 -0
  858. data/vendor/gems/gems/rspec-1.2.9/examples/passing/custom_formatter.rb +11 -0
  859. data/vendor/gems/gems/rspec-1.2.9/examples/passing/custom_matchers.rb +54 -0
  860. data/vendor/gems/gems/rspec-1.2.9/examples/passing/dynamic_spec.rb +7 -0
  861. data/vendor/gems/gems/rspec-1.2.9/examples/passing/file_accessor.rb +18 -0
  862. data/vendor/gems/gems/rspec-1.2.9/examples/passing/file_accessor_spec.rb +37 -0
  863. data/vendor/gems/gems/rspec-1.2.9/examples/passing/filtered_formatter.rb +17 -0
  864. data/vendor/gems/gems/rspec-1.2.9/examples/passing/filtered_formatter_example.rb +31 -0
  865. data/vendor/gems/gems/rspec-1.2.9/examples/passing/greeter_spec.rb +30 -0
  866. data/vendor/gems/gems/rspec-1.2.9/examples/passing/helper_method_example.rb +12 -0
  867. data/vendor/gems/gems/rspec-1.2.9/examples/passing/implicit_docstrings_example.rb +16 -0
  868. data/vendor/gems/gems/rspec-1.2.9/examples/passing/io_processor.rb +8 -0
  869. data/vendor/gems/gems/rspec-1.2.9/examples/passing/io_processor_spec.rb +20 -0
  870. data/vendor/gems/gems/rspec-1.2.9/examples/passing/mocking_example.rb +25 -0
  871. data/vendor/gems/gems/rspec-1.2.9/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  872. data/vendor/gems/gems/rspec-1.2.9/examples/passing/nested_classes_example.rb +35 -0
  873. data/vendor/gems/gems/rspec-1.2.9/examples/passing/options_example.rb +29 -0
  874. data/vendor/gems/gems/rspec-1.2.9/examples/passing/options_formatter.rb +20 -0
  875. data/vendor/gems/gems/rspec-1.2.9/examples/passing/partial_mock_example.rb +27 -0
  876. data/vendor/gems/gems/rspec-1.2.9/examples/passing/pending_example.rb +18 -0
  877. data/vendor/gems/gems/rspec-1.2.9/examples/passing/predicate_example.rb +25 -0
  878. data/vendor/gems/gems/rspec-1.2.9/examples/passing/shared_example_group_example.rb +79 -0
  879. data/vendor/gems/gems/rspec-1.2.9/examples/passing/shared_stack_examples.rb +36 -0
  880. data/vendor/gems/gems/rspec-1.2.9/examples/passing/simple_matcher_example.rb +29 -0
  881. data/vendor/gems/gems/rspec-1.2.9/examples/passing/stack.rb +36 -0
  882. data/vendor/gems/gems/rspec-1.2.9/examples/passing/stack_spec.rb +63 -0
  883. data/vendor/gems/gems/rspec-1.2.9/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  884. data/vendor/gems/gems/rspec-1.2.9/examples/passing/stubbing_example.rb +67 -0
  885. data/vendor/gems/gems/rspec-1.2.9/examples/passing/yielding_example.rb +31 -0
  886. data/vendor/gems/gems/rspec-1.2.9/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  887. data/vendor/gems/gems/rspec-1.2.9/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  888. data/vendor/gems/gems/rspec-1.2.9/features/command_line/line_number_option.feature +56 -0
  889. data/vendor/gems/gems/rspec-1.2.9/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  890. data/vendor/gems/gems/rspec-1.2.9/features/example_groups/define_example_attribute.feature +41 -0
  891. data/vendor/gems/gems/rspec-1.2.9/features/example_groups/example_group_with_should_methods.feature +29 -0
  892. data/vendor/gems/gems/rspec-1.2.9/features/example_groups/implicit_docstrings.feature +59 -0
  893. data/vendor/gems/gems/rspec-1.2.9/features/example_groups/nested_groups.feature +32 -0
  894. data/vendor/gems/gems/rspec-1.2.9/features/expectations/customized_message.feature +54 -0
  895. data/vendor/gems/gems/rspec-1.2.9/features/expectations/expect_change.feature +65 -0
  896. data/vendor/gems/gems/rspec-1.2.9/features/expectations/expect_error.feature +44 -0
  897. data/vendor/gems/gems/rspec-1.2.9/features/extensions/custom_example_group.feature +19 -0
  898. data/vendor/gems/gems/rspec-1.2.9/features/formatters/custom_formatter.feature +30 -0
  899. data/vendor/gems/gems/rspec-1.2.9/features/interop/examples_and_tests_together.feature +84 -0
  900. data/vendor/gems/gems/rspec-1.2.9/features/interop/rspec_output.feature +25 -0
  901. data/vendor/gems/gems/rspec-1.2.9/features/interop/test_but_not_test_unit.feature +26 -0
  902. data/vendor/gems/gems/rspec-1.2.9/features/interop/test_case_with_should_methods.feature +46 -0
  903. data/vendor/gems/gems/rspec-1.2.9/features/load_paths/add_lib_to_load_path.feature +20 -0
  904. data/vendor/gems/gems/rspec-1.2.9/features/load_paths/add_spec_to_load_path.feature +20 -0
  905. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_diffable_matcher.feature +26 -0
  906. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_matcher.feature +179 -0
  907. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_matcher_outside_rspec.feature +38 -0
  908. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_matcher_with_fluent_interface.feature +27 -0
  909. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_wrapped_matcher.feature +29 -0
  910. data/vendor/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_flexmock.feature +27 -0
  911. data/vendor/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_mocha.feature +27 -0
  912. data/vendor/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_rr.feature +27 -0
  913. data/vendor/gems/gems/rspec-1.2.9/features/mocks/mix_stubs_and_mocks.feature +22 -0
  914. data/vendor/gems/gems/rspec-1.2.9/features/mocks/stub_implementation.feature +26 -0
  915. data/vendor/gems/gems/rspec-1.2.9/features/pending/pending_examples.feature +81 -0
  916. data/vendor/gems/gems/rspec-1.2.9/features/runner/specify_line_number.feature +32 -0
  917. data/vendor/gems/gems/rspec-1.2.9/features/spec_helper/spec_helper.feature +25 -0
  918. data/vendor/gems/gems/rspec-1.2.9/features/step_definitions/running_rspec_steps.rb +43 -0
  919. data/vendor/gems/gems/rspec-1.2.9/features/subject/explicit_subject.feature +31 -0
  920. data/vendor/gems/gems/rspec-1.2.9/features/subject/implicit_subject.feature +43 -0
  921. data/vendor/gems/gems/rspec-1.2.9/features/support/env.rb +82 -0
  922. data/vendor/gems/gems/rspec-1.2.9/features/support/matchers/smart_match.rb +12 -0
  923. data/vendor/gems/gems/rspec-1.2.9/init.rb +9 -0
  924. data/vendor/gems/gems/rspec-1.2.9/lib/autotest/discover.rb +3 -0
  925. data/vendor/gems/gems/rspec-1.2.9/lib/autotest/rspec.rb +47 -0
  926. data/vendor/gems/gems/rspec-1.2.9/lib/spec.rb +8 -0
  927. data/vendor/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  928. data/vendor/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
  929. data/vendor/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  930. data/vendor/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  931. data/vendor/gems/gems/rspec-1.2.9/lib/spec/autorun.rb +3 -0
  932. data/vendor/gems/gems/rspec-1.2.9/lib/spec/deprecation.rb +40 -0
  933. data/vendor/gems/gems/rspec-1.2.9/lib/spec/dsl.rb +1 -0
  934. data/vendor/gems/gems/rspec-1.2.9/lib/spec/dsl/main.rb +92 -0
  935. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example.rb +164 -0
  936. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/args_and_options.rb +27 -0
  937. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/before_and_after_hooks.rb +93 -0
  938. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/errors.rb +25 -0
  939. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group.rb +10 -0
  940. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group_factory.rb +82 -0
  941. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group_hierarchy.rb +53 -0
  942. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group_methods.rb +282 -0
  943. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group_proxy.rb +61 -0
  944. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_matcher.rb +43 -0
  945. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_methods.rb +148 -0
  946. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_proxy.rb +41 -0
  947. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/module_reopening_fix.rb +43 -0
  948. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/pending.rb +18 -0
  949. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/predicate_matchers.rb +46 -0
  950. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/shared_example_group.rb +59 -0
  951. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/subject.rb +108 -0
  952. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations.rb +35 -0
  953. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/errors.rb +12 -0
  954. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/extensions.rb +1 -0
  955. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/extensions/kernel.rb +52 -0
  956. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/fail_with.rb +45 -0
  957. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/handler.rb +50 -0
  958. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test.rb +44 -0
  959. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/autorunner.rb +6 -0
  960. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testcase.rb +56 -0
  961. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testresult.rb +6 -0
  962. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  963. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  964. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers.rb +195 -0
  965. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/be.rb +210 -0
  966. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/be_close.rb +32 -0
  967. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/be_instance_of.rb +26 -0
  968. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/be_kind_of.rb +26 -0
  969. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/change.rb +151 -0
  970. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/compatibility.rb +14 -0
  971. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/dsl.rb +20 -0
  972. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/eql.rb +42 -0
  973. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/equal.rb +53 -0
  974. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/errors.rb +5 -0
  975. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/exist.rb +16 -0
  976. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/extensions/instance_exec.rb +31 -0
  977. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/generated_descriptions.rb +36 -0
  978. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/has.rb +35 -0
  979. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/have.rb +151 -0
  980. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/include.rb +44 -0
  981. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/match.rb +21 -0
  982. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/match_array.rb +71 -0
  983. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/matcher.rb +87 -0
  984. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/method_missing.rb +9 -0
  985. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/operator_matcher.rb +78 -0
  986. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/pretty.rb +37 -0
  987. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/raise_error.rb +129 -0
  988. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/respond_to.rb +71 -0
  989. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/satisfy.rb +47 -0
  990. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/simple_matcher.rb +133 -0
  991. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/throw_symbol.rb +104 -0
  992. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/wrap_expectation.rb +55 -0
  993. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks.rb +200 -0
  994. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/argument_expectation.rb +51 -0
  995. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/argument_matchers.rb +237 -0
  996. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/error_generator.rb +92 -0
  997. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/errors.rb +10 -0
  998. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/example_methods.rb +69 -0
  999. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/extensions.rb +1 -0
  1000. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/extensions/object.rb +3 -0
  1001. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/framework.rb +15 -0
  1002. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/message_expectation.rb +329 -0
  1003. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/methods.rb +89 -0
  1004. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/mock.rb +71 -0
  1005. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/order_group.rb +29 -0
  1006. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/proxy.rb +245 -0
  1007. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/space.rb +28 -0
  1008. data/vendor/gems/gems/rspec-1.2.9/lib/spec/rake/spectask.rb +230 -0
  1009. data/vendor/gems/gems/rspec-1.2.9/lib/spec/rake/verify_rcov.rb +52 -0
  1010. data/vendor/gems/gems/rspec-1.2.9/lib/spec/ruby.rb +9 -0
  1011. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner.rb +66 -0
  1012. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/backtrace_tweaker.rb +77 -0
  1013. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  1014. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/command_line.rb +15 -0
  1015. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/configuration.rb +194 -0
  1016. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/differs/default.rb +93 -0
  1017. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  1018. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/drb_command_line.rb +26 -0
  1019. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/example_group_runner.rb +59 -0
  1020. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/extensions/kernel.rb +9 -0
  1021. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/base_formatter.rb +139 -0
  1022. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
  1023. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  1024. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  1025. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/html_formatter.rb +338 -0
  1026. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/nested_text_formatter.rb +47 -0
  1027. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  1028. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  1029. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/progress_bar_formatter.rb +33 -0
  1030. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  1031. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  1032. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
  1033. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  1034. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/heckle_runner.rb +72 -0
  1035. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  1036. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/line_number_query.rb +78 -0
  1037. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/option_parser.rb +223 -0
  1038. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/options.rb +400 -0
  1039. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/reporter.rb +171 -0
  1040. data/vendor/gems/gems/rspec-1.2.9/lib/spec/stubs/cucumber.rb +5 -0
  1041. data/vendor/gems/gems/rspec-1.2.9/lib/spec/test/unit.rb +10 -0
  1042. data/vendor/gems/gems/rspec-1.2.9/lib/spec/version.rb +14 -0
  1043. data/vendor/gems/gems/rspec-1.2.9/resources/helpers/cmdline.rb +8 -0
  1044. data/vendor/gems/gems/rspec-1.2.9/resources/rake/examples.rake +7 -0
  1045. data/vendor/gems/gems/rspec-1.2.9/resources/rake/examples_with_rcov.rake +9 -0
  1046. data/vendor/gems/gems/rspec-1.2.9/resources/rake/failing_examples_with_html.rake +9 -0
  1047. data/vendor/gems/gems/rspec-1.2.9/resources/rake/verify_rcov.rake +7 -0
  1048. data/vendor/gems/gems/rspec-1.2.9/spec/README.jruby +15 -0
  1049. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/autotest_helper.rb +8 -0
  1050. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/autotest_matchers.rb +38 -0
  1051. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/discover_spec.rb +8 -0
  1052. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/failed_results_re_spec.rb +31 -0
  1053. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/rspec_spec.rb +111 -0
  1054. data/vendor/gems/gems/rspec-1.2.9/spec/ruby_forker.rb +13 -0
  1055. data/vendor/gems/gems/rspec-1.2.9/spec/spec.opts +6 -0
  1056. data/vendor/gems/gems/rspec-1.2.9/spec/spec/dsl/main_spec.rb +95 -0
  1057. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  1058. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_factory_spec.rb +180 -0
  1059. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_methods_spec.rb +758 -0
  1060. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_proxy_spec.rb +107 -0
  1061. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_spec.rb +643 -0
  1062. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_matcher_spec.rb +86 -0
  1063. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_methods_spec.rb +162 -0
  1064. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_proxy_spec.rb +57 -0
  1065. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/helper_method_spec.rb +24 -0
  1066. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/nested_example_group_spec.rb +71 -0
  1067. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/pending_module_spec.rb +58 -0
  1068. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/predicate_matcher_spec.rb +41 -0
  1069. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/shared_example_group_spec.rb +257 -0
  1070. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  1071. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/subject_spec.rb +103 -0
  1072. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/differs/default_spec.rb +194 -0
  1073. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
  1074. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/fail_with_spec.rb +96 -0
  1075. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/handler_spec.rb +206 -0
  1076. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  1077. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  1078. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  1079. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  1080. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  1081. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  1082. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  1083. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  1084. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  1085. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  1086. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  1087. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  1088. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  1089. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  1090. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/be_close_spec.rb +50 -0
  1091. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  1092. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  1093. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/be_spec.rb +311 -0
  1094. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/change_spec.rb +349 -0
  1095. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/compatibility_spec.rb +28 -0
  1096. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/description_generation_spec.rb +160 -0
  1097. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/dsl_spec.rb +34 -0
  1098. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/eql_spec.rb +33 -0
  1099. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/equal_spec.rb +57 -0
  1100. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/exist_spec.rb +65 -0
  1101. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/has_spec.rb +81 -0
  1102. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/have_spec.rb +396 -0
  1103. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/include_spec.rb +88 -0
  1104. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/match_array_spec.rb +108 -0
  1105. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/match_spec.rb +57 -0
  1106. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/matcher_methods_spec.rb +63 -0
  1107. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/matcher_spec.rb +228 -0
  1108. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/matchers_spec.rb +2 -0
  1109. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  1110. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/raise_error_spec.rb +333 -0
  1111. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/respond_to_spec.rb +116 -0
  1112. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/satisfy_spec.rb +36 -0
  1113. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  1114. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/throw_symbol_spec.rb +96 -0
  1115. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  1116. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  1117. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  1118. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/at_least_spec.rb +97 -0
  1119. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/at_most_spec.rb +93 -0
  1120. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  1121. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  1122. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  1123. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  1124. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_496_spec.rb +19 -0
  1125. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  1126. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  1127. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  1128. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  1129. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  1130. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  1131. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/double_spec.rb +12 -0
  1132. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  1133. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  1134. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  1135. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_ordering_spec.rb +94 -0
  1136. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_space_spec.rb +54 -0
  1137. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_spec.rb +594 -0
  1138. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  1139. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  1140. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  1141. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/once_counts_spec.rb +53 -0
  1142. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/options_hash_spec.rb +35 -0
  1143. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/partial_mock_spec.rb +164 -0
  1144. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  1145. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  1146. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/precise_counts_spec.rb +52 -0
  1147. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/record_messages_spec.rb +26 -0
  1148. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_chain_spec.rb +42 -0
  1149. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  1150. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_spec.rb +203 -0
  1151. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  1152. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/twice_counts_spec.rb +67 -0
  1153. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/unstub_spec.rb +127 -0
  1154. data/vendor/gems/gems/rspec-1.2.9/spec/spec/package/bin_spec_spec.rb +16 -0
  1155. data/vendor/gems/gems/rspec-1.2.9/spec/spec/rake/spectask_spec.rb +150 -0
  1156. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  1157. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/command_line_spec.rb +141 -0
  1158. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/configuration_spec.rb +320 -0
  1159. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/drb_command_line_spec.rb +107 -0
  1160. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/empty_file.txt +0 -0
  1161. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/example_group_runner_spec.rb +26 -0
  1162. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/examples.txt +2 -0
  1163. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/failed.txt +3 -0
  1164. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  1165. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  1166. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  1167. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  1168. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  1169. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  1170. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  1171. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  1172. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
  1173. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/nested_text_formatter_spec.rb +305 -0
  1174. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  1175. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +149 -0
  1176. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  1177. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  1178. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  1179. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  1180. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  1181. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  1182. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  1183. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/heckle_runner_spec.rb +78 -0
  1184. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/heckler_spec.rb +20 -0
  1185. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  1186. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/line_number_query_spec.rb +129 -0
  1187. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +51 -0
  1188. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/option_parser_spec.rb +545 -0
  1189. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/options_spec.rb +547 -0
  1190. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_fixture.rb +7 -0
  1191. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  1192. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_spec.rb +15 -0
  1193. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +105 -0
  1194. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/reporter_spec.rb +244 -0
  1195. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_bar.rb +0 -0
  1196. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_foo.rb +0 -0
  1197. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_spec.rb +1 -0
  1198. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  1199. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  1200. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/spec.opts +2 -0
  1201. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/spec_drb.opts +2 -0
  1202. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/spec_spaced.opts +2 -0
  1203. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner_spec.rb +13 -0
  1204. data/vendor/gems/gems/rspec-1.2.9/spec/spec_helper.rb +112 -0
  1205. data/vendor/gems/gems/rspec-1.2.9/spec/support/macros.rb +29 -0
  1206. data/vendor/gems/gems/rspec-1.2.9/spec/support/spec_classes.rb +133 -0
  1207. data/vendor/gems/gems/ruby-debug-0.10.3/AUTHORS +7 -0
  1208. data/vendor/gems/gems/ruby-debug-0.10.3/CHANGES +334 -0
  1209. data/vendor/gems/gems/ruby-debug-0.10.3/ChangeLog +5569 -0
  1210. data/vendor/gems/gems/ruby-debug-0.10.3/LICENSE +23 -0
  1211. data/vendor/gems/gems/ruby-debug-0.10.3/README +114 -0
  1212. data/vendor/gems/gems/ruby-debug-0.10.3/Rakefile +255 -0
  1213. data/vendor/gems/gems/ruby-debug-0.10.3/bin/rdebug +415 -0
  1214. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug.rb +176 -0
  1215. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/command.rb +228 -0
  1216. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/breakpoints.rb +153 -0
  1217. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/catchpoint.rb +53 -0
  1218. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/condition.rb +49 -0
  1219. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/continue.RB.save +48 -0
  1220. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/continue.rb +38 -0
  1221. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/control.rb +107 -0
  1222. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/disassemble.RB +38 -0
  1223. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/display.rb +120 -0
  1224. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/edit.rb +48 -0
  1225. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/enable.rb +202 -0
  1226. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/eval.rb +176 -0
  1227. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/finish.rb +42 -0
  1228. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/frame.rb +301 -0
  1229. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/help.rb +56 -0
  1230. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/info.rb +469 -0
  1231. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/irb.rb +90 -0
  1232. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/list.rb +94 -0
  1233. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/method.rb +84 -0
  1234. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/quit.rb +38 -0
  1235. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/reload.rb +40 -0
  1236. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/save.rb +90 -0
  1237. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/set.rb +237 -0
  1238. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/show.rb +253 -0
  1239. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/source.rb +36 -0
  1240. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/stepping.rb +81 -0
  1241. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/threads.rb +189 -0
  1242. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/tmate.rb +36 -0
  1243. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/trace.rb +57 -0
  1244. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/commands/variables.rb +199 -0
  1245. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/debugger.rb +5 -0
  1246. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/helper.rb +69 -0
  1247. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/interface.rb +232 -0
  1248. data/vendor/gems/gems/ruby-debug-0.10.3/cli/ruby-debug/processor.rb +472 -0
  1249. data/vendor/gems/gems/ruby-debug-0.10.3/doc/rdebug.1 +241 -0
  1250. data/vendor/gems/gems/ruby-debug-0.10.3/rdbg.rb +33 -0
  1251. data/vendor/gems/gems/ruby-debug-0.10.3/test/base/base.rb +74 -0
  1252. data/vendor/gems/gems/ruby-debug-0.10.3/test/base/binding.rb +31 -0
  1253. data/vendor/gems/gems/ruby-debug-0.10.3/test/base/catchpoint.rb +26 -0
  1254. data/vendor/gems/gems/ruby-debug-0.10.3/test/base/load.rb +40 -0
  1255. data/vendor/gems/gems/ruby-debug-0.10.3/test/bp_loop_issue.rb +3 -0
  1256. data/vendor/gems/gems/ruby-debug-0.10.3/test/classes.rb +11 -0
  1257. data/vendor/gems/gems/ruby-debug-0.10.3/test/cli/commands/catchpoint_test.rb +36 -0
  1258. data/vendor/gems/gems/ruby-debug-0.10.3/test/cli/commands/unit/regexp.rb +31 -0
  1259. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/annotate.cmd +29 -0
  1260. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/annotate.right +139 -0
  1261. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/break_bad.cmd +18 -0
  1262. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/break_bad.right +28 -0
  1263. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/break_loop_bug.cmd +5 -0
  1264. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/break_loop_bug.right +15 -0
  1265. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/breakpoints.cmd +38 -0
  1266. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/breakpoints.right +98 -0
  1267. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/catch.cmd +17 -0
  1268. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/catch.right +37 -0
  1269. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/condition.cmd +28 -0
  1270. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/condition.right +65 -0
  1271. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/ctrl.cmd +23 -0
  1272. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/ctrl.right +69 -0
  1273. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/display.cmd +24 -0
  1274. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/display.right +44 -0
  1275. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/dollar-0.right +2 -0
  1276. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/dollar-0a.right +2 -0
  1277. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/dollar-0b.right +2 -0
  1278. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/edit.cmd +12 -0
  1279. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/edit.right +19 -0
  1280. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/emacs_basic.cmd +43 -0
  1281. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/emacs_basic.right +106 -0
  1282. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/enable.cmd +20 -0
  1283. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/enable.right +36 -0
  1284. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/finish.cmd +16 -0
  1285. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/finish.right +31 -0
  1286. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/frame.cmd +26 -0
  1287. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/frame.right +55 -0
  1288. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/help.cmd +20 -0
  1289. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/help.right +21 -0
  1290. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/history.right +7 -0
  1291. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/info-thread.cmd +13 -0
  1292. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/info-thread.right +37 -0
  1293. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/info-var-bug2.cmd +5 -0
  1294. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/info-var-bug2.right +10 -0
  1295. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/info-var.cmd +23 -0
  1296. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/info-var.right +52 -0
  1297. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/info.cmd +21 -0
  1298. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/info.right +65 -0
  1299. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/linetrace.cmd +6 -0
  1300. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/linetrace.right +32 -0
  1301. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/linetracep.cmd +7 -0
  1302. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/linetracep.right +25 -0
  1303. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/list.cmd +19 -0
  1304. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/list.right +127 -0
  1305. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/method.cmd +10 -0
  1306. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/method.right +21 -0
  1307. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/methodsig.cmd +10 -0
  1308. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/methodsig.right +20 -0
  1309. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/noquit.right +1 -0
  1310. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/output.cmd +6 -0
  1311. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/output.right +31 -0
  1312. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/pm-bug.cmd +7 -0
  1313. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/pm-bug.right +12 -0
  1314. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/post-mortem-next.cmd +8 -0
  1315. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/post-mortem-next.right +14 -0
  1316. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/post-mortem-osx.right +31 -0
  1317. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/post-mortem.cmd +13 -0
  1318. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/post-mortem.right +31 -0
  1319. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/quit.cmd +6 -0
  1320. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/quit.right +0 -0
  1321. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/raise.cmd +11 -0
  1322. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/raise.right +26 -0
  1323. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/save.cmd +33 -0
  1324. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/save.right +59 -0
  1325. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/setshow.cmd +56 -0
  1326. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/setshow.right +97 -0
  1327. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/source.cmd +5 -0
  1328. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/source.right +15 -0
  1329. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/stepping.cmd +21 -0
  1330. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/stepping.right +50 -0
  1331. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/test-init-cygwin.right +7 -0
  1332. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/test-init-osx.right +4 -0
  1333. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/test-init.right +5 -0
  1334. data/vendor/gems/gems/ruby-debug-0.10.3/test/data/trace.right +23 -0
  1335. data/vendor/gems/gems/ruby-debug-0.10.3/test/dollar-0.rb +5 -0
  1336. data/vendor/gems/gems/ruby-debug-0.10.3/test/except-bug2.rb +7 -0
  1337. data/vendor/gems/gems/ruby-debug-0.10.3/test/gcd-dbg-nox.rb +31 -0
  1338. data/vendor/gems/gems/ruby-debug-0.10.3/test/gcd-dbg.rb +30 -0
  1339. data/vendor/gems/gems/ruby-debug-0.10.3/test/gcd.rb +18 -0
  1340. data/vendor/gems/gems/ruby-debug-0.10.3/test/helper.rb +143 -0
  1341. data/vendor/gems/gems/ruby-debug-0.10.3/test/info-var-bug.rb +47 -0
  1342. data/vendor/gems/gems/ruby-debug-0.10.3/test/info-var-bug2.rb +2 -0
  1343. data/vendor/gems/gems/ruby-debug-0.10.3/test/null.rb +1 -0
  1344. data/vendor/gems/gems/ruby-debug-0.10.3/test/output.rb +2 -0
  1345. data/vendor/gems/gems/ruby-debug-0.10.3/test/pm-base.rb +22 -0
  1346. data/vendor/gems/gems/ruby-debug-0.10.3/test/pm-bug.rb +3 -0
  1347. data/vendor/gems/gems/ruby-debug-0.10.3/test/pm.rb +11 -0
  1348. data/vendor/gems/gems/ruby-debug-0.10.3/test/raise.rb +3 -0
  1349. data/vendor/gems/gems/ruby-debug-0.10.3/test/scope-test.rb +8 -0
  1350. data/vendor/gems/gems/ruby-debug-0.10.3/test/tdebug.rb +252 -0
  1351. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-annotate.rb +25 -0
  1352. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-break-bad.rb +36 -0
  1353. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-breakpoints.rb +25 -0
  1354. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-catch.rb +25 -0
  1355. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-condition.rb +25 -0
  1356. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-ctrl.rb +54 -0
  1357. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-display.rb +26 -0
  1358. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-dollar-0.rb +45 -0
  1359. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-edit.rb +26 -0
  1360. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-emacs-basic.rb +26 -0
  1361. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-enable.rb +25 -0
  1362. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-finish.rb +34 -0
  1363. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-frame.rb +34 -0
  1364. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-help.rb +60 -0
  1365. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-hist.rb +68 -0
  1366. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-info-thread.rb +32 -0
  1367. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-info-var.rb +47 -0
  1368. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-info.rb +26 -0
  1369. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-init.rb +43 -0
  1370. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-list.rb +25 -0
  1371. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-method.rb +34 -0
  1372. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-output.rb +26 -0
  1373. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-pm.rb +59 -0
  1374. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-quit.rb +30 -0
  1375. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-raise.rb +25 -0
  1376. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-save.rb +25 -0
  1377. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-setshow.rb +25 -0
  1378. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-source.rb +25 -0
  1379. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-stepping.rb +26 -0
  1380. data/vendor/gems/gems/ruby-debug-0.10.3/test/test-trace.rb +63 -0
  1381. data/vendor/gems/gems/ruby-debug-0.10.3/test/thread1.rb +26 -0
  1382. data/vendor/gems/gems/ruby-debug-0.10.3/test/trunc-call.rb +31 -0
  1383. data/vendor/gems/gems/ruby-debug-0.10.3/test/tvar.rb +3 -0
  1384. data/vendor/gems/gems/ruby-debug-base-0.10.3/AUTHORS +7 -0
  1385. data/vendor/gems/gems/ruby-debug-base-0.10.3/CHANGES +334 -0
  1386. data/vendor/gems/gems/ruby-debug-base-0.10.3/LICENSE +23 -0
  1387. data/vendor/gems/gems/ruby-debug-base-0.10.3/README +114 -0
  1388. data/vendor/gems/gems/ruby-debug-base-0.10.3/Rakefile +255 -0
  1389. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/Makefile +157 -0
  1390. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/breakpoint.c +579 -0
  1391. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/breakpoint.o +0 -0
  1392. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/extconf.rb +20 -0
  1393. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/ruby_debug.bundle +0 -0
  1394. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/ruby_debug.c +2322 -0
  1395. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/ruby_debug.h +123 -0
  1396. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/ruby_debug.o +0 -0
  1397. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/win32/Makefile +149 -0
  1398. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/win32/breakpoint.o +0 -0
  1399. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/win32/ruby_debug.o +0 -0
  1400. data/vendor/gems/gems/ruby-debug-base-0.10.3/ext/win32/ruby_debug.so +0 -0
  1401. data/vendor/gems/gems/ruby-debug-base-0.10.3/lib/ChangeLog +1046 -0
  1402. data/vendor/gems/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb +298 -0
  1403. data/vendor/gems/gems/ruby-debug-base-0.10.3/lib/ruby_debug.bundle +0 -0
  1404. data/vendor/gems/gems/ruby-debug-base-0.10.3/test/base/base.rb +74 -0
  1405. data/vendor/gems/gems/ruby-debug-base-0.10.3/test/base/binding.rb +31 -0
  1406. data/vendor/gems/gems/ruby-debug-base-0.10.3/test/base/catchpoint.rb +26 -0
  1407. data/vendor/gems/gems/term-ansicolor-1.0.4/CHANGES +22 -0
  1408. data/vendor/gems/gems/term-ansicolor-1.0.4/COPYING +340 -0
  1409. data/vendor/gems/gems/term-ansicolor-1.0.4/README +31 -0
  1410. data/vendor/gems/gems/term-ansicolor-1.0.4/Rakefile +86 -0
  1411. data/vendor/gems/gems/term-ansicolor-1.0.4/VERSION +1 -0
  1412. data/vendor/gems/gems/term-ansicolor-1.0.4/doc-main.txt +119 -0
  1413. data/vendor/gems/gems/term-ansicolor-1.0.4/examples/cdiff.rb +19 -0
  1414. data/vendor/gems/gems/term-ansicolor-1.0.4/examples/example.rb +89 -0
  1415. data/vendor/gems/gems/term-ansicolor-1.0.4/install.rb +15 -0
  1416. data/vendor/gems/gems/term-ansicolor-1.0.4/lib/term/ansicolor.rb +102 -0
  1417. data/vendor/gems/gems/term-ansicolor-1.0.4/lib/term/ansicolor/version.rb +10 -0
  1418. data/vendor/gems/gems/term-ansicolor-1.0.4/term-ansicolor.gemspec +20 -0
  1419. data/vendor/gems/gems/treetop-1.4.2/LICENSE +19 -0
  1420. data/vendor/gems/gems/treetop-1.4.2/README.md +164 -0
  1421. data/vendor/gems/gems/treetop-1.4.2/Rakefile +19 -0
  1422. data/vendor/gems/gems/treetop-1.4.2/bin/tt +112 -0
  1423. data/vendor/gems/gems/treetop-1.4.2/doc/contributing_and_planned_features.markdown +103 -0
  1424. data/vendor/gems/gems/treetop-1.4.2/doc/grammar_composition.markdown +65 -0
  1425. data/vendor/gems/gems/treetop-1.4.2/doc/index.markdown +90 -0
  1426. data/vendor/gems/gems/treetop-1.4.2/doc/pitfalls_and_advanced_techniques.markdown +51 -0
  1427. data/vendor/gems/gems/treetop-1.4.2/doc/semantic_interpretation.markdown +189 -0
  1428. data/vendor/gems/gems/treetop-1.4.2/doc/site.rb +112 -0
  1429. data/vendor/gems/gems/treetop-1.4.2/doc/sitegen.rb +65 -0
  1430. data/vendor/gems/gems/treetop-1.4.2/doc/syntactic_recognition.markdown +100 -0
  1431. data/vendor/gems/gems/treetop-1.4.2/doc/using_in_ruby.markdown +21 -0
  1432. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/arithmetic.rb +551 -0
  1433. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/arithmetic.treetop +97 -0
  1434. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/arithmetic_node_classes.rb +7 -0
  1435. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/arithmetic_test.rb +54 -0
  1436. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus +0 -0
  1437. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus.rb +718 -0
  1438. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus.treetop +132 -0
  1439. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus_node_classes.rb +5 -0
  1440. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus_test.rb +89 -0
  1441. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/test_helper.rb +18 -0
  1442. data/vendor/gems/gems/treetop-1.4.2/lib/treetop.rb +16 -0
  1443. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/bootstrap_gen_1_metagrammar.rb +45 -0
  1444. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler.rb +6 -0
  1445. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/grammar_compiler.rb +44 -0
  1446. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/lexical_address_space.rb +17 -0
  1447. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/metagrammar.rb +3258 -0
  1448. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/metagrammar.treetop +436 -0
  1449. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes.rb +20 -0
  1450. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/anything_symbol.rb +18 -0
  1451. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/atomic_expression.rb +14 -0
  1452. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/character_class.rb +28 -0
  1453. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/choice.rb +31 -0
  1454. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/declaration_sequence.rb +24 -0
  1455. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/grammar.rb +28 -0
  1456. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/inline_module.rb +27 -0
  1457. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/nonterminal.rb +13 -0
  1458. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/optional.rb +19 -0
  1459. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/parenthesized_expression.rb +9 -0
  1460. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/parsing_expression.rb +146 -0
  1461. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/parsing_rule.rb +55 -0
  1462. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/predicate.rb +45 -0
  1463. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/predicate_block.rb +16 -0
  1464. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/repetition.rb +55 -0
  1465. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/sequence.rb +71 -0
  1466. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/terminal.rb +20 -0
  1467. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/transient_prefix.rb +9 -0
  1468. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/treetop_file.rb +9 -0
  1469. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/ruby_builder.rb +113 -0
  1470. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/ruby_extensions.rb +2 -0
  1471. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/ruby_extensions/string.rb +42 -0
  1472. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime.rb +5 -0
  1473. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/compiled_parser.rb +109 -0
  1474. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/interval_skip_list.rb +4 -0
  1475. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/interval_skip_list/head_node.rb +15 -0
  1476. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +200 -0
  1477. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/interval_skip_list/node.rb +164 -0
  1478. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/syntax_node.rb +114 -0
  1479. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/terminal_parse_failure.rb +16 -0
  1480. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/terminal_parse_failure_debug.rb +21 -0
  1481. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/terminal_syntax_node.rb +17 -0
  1482. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/version.rb +9 -0
  1483. data/vendor/gems/specifications/builder-2.1.2.gemspec +33 -0
  1484. data/vendor/gems/specifications/columnize-0.3.1.gemspec +51 -0
  1485. data/vendor/gems/specifications/cucumber-0.4.4.gemspec +72 -0
  1486. data/vendor/gems/specifications/diff-lcs-1.1.2.gemspec +34 -0
  1487. data/vendor/gems/specifications/dnssd-1.3.1.gemspec +47 -0
  1488. data/vendor/gems/specifications/linecache-0.43.gemspec +33 -0
  1489. data/vendor/gems/specifications/polyglot-0.2.9.gemspec +34 -0
  1490. data/vendor/gems/specifications/rack-1.0.1.gemspec +53 -0
  1491. data/vendor/gems/specifications/rackjour-0.1.5.gemspec +29 -0
  1492. data/vendor/gems/specifications/rspec-1.2.9.gemspec +58 -0
  1493. data/vendor/gems/specifications/ruby-debug-0.10.3.gemspec +39 -0
  1494. data/vendor/gems/specifications/ruby-debug-base-0.10.3.gemspec +35 -0
  1495. data/vendor/gems/specifications/term-ansicolor-1.0.4.gemspec +30 -0
  1496. data/vendor/gems/specifications/treetop-1.4.2.gemspec +32 -0
  1497. metadata +1549 -0
@@ -0,0 +1,20 @@
1
+ require "mkmf"
2
+
3
+ if RUBY_VERSION >= "1.9"
4
+ if RUBY_RELEASE_DATE < "2005-03-17"
5
+ STDERR.print("Ruby version is too old\n")
6
+ exit(1)
7
+ end
8
+ elsif RUBY_VERSION >= "1.8"
9
+ if RUBY_RELEASE_DATE < "2005-03-22"
10
+ STDERR.print("Ruby version is too old\n")
11
+ exit(1)
12
+ end
13
+ else
14
+ STDERR.print("Ruby version is too old\n")
15
+ exit(1)
16
+ end
17
+
18
+ # Temporary: to turn off optimization
19
+ # $CFLAGS='-fno-strict-aliasing -g -fPIC'
20
+ create_makefile("ruby_debug")
@@ -0,0 +1,2322 @@
1
+ #include "ruby_debug.h"
2
+
3
+ #include <stdio.h>
4
+ #include <node.h>
5
+ #include <rubysig.h>
6
+ #include <st.h>
7
+ #include <intern.h>
8
+
9
+ #define DEBUG_VERSION "0.10.3"
10
+
11
+
12
+ #ifdef _WIN32
13
+ struct FRAME {
14
+ VALUE self;
15
+ int argc;
16
+ ID last_func;
17
+ ID orig_func;
18
+ VALUE last_class;
19
+ struct FRAME *prev;
20
+ struct FRAME *tmp;
21
+ struct RNode *node;
22
+ int iter;
23
+ int flags;
24
+ unsigned long uniq;
25
+ };
26
+
27
+ struct SCOPE {
28
+ struct RBasic super;
29
+ ID *local_tbl;
30
+ VALUE *local_vars;
31
+ int flags;
32
+ };
33
+
34
+ struct RVarmap {
35
+ struct RBasic super;
36
+ ID id;
37
+ VALUE val;
38
+ struct RVarmap *next;
39
+ };
40
+
41
+ RUBY_EXTERN struct SCOPE *ruby_scope;
42
+ RUBY_EXTERN struct FRAME *ruby_frame;
43
+ RUBY_EXTERN struct RVarmap *ruby_dyna_vars;
44
+ #else
45
+ #include <env.h>
46
+ #endif
47
+
48
+ #define FRAME_N(n) (&debug_context->frames[debug_context->stack_size-(n)-1])
49
+ #define GET_FRAME (FRAME_N(check_frame_number(debug_context, frame)))
50
+
51
+ #ifndef min
52
+ #define min(x,y) ((x) < (y) ? (x) : (y))
53
+ #endif
54
+
55
+ #define STACK_SIZE_INCREMENT 128
56
+
57
+ typedef struct {
58
+ st_table *tbl;
59
+ } threads_table_t;
60
+
61
+ static VALUE tracing = Qfalse;
62
+ static VALUE locker = Qnil;
63
+ static VALUE post_mortem = Qfalse;
64
+ static VALUE keep_frame_binding = Qfalse;
65
+ static VALUE debug = Qfalse;
66
+ static VALUE track_frame_args = Qfalse;
67
+
68
+ static VALUE last_context = Qnil;
69
+ static VALUE last_thread = Qnil;
70
+ static debug_context_t *last_debug_context = NULL;
71
+
72
+ VALUE rdebug_threads_tbl = Qnil; /* Context for each of the threads */
73
+ VALUE mDebugger; /* Ruby Debugger Module object */
74
+
75
+ static VALUE cThreadsTable;
76
+ static VALUE cContext;
77
+ static VALUE cDebugThread;
78
+
79
+ static VALUE rb_mObjectSpace;
80
+
81
+ static ID idAtBreakpoint;
82
+ static ID idAtCatchpoint;
83
+ static ID idAtLine;
84
+ static ID idAtReturn;
85
+ static ID idAtTracing;
86
+ static ID idList;
87
+
88
+ static int start_count = 0;
89
+ static int thnum_max = 0;
90
+ static int bkp_count = 0;
91
+ static int last_debugged_thnum = -1;
92
+ static unsigned long last_check = 0;
93
+ static unsigned long hook_count = 0;
94
+
95
+ static VALUE create_binding(VALUE);
96
+ static VALUE debug_stop(VALUE);
97
+ static void save_current_position(debug_context_t *);
98
+ static VALUE context_copy_args(debug_frame_t *);
99
+ static VALUE context_copy_locals(debug_frame_t *);
100
+ static void context_suspend_0(debug_context_t *);
101
+ static void context_resume_0(debug_context_t *);
102
+ static void copy_scalar_args(debug_frame_t *);
103
+
104
+ typedef struct locked_thread_t {
105
+ VALUE thread_id;
106
+ struct locked_thread_t *next;
107
+ } locked_thread_t;
108
+
109
+ static locked_thread_t *locked_head = NULL;
110
+ static locked_thread_t *locked_tail = NULL;
111
+
112
+ /* "Step", "Next" and "Finish" do their work by saving information
113
+ about where to stop next. reset_stopping_points removes/resets this
114
+ information. */
115
+ inline static void
116
+ reset_stepping_stop_points(debug_context_t *debug_context)
117
+ {
118
+ debug_context->dest_frame = -1;
119
+ debug_context->stop_line = -1;
120
+ debug_context->stop_next = -1;
121
+ }
122
+
123
+ inline static VALUE
124
+ real_class(VALUE klass)
125
+ {
126
+ if (klass) {
127
+ if (TYPE(klass) == T_ICLASS) {
128
+ return RBASIC(klass)->klass;
129
+ }
130
+ else if (FL_TEST(klass, FL_SINGLETON)) {
131
+ return rb_iv_get(klass, "__attached__");
132
+ }
133
+ }
134
+ return klass;
135
+ }
136
+
137
+ inline static void *
138
+ ruby_method_ptr(VALUE class, ID meth_id)
139
+ {
140
+ NODE *body, *method;
141
+ st_lookup(RCLASS(class)->m_tbl, meth_id, (st_data_t *)&body);
142
+ method = (NODE *)body->u2.value;
143
+ return (void *)method->u1.value;
144
+ }
145
+
146
+ inline static VALUE
147
+ ref2id(VALUE obj)
148
+ {
149
+ return rb_obj_id(obj);
150
+ }
151
+
152
+ static VALUE
153
+ id2ref_unprotected(VALUE id)
154
+ {
155
+ typedef VALUE (*id2ref_func_t)(VALUE, VALUE);
156
+ static id2ref_func_t f_id2ref = NULL;
157
+ if(f_id2ref == NULL)
158
+ {
159
+ f_id2ref = (id2ref_func_t)ruby_method_ptr(rb_mObjectSpace, rb_intern("_id2ref"));
160
+ }
161
+ return f_id2ref(rb_mObjectSpace, id);
162
+ }
163
+
164
+ static VALUE
165
+ id2ref_error()
166
+ {
167
+ if(debug == Qtrue)
168
+ rb_p(ruby_errinfo);
169
+ return Qnil;
170
+ }
171
+
172
+ static VALUE
173
+ id2ref(VALUE id)
174
+ {
175
+ return rb_rescue(id2ref_unprotected, id, id2ref_error, 0);
176
+ }
177
+
178
+ inline static VALUE
179
+ context_thread_0(debug_context_t *debug_context)
180
+ {
181
+ return id2ref(debug_context->thread_id);
182
+ }
183
+
184
+ static int
185
+ is_in_locked(VALUE thread_id)
186
+ {
187
+ locked_thread_t *node;
188
+
189
+ if(!locked_head)
190
+ return 0;
191
+
192
+ for(node = locked_head; node != locked_tail; node = node->next)
193
+ {
194
+ if(node->thread_id == thread_id) return 1;
195
+ }
196
+ return 0;
197
+ }
198
+
199
+ static void
200
+ add_to_locked(VALUE thread)
201
+ {
202
+ locked_thread_t *node;
203
+ VALUE thread_id = ref2id(thread);
204
+
205
+ if(is_in_locked(thread_id))
206
+ return;
207
+
208
+ node = ALLOC(locked_thread_t);
209
+ node->thread_id = thread_id;
210
+ node->next = NULL;
211
+ if(locked_tail)
212
+ locked_tail->next = node;
213
+ locked_tail = node;
214
+ if(!locked_head)
215
+ locked_head = node;
216
+ }
217
+
218
+ static VALUE
219
+ remove_from_locked()
220
+ {
221
+ VALUE thread;
222
+ locked_thread_t *node;
223
+
224
+ if(locked_head == NULL)
225
+ return Qnil;
226
+ node = locked_head;
227
+ locked_head = locked_head->next;
228
+ if(locked_tail == node)
229
+ locked_tail = NULL;
230
+ thread = id2ref(node->thread_id);
231
+ xfree(node);
232
+ return thread;
233
+ }
234
+
235
+ static int
236
+ threads_table_mark_keyvalue(VALUE key, VALUE value, int dummy)
237
+ {
238
+ rb_gc_mark(value);
239
+ return ST_CONTINUE;
240
+ }
241
+
242
+ static void
243
+ threads_table_mark(void* data)
244
+ {
245
+ threads_table_t *threads_table = (threads_table_t*)data;
246
+ st_foreach(threads_table->tbl, threads_table_mark_keyvalue, 0);
247
+ }
248
+
249
+ static void
250
+ threads_table_free(void* data)
251
+ {
252
+ threads_table_t *threads_table = (threads_table_t*)data;
253
+ st_free_table(threads_table->tbl);
254
+ xfree(threads_table);
255
+ }
256
+
257
+ static VALUE
258
+ threads_table_create()
259
+ {
260
+ threads_table_t *threads_table;
261
+
262
+ threads_table = ALLOC(threads_table_t);
263
+ threads_table->tbl = st_init_numtable();
264
+ return Data_Wrap_Struct(cThreadsTable, threads_table_mark, threads_table_free, threads_table);
265
+ }
266
+
267
+ static int
268
+ threads_table_clear_i(VALUE key, VALUE value, VALUE dummy)
269
+ {
270
+ return ST_DELETE;
271
+ }
272
+
273
+ static void
274
+ threads_table_clear(VALUE table)
275
+ {
276
+ threads_table_t *threads_table;
277
+
278
+ Data_Get_Struct(table, threads_table_t, threads_table);
279
+ st_foreach(threads_table->tbl, threads_table_clear_i, 0);
280
+ }
281
+
282
+ static VALUE
283
+ is_thread_alive(VALUE thread)
284
+ {
285
+ typedef VALUE (*thread_alive_func_t)(VALUE);
286
+ static thread_alive_func_t f_thread_alive = NULL;
287
+ if(!f_thread_alive)
288
+ {
289
+ f_thread_alive = (thread_alive_func_t)ruby_method_ptr(rb_cThread, rb_intern("alive?"));
290
+ }
291
+ return f_thread_alive(thread);
292
+ }
293
+
294
+ static int
295
+ threads_table_check_i(VALUE key, VALUE value, VALUE dummy)
296
+ {
297
+ VALUE thread;
298
+
299
+ thread = id2ref(key);
300
+ if(!rb_obj_is_kind_of(thread, rb_cThread))
301
+ {
302
+ return ST_DELETE;
303
+ }
304
+ if(rb_protect(is_thread_alive, thread, 0) != Qtrue)
305
+ {
306
+ return ST_DELETE;
307
+ }
308
+ return ST_CONTINUE;
309
+ }
310
+
311
+ static void
312
+ check_thread_contexts()
313
+ {
314
+ threads_table_t *threads_table;
315
+
316
+ Data_Get_Struct(rdebug_threads_tbl, threads_table_t, threads_table);
317
+ st_foreach(threads_table->tbl, threads_table_check_i, 0);
318
+ }
319
+
320
+ /*
321
+ * call-seq:
322
+ * Debugger.started? -> bool
323
+ *
324
+ * Returns +true+ the debugger is started.
325
+ */
326
+ static VALUE
327
+ debug_is_started(VALUE self)
328
+ {
329
+ return IS_STARTED ? Qtrue : Qfalse;
330
+ }
331
+
332
+ static void
333
+ debug_context_mark(void *data)
334
+ {
335
+ debug_frame_t *frame;
336
+ int i;
337
+
338
+ debug_context_t *debug_context = (debug_context_t *)data;
339
+ for(i = 0; i < debug_context->stack_size; i++)
340
+ {
341
+ frame = &(debug_context->frames[i]);
342
+ rb_gc_mark(frame->binding);
343
+ rb_gc_mark(frame->self);
344
+ rb_gc_mark(frame->arg_ary);
345
+ if(frame->dead)
346
+ {
347
+ rb_gc_mark(frame->info.copy.locals);
348
+ rb_gc_mark(frame->info.copy.args);
349
+ }
350
+ }
351
+ rb_gc_mark(debug_context->breakpoint);
352
+ }
353
+
354
+ static void
355
+ debug_context_free(void *data)
356
+ {
357
+ debug_context_t *debug_context = (debug_context_t *)data;
358
+ xfree(debug_context->frames);
359
+ }
360
+
361
+ static VALUE
362
+ debug_context_create(VALUE thread)
363
+ {
364
+ debug_context_t *debug_context;
365
+
366
+ debug_context = ALLOC(debug_context_t);
367
+ debug_context-> thnum = ++thnum_max;
368
+
369
+ debug_context->last_file = NULL;
370
+ debug_context->last_line = 0;
371
+ debug_context->flags = 0;
372
+
373
+ debug_context->stop_next = -1;
374
+ debug_context->dest_frame = -1;
375
+ debug_context->stop_line = -1;
376
+ debug_context->stop_frame = -1;
377
+ debug_context->stop_reason = CTX_STOP_NONE;
378
+ debug_context->stack_len = STACK_SIZE_INCREMENT;
379
+ debug_context->frames = ALLOC_N(debug_frame_t, STACK_SIZE_INCREMENT);
380
+ debug_context->stack_size = 0;
381
+ debug_context->thread_id = ref2id(thread);
382
+ debug_context->breakpoint = Qnil;
383
+ if(rb_obj_class(thread) == cDebugThread)
384
+ CTX_FL_SET(debug_context, CTX_FL_IGNORE);
385
+ return Data_Wrap_Struct(cContext, debug_context_mark, debug_context_free, debug_context);
386
+ }
387
+
388
+ static VALUE
389
+ debug_context_dup(debug_context_t *debug_context)
390
+ {
391
+ debug_context_t *new_debug_context;
392
+ debug_frame_t *new_frame, *old_frame;
393
+ int i;
394
+
395
+ new_debug_context = ALLOC(debug_context_t);
396
+ memcpy(new_debug_context, debug_context, sizeof(debug_context_t));
397
+ new_debug_context->stop_next = -1;
398
+ new_debug_context->dest_frame = -1;
399
+ new_debug_context->stop_line = -1;
400
+ new_debug_context->stop_frame = -1;
401
+ new_debug_context->breakpoint = Qnil;
402
+ CTX_FL_SET(new_debug_context, CTX_FL_DEAD);
403
+ new_debug_context->frames = ALLOC_N(debug_frame_t, debug_context->stack_size);
404
+ new_debug_context->stack_len = debug_context->stack_size;
405
+ memcpy(new_debug_context->frames, debug_context->frames, sizeof(debug_frame_t) * debug_context->stack_size);
406
+ for(i = 0; i < debug_context->stack_size; i++)
407
+ {
408
+ new_frame = &(new_debug_context->frames[i]);
409
+ old_frame = &(debug_context->frames[i]);
410
+ new_frame->dead = 1;
411
+ new_frame->info.copy.args = context_copy_args(old_frame);
412
+ new_frame->info.copy.locals = context_copy_locals(old_frame);
413
+ }
414
+ return Data_Wrap_Struct(cContext, debug_context_mark, debug_context_free, new_debug_context);
415
+ }
416
+
417
+ static void
418
+ thread_context_lookup(VALUE thread, VALUE *context, debug_context_t **debug_context)
419
+ {
420
+ threads_table_t *threads_table;
421
+ VALUE thread_id;
422
+ debug_context_t *l_debug_context;
423
+
424
+ debug_check_started();
425
+
426
+ if(last_thread == thread && last_context != Qnil)
427
+ {
428
+ *context = last_context;
429
+ if(debug_context)
430
+ *debug_context = last_debug_context;
431
+ return;
432
+ }
433
+ thread_id = ref2id(thread);
434
+ Data_Get_Struct(rdebug_threads_tbl, threads_table_t, threads_table);
435
+ if(!st_lookup(threads_table->tbl, thread_id, context))
436
+ {
437
+ *context = debug_context_create(thread);
438
+ st_insert(threads_table->tbl, thread_id, *context);
439
+ }
440
+
441
+ Data_Get_Struct(*context, debug_context_t, l_debug_context);
442
+ if(debug_context)
443
+ *debug_context = l_debug_context;
444
+
445
+ last_thread = thread;
446
+ last_context = *context;
447
+ last_debug_context = l_debug_context;
448
+ }
449
+
450
+ static VALUE
451
+ call_at_line_unprotected(VALUE args)
452
+ {
453
+ VALUE context;
454
+ context = *RARRAY(args)->ptr;
455
+ return rb_funcall2(context, idAtLine, RARRAY(args)->len - 1, RARRAY(args)->ptr + 1);
456
+ }
457
+
458
+ static VALUE
459
+ call_at_line(VALUE context, debug_context_t *debug_context, VALUE file, VALUE line)
460
+ {
461
+ VALUE args;
462
+
463
+ last_debugged_thnum = debug_context->thnum;
464
+ save_current_position(debug_context);
465
+
466
+ args = rb_ary_new3(3, context, file, line);
467
+ return rb_protect(call_at_line_unprotected, args, 0);
468
+ }
469
+
470
+ static void
471
+ save_call_frame(rb_event_t event, VALUE self, char *file, int line, ID mid, debug_context_t *debug_context)
472
+ {
473
+ VALUE binding;
474
+ debug_frame_t *debug_frame;
475
+ int frame_n;
476
+
477
+ binding = self && RTEST(keep_frame_binding)? create_binding(self) : Qnil;
478
+
479
+ frame_n = debug_context->stack_size++;
480
+ if(frame_n >= debug_context->stack_len)
481
+ {
482
+ debug_context->stack_len += STACK_SIZE_INCREMENT;
483
+ debug_context->frames = REALLOC_N(debug_context->frames, debug_frame_t, debug_context->stack_len);
484
+ }
485
+ debug_frame = &debug_context->frames[frame_n];
486
+ debug_frame->argc = ruby_frame->argc;
487
+ debug_frame->file = file;
488
+ debug_frame->line = line;
489
+ debug_frame->binding = binding;
490
+ debug_frame->id = mid;
491
+ debug_frame->orig_id = mid;
492
+ debug_frame->dead = 0;
493
+ debug_frame->self = self;
494
+ debug_frame->arg_ary = Qnil;
495
+ debug_frame->info.runtime.frame = ruby_frame;
496
+ debug_frame->info.runtime.scope = ruby_scope;
497
+ debug_frame->info.runtime.dyna_vars = event == RUBY_EVENT_LINE ? ruby_dyna_vars : NULL;
498
+ if (RTEST(track_frame_args))
499
+ copy_scalar_args(debug_frame);
500
+ }
501
+
502
+
503
+ #if defined DOSISH
504
+ #define isdirsep(x) ((x) == '/' || (x) == '\\')
505
+ #else
506
+ #define isdirsep(x) ((x) == '/')
507
+ #endif
508
+
509
+ int
510
+ filename_cmp(VALUE source, char *file)
511
+ {
512
+ char *source_ptr, *file_ptr;
513
+ int s_len, f_len, min_len;
514
+ int s,f;
515
+ int dirsep_flag = 0;
516
+
517
+ s_len = RSTRING(source)->len;
518
+ f_len = strlen(file);
519
+ min_len = min(s_len, f_len);
520
+
521
+ source_ptr = RSTRING(source)->ptr;
522
+ file_ptr = file;
523
+
524
+ for( s = s_len - 1, f = f_len - 1; s >= s_len - min_len && f >= f_len - min_len; s--, f-- )
525
+ {
526
+ if((source_ptr[s] == '.' || file_ptr[f] == '.') && dirsep_flag)
527
+ return 1;
528
+ if(isdirsep(source_ptr[s]) && isdirsep(file_ptr[f]))
529
+ dirsep_flag = 1;
530
+ else if(source_ptr[s] != file_ptr[f])
531
+ return 0;
532
+ }
533
+ return 1;
534
+ }
535
+
536
+ /*
537
+ * This is a NASTY HACK. For some reasons rb_f_binding is declared
538
+ * static in eval.c. So we create a cons up call to binding in C.
539
+ */
540
+ static VALUE
541
+ create_binding(VALUE self)
542
+ {
543
+ typedef VALUE (*bind_func_t)(VALUE);
544
+ static bind_func_t f_binding = NULL;
545
+
546
+ if(f_binding == NULL)
547
+ {
548
+ f_binding = (bind_func_t)ruby_method_ptr(rb_mKernel, rb_intern("binding"));
549
+ }
550
+ return f_binding(self);
551
+ }
552
+
553
+ inline static debug_frame_t *
554
+ get_top_frame(debug_context_t *debug_context)
555
+ {
556
+ if(debug_context->stack_size == 0)
557
+ return NULL;
558
+ else
559
+ return &(debug_context->frames[debug_context->stack_size-1]);
560
+ }
561
+
562
+ inline static void
563
+ save_top_binding(debug_context_t *debug_context, VALUE binding)
564
+ {
565
+ debug_frame_t *debug_frame;
566
+ debug_frame = get_top_frame(debug_context);
567
+ if(debug_frame)
568
+ debug_frame->binding = binding;
569
+ }
570
+
571
+ inline static void
572
+ set_frame_source(rb_event_t event, debug_context_t *debug_context, VALUE self, char *file, int line, ID mid)
573
+ {
574
+ debug_frame_t *top_frame;
575
+ top_frame = get_top_frame(debug_context);
576
+ if(top_frame)
577
+ {
578
+ top_frame->self = self;
579
+ top_frame->file = file;
580
+ top_frame->line = line;
581
+ top_frame->id = mid;
582
+ top_frame->info.runtime.dyna_vars = event == RUBY_EVENT_C_CALL ? NULL : ruby_dyna_vars;
583
+ }
584
+ }
585
+
586
+ inline static void
587
+ reset_frame_mid(debug_context_t *debug_context)
588
+ {
589
+ debug_frame_t *top_frame;
590
+ top_frame = get_top_frame(debug_context);
591
+ if(top_frame)
592
+ {
593
+ top_frame->id = 0;
594
+ }
595
+ }
596
+
597
+ static void
598
+ save_current_position(debug_context_t *debug_context)
599
+ {
600
+ debug_frame_t *debug_frame;
601
+
602
+ debug_frame = get_top_frame(debug_context);
603
+ if(!debug_frame) return;
604
+ debug_context->last_file = debug_frame->file;
605
+ debug_context->last_line = debug_frame->line;
606
+ CTX_FL_UNSET(debug_context, CTX_FL_ENABLE_BKPT);
607
+ CTX_FL_UNSET(debug_context, CTX_FL_STEPPED);
608
+ CTX_FL_UNSET(debug_context, CTX_FL_FORCE_MOVE);
609
+ }
610
+
611
+ inline static char *
612
+ get_event_name(rb_event_t event)
613
+ {
614
+ switch (event) {
615
+ case RUBY_EVENT_LINE:
616
+ return "line";
617
+ case RUBY_EVENT_CLASS:
618
+ return "class";
619
+ case RUBY_EVENT_END:
620
+ return "end";
621
+ case RUBY_EVENT_CALL:
622
+ return "call";
623
+ case RUBY_EVENT_RETURN:
624
+ return "return";
625
+ case RUBY_EVENT_C_CALL:
626
+ return "c-call";
627
+ case RUBY_EVENT_C_RETURN:
628
+ return "c-return";
629
+ case RUBY_EVENT_RAISE:
630
+ return "raise";
631
+ default:
632
+ return "unknown";
633
+ }
634
+ }
635
+
636
+ inline static int
637
+ c_call_new_frame_p(VALUE klass, ID mid)
638
+ {
639
+ klass = real_class(klass);
640
+ if(rb_block_given_p()) return 1;
641
+ if(klass == rb_cProc || klass == rb_mKernel || klass == rb_cModule) return 1;
642
+ return 0;
643
+ }
644
+
645
+ static void
646
+ debug_event_hook(rb_event_t event, NODE *node, VALUE self, ID mid, VALUE klass)
647
+ {
648
+ VALUE thread, context;
649
+ VALUE breakpoint = Qnil, binding = Qnil;
650
+ debug_context_t *debug_context;
651
+ char *file = NULL;
652
+ int line = 0, moved = 0;
653
+
654
+ hook_count++;
655
+
656
+ if (mid == ID_ALLOCATOR) return;
657
+
658
+ thread = rb_thread_current();
659
+ thread_context_lookup(thread, &context, &debug_context);
660
+
661
+ /* return if thread is marked as 'ignored'.
662
+ debugger's threads are marked this way
663
+ */
664
+ if(CTX_FL_TEST(debug_context, CTX_FL_IGNORE)) return;
665
+
666
+ while(1)
667
+ {
668
+ /* halt execution of the current thread if the debugger
669
+ is activated in another
670
+ */
671
+ while(locker != Qnil && locker != thread)
672
+ {
673
+ add_to_locked(thread);
674
+ rb_thread_stop();
675
+ }
676
+
677
+ /* stop the current thread if it's marked as suspended */
678
+ if(CTX_FL_TEST(debug_context, CTX_FL_SUSPEND) && locker != thread)
679
+ {
680
+ CTX_FL_SET(debug_context, CTX_FL_WAS_RUNNING);
681
+ rb_thread_stop();
682
+ }
683
+ else break;
684
+ }
685
+
686
+ /* return if the current thread is the locker */
687
+ if(locker != Qnil) return;
688
+
689
+ /* only the current thread can proceed */
690
+ locker = thread;
691
+
692
+ /* ignore a skipped section of code */
693
+ if(CTX_FL_TEST(debug_context, CTX_FL_SKIPPED)) goto cleanup;
694
+
695
+ if(node)
696
+ {
697
+ file = node->nd_file;
698
+ line = nd_line(node);
699
+
700
+ if(debug == Qtrue)
701
+ fprintf(stderr, "%s:%d [%s] %s\n", file, line, get_event_name(event), rb_id2name(mid));
702
+
703
+ /* There can be many event calls per line, but we only want
704
+ *one* breakpoint per line. */
705
+ if(debug_context->last_line != line || debug_context->last_file == NULL ||
706
+ strcmp(debug_context->last_file, file) != 0)
707
+ {
708
+ CTX_FL_SET(debug_context, CTX_FL_ENABLE_BKPT);
709
+ moved = 1;
710
+ }
711
+ else if(event == RUBY_EVENT_LINE)
712
+ {
713
+ /* There are two line-event trace hook calls per IF node - one
714
+ before the expression eval an done afterwards.
715
+ */
716
+ /* FIXME: the static variable can't be safely used here, since this method
717
+ is re-entrant by multiple threads. If we want to provide this kind of functionality
718
+ if_eval_event variable must be moved to debug_context structure.
719
+ */
720
+ /*
721
+ static int if_eval_event = 0;
722
+ if_eval_event = (NODE_IF == nd_type(node)) ? !if_eval_event : 0;
723
+ if (!if_eval_event)
724
+ {
725
+ CTX_FL_SET(debug_context, CTX_FL_ENABLE_BKPT);
726
+ }
727
+ */
728
+ }
729
+ }
730
+ else if(event != RUBY_EVENT_RETURN && event != RUBY_EVENT_C_RETURN)
731
+ {
732
+ if(debug == Qtrue)
733
+ fprintf(stderr, "nodeless [%s] %s\n", get_event_name(event), rb_id2name(mid));
734
+ goto cleanup;
735
+ }
736
+ else
737
+ {
738
+ if(debug == Qtrue)
739
+ fprintf(stderr, "nodeless [%s] %s\n", get_event_name(event), rb_id2name(mid));
740
+ }
741
+
742
+ if(event != RUBY_EVENT_LINE)
743
+ CTX_FL_SET(debug_context, CTX_FL_STEPPED);
744
+
745
+ switch(event)
746
+ {
747
+ case RUBY_EVENT_LINE:
748
+ {
749
+
750
+ if(debug_context->stack_size == 0)
751
+ save_call_frame(event, self, file, line, mid, debug_context);
752
+ else
753
+ set_frame_source(event, debug_context, self, file, line, mid);
754
+
755
+ if(RTEST(tracing) || CTX_FL_TEST(debug_context, CTX_FL_TRACING))
756
+ rb_funcall(context, idAtTracing, 2, rb_str_new2(file), INT2FIX(line));
757
+
758
+ if(debug_context->dest_frame == -1 ||
759
+ debug_context->stack_size == debug_context->dest_frame)
760
+ {
761
+ if(moved || !CTX_FL_TEST(debug_context, CTX_FL_FORCE_MOVE))
762
+ debug_context->stop_next--;
763
+ if(debug_context->stop_next < 0)
764
+ debug_context->stop_next = -1;
765
+ if(moved || (CTX_FL_TEST(debug_context, CTX_FL_STEPPED) &&
766
+ !CTX_FL_TEST(debug_context, CTX_FL_FORCE_MOVE)))
767
+ {
768
+ debug_context->stop_line--;
769
+ CTX_FL_UNSET(debug_context, CTX_FL_STEPPED);
770
+ }
771
+ }
772
+ else if(debug_context->stack_size < debug_context->dest_frame)
773
+ {
774
+ debug_context->stop_next = 0;
775
+ }
776
+
777
+ if(debug_context->stop_next == 0 || debug_context->stop_line == 0 ||
778
+ (breakpoint = check_breakpoints_by_pos(debug_context, file, line)) != Qnil)
779
+ {
780
+ binding = self? create_binding(self) : Qnil;
781
+ save_top_binding(debug_context, binding);
782
+
783
+ debug_context->stop_reason = CTX_STOP_STEP;
784
+
785
+ /* check breakpoint expression */
786
+ if(breakpoint != Qnil)
787
+ {
788
+ if(!check_breakpoint_expression(breakpoint, binding))
789
+ break;
790
+ if(!check_breakpoint_hit_condition(breakpoint))
791
+ break;
792
+ if(breakpoint != debug_context->breakpoint)
793
+ {
794
+ debug_context->stop_reason = CTX_STOP_BREAKPOINT;
795
+ rb_funcall(context, idAtBreakpoint, 1, breakpoint);
796
+ }
797
+ else
798
+ debug_context->breakpoint = Qnil;
799
+ }
800
+
801
+ reset_stepping_stop_points(debug_context);
802
+ call_at_line(context, debug_context, rb_str_new2(file), INT2FIX(line));
803
+ }
804
+ break;
805
+ }
806
+ case RUBY_EVENT_CALL:
807
+ {
808
+ save_call_frame(event, self, file, line, mid, debug_context);
809
+ breakpoint = check_breakpoints_by_method(debug_context, klass, mid);
810
+ if(breakpoint != Qnil)
811
+ {
812
+ debug_frame_t *debug_frame;
813
+ debug_frame = get_top_frame(debug_context);
814
+ if(debug_frame)
815
+ binding = debug_frame->binding;
816
+ if(NIL_P(binding) && self)
817
+ binding = create_binding(self);
818
+ save_top_binding(debug_context, binding);
819
+
820
+ if(!check_breakpoint_expression(breakpoint, binding))
821
+ break;
822
+ if(!check_breakpoint_hit_condition(breakpoint))
823
+ break;
824
+ if(breakpoint != debug_context->breakpoint)
825
+ {
826
+ debug_context->stop_reason = CTX_STOP_BREAKPOINT;
827
+ rb_funcall(context, idAtBreakpoint, 1, breakpoint);
828
+ }
829
+ else
830
+ debug_context->breakpoint = Qnil;
831
+ call_at_line(context, debug_context, rb_str_new2(file), INT2FIX(line));
832
+ }
833
+ break;
834
+ }
835
+ case RUBY_EVENT_C_CALL:
836
+ {
837
+ if(c_call_new_frame_p(klass, mid))
838
+ save_call_frame(event, self, file, line, mid, debug_context);
839
+ else
840
+ set_frame_source(event, debug_context, self, file, line, mid);
841
+ break;
842
+ }
843
+ case RUBY_EVENT_C_RETURN:
844
+ {
845
+ /* note if a block is given we fall through! */
846
+ if(!node || !c_call_new_frame_p(klass, mid))
847
+ break;
848
+ }
849
+ case RUBY_EVENT_RETURN:
850
+ case RUBY_EVENT_END:
851
+ {
852
+ if(debug_context->stack_size == debug_context->stop_frame)
853
+ {
854
+ debug_context->stop_next = 1;
855
+ debug_context->stop_frame = 0;
856
+ /* NOTE: can't use call_at_line function here to trigger a debugger event.
857
+ this can lead to segfault. We should only unroll the stack on this event.
858
+ */
859
+ }
860
+ while(debug_context->stack_size > 0)
861
+ {
862
+ debug_context->stack_size--;
863
+ if(debug_context->frames[debug_context->stack_size].orig_id == mid)
864
+ break;
865
+ }
866
+ CTX_FL_SET(debug_context, CTX_FL_ENABLE_BKPT);
867
+ break;
868
+ }
869
+ case RUBY_EVENT_CLASS:
870
+ {
871
+ reset_frame_mid(debug_context);
872
+ save_call_frame(event, self, file, line, mid, debug_context);
873
+ break;
874
+ }
875
+ case RUBY_EVENT_RAISE:
876
+ {
877
+ VALUE ancestors;
878
+ VALUE expn_class, aclass;
879
+ int i;
880
+
881
+ set_frame_source(event, debug_context, self, file, line, mid);
882
+
883
+ if(post_mortem == Qtrue && self)
884
+ {
885
+ binding = create_binding(self);
886
+ rb_ivar_set(ruby_errinfo, rb_intern("@__debug_file"), rb_str_new2(file));
887
+ rb_ivar_set(ruby_errinfo, rb_intern("@__debug_line"), INT2FIX(line));
888
+ rb_ivar_set(ruby_errinfo, rb_intern("@__debug_binding"), binding);
889
+ rb_ivar_set(ruby_errinfo, rb_intern("@__debug_context"), debug_context_dup(debug_context));
890
+ }
891
+
892
+ expn_class = rb_obj_class(ruby_errinfo);
893
+
894
+ /* This code goes back to the earliest days of ruby-debug. It
895
+ tends to disallow catching an exception via the
896
+ "catchpoint" command. To address this one possiblilty is to
897
+ move this after testing for catchponts. Kent however thinks
898
+ there may be a misfeature in Ruby's eval.c: the problem was
899
+ in the fact that Ruby doesn't reset exception flag on the
900
+ current thread before it calls a notification handler.
901
+
902
+ See also the #ifdef'd code below as well.
903
+ */
904
+ #ifdef NORMAL_CODE
905
+ if( !NIL_P(rb_class_inherited_p(expn_class, rb_eSystemExit)) )
906
+ {
907
+ debug_stop(mDebugger);
908
+ break;
909
+ }
910
+ #endif
911
+
912
+ if (rdebug_catchpoints == Qnil ||
913
+ RHASH(rdebug_catchpoints)->tbl->num_entries == 0)
914
+ break;
915
+
916
+ ancestors = rb_mod_ancestors(expn_class);
917
+ for(i = 0; i < RARRAY(ancestors)->len; i++)
918
+ {
919
+ VALUE mod_name;
920
+ VALUE hit_count;
921
+
922
+ aclass = rb_ary_entry(ancestors, i);
923
+ mod_name = rb_mod_name(aclass);
924
+ hit_count = rb_hash_aref(rdebug_catchpoints, mod_name);
925
+ if(hit_count != Qnil)
926
+ {
927
+ hit_count = INT2FIX(FIX2INT(rb_hash_aref(rdebug_catchpoints,
928
+ mod_name)+1));
929
+ rb_hash_aset(rdebug_catchpoints, mod_name, hit_count);
930
+ debug_context->stop_reason = CTX_STOP_CATCHPOINT;
931
+ rb_funcall(context, idAtCatchpoint, 1, ruby_errinfo);
932
+ if(self && binding == Qnil)
933
+ binding = create_binding(self);
934
+ save_top_binding(debug_context, binding);
935
+ call_at_line(context, debug_context, rb_str_new2(file), INT2FIX(line));
936
+ break;
937
+ }
938
+ }
939
+
940
+ /* If we stop the debugger, we may not be able to trace into
941
+ code that has an exception handler wrapped around it. So
942
+ the alternative is to force the user to do his own
943
+ Debugger.stop. */
944
+ #ifdef NORMAL_CODE_MOVING_AFTER_
945
+ if( !NIL_P(rb_class_inherited_p(expn_class, rb_eSystemExit)) )
946
+ {
947
+ debug_stop(mDebugger);
948
+ break;
949
+ }
950
+ #endif
951
+
952
+ break;
953
+ }
954
+ }
955
+
956
+ cleanup:
957
+
958
+ debug_context->stop_reason = CTX_STOP_NONE;
959
+
960
+ /* check that all contexts point to alive threads */
961
+ if(hook_count - last_check > 3000)
962
+ {
963
+ check_thread_contexts();
964
+ last_check = hook_count;
965
+ }
966
+
967
+ /* release a lock */
968
+ locker = Qnil;
969
+ /* let the next thread to run */
970
+ thread = remove_from_locked();
971
+ if(thread != Qnil)
972
+ rb_thread_run(thread);
973
+ }
974
+
975
+ static VALUE
976
+ debug_stop_i(VALUE self)
977
+ {
978
+ if(IS_STARTED)
979
+ debug_stop(self);
980
+ return Qnil;
981
+ }
982
+
983
+ /*
984
+ * call-seq:
985
+ * Debugger.start_ -> bool
986
+ * Debugger.start_ { ... } -> bool
987
+ *
988
+ * This method is internal and activates the debugger. Use
989
+ * Debugger.start (from <tt>lib/ruby-debug-base.rb</tt>) instead.
990
+ *
991
+ * The return value is the value of !Debugger.started? <i>before</i>
992
+ * issuing the +start+; That is, +true+ is returned, unless debugger
993
+ * was previously started.
994
+
995
+ * If a block is given, it starts debugger and yields to block. When
996
+ * the block is finished executing it stops the debugger with
997
+ * Debugger.stop method. Inside the block you will probably want to
998
+ * have a call to Debugger.debugger. For example:
999
+ * Debugger.start{debugger; foo} # Stop inside of foo
1000
+ *
1001
+ * Also, ruby-debug only allows
1002
+ * one invocation of debugger at a time; nested Debugger.start's
1003
+ * have no effect and you can't use this inside the debugger itself.
1004
+ *
1005
+ * <i>Note that if you want to completely remove the debugger hook,
1006
+ * you must call Debugger.stop as many times as you called
1007
+ * Debugger.start method.</i>
1008
+ */
1009
+ static VALUE
1010
+ debug_start(VALUE self)
1011
+ {
1012
+ VALUE result;
1013
+ start_count++;
1014
+
1015
+ if(IS_STARTED)
1016
+ result = Qfalse;
1017
+ else
1018
+ {
1019
+ locker = Qnil;
1020
+ rdebug_breakpoints = rb_ary_new();
1021
+ rdebug_catchpoints = rb_hash_new();
1022
+ rdebug_threads_tbl = threads_table_create();
1023
+
1024
+ rb_add_event_hook(debug_event_hook, RUBY_EVENT_ALL);
1025
+ result = Qtrue;
1026
+ }
1027
+
1028
+ if(rb_block_given_p())
1029
+ rb_ensure(rb_yield, self, debug_stop_i, self);
1030
+
1031
+ return result;
1032
+ }
1033
+
1034
+ /*
1035
+ * call-seq:
1036
+ * Debugger.stop -> bool
1037
+ *
1038
+ * This method disables the debugger. It returns +true+ if the debugger is disabled,
1039
+ * otherwise it returns +false+.
1040
+ *
1041
+ * <i>Note that if you want to complete remove the debugger hook,
1042
+ * you must call Debugger.stop as many times as you called
1043
+ * Debugger.start method.</i>
1044
+ */
1045
+ static VALUE
1046
+ debug_stop(VALUE self)
1047
+ {
1048
+ debug_check_started();
1049
+
1050
+ start_count--;
1051
+ if(start_count)
1052
+ return Qfalse;
1053
+
1054
+ rb_remove_event_hook(debug_event_hook);
1055
+
1056
+ locker = Qnil;
1057
+ rdebug_breakpoints = Qnil;
1058
+ rdebug_threads_tbl = Qnil;
1059
+
1060
+ return Qtrue;
1061
+ }
1062
+
1063
+ static int
1064
+ find_last_context_func(VALUE key, VALUE value, VALUE *result)
1065
+ {
1066
+ debug_context_t *debug_context;
1067
+ Data_Get_Struct(value, debug_context_t, debug_context);
1068
+ if(debug_context->thnum == last_debugged_thnum)
1069
+ {
1070
+ *result = value;
1071
+ return ST_STOP;
1072
+ }
1073
+ return ST_CONTINUE;
1074
+ }
1075
+
1076
+ /*
1077
+ * call-seq:
1078
+ * Debugger.last_interrupted -> context
1079
+ *
1080
+ * Returns last debugged context.
1081
+ */
1082
+ static VALUE
1083
+ debug_last_interrupted(VALUE self)
1084
+ {
1085
+ VALUE result = Qnil;
1086
+ threads_table_t *threads_table;
1087
+
1088
+ debug_check_started();
1089
+
1090
+ Data_Get_Struct(rdebug_threads_tbl, threads_table_t, threads_table);
1091
+
1092
+ st_foreach(threads_table->tbl, find_last_context_func, (st_data_t)&result);
1093
+ return result;
1094
+ }
1095
+
1096
+ /*
1097
+ * call-seq:
1098
+ * Debugger.current_context -> context
1099
+ *
1100
+ * Returns current context.
1101
+ * <i>Note:</i> Debugger.current_context.thread == Thread.current
1102
+ */
1103
+ static VALUE
1104
+ debug_current_context(VALUE self)
1105
+ {
1106
+ VALUE thread, context;
1107
+
1108
+ debug_check_started();
1109
+
1110
+ thread = rb_thread_current();
1111
+ thread_context_lookup(thread, &context, NULL);
1112
+
1113
+ return context;
1114
+ }
1115
+
1116
+ /*
1117
+ * call-seq:
1118
+ * Debugger.thread_context(thread) -> context
1119
+ *
1120
+ * Returns context of the thread passed as an argument.
1121
+ */
1122
+ static VALUE
1123
+ debug_thread_context(VALUE self, VALUE thread)
1124
+ {
1125
+ VALUE context;
1126
+
1127
+ debug_check_started();
1128
+ thread_context_lookup(thread, &context, NULL);
1129
+ return context;
1130
+ }
1131
+
1132
+ /*
1133
+ * call-seq:
1134
+ * Debugger.contexts -> array
1135
+ *
1136
+ * Returns an array of all contexts.
1137
+ */
1138
+ static VALUE
1139
+ debug_contexts(VALUE self)
1140
+ {
1141
+ volatile VALUE list;
1142
+ volatile VALUE new_list;
1143
+ VALUE thread, context;
1144
+ threads_table_t *threads_table;
1145
+ debug_context_t *debug_context;
1146
+ int i;
1147
+
1148
+ debug_check_started();
1149
+
1150
+ new_list = rb_ary_new();
1151
+ list = rb_funcall(rb_cThread, idList, 0);
1152
+ for(i = 0; i < RARRAY(list)->len; i++)
1153
+ {
1154
+ thread = rb_ary_entry(list, i);
1155
+ thread_context_lookup(thread, &context, NULL);
1156
+ rb_ary_push(new_list, context);
1157
+ }
1158
+ threads_table_clear(rdebug_threads_tbl);
1159
+ Data_Get_Struct(rdebug_threads_tbl, threads_table_t, threads_table);
1160
+ for(i = 0; i < RARRAY(new_list)->len; i++)
1161
+ {
1162
+ context = rb_ary_entry(new_list, i);
1163
+ Data_Get_Struct(context, debug_context_t, debug_context);
1164
+ st_insert(threads_table->tbl, debug_context->thread_id, context);
1165
+ }
1166
+
1167
+ return new_list;
1168
+ }
1169
+
1170
+ /*
1171
+ * call-seq:
1172
+ * Debugger.suspend -> Debugger
1173
+ *
1174
+ * Suspends all contexts.
1175
+ */
1176
+ static VALUE
1177
+ debug_suspend(VALUE self)
1178
+ {
1179
+ VALUE current, context;
1180
+ VALUE saved_crit;
1181
+ VALUE context_list;
1182
+ debug_context_t *debug_context;
1183
+ int i;
1184
+
1185
+ debug_check_started();
1186
+
1187
+ saved_crit = rb_thread_critical;
1188
+ rb_thread_critical = Qtrue;
1189
+ context_list = debug_contexts(self);
1190
+ thread_context_lookup(rb_thread_current(), &current, NULL);
1191
+
1192
+ for(i = 0; i < RARRAY(context_list)->len; i++)
1193
+ {
1194
+ context = rb_ary_entry(context_list, i);
1195
+ if(current == context)
1196
+ continue;
1197
+ Data_Get_Struct(context, debug_context_t, debug_context);
1198
+ context_suspend_0(debug_context);
1199
+ }
1200
+ rb_thread_critical = saved_crit;
1201
+
1202
+ if(rb_thread_critical == Qfalse)
1203
+ rb_thread_schedule();
1204
+
1205
+ return self;
1206
+ }
1207
+
1208
+ /*
1209
+ * call-seq:
1210
+ * Debugger.resume -> Debugger
1211
+ *
1212
+ * Resumes all contexts.
1213
+ */
1214
+ static VALUE
1215
+ debug_resume(VALUE self)
1216
+ {
1217
+ VALUE current, context;
1218
+ VALUE saved_crit;
1219
+ VALUE context_list;
1220
+ debug_context_t *debug_context;
1221
+ int i;
1222
+
1223
+ debug_check_started();
1224
+
1225
+ saved_crit = rb_thread_critical;
1226
+ rb_thread_critical = Qtrue;
1227
+ context_list = debug_contexts(self);
1228
+
1229
+ thread_context_lookup(rb_thread_current(), &current, NULL);
1230
+ for(i = 0; i < RARRAY(context_list)->len; i++)
1231
+ {
1232
+ context = rb_ary_entry(context_list, i);
1233
+ if(current == context)
1234
+ continue;
1235
+ Data_Get_Struct(context, debug_context_t, debug_context);
1236
+ context_resume_0(debug_context);
1237
+ }
1238
+ rb_thread_critical = saved_crit;
1239
+
1240
+ rb_thread_schedule();
1241
+
1242
+ return self;
1243
+ }
1244
+
1245
+ /*
1246
+ * call-seq:
1247
+ * Debugger.tracing -> bool
1248
+ *
1249
+ * Returns +true+ if the global tracing is activated.
1250
+ */
1251
+ static VALUE
1252
+ debug_tracing(VALUE self)
1253
+ {
1254
+ return tracing;
1255
+ }
1256
+
1257
+ /*
1258
+ * call-seq:
1259
+ * Debugger.tracing = bool
1260
+ *
1261
+ * Sets the global tracing flag.
1262
+ */
1263
+ static VALUE
1264
+ debug_set_tracing(VALUE self, VALUE value)
1265
+ {
1266
+ tracing = RTEST(value) ? Qtrue : Qfalse;
1267
+ return value;
1268
+ }
1269
+
1270
+ /*
1271
+ * call-seq:
1272
+ * Debugger.post_mortem? -> bool
1273
+ *
1274
+ * Returns +true+ if post-moterm debugging is enabled.
1275
+ */
1276
+ static VALUE
1277
+ debug_post_mortem(VALUE self)
1278
+ {
1279
+ return post_mortem;
1280
+ }
1281
+
1282
+ /*
1283
+ * call-seq:
1284
+ * Debugger.post_mortem = bool
1285
+ *
1286
+ * Sets post-moterm flag.
1287
+ * FOR INTERNAL USE ONLY.
1288
+ */
1289
+ static VALUE
1290
+ debug_set_post_mortem(VALUE self, VALUE value)
1291
+ {
1292
+ debug_check_started();
1293
+
1294
+ post_mortem = RTEST(value) ? Qtrue : Qfalse;
1295
+ return value;
1296
+ }
1297
+
1298
+ /*
1299
+ * call-seq:
1300
+ * Debugger.track_fame_args? -> bool
1301
+ *
1302
+ * Returns +true+ if the debugger track frame argument values on calls.
1303
+ */
1304
+ static VALUE
1305
+ debug_track_frame_args(VALUE self)
1306
+ {
1307
+ return track_frame_args;
1308
+ }
1309
+
1310
+ /*
1311
+ * call-seq:
1312
+ * Debugger.track_frame_args = bool
1313
+ *
1314
+ * Setting to +true+ will make the debugger save argument info on calls.
1315
+ */
1316
+ static VALUE
1317
+ debug_set_track_frame_args(VALUE self, VALUE value)
1318
+ {
1319
+ track_frame_args = RTEST(value) ? Qtrue : Qfalse;
1320
+ return value;
1321
+ }
1322
+
1323
+ /*
1324
+ * call-seq:
1325
+ * Debugger.keep_frame_binding? -> bool
1326
+ *
1327
+ * Returns +true+ if the debugger will collect frame bindings.
1328
+ */
1329
+ static VALUE
1330
+ debug_keep_frame_binding(VALUE self)
1331
+ {
1332
+ return keep_frame_binding;
1333
+ }
1334
+
1335
+ /*
1336
+ * call-seq:
1337
+ * Debugger.keep_frame_binding = bool
1338
+ *
1339
+ * Setting to +true+ will make the debugger create frame bindings.
1340
+ */
1341
+ static VALUE
1342
+ debug_set_keep_frame_binding(VALUE self, VALUE value)
1343
+ {
1344
+ keep_frame_binding = RTEST(value) ? Qtrue : Qfalse;
1345
+ return value;
1346
+ }
1347
+
1348
+ /* :nodoc: */
1349
+ static VALUE
1350
+ debug_debug(VALUE self)
1351
+ {
1352
+ return debug;
1353
+ }
1354
+
1355
+ /* :nodoc: */
1356
+ static VALUE
1357
+ debug_set_debug(VALUE self, VALUE value)
1358
+ {
1359
+ debug = RTEST(value) ? Qtrue : Qfalse;
1360
+ return value;
1361
+ }
1362
+
1363
+ /* :nodoc: */
1364
+ static VALUE
1365
+ debug_thread_inherited(VALUE klass)
1366
+ {
1367
+ rb_raise(rb_eRuntimeError, "Can't inherite Debugger::DebugThread class");
1368
+ }
1369
+
1370
+ /*
1371
+ * call-seq:
1372
+ * Debugger.debug_load(file, stop = false, increment_start = false) -> nil
1373
+ *
1374
+ * Same as Kernel#load but resets current context's frames.
1375
+ * +stop+ parameter forces the debugger to stop at the first line of code in the +file+
1376
+ * +increment_start+ determines if start_count should be incremented. When
1377
+ * control threads are used, they have to be set up before loading the
1378
+ * debugger; so here +increment_start+ will be false.
1379
+ * FOR INTERNAL USE ONLY.
1380
+ */
1381
+ static VALUE
1382
+ debug_debug_load(int argc, VALUE *argv, VALUE self)
1383
+ {
1384
+ VALUE file, stop, context, increment_start;
1385
+ debug_context_t *debug_context;
1386
+ int state = 0;
1387
+
1388
+ if(rb_scan_args(argc, argv, "12", &file, &stop, &increment_start) == 1)
1389
+ {
1390
+ stop = Qfalse;
1391
+ increment_start = Qtrue;
1392
+ }
1393
+
1394
+ debug_start(self);
1395
+ if (Qfalse == increment_start) start_count--;
1396
+
1397
+ context = debug_current_context(self);
1398
+ Data_Get_Struct(context, debug_context_t, debug_context);
1399
+ debug_context->stack_size = 0;
1400
+ if(RTEST(stop))
1401
+ debug_context->stop_next = 1;
1402
+ /* Initializing $0 to the script's path */
1403
+ ruby_script(RSTRING(file)->ptr);
1404
+ rb_load_protect(file, 0, &state);
1405
+ if (0 != state) {
1406
+ VALUE errinfo = ruby_errinfo;
1407
+ debug_suspend(self);
1408
+ reset_stepping_stop_points(debug_context);
1409
+ ruby_errinfo = Qnil;
1410
+ return errinfo;
1411
+ }
1412
+
1413
+ /* We should run all at_exit handler's in order to provide,
1414
+ * for instance, a chance to run all defined test cases */
1415
+ rb_exec_end_proc();
1416
+
1417
+ /* We could have issued a Debugger.stop inside the debug
1418
+ session. */
1419
+ if (start_count > 0) {
1420
+ debug_stop(self);
1421
+ }
1422
+
1423
+ return Qnil;
1424
+ }
1425
+
1426
+ static VALUE
1427
+ set_current_skipped_status(VALUE status)
1428
+ {
1429
+ VALUE context;
1430
+ debug_context_t *debug_context;
1431
+
1432
+ context = debug_current_context(Qnil);
1433
+ Data_Get_Struct(context, debug_context_t, debug_context);
1434
+ if(status)
1435
+ CTX_FL_SET(debug_context, CTX_FL_SKIPPED);
1436
+ else
1437
+ CTX_FL_UNSET(debug_context, CTX_FL_SKIPPED);
1438
+ return Qnil;
1439
+ }
1440
+
1441
+ /*
1442
+ * call-seq:
1443
+ * Debugger.skip { block } -> obj or nil
1444
+ *
1445
+ * The code inside of the block is escaped from the debugger.
1446
+ */
1447
+ static VALUE
1448
+ debug_skip(VALUE self)
1449
+ {
1450
+ if (!rb_block_given_p()) {
1451
+ rb_raise(rb_eArgError, "called without a block");
1452
+ }
1453
+ if(!IS_STARTED)
1454
+ return rb_yield(Qnil);
1455
+ set_current_skipped_status(Qtrue);
1456
+ return rb_ensure(rb_yield, Qnil, set_current_skipped_status, Qfalse);
1457
+ }
1458
+
1459
+ static VALUE
1460
+ debug_at_exit_c(VALUE proc)
1461
+ {
1462
+ return rb_funcall(proc, rb_intern("call"), 0);
1463
+ }
1464
+
1465
+ static void
1466
+ debug_at_exit_i(VALUE proc)
1467
+ {
1468
+ if(!IS_STARTED)
1469
+ {
1470
+ debug_at_exit_c(proc);
1471
+ }
1472
+ else
1473
+ {
1474
+ set_current_skipped_status(Qtrue);
1475
+ rb_ensure(debug_at_exit_c, proc, set_current_skipped_status, Qfalse);
1476
+ }
1477
+ }
1478
+
1479
+ /*
1480
+ * call-seq:
1481
+ * Debugger.debug_at_exit { block } -> proc
1482
+ *
1483
+ * Register <tt>at_exit</tt> hook which is escaped from the debugger.
1484
+ * FOR INTERNAL USE ONLY.
1485
+ */
1486
+ static VALUE
1487
+ debug_at_exit(VALUE self)
1488
+ {
1489
+ VALUE proc;
1490
+ if (!rb_block_given_p())
1491
+ rb_raise(rb_eArgError, "called without a block");
1492
+ proc = rb_block_proc();
1493
+ rb_set_end_proc(debug_at_exit_i, proc);
1494
+ return proc;
1495
+ }
1496
+
1497
+ /*
1498
+ * call-seq:
1499
+ * context.step(steps, force = false)
1500
+ *
1501
+ * Stops the current context after a number of +steps+ are made.
1502
+ * +force+ parameter (if true) ensures that the cursor moves from the current line.
1503
+ */
1504
+ static VALUE
1505
+ context_stop_next(int argc, VALUE *argv, VALUE self)
1506
+ {
1507
+ VALUE steps, force;
1508
+ debug_context_t *debug_context;
1509
+
1510
+ debug_check_started();
1511
+
1512
+ rb_scan_args(argc, argv, "11", &steps, &force);
1513
+ if(FIX2INT(steps) < 0)
1514
+ rb_raise(rb_eRuntimeError, "Steps argument can't be negative.");
1515
+
1516
+ Data_Get_Struct(self, debug_context_t, debug_context);
1517
+ debug_context->stop_next = FIX2INT(steps);
1518
+ if(RTEST(force))
1519
+ CTX_FL_SET(debug_context, CTX_FL_FORCE_MOVE);
1520
+ else
1521
+ CTX_FL_UNSET(debug_context, CTX_FL_FORCE_MOVE);
1522
+
1523
+ return steps;
1524
+ }
1525
+
1526
+ /*
1527
+ * call-seq:
1528
+ * context.step_over(steps, frame = nil, force = false)
1529
+ *
1530
+ * Steps over a +steps+ number of times.
1531
+ * Make step over operation on +frame+, by default the current frame.
1532
+ * +force+ parameter (if true) ensures that the cursor moves from the current line.
1533
+ */
1534
+ static VALUE
1535
+ context_step_over(int argc, VALUE *argv, VALUE self)
1536
+ {
1537
+ VALUE lines, frame, force;
1538
+ debug_context_t *debug_context;
1539
+
1540
+ debug_check_started();
1541
+ Data_Get_Struct(self, debug_context_t, debug_context);
1542
+ if(debug_context->stack_size == 0)
1543
+ rb_raise(rb_eRuntimeError, "No frames collected.");
1544
+
1545
+ rb_scan_args(argc, argv, "12", &lines, &frame, &force);
1546
+ debug_context->stop_line = FIX2INT(lines);
1547
+ CTX_FL_UNSET(debug_context, CTX_FL_STEPPED);
1548
+ if(frame == Qnil)
1549
+ {
1550
+ debug_context->dest_frame = debug_context->stack_size;
1551
+ }
1552
+ else
1553
+ {
1554
+ if(FIX2INT(frame) < 0 && FIX2INT(frame) >= debug_context->stack_size)
1555
+ rb_raise(rb_eRuntimeError, "Destination frame is out of range.");
1556
+ debug_context->dest_frame = debug_context->stack_size - FIX2INT(frame);
1557
+ }
1558
+ if(RTEST(force))
1559
+ CTX_FL_SET(debug_context, CTX_FL_FORCE_MOVE);
1560
+ else
1561
+ CTX_FL_UNSET(debug_context, CTX_FL_FORCE_MOVE);
1562
+
1563
+ return Qnil;
1564
+ }
1565
+
1566
+ /*
1567
+ * call-seq:
1568
+ * context.stop_frame(frame)
1569
+ *
1570
+ * Stops when a frame with number +frame+ is activated. Implements +finish+ and +next+ commands.
1571
+ */
1572
+ static VALUE
1573
+ context_stop_frame(VALUE self, VALUE frame)
1574
+ {
1575
+ debug_context_t *debug_context;
1576
+
1577
+ debug_check_started();
1578
+ Data_Get_Struct(self, debug_context_t, debug_context);
1579
+ if(FIX2INT(frame) < 0 && FIX2INT(frame) >= debug_context->stack_size)
1580
+ rb_raise(rb_eRuntimeError, "Stop frame is out of range.");
1581
+ debug_context->stop_frame = debug_context->stack_size - FIX2INT(frame);
1582
+
1583
+ return frame;
1584
+ }
1585
+
1586
+ inline static int
1587
+ check_frame_number(debug_context_t *debug_context, VALUE frame)
1588
+ {
1589
+ int frame_n;
1590
+
1591
+ frame_n = FIX2INT(frame);
1592
+ if(frame_n < 0 || frame_n >= debug_context->stack_size)
1593
+ rb_raise(rb_eArgError, "Invalid frame number %d, stack (0...%d)",
1594
+ frame_n, debug_context->stack_size);
1595
+ return frame_n;
1596
+ }
1597
+
1598
+ static int
1599
+ optional_frame_position(int argc, VALUE *argv) {
1600
+ unsigned int i_scanned;
1601
+ VALUE level;
1602
+
1603
+ if ((argc > 1) || (argc < 0))
1604
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 or 1)", argc);
1605
+ i_scanned = rb_scan_args(argc, argv, "01", &level);
1606
+ if (0 == i_scanned) {
1607
+ level = INT2FIX(0);
1608
+ }
1609
+ return level;
1610
+ }
1611
+
1612
+ /*
1613
+ * call-seq:
1614
+ * context.frame_args_info(frame_position=0) -> list
1615
+ if track_frame_args or nil otherwise
1616
+ *
1617
+ * Returns info saved about call arguments (if any saved).
1618
+ */
1619
+ static VALUE
1620
+ context_frame_args_info(int argc, VALUE *argv, VALUE self)
1621
+ {
1622
+ VALUE frame;
1623
+ debug_context_t *debug_context;
1624
+
1625
+ debug_check_started();
1626
+ frame = optional_frame_position(argc, argv);
1627
+ Data_Get_Struct(self, debug_context_t, debug_context);
1628
+
1629
+ return RTEST(track_frame_args) ? GET_FRAME->arg_ary : Qnil;
1630
+ }
1631
+
1632
+ /*
1633
+ * call-seq:
1634
+ * context.frame_binding(frame_position=0) -> binding
1635
+ *
1636
+ * Returns frame's binding.
1637
+ */
1638
+ static VALUE
1639
+ context_frame_binding(int argc, VALUE *argv, VALUE self)
1640
+ {
1641
+ VALUE frame;
1642
+ debug_context_t *debug_context;
1643
+
1644
+ debug_check_started();
1645
+ frame = optional_frame_position(argc, argv);
1646
+ Data_Get_Struct(self, debug_context_t, debug_context);
1647
+ return GET_FRAME->binding;
1648
+ }
1649
+
1650
+ /*
1651
+ * call-seq:
1652
+ * context.frame_method(frame_position=0) -> sym
1653
+ *
1654
+ * Returns the sym of the called method.
1655
+ */
1656
+ static VALUE
1657
+ context_frame_id(int argc, VALUE *argv, VALUE self)
1658
+ {
1659
+ VALUE frame;
1660
+ debug_context_t *debug_context;
1661
+ ID id;
1662
+
1663
+ debug_check_started();
1664
+ frame = optional_frame_position(argc, argv);
1665
+ Data_Get_Struct(self, debug_context_t, debug_context);
1666
+
1667
+ id = GET_FRAME->id;
1668
+ return id ? ID2SYM(id): Qnil;
1669
+ }
1670
+
1671
+ /*
1672
+ * call-seq:
1673
+ * context.frame_line(frame_position) -> int
1674
+ *
1675
+ * Returns the line number in the file.
1676
+ */
1677
+ static VALUE
1678
+ context_frame_line(int argc, VALUE *argv, VALUE self)
1679
+ {
1680
+ VALUE frame;
1681
+ debug_context_t *debug_context;
1682
+
1683
+ debug_check_started();
1684
+ frame = optional_frame_position(argc, argv);
1685
+ Data_Get_Struct(self, debug_context_t, debug_context);
1686
+
1687
+ return INT2FIX(GET_FRAME->line);
1688
+ }
1689
+
1690
+ /*
1691
+ * call-seq:
1692
+ * context.frame_file(frame_position) -> string
1693
+ *
1694
+ * Returns the name of the file.
1695
+ */
1696
+ static VALUE
1697
+ context_frame_file(int argc, VALUE *argv, VALUE self)
1698
+ {
1699
+ VALUE frame;
1700
+ debug_context_t *debug_context;
1701
+
1702
+ debug_check_started();
1703
+ frame = optional_frame_position(argc, argv);
1704
+ Data_Get_Struct(self, debug_context_t, debug_context);
1705
+
1706
+ return rb_str_new2(GET_FRAME->file);
1707
+ }
1708
+
1709
+ static int
1710
+ arg_value_is_small(VALUE val)
1711
+ {
1712
+ switch (TYPE(val)) {
1713
+ case T_FIXNUM: case T_FLOAT: case T_CLASS:
1714
+ case T_NIL: case T_MODULE: case T_FILE:
1715
+ case T_TRUE: case T_FALSE: case T_UNDEF:
1716
+ return 1;
1717
+ default:
1718
+ return SYMBOL_P(val);
1719
+ }
1720
+ }
1721
+
1722
+ /*
1723
+ * Save scalar arguments or a class name.
1724
+ */
1725
+ static void
1726
+ copy_scalar_args(debug_frame_t *debug_frame)
1727
+ {
1728
+ unsigned int i;
1729
+ ID *tbl = ruby_scope->local_tbl;;
1730
+ if (tbl && ruby_scope->local_vars)
1731
+ {
1732
+ int n = *tbl++;
1733
+ if (debug_frame->argc+2 < n) n = debug_frame->argc+2;
1734
+ debug_frame->arg_ary = rb_ary_new2(n);
1735
+ for (i=2; i<n; i++)
1736
+ {
1737
+ /* skip flip states */
1738
+ if (rb_is_local_id(tbl[i]))
1739
+ {
1740
+ const char *name = rb_id2name(tbl[i]);
1741
+ VALUE val = rb_eval_string (name);
1742
+ if (arg_value_is_small(val))
1743
+ rb_ary_push(debug_frame->arg_ary, val);
1744
+ else
1745
+ rb_ary_push(debug_frame->arg_ary,
1746
+ rb_str_new2(rb_obj_classname(val)));
1747
+ }
1748
+ }
1749
+ }
1750
+ }
1751
+
1752
+
1753
+ /*
1754
+ * call-seq:
1755
+ * context.copy_args(frame) -> list of args
1756
+ *
1757
+ * Returns a array of argument names.
1758
+ */
1759
+ static VALUE
1760
+ context_copy_args(debug_frame_t *debug_frame)
1761
+ {
1762
+ ID *tbl;
1763
+ int n, i;
1764
+ struct SCOPE *scope;
1765
+ VALUE list = rb_ary_new2(0); /* [] */
1766
+
1767
+ scope = debug_frame->info.runtime.scope;
1768
+ tbl = scope->local_tbl;
1769
+
1770
+ if (tbl && scope->local_vars)
1771
+ {
1772
+ n = *tbl++;
1773
+ if (debug_frame->argc+2 < n) n = debug_frame->argc+2;
1774
+ list = rb_ary_new2(n);
1775
+ /* skip first 2 ($_ and $~) */
1776
+ for (i=2; i<n; i++)
1777
+ {
1778
+ /* skip first 2 ($_ and $~) */
1779
+ if (!rb_is_local_id(tbl[i])) continue; /* skip flip states */
1780
+ rb_ary_push(list, rb_str_new2(rb_id2name(tbl[i])));
1781
+ }
1782
+ }
1783
+
1784
+ return list;
1785
+ }
1786
+ static VALUE
1787
+ context_copy_locals(debug_frame_t *debug_frame)
1788
+ {
1789
+ ID *tbl;
1790
+ int n, i;
1791
+ struct SCOPE *scope;
1792
+ struct RVarmap *vars;
1793
+ VALUE hash = rb_hash_new();
1794
+
1795
+ scope = debug_frame->info.runtime.scope;
1796
+ tbl = scope->local_tbl;
1797
+
1798
+ if (tbl && scope->local_vars)
1799
+ {
1800
+ n = *tbl++;
1801
+ for (i=2; i<n; i++)
1802
+ { /* skip first 2 ($_ and $~) */
1803
+ if (!rb_is_local_id(tbl[i])) continue; /* skip flip states */
1804
+ rb_hash_aset(hash, rb_str_new2(rb_id2name(tbl[i])), scope->local_vars[i]);
1805
+ }
1806
+ }
1807
+
1808
+ vars = debug_frame->info.runtime.dyna_vars;
1809
+ while (vars)
1810
+ {
1811
+ if (vars->id && rb_is_local_id(vars->id))
1812
+ { /* skip $_, $~ and flip states */
1813
+ rb_hash_aset(hash, rb_str_new2(rb_id2name(vars->id)), vars->val);
1814
+ }
1815
+ vars = vars->next;
1816
+ }
1817
+ return hash;
1818
+ }
1819
+
1820
+ /*
1821
+ * call-seq:
1822
+ * context.frame_locals(frame) -> hash
1823
+ *
1824
+ * Returns frame's local variables.
1825
+ */
1826
+ static VALUE
1827
+ context_frame_locals(int argc, VALUE *argv, VALUE self)
1828
+ {
1829
+ VALUE frame;
1830
+ debug_context_t *debug_context;
1831
+ debug_frame_t *debug_frame;
1832
+
1833
+ debug_check_started();
1834
+ frame = optional_frame_position(argc, argv);
1835
+ Data_Get_Struct(self, debug_context_t, debug_context);
1836
+
1837
+ debug_frame = GET_FRAME;
1838
+ if(debug_frame->dead)
1839
+ return debug_frame->info.copy.locals;
1840
+ else
1841
+ return context_copy_locals(debug_frame);
1842
+ }
1843
+
1844
+ /*
1845
+ * call-seq:
1846
+ * context.frame_args(frame_position=0) -> list
1847
+ *
1848
+ * Returns frame's argument parameters
1849
+ */
1850
+ static VALUE
1851
+ context_frame_args(int argc, VALUE *argv, VALUE self)
1852
+ {
1853
+ VALUE frame;
1854
+ debug_context_t *debug_context;
1855
+ debug_frame_t *debug_frame;
1856
+
1857
+ debug_check_started();
1858
+ frame = optional_frame_position(argc, argv);
1859
+ Data_Get_Struct(self, debug_context_t, debug_context);
1860
+
1861
+ debug_frame = GET_FRAME;
1862
+ if(debug_frame->dead)
1863
+ return debug_frame->info.copy.args;
1864
+ else
1865
+ return context_copy_args(debug_frame);
1866
+ }
1867
+
1868
+ /*
1869
+ * call-seq:
1870
+ * context.frame_self(frame_postion=0) -> obj
1871
+ *
1872
+ * Returns self object of the frame.
1873
+ */
1874
+ static VALUE
1875
+ context_frame_self(int argc, VALUE *argv, VALUE self)
1876
+ {
1877
+ VALUE frame;
1878
+ debug_context_t *debug_context;
1879
+ debug_frame_t *debug_frame;
1880
+
1881
+ debug_check_started();
1882
+ frame = optional_frame_position(argc, argv);
1883
+ Data_Get_Struct(self, debug_context_t, debug_context);
1884
+
1885
+ debug_frame = GET_FRAME;
1886
+ return debug_frame->self;
1887
+ }
1888
+
1889
+ /*
1890
+ * call-seq:
1891
+ * context.frame_class(frame_position) -> obj
1892
+ *
1893
+ * Returns the real class of the frame.
1894
+ * It could be different than context.frame_self(frame).class
1895
+ */
1896
+ static VALUE
1897
+ context_frame_class(int argc, VALUE *argv, VALUE self)
1898
+ {
1899
+ VALUE frame;
1900
+ debug_context_t *debug_context;
1901
+ debug_frame_t *debug_frame;
1902
+ VALUE klass;
1903
+
1904
+ debug_check_started();
1905
+ frame = optional_frame_position(argc, argv);
1906
+ Data_Get_Struct(self, debug_context_t, debug_context);
1907
+
1908
+ debug_frame = GET_FRAME;
1909
+
1910
+ if(CTX_FL_TEST(debug_context, CTX_FL_DEAD))
1911
+ return Qnil;
1912
+
1913
+ #if RUBY_VERSION_CODE >= 190
1914
+ klass = debug_frame->info.runtime.frame->this_class;
1915
+ #else
1916
+ klass = debug_frame->info.runtime.frame->last_class;
1917
+ #endif
1918
+
1919
+ klass = real_class(klass);
1920
+ if(TYPE(klass) == T_CLASS || TYPE(klass) == T_MODULE)
1921
+ return klass;
1922
+ return Qnil;
1923
+ }
1924
+
1925
+
1926
+ /*
1927
+ * call-seq:
1928
+ * context.stack_size-> int
1929
+ *
1930
+ * Returns the size of the context stack.
1931
+ */
1932
+ static VALUE
1933
+ context_stack_size(VALUE self)
1934
+ {
1935
+ debug_context_t *debug_context;
1936
+
1937
+ debug_check_started();
1938
+ Data_Get_Struct(self, debug_context_t, debug_context);
1939
+
1940
+ return INT2FIX(debug_context->stack_size);
1941
+ }
1942
+
1943
+ /*
1944
+ * call-seq:
1945
+ * context.thread -> thread
1946
+ *
1947
+ * Returns a thread this context is associated with.
1948
+ */
1949
+ static VALUE
1950
+ context_thread(VALUE self)
1951
+ {
1952
+ debug_context_t *debug_context;
1953
+
1954
+ debug_check_started();
1955
+ Data_Get_Struct(self, debug_context_t, debug_context);
1956
+ return context_thread_0(debug_context);
1957
+ }
1958
+
1959
+ /*
1960
+ * call-seq:
1961
+ * context.thnum -> int
1962
+ *
1963
+ * Returns the context's number.
1964
+ */
1965
+ static VALUE
1966
+ context_thnum(VALUE self)
1967
+ {
1968
+ debug_context_t *debug_context;
1969
+
1970
+ Data_Get_Struct(self, debug_context_t, debug_context);
1971
+ return INT2FIX(debug_context->thnum);
1972
+ }
1973
+
1974
+ static void
1975
+ context_suspend_0(debug_context_t *debug_context)
1976
+ {
1977
+ VALUE status;
1978
+
1979
+ status = rb_funcall(context_thread_0(debug_context), rb_intern("status"), 0);
1980
+ if(rb_str_cmp(status, rb_str_new2("run")) == 0)
1981
+ CTX_FL_SET(debug_context, CTX_FL_WAS_RUNNING);
1982
+ else if(rb_str_cmp(status, rb_str_new2("sleep")) == 0)
1983
+ CTX_FL_UNSET(debug_context, CTX_FL_WAS_RUNNING);
1984
+ else
1985
+ return;
1986
+ CTX_FL_SET(debug_context, CTX_FL_SUSPEND);
1987
+ }
1988
+
1989
+ static void
1990
+ context_resume_0(debug_context_t *debug_context)
1991
+ {
1992
+ if(!CTX_FL_TEST(debug_context, CTX_FL_SUSPEND))
1993
+ return;
1994
+ CTX_FL_UNSET(debug_context, CTX_FL_SUSPEND);
1995
+ if(CTX_FL_TEST(debug_context, CTX_FL_WAS_RUNNING))
1996
+ rb_thread_wakeup(context_thread_0(debug_context));
1997
+ }
1998
+
1999
+ /*
2000
+ * call-seq:
2001
+ * context.suspend -> nil
2002
+ *
2003
+ * Suspends the thread when it is running.
2004
+ */
2005
+ static VALUE
2006
+ context_suspend(VALUE self)
2007
+ {
2008
+ debug_context_t *debug_context;
2009
+
2010
+ debug_check_started();
2011
+
2012
+ Data_Get_Struct(self, debug_context_t, debug_context);
2013
+ if(CTX_FL_TEST(debug_context, CTX_FL_SUSPEND))
2014
+ rb_raise(rb_eRuntimeError, "Already suspended.");
2015
+ context_suspend_0(debug_context);
2016
+ return Qnil;
2017
+ }
2018
+
2019
+ /*
2020
+ * call-seq:
2021
+ * context.suspended? -> bool
2022
+ *
2023
+ * Returns +true+ if the thread is suspended by debugger.
2024
+ */
2025
+ static VALUE
2026
+ context_is_suspended(VALUE self)
2027
+ {
2028
+ debug_context_t *debug_context;
2029
+
2030
+ debug_check_started();
2031
+
2032
+ Data_Get_Struct(self, debug_context_t, debug_context);
2033
+ return CTX_FL_TEST(debug_context, CTX_FL_SUSPEND) ? Qtrue : Qfalse;
2034
+ }
2035
+
2036
+ /*
2037
+ * call-seq:
2038
+ * context.resume -> nil
2039
+ *
2040
+ * Resumes the thread from the suspended mode.
2041
+ */
2042
+ static VALUE
2043
+ context_resume(VALUE self)
2044
+ {
2045
+ debug_context_t *debug_context;
2046
+
2047
+ debug_check_started();
2048
+
2049
+ Data_Get_Struct(self, debug_context_t, debug_context);
2050
+ if(!CTX_FL_TEST(debug_context, CTX_FL_SUSPEND))
2051
+ rb_raise(rb_eRuntimeError, "Thread is not suspended.");
2052
+ context_resume_0(debug_context);
2053
+ return Qnil;
2054
+ }
2055
+
2056
+ /*
2057
+ * call-seq:
2058
+ * context.tracing -> bool
2059
+ *
2060
+ * Returns the tracing flag for the current context.
2061
+ */
2062
+ static VALUE
2063
+ context_tracing(VALUE self)
2064
+ {
2065
+ debug_context_t *debug_context;
2066
+
2067
+ debug_check_started();
2068
+
2069
+ Data_Get_Struct(self, debug_context_t, debug_context);
2070
+ return CTX_FL_TEST(debug_context, CTX_FL_TRACING) ? Qtrue : Qfalse;
2071
+ }
2072
+
2073
+ /*
2074
+ * call-seq:
2075
+ * context.tracing = bool
2076
+ *
2077
+ * Controls the tracing for this context.
2078
+ */
2079
+ static VALUE
2080
+ context_set_tracing(VALUE self, VALUE value)
2081
+ {
2082
+ debug_context_t *debug_context;
2083
+
2084
+ debug_check_started();
2085
+
2086
+ Data_Get_Struct(self, debug_context_t, debug_context);
2087
+ if(RTEST(value))
2088
+ CTX_FL_SET(debug_context, CTX_FL_TRACING);
2089
+ else
2090
+ CTX_FL_UNSET(debug_context, CTX_FL_TRACING);
2091
+ return value;
2092
+ }
2093
+
2094
+ /*
2095
+ * call-seq:
2096
+ * context.ignored? -> bool
2097
+ *
2098
+ * Returns the ignore flag for the current context.
2099
+ */
2100
+ static VALUE
2101
+ context_ignored(VALUE self)
2102
+ {
2103
+ debug_context_t *debug_context;
2104
+
2105
+ debug_check_started();
2106
+
2107
+ Data_Get_Struct(self, debug_context_t, debug_context);
2108
+ return CTX_FL_TEST(debug_context, CTX_FL_IGNORE) ? Qtrue : Qfalse;
2109
+ }
2110
+
2111
+ /*
2112
+ * call-seq:
2113
+ * context.dead? -> bool
2114
+ *
2115
+ * Returns +true+ if context doesn't represent a live context and is created
2116
+ * during post-mortem exception handling.
2117
+ */
2118
+ static VALUE
2119
+ context_dead(VALUE self)
2120
+ {
2121
+ debug_context_t *debug_context;
2122
+
2123
+ debug_check_started();
2124
+
2125
+ Data_Get_Struct(self, debug_context_t, debug_context);
2126
+ return CTX_FL_TEST(debug_context, CTX_FL_DEAD) ? Qtrue : Qfalse;
2127
+ }
2128
+
2129
+ /*
2130
+ * call-seq:
2131
+ * context.stop_reason -> sym
2132
+ *
2133
+ * Returns the reason for the stop. It maybe of the following values:
2134
+ * :initial, :step, :breakpoint, :catchpoint, :post-mortem
2135
+ */
2136
+ static VALUE
2137
+ context_stop_reason(VALUE self)
2138
+ {
2139
+ debug_context_t *debug_context;
2140
+ char * sym_name;
2141
+
2142
+ debug_check_started();
2143
+
2144
+ Data_Get_Struct(self, debug_context_t, debug_context);
2145
+
2146
+ switch(debug_context->stop_reason)
2147
+ {
2148
+ case CTX_STOP_STEP:
2149
+ sym_name = "step";
2150
+ break;
2151
+ case CTX_STOP_BREAKPOINT:
2152
+ sym_name = "breakpoint";
2153
+ break;
2154
+ case CTX_STOP_CATCHPOINT:
2155
+ sym_name = "catchpoint";
2156
+ break;
2157
+ case CTX_STOP_NONE:
2158
+ default:
2159
+ sym_name = "none";
2160
+ }
2161
+ if(CTX_FL_TEST(debug_context, CTX_FL_DEAD))
2162
+ sym_name = "post-mortem";
2163
+
2164
+ return ID2SYM(rb_intern(sym_name));
2165
+ }
2166
+
2167
+
2168
+ /*
2169
+ * Document-class: Context
2170
+ *
2171
+ * == Summary
2172
+ *
2173
+ * Debugger keeps a single instance of this class for each Ruby thread.
2174
+ */
2175
+ static void
2176
+ Init_context()
2177
+ {
2178
+ cContext = rb_define_class_under(mDebugger, "Context", rb_cObject);
2179
+ rb_define_method(cContext, "stop_next=", context_stop_next, -1);
2180
+ rb_define_method(cContext, "step", context_stop_next, -1);
2181
+ rb_define_method(cContext, "step_over", context_step_over, -1);
2182
+ rb_define_method(cContext, "stop_frame=", context_stop_frame, 1);
2183
+ rb_define_method(cContext, "thread", context_thread, 0);
2184
+ rb_define_method(cContext, "thnum", context_thnum, 0);
2185
+ rb_define_method(cContext, "stop_reason", context_stop_reason, 0);
2186
+ rb_define_method(cContext, "suspend", context_suspend, 0);
2187
+ rb_define_method(cContext, "suspended?", context_is_suspended, 0);
2188
+ rb_define_method(cContext, "resume", context_resume, 0);
2189
+ rb_define_method(cContext, "tracing", context_tracing, 0);
2190
+ rb_define_method(cContext, "tracing=", context_set_tracing, 1);
2191
+ rb_define_method(cContext, "ignored?", context_ignored, 0);
2192
+ rb_define_method(cContext, "frame_args", context_frame_args, -1);
2193
+ rb_define_method(cContext, "frame_args_info", context_frame_args_info, -1);
2194
+ rb_define_method(cContext, "frame_binding", context_frame_binding, -1);
2195
+ rb_define_method(cContext, "frame_class", context_frame_class, -1);
2196
+ rb_define_method(cContext, "frame_file", context_frame_file, -1);
2197
+ rb_define_method(cContext, "frame_id", context_frame_id, -1);
2198
+ rb_define_method(cContext, "frame_line", context_frame_line, -1);
2199
+ rb_define_method(cContext, "frame_locals", context_frame_locals, -1);
2200
+ rb_define_method(cContext, "frame_method", context_frame_id, -1);
2201
+ rb_define_method(cContext, "frame_self", context_frame_self, -1);
2202
+ rb_define_method(cContext, "stack_size", context_stack_size, 0);
2203
+ rb_define_method(cContext, "dead?", context_dead, 0);
2204
+ rb_define_method(cContext, "breakpoint",
2205
+ context_breakpoint, 0); /* in breakpoint.c */
2206
+ rb_define_method(cContext, "set_breakpoint",
2207
+ context_set_breakpoint, -1); /* in breakpoint.c */
2208
+ }
2209
+
2210
+ /*
2211
+ * call-seq:
2212
+ * Debugger.breakpoints -> array
2213
+ *
2214
+ * Returns an array of breakpoints.
2215
+ */
2216
+ static VALUE
2217
+ debug_breakpoints(VALUE self)
2218
+ {
2219
+ debug_check_started();
2220
+
2221
+ return rdebug_breakpoints;
2222
+ }
2223
+
2224
+ /*
2225
+ * call-seq:
2226
+ * Debugger.add_breakpoint(source, pos, condition = nil) -> breakpoint
2227
+ *
2228
+ * Adds a new breakpoint.
2229
+ * <i>source</i> is a name of a file or a class.
2230
+ * <i>pos</i> is a line number or a method name if <i>source</i> is a class name.
2231
+ * <i>condition</i> is a string which is evaluated to +true+ when this breakpoint
2232
+ * is activated.
2233
+ */
2234
+ static VALUE
2235
+ debug_add_breakpoint(int argc, VALUE *argv, VALUE self)
2236
+ {
2237
+ VALUE result;
2238
+
2239
+ debug_check_started();
2240
+
2241
+ result = create_breakpoint_from_args(argc, argv, ++bkp_count);
2242
+ rb_ary_push(rdebug_breakpoints, result);
2243
+ return result;
2244
+ }
2245
+
2246
+ /*
2247
+ * Document-class: Debugger
2248
+ *
2249
+ * == Summary
2250
+ *
2251
+ * This is a singleton class allows controlling the debugger. Use it to start/stop debugger,
2252
+ * set/remove breakpoints, etc.
2253
+ */
2254
+ #if defined(_WIN32)
2255
+ __declspec(dllexport)
2256
+ #endif
2257
+ void
2258
+ Init_ruby_debug()
2259
+ {
2260
+ mDebugger = rb_define_module("Debugger");
2261
+ rb_define_const(mDebugger, "VERSION", rb_str_new2(DEBUG_VERSION));
2262
+ rb_define_module_function(mDebugger, "start_", debug_start, 0);
2263
+ rb_define_module_function(mDebugger, "stop", debug_stop, 0);
2264
+ rb_define_module_function(mDebugger, "started?", debug_is_started, 0);
2265
+ rb_define_module_function(mDebugger, "breakpoints", debug_breakpoints, 0);
2266
+ rb_define_module_function(mDebugger, "add_breakpoint", debug_add_breakpoint, -1);
2267
+ rb_define_module_function(mDebugger, "remove_breakpoint",
2268
+ rdebug_remove_breakpoint,
2269
+ 1); /* in breakpoint.c */
2270
+ rb_define_module_function(mDebugger, "add_catchpoint",
2271
+ rdebug_add_catchpoint, 1); /* in breakpoint.c */
2272
+ rb_define_module_function(mDebugger, "catchpoints",
2273
+ debug_catchpoints, 0); /* in breakpoint.c */
2274
+ rb_define_module_function(mDebugger, "last_context", debug_last_interrupted, 0);
2275
+ rb_define_module_function(mDebugger, "contexts", debug_contexts, 0);
2276
+ rb_define_module_function(mDebugger, "current_context", debug_current_context, 0);
2277
+ rb_define_module_function(mDebugger, "thread_context", debug_thread_context, 1);
2278
+ rb_define_module_function(mDebugger, "suspend", debug_suspend, 0);
2279
+ rb_define_module_function(mDebugger, "resume", debug_resume, 0);
2280
+ rb_define_module_function(mDebugger, "tracing", debug_tracing, 0);
2281
+ rb_define_module_function(mDebugger, "tracing=", debug_set_tracing, 1);
2282
+ rb_define_module_function(mDebugger, "debug_load", debug_debug_load, -1);
2283
+ rb_define_module_function(mDebugger, "skip", debug_skip, 0);
2284
+ rb_define_module_function(mDebugger, "debug_at_exit", debug_at_exit, 0);
2285
+ rb_define_module_function(mDebugger, "post_mortem?", debug_post_mortem, 0);
2286
+ rb_define_module_function(mDebugger, "post_mortem=", debug_set_post_mortem, 1);
2287
+ rb_define_module_function(mDebugger, "keep_frame_binding?",
2288
+ debug_keep_frame_binding, 0);
2289
+ rb_define_module_function(mDebugger, "keep_frame_binding=",
2290
+ debug_set_keep_frame_binding, 1);
2291
+ rb_define_module_function(mDebugger, "track_frame_args?",
2292
+ debug_track_frame_args, 0);
2293
+ rb_define_module_function(mDebugger, "track_frame_args=",
2294
+ debug_set_track_frame_args, 1);
2295
+ rb_define_module_function(mDebugger, "debug", debug_debug, 0);
2296
+ rb_define_module_function(mDebugger, "debug=", debug_set_debug, 1);
2297
+
2298
+ cThreadsTable = rb_define_class_under(mDebugger, "ThreadsTable", rb_cObject);
2299
+
2300
+ cDebugThread = rb_define_class_under(mDebugger, "DebugThread", rb_cThread);
2301
+ rb_define_singleton_method(cDebugThread, "inherited",
2302
+ debug_thread_inherited, 1);
2303
+
2304
+ Init_context();
2305
+ Init_breakpoint();
2306
+
2307
+ idAtBreakpoint = rb_intern("at_breakpoint");
2308
+ idAtCatchpoint = rb_intern("at_catchpoint");
2309
+ idAtLine = rb_intern("at_line");
2310
+ idAtReturn = rb_intern("at_return");
2311
+ idAtTracing = rb_intern("at_tracing");
2312
+ idList = rb_intern("list");
2313
+
2314
+ rb_mObjectSpace = rb_const_get(rb_mKernel, rb_intern("ObjectSpace"));
2315
+
2316
+ rb_global_variable(&last_context);
2317
+ rb_global_variable(&last_thread);
2318
+ rb_global_variable(&locker);
2319
+ rb_global_variable(&rdebug_breakpoints);
2320
+ rb_global_variable(&rdebug_catchpoints);
2321
+ rb_global_variable(&rdebug_threads_tbl);
2322
+ }