bugsnag 6.15.0 → 6.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (655) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +11 -0
  3. data/CHANGELOG.md +72 -0
  4. data/VERSION +1 -1
  5. data/bugsnag.gemspec +1 -1
  6. data/lib/bugsnag.rb +81 -17
  7. data/lib/bugsnag/breadcrumbs/breadcrumb.rb +1 -1
  8. data/lib/bugsnag/breadcrumbs/validator.rb +0 -22
  9. data/lib/bugsnag/configuration.rb +182 -24
  10. data/lib/bugsnag/delivery/synchronous.rb +1 -1
  11. data/lib/bugsnag/delivery/thread_queue.rb +18 -3
  12. data/lib/bugsnag/helpers.rb +17 -4
  13. data/lib/bugsnag/integrations/delayed_job.rb +13 -1
  14. data/lib/bugsnag/integrations/mailman.rb +2 -1
  15. data/lib/bugsnag/integrations/mongo.rb +5 -3
  16. data/lib/bugsnag/integrations/que.rb +2 -1
  17. data/lib/bugsnag/integrations/rack.rb +3 -1
  18. data/lib/bugsnag/integrations/rails/rails_breadcrumbs.rb +2 -0
  19. data/lib/bugsnag/integrations/railtie.rb +31 -8
  20. data/lib/bugsnag/integrations/rake.rb +4 -2
  21. data/lib/bugsnag/integrations/resque.rb +12 -5
  22. data/lib/bugsnag/integrations/shoryuken.rb +2 -1
  23. data/lib/bugsnag/integrations/sidekiq.rb +1 -2
  24. data/lib/bugsnag/middleware/classify_error.rb +1 -0
  25. data/lib/bugsnag/middleware/delayed_job.rb +1 -0
  26. data/lib/bugsnag/report.rb +84 -2
  27. metadata +4 -631
  28. data/.buildkite/pipeline.yml +0 -470
  29. data/.github/PULL_REQUEST_TEMPLATE.md +0 -84
  30. data/.gitignore +0 -55
  31. data/.rdoc_options +0 -27
  32. data/.rspec +0 -3
  33. data/.rubocop.yml +0 -57
  34. data/.rubocop_todo.yml +0 -1049
  35. data/CONTRIBUTING.md +0 -64
  36. data/Gemfile +0 -50
  37. data/Rakefile +0 -37
  38. data/TESTING.md +0 -81
  39. data/UPGRADING.md +0 -91
  40. data/docker-compose.yml +0 -46
  41. data/dockerfiles/Dockerfile.jruby-unit-tests +0 -13
  42. data/dockerfiles/Dockerfile.ruby-maze-runner +0 -26
  43. data/dockerfiles/Dockerfile.ruby-unit-tests +0 -12
  44. data/features/.gitignore +0 -1
  45. data/features/delayed_job.feature +0 -36
  46. data/features/fixtures/delayed_job/Dockerfile +0 -15
  47. data/features/fixtures/delayed_job/app/.gitignore +0 -21
  48. data/features/fixtures/delayed_job/app/Gemfile +0 -57
  49. data/features/fixtures/delayed_job/app/README.md +0 -24
  50. data/features/fixtures/delayed_job/app/Rakefile +0 -24
  51. data/features/fixtures/delayed_job/app/app/assets/config/manifest.js +0 -3
  52. data/features/fixtures/delayed_job/app/app/assets/images/.keep +0 -0
  53. data/features/fixtures/delayed_job/app/app/assets/javascripts/application.js +0 -16
  54. data/features/fixtures/delayed_job/app/app/assets/javascripts/cable.js +0 -13
  55. data/features/fixtures/delayed_job/app/app/assets/javascripts/channels/.keep +0 -0
  56. data/features/fixtures/delayed_job/app/app/assets/stylesheets/application.css +0 -15
  57. data/features/fixtures/delayed_job/app/app/channels/application_cable/channel.rb +0 -4
  58. data/features/fixtures/delayed_job/app/app/channels/application_cable/connection.rb +0 -4
  59. data/features/fixtures/delayed_job/app/app/controllers/application_controller.rb +0 -3
  60. data/features/fixtures/delayed_job/app/app/controllers/concerns/.keep +0 -0
  61. data/features/fixtures/delayed_job/app/app/helpers/application_helper.rb +0 -2
  62. data/features/fixtures/delayed_job/app/app/jobs/application_job.rb +0 -2
  63. data/features/fixtures/delayed_job/app/app/mailers/application_mailer.rb +0 -4
  64. data/features/fixtures/delayed_job/app/app/models/application_record.rb +0 -3
  65. data/features/fixtures/delayed_job/app/app/models/concerns/.keep +0 -0
  66. data/features/fixtures/delayed_job/app/app/models/test_model.rb +0 -10
  67. data/features/fixtures/delayed_job/app/app/views/layouts/application.html.erb +0 -14
  68. data/features/fixtures/delayed_job/app/app/views/layouts/mailer.html.erb +0 -13
  69. data/features/fixtures/delayed_job/app/app/views/layouts/mailer.text.erb +0 -1
  70. data/features/fixtures/delayed_job/app/config.ru +0 -5
  71. data/features/fixtures/delayed_job/app/config/application.rb +0 -15
  72. data/features/fixtures/delayed_job/app/config/boot.rb +0 -3
  73. data/features/fixtures/delayed_job/app/config/cable.yml +0 -9
  74. data/features/fixtures/delayed_job/app/config/database.yml +0 -25
  75. data/features/fixtures/delayed_job/app/config/environment.rb +0 -5
  76. data/features/fixtures/delayed_job/app/config/environments/development.rb +0 -54
  77. data/features/fixtures/delayed_job/app/config/environments/production.rb +0 -86
  78. data/features/fixtures/delayed_job/app/config/environments/test.rb +0 -42
  79. data/features/fixtures/delayed_job/app/config/initializers/application_controller_renderer.rb +0 -8
  80. data/features/fixtures/delayed_job/app/config/initializers/assets.rb +0 -11
  81. data/features/fixtures/delayed_job/app/config/initializers/backtrace_silencers.rb +0 -7
  82. data/features/fixtures/delayed_job/app/config/initializers/bugsnag.rb +0 -14
  83. data/features/fixtures/delayed_job/app/config/initializers/cookies_serializer.rb +0 -5
  84. data/features/fixtures/delayed_job/app/config/initializers/delayed_job.rb +0 -3
  85. data/features/fixtures/delayed_job/app/config/initializers/filter_parameter_logging.rb +0 -4
  86. data/features/fixtures/delayed_job/app/config/initializers/inflections.rb +0 -16
  87. data/features/fixtures/delayed_job/app/config/initializers/mime_types.rb +0 -4
  88. data/features/fixtures/delayed_job/app/config/initializers/new_framework_defaults.rb +0 -26
  89. data/features/fixtures/delayed_job/app/config/initializers/session_store.rb +0 -3
  90. data/features/fixtures/delayed_job/app/config/initializers/wrap_parameters.rb +0 -14
  91. data/features/fixtures/delayed_job/app/config/locales/en.yml +0 -23
  92. data/features/fixtures/delayed_job/app/config/puma.rb +0 -47
  93. data/features/fixtures/delayed_job/app/config/routes.rb +0 -3
  94. data/features/fixtures/delayed_job/app/config/secrets.yml +0 -22
  95. data/features/fixtures/delayed_job/app/config/spring.rb +0 -6
  96. data/features/fixtures/delayed_job/app/db/migrate/20181024232549_create_delayed_jobs.rb +0 -22
  97. data/features/fixtures/delayed_job/app/db/migrate/20181024232817_create_test_models.rb +0 -8
  98. data/features/fixtures/delayed_job/app/db/schema.rb +0 -30
  99. data/features/fixtures/delayed_job/app/db/seeds.rb +0 -7
  100. data/features/fixtures/delayed_job/app/lib/assets/.keep +0 -0
  101. data/features/fixtures/delayed_job/app/lib/tasks/.keep +0 -0
  102. data/features/fixtures/delayed_job/app/log/.keep +0 -0
  103. data/features/fixtures/delayed_job/app/public/404.html +0 -67
  104. data/features/fixtures/delayed_job/app/public/422.html +0 -67
  105. data/features/fixtures/delayed_job/app/public/500.html +0 -66
  106. data/features/fixtures/delayed_job/app/public/apple-touch-icon-precomposed.png +0 -0
  107. data/features/fixtures/delayed_job/app/public/apple-touch-icon.png +0 -0
  108. data/features/fixtures/delayed_job/app/public/favicon.ico +0 -0
  109. data/features/fixtures/delayed_job/app/public/robots.txt +0 -5
  110. data/features/fixtures/delayed_job/app/test/controllers/.keep +0 -0
  111. data/features/fixtures/delayed_job/app/test/fixtures/.keep +0 -0
  112. data/features/fixtures/delayed_job/app/test/fixtures/files/.keep +0 -0
  113. data/features/fixtures/delayed_job/app/test/fixtures/test_models.yml +0 -11
  114. data/features/fixtures/delayed_job/app/test/helpers/.keep +0 -0
  115. data/features/fixtures/delayed_job/app/test/integration/.keep +0 -0
  116. data/features/fixtures/delayed_job/app/test/mailers/.keep +0 -0
  117. data/features/fixtures/delayed_job/app/test/models/.keep +0 -0
  118. data/features/fixtures/delayed_job/app/test/models/test_model_test.rb +0 -7
  119. data/features/fixtures/delayed_job/app/test/test_helper.rb +0 -10
  120. data/features/fixtures/delayed_job/app/tmp/.keep +0 -0
  121. data/features/fixtures/docker-compose.yml +0 -303
  122. data/features/fixtures/expected_breadcrumbs/active_job.json +0 -9
  123. data/features/fixtures/expected_breadcrumbs/mongo_failed.json +0 -15
  124. data/features/fixtures/expected_breadcrumbs/mongo_filtered_request.json +0 -15
  125. data/features/fixtures/expected_breadcrumbs/mongo_filtered_result.json +0 -15
  126. data/features/fixtures/expected_breadcrumbs/mongo_success.json +0 -14
  127. data/features/fixtures/expected_breadcrumbs/request.json +0 -13
  128. data/features/fixtures/expected_breadcrumbs/sql_with_bindings.json +0 -12
  129. data/features/fixtures/expected_breadcrumbs/sql_without_bindings.json +0 -11
  130. data/features/fixtures/plain/.dockerignore +0 -2
  131. data/features/fixtures/plain/Dockerfile +0 -11
  132. data/features/fixtures/plain/app/Gemfile +0 -3
  133. data/features/fixtures/plain/app/app.rb +0 -38
  134. data/features/fixtures/plain/app/configuration/api_key.rb +0 -9
  135. data/features/fixtures/plain/app/configuration/proxy.rb +0 -14
  136. data/features/fixtures/plain/app/configuration/send_handled.rb +0 -7
  137. data/features/fixtures/plain/app/configuration/send_unhandled.rb +0 -9
  138. data/features/fixtures/plain/app/delivery/fork_threadpool.rb +0 -27
  139. data/features/fixtures/plain/app/delivery/synchronous.rb +0 -14
  140. data/features/fixtures/plain/app/delivery/threadpool.rb +0 -14
  141. data/features/fixtures/plain/app/exception_data/crash.rb +0 -34
  142. data/features/fixtures/plain/app/exception_data/handled_context.rb +0 -10
  143. data/features/fixtures/plain/app/exception_data/handled_hash.rb +0 -10
  144. data/features/fixtures/plain/app/exception_data/handled_meta_data.rb +0 -10
  145. data/features/fixtures/plain/app/exception_data/handled_user_id.rb +0 -10
  146. data/features/fixtures/plain/app/exception_data/unhandled_context.rb +0 -7
  147. data/features/fixtures/plain/app/exception_data/unhandled_hash.rb +0 -7
  148. data/features/fixtures/plain/app/exception_data/unhandled_meta_data.rb +0 -7
  149. data/features/fixtures/plain/app/exception_data/unhandled_user_id.rb +0 -7
  150. data/features/fixtures/plain/app/filters/additional_filters.rb +0 -11
  151. data/features/fixtures/plain/app/filters/default_filters.rb +0 -15
  152. data/features/fixtures/plain/app/handled/block_metadata.rb +0 -15
  153. data/features/fixtures/plain/app/handled/ignore_exception.rb +0 -12
  154. data/features/fixtures/plain/app/handled/notify_exception.rb +0 -9
  155. data/features/fixtures/plain/app/handled/notify_string.rb +0 -9
  156. data/features/fixtures/plain/app/ignore_classes/handled.rb +0 -8
  157. data/features/fixtures/plain/app/ignore_classes/ignore_error.rb +0 -8
  158. data/features/fixtures/plain/app/ignore_classes/unhandled.rb +0 -4
  159. data/features/fixtures/plain/app/report_modification/add_tab.rb +0 -16
  160. data/features/fixtures/plain/app/report_modification/add_tab_existing.rb +0 -22
  161. data/features/fixtures/plain/app/report_modification/add_tab_override.rb +0 -19
  162. data/features/fixtures/plain/app/report_modification/ignore_report.rb +0 -9
  163. data/features/fixtures/plain/app/report_modification/initiators/handled_before_notify.rb +0 -10
  164. data/features/fixtures/plain/app/report_modification/initiators/handled_block.rb +0 -8
  165. data/features/fixtures/plain/app/report_modification/initiators/handled_on_error.rb +0 -10
  166. data/features/fixtures/plain/app/report_modification/initiators/unhandled_before_notify.rb +0 -11
  167. data/features/fixtures/plain/app/report_modification/initiators/unhandled_on_error.rb +0 -11
  168. data/features/fixtures/plain/app/report_modification/modify_api_key.rb +0 -9
  169. data/features/fixtures/plain/app/report_modification/modify_severity.rb +0 -9
  170. data/features/fixtures/plain/app/report_modification/remove_user_details.rb +0 -14
  171. data/features/fixtures/plain/app/report_modification/set_custom_user_details.rb +0 -16
  172. data/features/fixtures/plain/app/report_modification/set_user_details.rb +0 -13
  173. data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_before_notify.rb +0 -29
  174. data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_block.rb +0 -24
  175. data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_on_error.rb +0 -29
  176. data/features/fixtures/plain/app/stack_frame_modification/initiators/unhandled_before_notify.rb +0 -26
  177. data/features/fixtures/plain/app/stack_frame_modification/initiators/unhandled_on_error.rb +0 -26
  178. data/features/fixtures/plain/app/stack_frame_modification/mark_frames_in_project.rb +0 -13
  179. data/features/fixtures/plain/app/stack_frame_modification/remove_stack_frame.rb +0 -9
  180. data/features/fixtures/plain/app/unhandled/bad_syntax.rb +0 -1
  181. data/features/fixtures/plain/app/unhandled/custom_error.rb +0 -9
  182. data/features/fixtures/plain/app/unhandled/interrupt.rb +0 -6
  183. data/features/fixtures/plain/app/unhandled/load_error.rb +0 -6
  184. data/features/fixtures/plain/app/unhandled/local_jump_error.rb +0 -10
  185. data/features/fixtures/plain/app/unhandled/name_error.rb +0 -6
  186. data/features/fixtures/plain/app/unhandled/no_method_error.rb +0 -6
  187. data/features/fixtures/plain/app/unhandled/runtime_error.rb +0 -6
  188. data/features/fixtures/plain/app/unhandled/syntax_error.rb +0 -6
  189. data/features/fixtures/plain/app/unhandled/system_call_error.rb +0 -6
  190. data/features/fixtures/plain/app/unhandled/system_exit.rb +0 -6
  191. data/features/fixtures/plain/json/delivery_fork.json +0 -4
  192. data/features/fixtures/plain/json/delivery_synchronous.json +0 -4
  193. data/features/fixtures/plain/json/delivery_threadpool.json +0 -4
  194. data/features/fixtures/plain/json/filters_default_metadata_filters.json +0 -9
  195. data/features/fixtures/rack1/.dockerignore +0 -1
  196. data/features/fixtures/rack1/Dockerfile +0 -13
  197. data/features/fixtures/rack1/Gemfile +0 -4
  198. data/features/fixtures/rack1/app.rb +0 -8
  199. data/features/fixtures/rack2/.dockerignore +0 -1
  200. data/features/fixtures/rack2/Dockerfile +0 -13
  201. data/features/fixtures/rack2/Gemfile +0 -4
  202. data/features/fixtures/rack2/app.rb +0 -8
  203. data/features/fixtures/rails3/.dockerignore +0 -1
  204. data/features/fixtures/rails3/Dockerfile +0 -15
  205. data/features/fixtures/rails3/app/.gitignore +0 -15
  206. data/features/fixtures/rails3/app/Gemfile +0 -17
  207. data/features/fixtures/rails3/app/Rakefile +0 -7
  208. data/features/fixtures/rails3/app/app/assets/images/rails.png +0 -0
  209. data/features/fixtures/rails3/app/app/assets/javascripts/application.js +0 -15
  210. data/features/fixtures/rails3/app/app/assets/stylesheets/application.css +0 -13
  211. data/features/fixtures/rails3/app/app/controllers/api_key_controller.rb +0 -20
  212. data/features/fixtures/rails3/app/app/controllers/app_type_controller.rb +0 -20
  213. data/features/fixtures/rails3/app/app/controllers/app_version_controller.rb +0 -25
  214. data/features/fixtures/rails3/app/app/controllers/application_controller.rb +0 -7
  215. data/features/fixtures/rails3/app/app/controllers/auto_notify_controller.rb +0 -31
  216. data/features/fixtures/rails3/app/app/controllers/before_notify_controller.rb +0 -44
  217. data/features/fixtures/rails3/app/app/controllers/breadcrumbs_controller.rb +0 -19
  218. data/features/fixtures/rails3/app/app/controllers/handled_controller.rb +0 -26
  219. data/features/fixtures/rails3/app/app/controllers/ignore_classes_controller.rb +0 -23
  220. data/features/fixtures/rails3/app/app/controllers/metadata_filters_controller.rb +0 -16
  221. data/features/fixtures/rails3/app/app/controllers/project_root_controller.rb +0 -25
  222. data/features/fixtures/rails3/app/app/controllers/release_stage_controller.rb +0 -20
  223. data/features/fixtures/rails3/app/app/controllers/send_code_controller.rb +0 -20
  224. data/features/fixtures/rails3/app/app/controllers/send_environment_controller.rb +0 -12
  225. data/features/fixtures/rails3/app/app/controllers/session_tracking_controller.rb +0 -24
  226. data/features/fixtures/rails3/app/app/controllers/unhandled_controller.rb +0 -11
  227. data/features/fixtures/rails3/app/app/controllers/warden_controller.rb +0 -30
  228. data/features/fixtures/rails3/app/app/helpers/application_helper.rb +0 -2
  229. data/features/fixtures/rails3/app/app/mailers/.gitkeep +0 -0
  230. data/features/fixtures/rails3/app/app/models/.gitkeep +0 -0
  231. data/features/fixtures/rails3/app/app/models/user.rb +0 -6
  232. data/features/fixtures/rails3/app/app/views/layouts/application.html.erb +0 -14
  233. data/features/fixtures/rails3/app/config.ru +0 -4
  234. data/features/fixtures/rails3/app/config/application.rb +0 -67
  235. data/features/fixtures/rails3/app/config/boot.rb +0 -6
  236. data/features/fixtures/rails3/app/config/database.yml +0 -31
  237. data/features/fixtures/rails3/app/config/environment.rb +0 -5
  238. data/features/fixtures/rails3/app/config/environments/development.rb +0 -37
  239. data/features/fixtures/rails3/app/config/environments/production.rb +0 -67
  240. data/features/fixtures/rails3/app/config/environments/rails_env.rb +0 -37
  241. data/features/fixtures/rails3/app/config/initializers/bugsnag.rb +0 -29
  242. data/features/fixtures/rails3/app/config/initializers/secret_token.rb +0 -7
  243. data/features/fixtures/rails3/app/config/initializers/session_store.rb +0 -8
  244. data/features/fixtures/rails3/app/config/initializers/warden.rb +0 -3
  245. data/features/fixtures/rails3/app/config/initializers/wrap_parameters.rb +0 -14
  246. data/features/fixtures/rails3/app/config/locales/en.yml +0 -5
  247. data/features/fixtures/rails3/app/config/routes.rb +0 -19
  248. data/features/fixtures/rails3/app/db/migrate/20180423142727_create_users.rb +0 -45
  249. data/features/fixtures/rails3/app/db/schema.rb +0 -37
  250. data/features/fixtures/rails3/app/db/seeds.rb +0 -7
  251. data/features/fixtures/rails3/app/lib/assets/.gitkeep +0 -0
  252. data/features/fixtures/rails3/app/lib/strategies/token_strategy.rb +0 -12
  253. data/features/fixtures/rails3/app/lib/tasks/.gitkeep +0 -0
  254. data/features/fixtures/rails3/app/log/.gitkeep +0 -0
  255. data/features/fixtures/rails3/app/public/404.html +0 -26
  256. data/features/fixtures/rails3/app/public/422.html +0 -26
  257. data/features/fixtures/rails3/app/public/500.html +0 -25
  258. data/features/fixtures/rails3/app/public/favicon.ico +0 -0
  259. data/features/fixtures/rails3/app/public/index.html +0 -241
  260. data/features/fixtures/rails3/app/public/robots.txt +0 -5
  261. data/features/fixtures/rails3/app/script/rails +0 -6
  262. data/features/fixtures/rails4/.dockerignore +0 -1
  263. data/features/fixtures/rails4/Dockerfile +0 -17
  264. data/features/fixtures/rails4/app/.gitignore +0 -16
  265. data/features/fixtures/rails4/app/Gemfile +0 -46
  266. data/features/fixtures/rails4/app/README.rdoc +0 -28
  267. data/features/fixtures/rails4/app/Rakefile +0 -6
  268. data/features/fixtures/rails4/app/app/assets/images/.keep +0 -0
  269. data/features/fixtures/rails4/app/app/assets/javascripts/application.js +0 -16
  270. data/features/fixtures/rails4/app/app/assets/stylesheets/application.css +0 -13
  271. data/features/fixtures/rails4/app/app/controllers/api_key_controller.rb +0 -20
  272. data/features/fixtures/rails4/app/app/controllers/app_type_controller.rb +0 -20
  273. data/features/fixtures/rails4/app/app/controllers/app_version_controller.rb +0 -25
  274. data/features/fixtures/rails4/app/app/controllers/application_controller.rb +0 -7
  275. data/features/fixtures/rails4/app/app/controllers/auto_notify_controller.rb +0 -31
  276. data/features/fixtures/rails4/app/app/controllers/before_notify_controller.rb +0 -44
  277. data/features/fixtures/rails4/app/app/controllers/breadcrumbs_controller.rb +0 -26
  278. data/features/fixtures/rails4/app/app/controllers/concerns/.keep +0 -0
  279. data/features/fixtures/rails4/app/app/controllers/devise_controller.rb +0 -32
  280. data/features/fixtures/rails4/app/app/controllers/handled_controller.rb +0 -26
  281. data/features/fixtures/rails4/app/app/controllers/ignore_classes_controller.rb +0 -23
  282. data/features/fixtures/rails4/app/app/controllers/metadata_filters_controller.rb +0 -16
  283. data/features/fixtures/rails4/app/app/controllers/mongo_controller.rb +0 -23
  284. data/features/fixtures/rails4/app/app/controllers/project_root_controller.rb +0 -25
  285. data/features/fixtures/rails4/app/app/controllers/release_stage_controller.rb +0 -20
  286. data/features/fixtures/rails4/app/app/controllers/send_code_controller.rb +0 -20
  287. data/features/fixtures/rails4/app/app/controllers/send_environment_controller.rb +0 -12
  288. data/features/fixtures/rails4/app/app/controllers/session_tracking_controller.rb +0 -24
  289. data/features/fixtures/rails4/app/app/controllers/unhandled_controller.rb +0 -11
  290. data/features/fixtures/rails4/app/app/helpers/application_helper.rb +0 -2
  291. data/features/fixtures/rails4/app/app/jobs/application_job.rb +0 -2
  292. data/features/fixtures/rails4/app/app/jobs/notify_job.rb +0 -5
  293. data/features/fixtures/rails4/app/app/mailers/.keep +0 -0
  294. data/features/fixtures/rails4/app/app/models/.keep +0 -0
  295. data/features/fixtures/rails4/app/app/models/concerns/.keep +0 -0
  296. data/features/fixtures/rails4/app/app/models/mongo_model.rb +0 -6
  297. data/features/fixtures/rails4/app/app/models/user.rb +0 -6
  298. data/features/fixtures/rails4/app/app/views/layouts/application.html.erb +0 -14
  299. data/features/fixtures/rails4/app/config.ru +0 -4
  300. data/features/fixtures/rails4/app/config/application.rb +0 -23
  301. data/features/fixtures/rails4/app/config/boot.rb +0 -4
  302. data/features/fixtures/rails4/app/config/database.yml +0 -31
  303. data/features/fixtures/rails4/app/config/environment.rb +0 -5
  304. data/features/fixtures/rails4/app/config/environments/development.rb +0 -31
  305. data/features/fixtures/rails4/app/config/environments/production.rb +0 -81
  306. data/features/fixtures/rails4/app/config/environments/rails_env.rb +0 -30
  307. data/features/fixtures/rails4/app/config/environments/test.rb +0 -31
  308. data/features/fixtures/rails4/app/config/initializers/backtrace_silencers.rb +0 -7
  309. data/features/fixtures/rails4/app/config/initializers/bugsnag.rb +0 -29
  310. data/features/fixtures/rails4/app/config/initializers/devise.rb +0 -283
  311. data/features/fixtures/rails4/app/config/initializers/filter_parameter_logging.rb +0 -5
  312. data/features/fixtures/rails4/app/config/initializers/inflections.rb +0 -16
  313. data/features/fixtures/rails4/app/config/initializers/mime_types.rb +0 -5
  314. data/features/fixtures/rails4/app/config/initializers/secret_token.rb +0 -12
  315. data/features/fixtures/rails4/app/config/initializers/session_store.rb +0 -3
  316. data/features/fixtures/rails4/app/config/initializers/wrap_parameters.rb +0 -14
  317. data/features/fixtures/rails4/app/config/locales/devise.en.yml +0 -64
  318. data/features/fixtures/rails4/app/config/locales/en.yml +0 -23
  319. data/features/fixtures/rails4/app/config/mongoid.yml +0 -22
  320. data/features/fixtures/rails4/app/config/routes.rb +0 -21
  321. data/features/fixtures/rails4/app/db/migrate/20180420160315_devise_create_users.rb +0 -47
  322. data/features/fixtures/rails4/app/db/seeds.rb +0 -7
  323. data/features/fixtures/rails4/app/lib/assets/.keep +0 -0
  324. data/features/fixtures/rails4/app/lib/tasks/.keep +0 -0
  325. data/features/fixtures/rails4/app/log/.keep +0 -0
  326. data/features/fixtures/rails4/app/public/404.html +0 -58
  327. data/features/fixtures/rails4/app/public/422.html +0 -58
  328. data/features/fixtures/rails4/app/public/500.html +0 -57
  329. data/features/fixtures/rails4/app/public/favicon.ico +0 -0
  330. data/features/fixtures/rails4/app/public/robots.txt +0 -5
  331. data/features/fixtures/rails4/app/test/controllers/.keep +0 -0
  332. data/features/fixtures/rails4/app/test/fixtures/.keep +0 -0
  333. data/features/fixtures/rails4/app/test/helpers/.keep +0 -0
  334. data/features/fixtures/rails4/app/test/integration/.keep +0 -0
  335. data/features/fixtures/rails4/app/test/mailers/.keep +0 -0
  336. data/features/fixtures/rails4/app/test/models/.keep +0 -0
  337. data/features/fixtures/rails4/app/test/test_helper.rb +0 -15
  338. data/features/fixtures/rails5/.dockerignore +0 -1
  339. data/features/fixtures/rails5/Dockerfile +0 -17
  340. data/features/fixtures/rails5/app/.gitignore +0 -21
  341. data/features/fixtures/rails5/app/Gemfile +0 -52
  342. data/features/fixtures/rails5/app/README.md +0 -24
  343. data/features/fixtures/rails5/app/Rakefile +0 -6
  344. data/features/fixtures/rails5/app/app/assets/config/manifest.js +0 -3
  345. data/features/fixtures/rails5/app/app/assets/images/.keep +0 -0
  346. data/features/fixtures/rails5/app/app/assets/javascripts/application.js +0 -16
  347. data/features/fixtures/rails5/app/app/assets/javascripts/cable.js +0 -13
  348. data/features/fixtures/rails5/app/app/assets/javascripts/channels/.keep +0 -0
  349. data/features/fixtures/rails5/app/app/assets/stylesheets/application.css +0 -15
  350. data/features/fixtures/rails5/app/app/channels/application_cable/channel.rb +0 -4
  351. data/features/fixtures/rails5/app/app/channels/application_cable/connection.rb +0 -4
  352. data/features/fixtures/rails5/app/app/controllers/api_key_controller.rb +0 -16
  353. data/features/fixtures/rails5/app/app/controllers/app_type_controller.rb +0 -16
  354. data/features/fixtures/rails5/app/app/controllers/app_version_controller.rb +0 -21
  355. data/features/fixtures/rails5/app/app/controllers/application_controller.rb +0 -7
  356. data/features/fixtures/rails5/app/app/controllers/auto_notify_controller.rb +0 -27
  357. data/features/fixtures/rails5/app/app/controllers/before_notify_controller.rb +0 -40
  358. data/features/fixtures/rails5/app/app/controllers/breadcrumbs_controller.rb +0 -24
  359. data/features/fixtures/rails5/app/app/controllers/clearance_controller.rb +0 -33
  360. data/features/fixtures/rails5/app/app/controllers/concerns/.keep +0 -0
  361. data/features/fixtures/rails5/app/app/controllers/handled_controller.rb +0 -22
  362. data/features/fixtures/rails5/app/app/controllers/ignore_classes_controller.rb +0 -19
  363. data/features/fixtures/rails5/app/app/controllers/metadata_filters_controller.rb +0 -12
  364. data/features/fixtures/rails5/app/app/controllers/mongo_controller.rb +0 -22
  365. data/features/fixtures/rails5/app/app/controllers/project_root_controller.rb +0 -21
  366. data/features/fixtures/rails5/app/app/controllers/release_stage_controller.rb +0 -16
  367. data/features/fixtures/rails5/app/app/controllers/send_code_controller.rb +0 -16
  368. data/features/fixtures/rails5/app/app/controllers/send_environment_controller.rb +0 -8
  369. data/features/fixtures/rails5/app/app/controllers/session_tracking_controller.rb +0 -20
  370. data/features/fixtures/rails5/app/app/controllers/unhandled_controller.rb +0 -7
  371. data/features/fixtures/rails5/app/app/helpers/application_helper.rb +0 -2
  372. data/features/fixtures/rails5/app/app/jobs/application_job.rb +0 -2
  373. data/features/fixtures/rails5/app/app/jobs/notify_job.rb +0 -5
  374. data/features/fixtures/rails5/app/app/mailers/application_mailer.rb +0 -4
  375. data/features/fixtures/rails5/app/app/models/application_record.rb +0 -3
  376. data/features/fixtures/rails5/app/app/models/concerns/.keep +0 -0
  377. data/features/fixtures/rails5/app/app/models/mongo_model.rb +0 -6
  378. data/features/fixtures/rails5/app/app/models/user.rb +0 -3
  379. data/features/fixtures/rails5/app/app/views/layouts/application.html.erb +0 -14
  380. data/features/fixtures/rails5/app/app/views/layouts/mailer.html.erb +0 -13
  381. data/features/fixtures/rails5/app/app/views/layouts/mailer.text.erb +0 -1
  382. data/features/fixtures/rails5/app/config.ru +0 -5
  383. data/features/fixtures/rails5/app/config/application.rb +0 -15
  384. data/features/fixtures/rails5/app/config/boot.rb +0 -3
  385. data/features/fixtures/rails5/app/config/cable.yml +0 -9
  386. data/features/fixtures/rails5/app/config/database.yml +0 -29
  387. data/features/fixtures/rails5/app/config/environment.rb +0 -5
  388. data/features/fixtures/rails5/app/config/environments/development.rb +0 -55
  389. data/features/fixtures/rails5/app/config/environments/production.rb +0 -87
  390. data/features/fixtures/rails5/app/config/environments/rails_env.rb +0 -55
  391. data/features/fixtures/rails5/app/config/environments/test.rb +0 -55
  392. data/features/fixtures/rails5/app/config/initializers/assets.rb +0 -11
  393. data/features/fixtures/rails5/app/config/initializers/backtrace_silencers.rb +0 -7
  394. data/features/fixtures/rails5/app/config/initializers/bugsnag.rb +0 -29
  395. data/features/fixtures/rails5/app/config/initializers/clearance.rb +0 -5
  396. data/features/fixtures/rails5/app/config/initializers/cookies_serializer.rb +0 -5
  397. data/features/fixtures/rails5/app/config/initializers/filter_parameter_logging.rb +0 -5
  398. data/features/fixtures/rails5/app/config/initializers/inflections.rb +0 -16
  399. data/features/fixtures/rails5/app/config/initializers/mime_types.rb +0 -4
  400. data/features/fixtures/rails5/app/config/initializers/new_framework_defaults.rb +0 -24
  401. data/features/fixtures/rails5/app/config/initializers/session_store.rb +0 -3
  402. data/features/fixtures/rails5/app/config/initializers/wrap_parameters.rb +0 -14
  403. data/features/fixtures/rails5/app/config/locales/devise.en.yml +0 -64
  404. data/features/fixtures/rails5/app/config/locales/en.yml +0 -23
  405. data/features/fixtures/rails5/app/config/mongoid.yml +0 -23
  406. data/features/fixtures/rails5/app/config/puma.rb +0 -47
  407. data/features/fixtures/rails5/app/config/routes.rb +0 -62
  408. data/features/fixtures/rails5/app/config/secrets.yml +0 -25
  409. data/features/fixtures/rails5/app/config/spring.rb +0 -6
  410. data/features/fixtures/rails5/app/db/migrate/20180426095545_create_users.rb +0 -17
  411. data/features/fixtures/rails5/app/db/schema.rb +0 -29
  412. data/features/fixtures/rails5/app/db/seeds.rb +0 -7
  413. data/features/fixtures/rails5/app/lib/assets/.keep +0 -0
  414. data/features/fixtures/rails5/app/lib/tasks/.keep +0 -0
  415. data/features/fixtures/rails5/app/log/.keep +0 -0
  416. data/features/fixtures/rails5/app/public/404.html +0 -67
  417. data/features/fixtures/rails5/app/public/422.html +0 -67
  418. data/features/fixtures/rails5/app/public/500.html +0 -66
  419. data/features/fixtures/rails5/app/public/apple-touch-icon-precomposed.png +0 -0
  420. data/features/fixtures/rails5/app/public/apple-touch-icon.png +0 -0
  421. data/features/fixtures/rails5/app/public/favicon.ico +0 -0
  422. data/features/fixtures/rails5/app/public/robots.txt +0 -5
  423. data/features/fixtures/rails5/app/test/controllers/.keep +0 -0
  424. data/features/fixtures/rails5/app/test/fixtures/.keep +0 -0
  425. data/features/fixtures/rails5/app/test/fixtures/files/.keep +0 -0
  426. data/features/fixtures/rails5/app/test/helpers/.keep +0 -0
  427. data/features/fixtures/rails5/app/test/integration/.keep +0 -0
  428. data/features/fixtures/rails5/app/test/mailers/.keep +0 -0
  429. data/features/fixtures/rails5/app/test/models/.keep +0 -0
  430. data/features/fixtures/rails5/app/test/test_helper.rb +0 -10
  431. data/features/fixtures/rails5/app/tmp/.keep +0 -0
  432. data/features/fixtures/rails6/.dockerignore +0 -1
  433. data/features/fixtures/rails6/Dockerfile +0 -26
  434. data/features/fixtures/rails6/app/.browserslistrc +0 -1
  435. data/features/fixtures/rails6/app/.gitignore +0 -35
  436. data/features/fixtures/rails6/app/.ruby-version +0 -1
  437. data/features/fixtures/rails6/app/Gemfile +0 -58
  438. data/features/fixtures/rails6/app/README.md +0 -24
  439. data/features/fixtures/rails6/app/Rakefile +0 -6
  440. data/features/fixtures/rails6/app/app/assets/config/manifest.js +0 -2
  441. data/features/fixtures/rails6/app/app/assets/images/.keep +0 -0
  442. data/features/fixtures/rails6/app/app/assets/stylesheets/application.css +0 -15
  443. data/features/fixtures/rails6/app/app/channels/application_cable/channel.rb +0 -4
  444. data/features/fixtures/rails6/app/app/channels/application_cable/connection.rb +0 -4
  445. data/features/fixtures/rails6/app/app/controllers/api_key_controller.rb +0 -16
  446. data/features/fixtures/rails6/app/app/controllers/app_type_controller.rb +0 -16
  447. data/features/fixtures/rails6/app/app/controllers/app_version_controller.rb +0 -21
  448. data/features/fixtures/rails6/app/app/controllers/application_controller.rb +0 -7
  449. data/features/fixtures/rails6/app/app/controllers/auto_notify_controller.rb +0 -27
  450. data/features/fixtures/rails6/app/app/controllers/before_notify_controller.rb +0 -40
  451. data/features/fixtures/rails6/app/app/controllers/breadcrumbs_controller.rb +0 -24
  452. data/features/fixtures/rails6/app/app/controllers/clearance_controller.rb +0 -33
  453. data/features/fixtures/rails6/app/app/controllers/concerns/.keep +0 -0
  454. data/features/fixtures/rails6/app/app/controllers/handled_controller.rb +0 -22
  455. data/features/fixtures/rails6/app/app/controllers/ignore_classes_controller.rb +0 -19
  456. data/features/fixtures/rails6/app/app/controllers/metadata_filters_controller.rb +0 -12
  457. data/features/fixtures/rails6/app/app/controllers/mongo_controller.rb +0 -22
  458. data/features/fixtures/rails6/app/app/controllers/project_root_controller.rb +0 -21
  459. data/features/fixtures/rails6/app/app/controllers/release_stage_controller.rb +0 -16
  460. data/features/fixtures/rails6/app/app/controllers/send_code_controller.rb +0 -16
  461. data/features/fixtures/rails6/app/app/controllers/send_environment_controller.rb +0 -8
  462. data/features/fixtures/rails6/app/app/controllers/session_tracking_controller.rb +0 -20
  463. data/features/fixtures/rails6/app/app/controllers/unhandled_controller.rb +0 -7
  464. data/features/fixtures/rails6/app/app/helpers/application_helper.rb +0 -2
  465. data/features/fixtures/rails6/app/app/javascript/channels/consumer.js +0 -6
  466. data/features/fixtures/rails6/app/app/javascript/channels/index.js +0 -5
  467. data/features/fixtures/rails6/app/app/javascript/packs/application.js +0 -9
  468. data/features/fixtures/rails6/app/app/jobs/application_job.rb +0 -7
  469. data/features/fixtures/rails6/app/app/jobs/notify_job.rb +0 -5
  470. data/features/fixtures/rails6/app/app/mailers/application_mailer.rb +0 -4
  471. data/features/fixtures/rails6/app/app/models/application_record.rb +0 -3
  472. data/features/fixtures/rails6/app/app/models/concerns/.keep +0 -0
  473. data/features/fixtures/rails6/app/app/models/mongo_model.rb +0 -6
  474. data/features/fixtures/rails6/app/app/models/user.rb +0 -3
  475. data/features/fixtures/rails6/app/app/views/layouts/application.html.erb +0 -15
  476. data/features/fixtures/rails6/app/app/views/layouts/mailer.html.erb +0 -13
  477. data/features/fixtures/rails6/app/app/views/layouts/mailer.text.erb +0 -1
  478. data/features/fixtures/rails6/app/babel.config.js +0 -70
  479. data/features/fixtures/rails6/app/config.ru +0 -5
  480. data/features/fixtures/rails6/app/config/application.rb +0 -19
  481. data/features/fixtures/rails6/app/config/boot.rb +0 -4
  482. data/features/fixtures/rails6/app/config/cable.yml +0 -13
  483. data/features/fixtures/rails6/app/config/credentials.yml.enc +0 -1
  484. data/features/fixtures/rails6/app/config/database.yml +0 -29
  485. data/features/fixtures/rails6/app/config/environment.rb +0 -5
  486. data/features/fixtures/rails6/app/config/environments/development.rb +0 -64
  487. data/features/fixtures/rails6/app/config/environments/production.rb +0 -113
  488. data/features/fixtures/rails6/app/config/environments/rails_env.rb +0 -56
  489. data/features/fixtures/rails6/app/config/environments/test.rb +0 -48
  490. data/features/fixtures/rails6/app/config/initializers/application_controller_renderer.rb +0 -8
  491. data/features/fixtures/rails6/app/config/initializers/assets.rb +0 -14
  492. data/features/fixtures/rails6/app/config/initializers/backtrace_silencers.rb +0 -7
  493. data/features/fixtures/rails6/app/config/initializers/bugsnag.rb +0 -29
  494. data/features/fixtures/rails6/app/config/initializers/content_security_policy.rb +0 -27
  495. data/features/fixtures/rails6/app/config/initializers/cookies_serializer.rb +0 -5
  496. data/features/fixtures/rails6/app/config/initializers/filter_parameter_logging.rb +0 -5
  497. data/features/fixtures/rails6/app/config/initializers/inflections.rb +0 -16
  498. data/features/fixtures/rails6/app/config/initializers/mime_types.rb +0 -4
  499. data/features/fixtures/rails6/app/config/initializers/wrap_parameters.rb +0 -14
  500. data/features/fixtures/rails6/app/config/locales/en.yml +0 -33
  501. data/features/fixtures/rails6/app/config/mongoid.yml +0 -23
  502. data/features/fixtures/rails6/app/config/puma.rb +0 -35
  503. data/features/fixtures/rails6/app/config/routes.rb +0 -62
  504. data/features/fixtures/rails6/app/config/secrets.yml +0 -25
  505. data/features/fixtures/rails6/app/config/spring.rb +0 -6
  506. data/features/fixtures/rails6/app/config/storage.yml +0 -34
  507. data/features/fixtures/rails6/app/config/webpack/development.js +0 -5
  508. data/features/fixtures/rails6/app/config/webpack/environment.js +0 -3
  509. data/features/fixtures/rails6/app/config/webpack/production.js +0 -5
  510. data/features/fixtures/rails6/app/config/webpack/rails_env.js +0 -5
  511. data/features/fixtures/rails6/app/config/webpack/test.js +0 -5
  512. data/features/fixtures/rails6/app/config/webpacker.yml +0 -121
  513. data/features/fixtures/rails6/app/db/migrate/20180426095545_create_users.rb +0 -17
  514. data/features/fixtures/rails6/app/db/schema.rb +0 -29
  515. data/features/fixtures/rails6/app/db/seeds.rb +0 -7
  516. data/features/fixtures/rails6/app/lib/assets/.keep +0 -0
  517. data/features/fixtures/rails6/app/lib/tasks/.keep +0 -0
  518. data/features/fixtures/rails6/app/log/.keep +0 -0
  519. data/features/fixtures/rails6/app/package.json +0 -15
  520. data/features/fixtures/rails6/app/postcss.config.js +0 -12
  521. data/features/fixtures/rails6/app/public/404.html +0 -67
  522. data/features/fixtures/rails6/app/public/422.html +0 -67
  523. data/features/fixtures/rails6/app/public/500.html +0 -66
  524. data/features/fixtures/rails6/app/public/apple-touch-icon-precomposed.png +0 -0
  525. data/features/fixtures/rails6/app/public/apple-touch-icon.png +0 -0
  526. data/features/fixtures/rails6/app/public/favicon.ico +0 -0
  527. data/features/fixtures/rails6/app/public/robots.txt +0 -1
  528. data/features/fixtures/rails6/app/storage/.keep +0 -0
  529. data/features/fixtures/rails6/app/test/application_system_test_case.rb +0 -5
  530. data/features/fixtures/rails6/app/test/channels/application_cable/connection_test.rb +0 -11
  531. data/features/fixtures/rails6/app/test/controllers/.keep +0 -0
  532. data/features/fixtures/rails6/app/test/fixtures/.keep +0 -0
  533. data/features/fixtures/rails6/app/test/fixtures/files/.keep +0 -0
  534. data/features/fixtures/rails6/app/test/helpers/.keep +0 -0
  535. data/features/fixtures/rails6/app/test/integration/.keep +0 -0
  536. data/features/fixtures/rails6/app/test/mailers/.keep +0 -0
  537. data/features/fixtures/rails6/app/test/models/.keep +0 -0
  538. data/features/fixtures/rails6/app/test/system/.keep +0 -0
  539. data/features/fixtures/rails6/app/test/test_helper.rb +0 -13
  540. data/features/fixtures/rails6/app/tmp/.keep +0 -0
  541. data/features/fixtures/rails6/app/yarn.lock +0 -6082
  542. data/features/fixtures/resque/.dockerignore +0 -1
  543. data/features/fixtures/resque/Dockerfile +0 -14
  544. data/features/fixtures/resque/Gemfile +0 -6
  545. data/features/fixtures/resque/Rakefile +0 -4
  546. data/features/fixtures/resque/app.rb +0 -12
  547. data/features/fixtures/sidekiq/.dockerignore +0 -2
  548. data/features/fixtures/sidekiq/Dockerfile +0 -17
  549. data/features/fixtures/sidekiq/app/Gemfile +0 -7
  550. data/features/fixtures/sidekiq/app/Rakefile.rb +0 -14
  551. data/features/fixtures/sidekiq/app/app.rb +0 -35
  552. data/features/fixtures/sidekiq/app/initializers/HandledError.rb +0 -3
  553. data/features/fixtures/sidekiq/app/initializers/UnhandledError.rb +0 -3
  554. data/features/fixtures/sidekiq/payloads/handled_metadata_ca_false.json +0 -11
  555. data/features/fixtures/sidekiq/payloads/handled_metadata_ca_true.json +0 -12
  556. data/features/fixtures/sidekiq/payloads/unhandled_metadata_ca_false.json +0 -11
  557. data/features/fixtures/sidekiq/payloads/unhandled_metadata_ca_true.json +0 -12
  558. data/features/fixtures/sinatra1/.dockerignore +0 -1
  559. data/features/fixtures/sinatra1/Dockerfile +0 -13
  560. data/features/fixtures/sinatra1/Gemfile +0 -4
  561. data/features/fixtures/sinatra1/app.rb +0 -9
  562. data/features/fixtures/sinatra2/.dockerignore +0 -1
  563. data/features/fixtures/sinatra2/Dockerfile +0 -13
  564. data/features/fixtures/sinatra2/Gemfile +0 -4
  565. data/features/fixtures/sinatra2/app.rb +0 -9
  566. data/features/plain_features/add_tab.feature +0 -55
  567. data/features/plain_features/app_type.feature +0 -8
  568. data/features/plain_features/app_version.feature +0 -8
  569. data/features/plain_features/auto_notify.feature +0 -7
  570. data/features/plain_features/delivery.feature +0 -20
  571. data/features/plain_features/exception_data.feature +0 -50
  572. data/features/plain_features/filters.feature +0 -14
  573. data/features/plain_features/handled_errors.feature +0 -42
  574. data/features/plain_features/ignore_classes.feature +0 -11
  575. data/features/plain_features/ignore_report.feature +0 -14
  576. data/features/plain_features/proxies.feature +0 -25
  577. data/features/plain_features/release_stages.feature +0 -20
  578. data/features/plain_features/report_api_key.feature +0 -16
  579. data/features/plain_features/report_severity.feature +0 -17
  580. data/features/plain_features/report_stack_frames.feature +0 -53
  581. data/features/plain_features/report_user.feature +0 -51
  582. data/features/plain_features/unhandled_errors.feature +0 -33
  583. data/features/rails_features/api_key.feature +0 -15
  584. data/features/rails_features/app_type.feature +0 -24
  585. data/features/rails_features/app_version.feature +0 -26
  586. data/features/rails_features/auto_capture_sessions.feature +0 -34
  587. data/features/rails_features/auto_notify.feature +0 -41
  588. data/features/rails_features/before_notify.feature +0 -44
  589. data/features/rails_features/breadcrumbs.feature +0 -43
  590. data/features/rails_features/handled.feature +0 -42
  591. data/features/rails_features/ignore_classes.feature +0 -14
  592. data/features/rails_features/meta_data_filters.feature +0 -16
  593. data/features/rails_features/mongo_breadcrumbs.feature +0 -26
  594. data/features/rails_features/on_error.feature +0 -29
  595. data/features/rails_features/project_root.feature +0 -35
  596. data/features/rails_features/release_stage.feature +0 -27
  597. data/features/rails_features/send_code.feature +0 -18
  598. data/features/rails_features/send_environment.feature +0 -13
  599. data/features/rails_features/unhandled.feature +0 -16
  600. data/features/rails_features/user_info.feature +0 -52
  601. data/features/sidekiq.feature +0 -30
  602. data/features/steps/ruby_notifier_steps.rb +0 -75
  603. data/features/support/env.rb +0 -23
  604. data/issue_template.md +0 -48
  605. data/spec/breadcrumbs/breadcrumb_spec.rb +0 -93
  606. data/spec/breadcrumbs/validator_spec.rb +0 -176
  607. data/spec/bugsnag_spec.rb +0 -366
  608. data/spec/cleaner_spec.rb +0 -350
  609. data/spec/code_extractor_spec.rb +0 -129
  610. data/spec/configuration_spec.rb +0 -445
  611. data/spec/fixtures/apps/rails-initializer-config/Gemfile +0 -9
  612. data/spec/fixtures/apps/rails-initializer-config/config.ru +0 -16
  613. data/spec/fixtures/apps/rails-initializer-config/config/initializers/bugsnag.rb +0 -3
  614. data/spec/fixtures/apps/rails-invalid-initializer-config/Gemfile +0 -9
  615. data/spec/fixtures/apps/rails-invalid-initializer-config/config.ru +0 -16
  616. data/spec/fixtures/apps/rails-invalid-initializer-config/config/initializers/bugsnag.rb +0 -3
  617. data/spec/fixtures/apps/rails-no-config/Gemfile +0 -9
  618. data/spec/fixtures/apps/rails-no-config/config.ru +0 -16
  619. data/spec/fixtures/apps/scripts/Gemfile +0 -3
  620. data/spec/fixtures/apps/scripts/configure_invalid_key.rb +0 -5
  621. data/spec/fixtures/apps/scripts/configure_key.rb +0 -5
  622. data/spec/fixtures/apps/scripts/no_config.rb +0 -3
  623. data/spec/fixtures/crashes/end_of_file.rb +0 -9
  624. data/spec/fixtures/crashes/file1.rb +0 -29
  625. data/spec/fixtures/crashes/file2.rb +0 -25
  626. data/spec/fixtures/crashes/file_with_long_lines.rb +0 -7
  627. data/spec/fixtures/crashes/functions.rb +0 -29
  628. data/spec/fixtures/crashes/short_file.rb +0 -3
  629. data/spec/fixtures/crashes/start_of_file.rb +0 -9
  630. data/spec/fixtures/middleware/internal_info_setter.rb +0 -11
  631. data/spec/fixtures/middleware/public_info_setter.rb +0 -11
  632. data/spec/fixtures/tasks/Rakefile +0 -26
  633. data/spec/helper_spec.rb +0 -131
  634. data/spec/integration_spec.rb +0 -107
  635. data/spec/integrations/clearance_user_spec.rb +0 -38
  636. data/spec/integrations/logger_spec.rb +0 -134
  637. data/spec/integrations/mailman_spec.rb +0 -83
  638. data/spec/integrations/mongo_spec.rb +0 -262
  639. data/spec/integrations/que_spec.rb +0 -94
  640. data/spec/integrations/rack_spec.rb +0 -232
  641. data/spec/integrations/rails3_request_spec.rb +0 -67
  642. data/spec/integrations/rake_spec.rb +0 -71
  643. data/spec/integrations/resque_spec.rb +0 -99
  644. data/spec/integrations/shoryuken_spec.rb +0 -70
  645. data/spec/integrations/sidekiq_spec.rb +0 -137
  646. data/spec/integrations/warden_user_spec.rb +0 -41
  647. data/spec/middleware/exception_meta_data_spec.rb +0 -104
  648. data/spec/middleware_spec.rb +0 -254
  649. data/spec/middleware_stack_spec.rb +0 -151
  650. data/spec/on_error_spec.rb +0 -332
  651. data/spec/report_spec.rb +0 -1583
  652. data/spec/session_tracker_spec.rb +0 -156
  653. data/spec/spec_helper.rb +0 -99
  654. data/spec/stacktrace_spec.rb +0 -443
  655. data/spec/utility/circular_buffer_spec.rb +0 -98
@@ -1,254 +0,0 @@
1
- require 'spec_helper'
2
- require 'fixtures/middleware/public_info_setter'
3
- require 'fixtures/middleware/internal_info_setter'
4
-
5
- describe Bugsnag::MiddlewareStack do
6
- it "runs before_bugsnag_notify callbacks, adding a tab" do
7
- callback_run_count = 0
8
- Bugsnag.before_notify_callbacks << lambda {|notif|
9
- notif.add_tab(:some_tab, {
10
- :info => "here",
11
- :data => "also here"
12
- })
13
- callback_run_count += 1
14
- }
15
-
16
- Bugsnag.notify(BugsnagTestException.new("It crashed"))
17
- expect(callback_run_count).to eq(1)
18
-
19
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
20
- event = get_event_from_payload(payload)
21
- expect(event["metaData"]["some_tab"]).not_to be_nil
22
- expect(event["metaData"]["some_tab"]["info"]).to eq("here")
23
- expect(event["metaData"]["some_tab"]["data"]).to eq("also here")
24
- }
25
-
26
- end
27
-
28
- it "runs before_bugsnag_notify callbacks, adding custom data" do
29
- callback_run_count = 0
30
- Bugsnag.before_notify_callbacks << lambda {|notif|
31
- notif.add_tab(:custom, {info: "here"})
32
- notif.add_tab(:custom, {data: "also here"})
33
-
34
- callback_run_count += 1
35
- }
36
-
37
- Bugsnag.notify(BugsnagTestException.new("It crashed"))
38
- expect(callback_run_count).to eq(1)
39
-
40
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
41
- event = get_event_from_payload(payload)
42
- expect(event["metaData"]["custom"]).not_to be_nil
43
- expect(event["metaData"]["custom"]["info"]).to eq("here")
44
- expect(event["metaData"]["custom"]["data"]).to eq("also here")
45
- }
46
-
47
- end
48
-
49
- it "runs before_bugsnag_notify callbacks, setting the user" do
50
- callback_run_count = 0
51
- Bugsnag.before_notify_callbacks << lambda {|notif|
52
- notif.user = {:id => "here", :email => "also here", :name => "also here too", :random_key => "also here too too"}
53
- callback_run_count += 1
54
- }
55
-
56
- Bugsnag.notify(BugsnagTestException.new("It crashed"))
57
- expect(callback_run_count).to eq(1)
58
-
59
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
60
- event = get_event_from_payload(payload)
61
- expect(event["user"]).not_to be_nil
62
- expect(event["user"]["id"]).to eq("here")
63
- expect(event["user"]["email"]).to eq("also here")
64
- expect(event["user"]["name"]).to eq("also here too")
65
- expect(event["user"]["random_key"]).to eq("also here too too")
66
- }
67
-
68
- end
69
-
70
- it "allows block to override values set by internal middleware" do
71
- Bugsnag.configuration.internal_middleware.use(InternalInfoSetter)
72
- Bugsnag.notify(BugsnagTestException.new("It crashed")) do |report|
73
- report.meta_data.merge!({custom: {info: 'overridden'}})
74
- end
75
-
76
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
77
- event = get_event_from_payload(payload)
78
- expect(event["metaData"]["custom"]).not_to be_nil
79
- expect(event["metaData"]["custom"]["info"]).to eq("overridden")
80
- }
81
- end
82
-
83
- it "allows block to override public middleware" do
84
- Bugsnag.configuration.middleware.use(PublicInfoSetter)
85
-
86
- Bugsnag.notify(BugsnagTestException.new("It crashed")) do |report|
87
- report.meta_data.merge!({custom: {info: 'overridden'}})
88
- end
89
-
90
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
91
- event = get_event_from_payload(payload)
92
- expect(event["metaData"]["custom"]).not_to be_nil
93
- expect(event["metaData"]["custom"]["info"]).to eq("overridden")
94
- }
95
- end
96
-
97
- it "does not have have before callbacks by default" do
98
- expect(Bugsnag.before_notify_callbacks.size).to eq(0)
99
- Bugsnag.notify(BugsnagTestException.new("It crashed"))
100
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
101
- event = get_event_from_payload(payload)
102
- expect(event["metaData"].size).to eq(0)
103
- }
104
- end
105
-
106
- it "does not execute disabled bugsnag middleware" do
107
- callback_run_count = 0
108
- Bugsnag.configure do |config|
109
- config.middleware.disable(Bugsnag::Middleware::Callbacks)
110
- end
111
-
112
- Bugsnag.before_notify_callbacks << lambda {|notif|
113
- callback_run_count += 1
114
- }
115
-
116
- Bugsnag.notify(BugsnagTestException.new("It crashed"))
117
- expect(callback_run_count).to eq(0)
118
- end
119
-
120
- it "does not notify if a callback told so" do
121
- Bugsnag.before_notify_callbacks << lambda do |notif|
122
- notif.ignore!
123
- end
124
- Bugsnag.notify(BugsnagTestException.new("It crashed"))
125
- expect(Bugsnag).not_to have_sent_notification
126
- end
127
-
128
- it "allows inspection of meta_data before ignoring exception" do
129
- # Use before notify callbacks as only the callback based metadata is
130
- # available to before_notify_callbacks
131
- Bugsnag.before_notify_callbacks << lambda do |notif|
132
- notif.add_tab(:sidekiq, {:retry_count => 4})
133
- end
134
-
135
- Bugsnag.before_notify_callbacks << lambda do |notif|
136
- notif.ignore! if notif.meta_data[:sidekiq][:retry_count] > 3
137
- end
138
-
139
- Bugsnag.notify(BugsnagTestException.new("It crashed"))
140
- expect(Bugsnag).not_to have_sent_notification
141
-
142
- end
143
-
144
- it "allows meta_data to be modified in a middleware" do
145
- MetaDataAdder = Class.new do
146
- def initialize(bugsnag)
147
- @bugsnag = bugsnag
148
- end
149
-
150
- def call(report)
151
- report.meta_data = {test: {value: "abcdef123456abcdef123456abcdef123456"}}
152
- @bugsnag.call(report)
153
- end
154
- end
155
-
156
- MetaDataMunger = Class.new do
157
- def initialize(bugsnag)
158
- @bugsnag = bugsnag
159
- end
160
-
161
- def call(report)
162
- token = report.meta_data[:test][:value]
163
- report.meta_data[:test][:value] = "#{token[0...6]}*****#{token[-4..-1]}"
164
- @bugsnag.call(report)
165
- end
166
- end
167
-
168
- Bugsnag.configure do |c|
169
- c.middleware.use MetaDataAdder
170
- c.middleware.use MetaDataMunger
171
- end
172
-
173
- Bugsnag.notify(BugsnagTestException.new("It crashed"))
174
-
175
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
176
- event = get_event_from_payload(payload)
177
- expect(event["metaData"]['test']['value']).to eq("abcdef*****3456")
178
- }
179
- end
180
-
181
- if ruby_version_greater_equal?("2.3.0")
182
- context "with a ruby version >= 2.3.0" do
183
- it "attaches did you mean metadata when necessary" do
184
- begin
185
- "Test".prepnd "T"
186
- rescue Exception => e
187
- Bugsnag.notify(e)
188
- end
189
-
190
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
191
- event = get_event_from_payload(payload)
192
- expect(event["metaData"]["error"]).to_not be_nil
193
- expect(event["metaData"]["error"]).to eq({"suggestion" => "prepend"})
194
- }
195
- end
196
- end
197
- end
198
-
199
- context "with a ruby version < 2.3.0" do
200
- if !ruby_version_greater_equal?("2.3.0")
201
- it "doesn't attach did you mean metadata" do
202
- begin
203
- "Test".prepnd "T"
204
- rescue Exception => e
205
- Bugsnag.notify(e)
206
- end
207
-
208
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
209
- event = get_event_from_payload(payload)
210
- expect(event["metaData"]["error"]).to be_nil
211
- }
212
- end
213
- end
214
- end
215
-
216
- it "doesn't allow handledState properties to be changed in middleware" do
217
- HandledStateChanger = Class.new do
218
- def initialize(bugsnag)
219
- @bugsnag = bugsnag
220
- end
221
-
222
- def call(report)
223
- report.severity_reason = {
224
- :test => "test"
225
- }
226
- @bugsnag.call(report)
227
- end
228
- end
229
-
230
- Bugsnag.configure do |c|
231
- c.middleware.use HandledStateChanger
232
- end
233
-
234
- Bugsnag.notify(BugsnagTestException.new("It crashed"), true) do |report|
235
- report.severity_reason = {
236
- :type => "middleware_handler",
237
- :attributes => {
238
- :name => "middleware_test"
239
- }
240
- }
241
- end
242
-
243
- expect(Bugsnag).to have_sent_notification{ |payload, headers|
244
- event = get_event_from_payload(payload)
245
- expect(event["unhandled"]).to be true
246
- expect(event["severityReason"]).to eq({
247
- "type" => "middleware_handler",
248
- "attributes" => {
249
- "name" => "middleware_test"
250
- }
251
- })
252
- }
253
- end
254
- end
@@ -1,151 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class TestMiddleware
4
- def initialize(bugsnag)
5
- @bugsnag = bugsnag
6
- end
7
-
8
- def call(report)
9
- @bugsnag.call(report)
10
- end
11
- end
12
-
13
- module Bugsnag
14
- class MiddlewareStack
15
- attr_reader :middlewares
16
- attr_reader :disabled_middleware
17
- end
18
- end
19
-
20
- describe Bugsnag::MiddlewareStack do
21
- describe "defaults" do
22
- it "to empty middleware lists" do
23
- expect(subject.middlewares.size).to eq(0)
24
- expect(subject.disabled_middleware.size).to eq(0)
25
- end
26
- end
27
-
28
- describe "use" do
29
- it "allows middleware to be added to the stack" do
30
- middleware = TestMiddleware.new(nil)
31
- subject.use(middleware)
32
- expect(subject.middlewares.size).to eq(1)
33
- expect(subject.middlewares.last).to eq(middleware)
34
- end
35
-
36
- it "doesn't add middleware more than once" do
37
- middleware = TestMiddleware.new(nil)
38
- subject.use(middleware)
39
- expect(subject.middlewares.size).to eq(1)
40
- subject.use(middleware)
41
- expect(subject.middlewares.size).to eq(1)
42
- end
43
- end
44
-
45
- describe "disable" do
46
- it "adds middleware to a disabled list" do
47
- middleware = TestMiddleware.new(nil)
48
- subject.disable(middleware)
49
- expect(subject.disabled_middleware.size).to eq(1)
50
- expect(subject.disabled_middleware.last).to eq(middleware)
51
- end
52
-
53
- it "prevents middleware from being added" do
54
- middleware = TestMiddleware.new(nil)
55
- subject.disable(middleware)
56
- subject.use(middleware)
57
- expect(subject.middlewares.size).to eq(0)
58
- end
59
-
60
- it "removes already added middleware" do
61
- middleware = TestMiddleware.new(nil)
62
- subject.use(middleware)
63
- expect(subject.middlewares.size).to eq(1)
64
- subject.disable(middleware)
65
- expect(subject.middlewares.size).to eq(0)
66
- end
67
- end
68
-
69
- describe "insert_before" do
70
- it "inserts middleware before specified middleware" do
71
- middleware_one = TestMiddleware.new(nil)
72
- middleware_two = TestMiddleware.new(nil)
73
- subject.use(middleware_one)
74
- expect(subject.middlewares.size).to eq(1)
75
- expect(subject.middlewares.first).to eq(middleware_one)
76
- subject.insert_before(middleware_one, middleware_two)
77
- expect(subject.middlewares.size).to eq(2)
78
- expect(subject.middlewares.first).to eq(middleware_two)
79
- end
80
-
81
- it "appends middleware otherwise" do
82
- middleware_one = TestMiddleware.new(nil)
83
- middleware_two = TestMiddleware.new(nil)
84
- subject.use(middleware_one)
85
- expect(subject.middlewares.size).to eq(1)
86
- expect(subject.middlewares.first).to eq(middleware_one)
87
- subject.insert_before(nil, middleware_two)
88
- expect(subject.middlewares.size).to eq(2)
89
- expect(subject.middlewares.first).to eq(middleware_one)
90
- end
91
-
92
- it "accepts an array of middleware to insert before" do
93
- middleware_one = TestMiddleware.new(nil)
94
- middleware_two = TestMiddleware.new(nil)
95
- middleware_three = TestMiddleware.new(nil)
96
- subject.use(middleware_one)
97
- subject.use(middleware_two)
98
- expect(subject.middlewares.size).to eq(2)
99
- expect(subject.middlewares.first).to eq(middleware_one)
100
- subject.insert_before([middleware_one, middleware_two], middleware_three)
101
- expect(subject.middlewares.size).to eq(3)
102
- expect(subject.middlewares.first).to eq(middleware_three)
103
- end
104
- end
105
-
106
- describe "insert_after" do
107
- it "inserts middleware after specified middleware" do
108
- middleware_one = TestMiddleware.new(nil)
109
- middleware_two = TestMiddleware.new(nil)
110
- subject.use(middleware_one)
111
- expect(subject.middlewares.size).to eq(1)
112
- expect(subject.middlewares.first).to eq(middleware_one)
113
- subject.insert_after(middleware_one, middleware_two)
114
- expect(subject.middlewares.size).to eq(2)
115
- expect(subject.middlewares.last).to eq(middleware_two)
116
- end
117
-
118
- it "appends middleware otherwise" do
119
- middleware_one = TestMiddleware.new(nil)
120
- middleware_two = TestMiddleware.new(nil)
121
- subject.use(middleware_one)
122
- expect(subject.middlewares.size).to eq(1)
123
- expect(subject.middlewares.first).to eq(middleware_one)
124
- subject.insert_after(nil, middleware_two)
125
- expect(subject.middlewares.size).to eq(2)
126
- expect(subject.middlewares.first).to eq(middleware_one)
127
- end
128
-
129
- it "accepts an array of middleware to insert after" do
130
- middleware_one = TestMiddleware.new(nil)
131
- middleware_two = TestMiddleware.new(nil)
132
- middleware_three = TestMiddleware.new(nil)
133
- subject.use(middleware_one)
134
- subject.use(middleware_two)
135
- expect(subject.middlewares.size).to eq(2)
136
- expect(subject.middlewares.last).to eq(middleware_two)
137
- subject.insert_after([middleware_one, middleware_two], middleware_three)
138
- expect(subject.middlewares.size).to eq(3)
139
- expect(subject.middlewares.last).to eq(middleware_three)
140
- end
141
- end
142
-
143
- describe "method_missing" do
144
- it "calls send and proxies the method into the array" do
145
- middleware = TestMiddleware.new(nil)
146
- subject.method_missing(:<<, middleware)
147
- expect(subject.middlewares.size).to eq(1)
148
- expect(subject.middlewares.last).to eq(middleware)
149
- end
150
- end
151
- end
@@ -1,332 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "on_error callbacks" do
4
- it "runs callbacks on notify" do
5
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
6
- callback2 = proc {|report| report.add_tab(:significant, { hey: "earth" }) }
7
-
8
- Bugsnag.add_on_error(callback1)
9
- Bugsnag.add_on_error(callback2)
10
-
11
- Bugsnag.notify(RuntimeError.new("Oh no!"))
12
-
13
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
14
- event = get_event_from_payload(payload)
15
-
16
- expect(event["metaData"]["important"]).to eq({ "hello" => "world" })
17
- expect(event["metaData"]["significant"]).to eq({ "hey" => "earth" })
18
- end)
19
- end
20
-
21
- it "can add callbacks in a configure block" do
22
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
23
- callback2 = proc {|report| report.add_tab(:significant, { hey: "earth" }) }
24
-
25
- Bugsnag.configure do |config|
26
- config.add_on_error(callback1)
27
- config.add_on_error(callback2)
28
- end
29
-
30
- Bugsnag.notify(RuntimeError.new("Oh no!"))
31
-
32
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
33
- event = get_event_from_payload(payload)
34
-
35
- expect(event["metaData"]["important"]).to eq({ "hello" => "world" })
36
- expect(event["metaData"]["significant"]).to eq({ "hey" => "earth" })
37
- end)
38
- end
39
-
40
- it "can remove an already registered callback" do
41
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
42
- callback2 = proc {|report| report.add_tab(:significant, { hey: "earth" }) }
43
-
44
- Bugsnag.add_on_error(callback1)
45
- Bugsnag.add_on_error(callback2)
46
-
47
- Bugsnag.remove_on_error(callback1)
48
-
49
- Bugsnag.notify(RuntimeError.new("Oh no!"))
50
-
51
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
52
- event = get_event_from_payload(payload)
53
-
54
- expect(event["metaData"]["important"]).to be_nil
55
- expect(event["metaData"]["significant"]).to eq({ "hey" => "earth" })
56
- end)
57
- end
58
-
59
- it "can remove all registered callbacks" do
60
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
61
- callback2 = proc {|report| report.add_tab(:significant, { hey: "earth" }) }
62
-
63
- Bugsnag.add_on_error(callback1)
64
- Bugsnag.add_on_error(callback2)
65
-
66
- Bugsnag.remove_on_error(callback2)
67
- Bugsnag.remove_on_error(callback1)
68
-
69
- Bugsnag.notify(RuntimeError.new("Oh no!"))
70
-
71
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
72
- event = get_event_from_payload(payload)
73
-
74
- expect(event["metaData"]["important"]).to be_nil
75
- expect(event["metaData"]["significant"]).to be_nil
76
- end)
77
- end
78
-
79
- it "does not remove an identical callback if it is not the same Proc" do
80
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
81
- callback1_duplicate = proc {|report| report.add_tab(:important, { hello: "world" }) }
82
-
83
- Bugsnag.add_on_error(callback1)
84
- Bugsnag.remove_on_error(callback1_duplicate)
85
-
86
- Bugsnag.notify(RuntimeError.new("Oh no!"))
87
-
88
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
89
- event = get_event_from_payload(payload)
90
-
91
- expect(event["metaData"]["important"]).to eq({ "hello" => "world" })
92
- end)
93
- end
94
-
95
- it "can re-add callbacks that have previously been removed" do
96
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
97
- callback2 = proc {|report| report.add_tab(:significant, { hey: "earth" }) }
98
-
99
- Bugsnag.add_on_error(callback1)
100
- Bugsnag.add_on_error(callback2)
101
-
102
- Bugsnag.remove_on_error(callback1)
103
-
104
- Bugsnag.add_on_error(callback1)
105
-
106
- Bugsnag.notify(RuntimeError.new("Oh no!"))
107
-
108
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
109
- event = get_event_from_payload(payload)
110
-
111
- expect(event["metaData"]["important"]).to eq({ "hello" => "world" })
112
- expect(event["metaData"]["significant"]).to eq({ "hey" => "earth" })
113
- end)
114
- end
115
-
116
- it "will only add a callback once" do
117
- called_count = 0
118
-
119
- callback = proc do |report|
120
- called_count += 1
121
-
122
- report.add_tab(:important, { called: called_count })
123
- end
124
-
125
- 1.upto(10) do |i|
126
- Bugsnag.add_on_error(callback)
127
- end
128
-
129
- Bugsnag.notify(RuntimeError.new("Oh no!"))
130
-
131
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
132
- event = get_event_from_payload(payload)
133
-
134
- expect(called_count).to be(1)
135
- expect(event["metaData"]["important"]).to eq({ "called" => 1 })
136
- end)
137
- end
138
-
139
- it "will ignore the report and stop calling callbacks if one returns false" do
140
- logger = spy('logger')
141
- Bugsnag.configuration.logger = logger
142
-
143
- called_count = 0
144
-
145
- callback1 = proc { called_count += 1 }
146
- callback2 = proc { called_count += 1 }
147
- callback3 = proc { false }
148
- callback4 = proc { called_count += 1 }
149
- callback5 = proc { called_count += 1 }
150
-
151
- Bugsnag.add_on_error(callback1)
152
- Bugsnag.add_on_error(callback2)
153
- Bugsnag.add_on_error(callback3)
154
- Bugsnag.add_on_error(callback4)
155
- Bugsnag.add_on_error(callback5)
156
-
157
- Bugsnag.notify(RuntimeError.new("Oh no!"))
158
-
159
- expect(Bugsnag).not_to have_sent_notification
160
- expect(called_count).to be(2)
161
-
162
- expect(logger).to have_received(:debug).with("[Bugsnag]") do |&block|
163
- expect(block.call).to eq("Not notifying RuntimeError due to ignore being signified in user provided middleware")
164
- end
165
- end
166
-
167
- it "callbacks are called in the same order they are added (FIFO)" do
168
- callback1 = proc do |report|
169
- expect(report.meta_data[:important]).to be_nil
170
-
171
- report.add_tab(:important, { magic_number: 9 })
172
- end
173
-
174
- callback2 = proc do |report|
175
- expect(report.meta_data[:important]).to eq({ magic_number: 9 })
176
-
177
- report.add_tab(:important, { magic_number: 99 })
178
- end
179
-
180
- callback3 = proc do |report|
181
- expect(report.meta_data[:important]).to eq({ magic_number: 99 })
182
-
183
- report.add_tab(:important, { magic_number: 999 })
184
- end
185
-
186
- Bugsnag.add_on_error(callback1)
187
- Bugsnag.add_on_error(callback2)
188
- Bugsnag.add_on_error(callback3)
189
-
190
- Bugsnag.notify(RuntimeError.new("Oh no!"))
191
-
192
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
193
- event = get_event_from_payload(payload)
194
-
195
- expect(event["metaData"]["important"]).to eq({ "magic_number" => 999 })
196
- end)
197
- end
198
-
199
- it "callbacks continue being called after a callback raises" do
200
- logger = spy('logger')
201
- Bugsnag.configuration.logger = logger
202
-
203
- callback1 = proc {|report| report.add_tab(:important, { a: "b" }) }
204
- callback2 = proc {|_report| raise "bad things" }
205
- callback3 = proc {|report| report.add_tab(:important, { c: "d" }) }
206
-
207
- Bugsnag.add_on_error(callback1)
208
- Bugsnag.add_on_error(callback2)
209
- Bugsnag.add_on_error(callback3)
210
-
211
- Bugsnag.notify(RuntimeError.new("Oh no!"))
212
-
213
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
214
- event = get_event_from_payload(payload)
215
-
216
- expect(event["metaData"]["important"]).to eq({ "a" => "b", "c" => "d" })
217
- end)
218
-
219
- message_index = 0
220
- expected_messages = [
221
- /^Error occurred in on_error callback: 'bad things'$/,
222
- /^on_error callback stacktrace:/
223
- ]
224
-
225
- expect(logger).to have_received(:warn).with("[Bugsnag]").twice do |&block|
226
- expect(block.call).to match(expected_messages[message_index])
227
- message_index += 1
228
- end
229
- end
230
-
231
- it "runs callbacks even if no other middleware is registered" do
232
- # Reset the middleware stack so any default middleware are removed
233
- Bugsnag.configuration.middleware = Bugsnag::MiddlewareStack.new
234
-
235
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
236
- callback2 = proc {|report| report.add_tab(:significant, { hey: "earth" }) }
237
-
238
- Bugsnag.add_on_error(callback1)
239
- Bugsnag.add_on_error(callback2)
240
-
241
- Bugsnag.notify(RuntimeError.new("Oh no!"))
242
-
243
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
244
- event = get_event_from_payload(payload)
245
-
246
- expect(event["metaData"]["important"]).to eq({ "hello" => "world" })
247
- expect(event["metaData"]["significant"]).to eq({ "hey" => "earth" })
248
- end)
249
- end
250
-
251
- describe "using callbacks across threads" do
252
- it "runs callbacks that are added in different threads" do
253
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
254
- callback2 = proc {|report| report.add_tab(:significant, { hey: "earth" }) }
255
- callback3 = proc {|report| report.add_tab(:crucial, { magic_number: 999 }) }
256
-
257
- Bugsnag.add_on_error(callback1)
258
-
259
- threads = [
260
- Thread.new { Bugsnag.add_on_error(callback2) },
261
- Thread.new { Bugsnag.add_on_error(callback3) }
262
- ]
263
-
264
- threads.each(&:join)
265
-
266
- Bugsnag.notify(RuntimeError.new("Oh no!"))
267
-
268
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
269
- event = get_event_from_payload(payload)
270
-
271
- expect(event["metaData"]["important"]).to eq({ "hello" => "world" })
272
- expect(event["metaData"]["significant"]).to eq({ "hey" => "earth" })
273
- expect(event["metaData"]["crucial"]).to eq({ "magic_number" => 999 })
274
- end)
275
- end
276
-
277
- it "can remove callbacks that are added in different threads" do
278
- callback1 = proc {|report| report.add_tab(:important, { hello: "world" }) }
279
- callback2 = proc {|report| report.add_tab(:significant, { hey: "earth" }) }
280
-
281
- # We need to create & join these one at a time so that callback1 has
282
- # definitely been added before it is removed, otherwise this test will fail
283
- # at random
284
- Thread.new { Bugsnag.add_on_error(callback1) }.join
285
- Thread.new { Bugsnag.remove_on_error(callback1) }.join
286
- Thread.new { Bugsnag.add_on_error(callback2) }.join
287
-
288
- Bugsnag.notify(RuntimeError.new("Oh no!"))
289
-
290
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
291
- event = get_event_from_payload(payload)
292
-
293
- expect(event["metaData"]["important"]).to be_nil
294
- expect(event["metaData"]["significant"]).to eq({ "hey" => "earth" })
295
- end)
296
- end
297
-
298
- it "callbacks are called in FIFO order when added in separate threads" do
299
- callback1 = proc do |report|
300
- expect(report.meta_data[:important]).to be_nil
301
-
302
- report.add_tab(:important, { magic_number: 9 })
303
- end
304
-
305
- callback2 = proc do |report|
306
- expect(report.meta_data[:important]).to eq({ magic_number: 9 })
307
-
308
- report.add_tab(:important, { magic_number: 99 })
309
- end
310
-
311
- callback3 = proc do |report|
312
- expect(report.meta_data[:important]).to eq({ magic_number: 99 })
313
-
314
- report.add_tab(:important, { magic_number: 999 })
315
- end
316
-
317
- # As above, we need to create & join these one at a time so that each
318
- # callback is added in sequence
319
- Thread.new { Bugsnag.add_on_error(callback1) }.join
320
- Thread.new { Bugsnag.add_on_error(callback2) }.join
321
- Thread.new { Bugsnag.add_on_error(callback3) }.join
322
-
323
- Bugsnag.notify(RuntimeError.new("Oh no!"))
324
-
325
- expect(Bugsnag).to(have_sent_notification do |payload, _headers|
326
- event = get_event_from_payload(payload)
327
-
328
- expect(event["metaData"]["important"]).to eq({ "magic_number" => 999 })
329
- end)
330
- end
331
- end
332
- end