passenger 4.0.60 → 5.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (1301) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +5 -0
  5. data/.travis.yml +3 -2
  6. data/CHANGELOG +31 -53
  7. data/CONTRIBUTING.md +4 -4
  8. data/CONTRIBUTORS +0 -1
  9. data/Gemfile +18 -0
  10. data/Gemfile.lock +41 -0
  11. data/Rakefile +16 -0
  12. data/bin/passenger +2 -2
  13. data/bin/passenger-install-apache2-module +12 -12
  14. data/bin/passenger-install-nginx-module +9 -14
  15. data/bin/passenger-status +125 -87
  16. data/build/agents.rb +112 -140
  17. data/build/apache2.rb +4 -9
  18. data/build/basics.rb +5 -3
  19. data/build/common_library.rb +1 -0
  20. data/build/cxx_tests.rb +69 -47
  21. data/build/debian.rb +4 -2
  22. data/build/documentation.rb +1 -0
  23. data/build/integration_tests.rb +28 -43
  24. data/build/misc.rb +0 -18
  25. data/build/nginx.rb +2 -6
  26. data/build/packaging.rb +33 -22
  27. data/build/preprocessor.rb +2 -4
  28. data/build/ruby_tests.rb +7 -26
  29. data/build/test_basics.rb +24 -25
  30. data/debian.template/control.template +2 -2
  31. data/debian.template/locations.ini.template +2 -3
  32. data/debian.template/passenger.install.template +2 -2
  33. data/debian.template/rules.template +1 -1
  34. data/dev/ci/run_jenkins.sh +0 -1
  35. data/dev/ci/run_rpm_tests.sh +3 -0
  36. data/dev/ci/run_travis.sh +63 -17
  37. data/dev/copy_boost_headers +22 -6
  38. data/dev/ruby_server.rb +244 -0
  39. data/dev/vagrant/provision.sh +3 -1
  40. data/doc/DebuggingAndStressTesting.md +3 -3
  41. data/doc/Design and Architecture.txt +5 -6
  42. data/doc/Packaging.txt.md +35 -6
  43. data/doc/ServerOptimizationGuide.txt.md +339 -0
  44. data/doc/Users guide Apache.idmap.txt +177 -187
  45. data/doc/Users guide Apache.txt +143 -219
  46. data/doc/Users guide Nginx.idmap.txt +166 -166
  47. data/doc/Users guide Nginx.txt +265 -223
  48. data/doc/Users guide Standalone.txt +3 -3
  49. data/doc/templates/markdown.html.erb +37 -6
  50. data/doc/users_guide_snippets/environment_variables.txt +1 -1
  51. data/doc/users_guide_snippets/support_information.txt +1 -1
  52. data/doc/users_guide_snippets/tips.txt +2 -2
  53. data/ext/apache2/Configuration.cpp +23 -81
  54. data/ext/apache2/Configuration.hpp +18 -92
  55. data/ext/apache2/ConfigurationCommands.cpp +64 -15
  56. data/ext/apache2/ConfigurationCommands.cpp.erb +8 -4
  57. data/ext/apache2/ConfigurationFields.hpp +12 -0
  58. data/ext/apache2/ConfigurationSetters.cpp +73 -1
  59. data/ext/apache2/ConfigurationSetters.cpp.erb +3 -2
  60. data/ext/apache2/CreateDirConfig.cpp +6 -0
  61. data/ext/apache2/DirectoryMapper.h +11 -6
  62. data/ext/apache2/Hooks.cpp +291 -408
  63. data/ext/apache2/MergeDirConfig.cpp +42 -0
  64. data/ext/apache2/SetHeaders.cpp +61 -16
  65. data/ext/apache2/SetHeaders.cpp.erb +9 -7
  66. data/ext/boost/container/allocator_traits.hpp +400 -0
  67. data/ext/boost/container/deque.hpp +2012 -0
  68. data/ext/boost/container/detail/adaptive_node_pool_impl.hpp +874 -0
  69. data/ext/boost/container/detail/advanced_insert_int.hpp +369 -0
  70. data/ext/boost/container/detail/algorithms.hpp +84 -0
  71. data/ext/boost/container/detail/allocation_type.hpp +54 -0
  72. data/ext/boost/container/detail/allocator_version_traits.hpp +163 -0
  73. data/ext/boost/container/detail/config_begin.hpp +49 -0
  74. data/ext/boost/container/detail/config_end.hpp +17 -0
  75. data/ext/boost/container/detail/destroyers.hpp +365 -0
  76. data/ext/boost/container/detail/flat_tree.hpp +1055 -0
  77. data/ext/boost/container/detail/function_detector.hpp +88 -0
  78. data/ext/boost/container/detail/iterators.hpp +611 -0
  79. data/ext/boost/container/detail/math_functions.hpp +113 -0
  80. data/ext/boost/container/detail/memory_util.hpp +83 -0
  81. data/ext/boost/container/detail/mpl.hpp +160 -0
  82. data/ext/boost/container/detail/multiallocation_chain.hpp +286 -0
  83. data/ext/boost/container/detail/node_alloc_holder.hpp +386 -0
  84. data/ext/boost/container/detail/node_pool_impl.hpp +365 -0
  85. data/ext/boost/container/detail/pair.hpp +354 -0
  86. data/ext/boost/container/detail/pool_common.hpp +52 -0
  87. data/ext/boost/container/detail/preprocessor.hpp +232 -0
  88. data/ext/boost/container/detail/transform_iterator.hpp +176 -0
  89. data/ext/boost/container/detail/tree.hpp +1134 -0
  90. data/ext/boost/container/detail/type_traits.hpp +210 -0
  91. data/ext/boost/container/detail/utilities.hpp +1141 -0
  92. data/ext/boost/container/detail/value_init.hpp +45 -0
  93. data/ext/boost/container/detail/variadic_templates_tools.hpp +153 -0
  94. data/ext/boost/container/detail/version_type.hpp +92 -0
  95. data/ext/boost/container/detail/workaround.hpp +44 -0
  96. data/ext/boost/container/flat_map.hpp +1674 -0
  97. data/ext/boost/container/flat_set.hpp +1408 -0
  98. data/ext/boost/container/list.hpp +1475 -0
  99. data/ext/boost/container/map.hpp +1508 -0
  100. data/ext/boost/container/scoped_allocator.hpp +1503 -0
  101. data/ext/boost/container/scoped_allocator_fwd.hpp +83 -0
  102. data/ext/boost/container/set.hpp +1280 -0
  103. data/ext/boost/container/slist.hpp +1706 -0
  104. data/ext/boost/container/stable_vector.hpp +1869 -0
  105. data/ext/boost/container/static_vector.hpp +1053 -0
  106. data/ext/boost/container/string.hpp +2856 -0
  107. data/ext/boost/container/throw_exception.hpp +110 -0
  108. data/ext/boost/container/vector.hpp +2671 -0
  109. data/ext/boost/detail/is_xxx.hpp +61 -0
  110. data/ext/boost/intrusive/any_hook.hpp +344 -0
  111. data/ext/boost/intrusive/avl_set.hpp +2528 -0
  112. data/ext/boost/intrusive/avl_set_hook.hpp +297 -0
  113. data/ext/boost/intrusive/avltree.hpp +1786 -0
  114. data/ext/boost/intrusive/avltree_algorithms.hpp +968 -0
  115. data/ext/boost/intrusive/bs_set_hook.hpp +296 -0
  116. data/ext/boost/intrusive/circular_list_algorithms.hpp +413 -0
  117. data/ext/boost/intrusive/circular_slist_algorithms.hpp +404 -0
  118. data/ext/boost/intrusive/derivation_value_traits.hpp +70 -0
  119. data/ext/boost/intrusive/detail/any_node_and_algorithms.hpp +297 -0
  120. data/ext/boost/intrusive/detail/assert.hpp +41 -0
  121. data/ext/boost/intrusive/detail/avltree_node.hpp +197 -0
  122. data/ext/boost/intrusive/detail/clear_on_destructor_base.hpp +36 -0
  123. data/ext/boost/intrusive/detail/common_slist_algorithms.hpp +102 -0
  124. data/ext/boost/intrusive/detail/config_begin.hpp +52 -0
  125. data/ext/boost/intrusive/detail/config_end.hpp +15 -0
  126. data/ext/boost/intrusive/detail/ebo_functor_holder.hpp +95 -0
  127. data/ext/boost/intrusive/detail/function_detector.hpp +88 -0
  128. data/ext/boost/intrusive/detail/generic_hook.hpp +209 -0
  129. data/ext/boost/intrusive/detail/has_member_function_callable_with.hpp +357 -0
  130. data/ext/boost/intrusive/detail/hashtable_node.hpp +249 -0
  131. data/ext/boost/intrusive/detail/is_stateful_value_traits.hpp +77 -0
  132. data/ext/boost/intrusive/detail/list_node.hpp +196 -0
  133. data/ext/boost/intrusive/detail/memory_util.hpp +288 -0
  134. data/ext/boost/intrusive/detail/mpl.hpp +383 -0
  135. data/ext/boost/intrusive/detail/parent_from_member.hpp +97 -0
  136. data/ext/boost/intrusive/detail/preprocessor.hpp +52 -0
  137. data/ext/boost/intrusive/detail/rbtree_node.hpp +201 -0
  138. data/ext/boost/intrusive/detail/slist_node.hpp +166 -0
  139. data/ext/boost/intrusive/detail/transform_iterator.hpp +173 -0
  140. data/ext/boost/intrusive/detail/tree_algorithms.hpp +1742 -0
  141. data/ext/boost/intrusive/detail/tree_node.hpp +199 -0
  142. data/ext/boost/intrusive/detail/utilities.hpp +858 -0
  143. data/ext/boost/intrusive/detail/workaround.hpp +22 -0
  144. data/ext/boost/intrusive/hashtable.hpp +3110 -0
  145. data/ext/boost/intrusive/intrusive_fwd.hpp +542 -0
  146. data/ext/boost/intrusive/linear_slist_algorithms.hpp +327 -0
  147. data/ext/boost/intrusive/link_mode.hpp +46 -0
  148. data/ext/boost/intrusive/list.hpp +1525 -0
  149. data/ext/boost/intrusive/list_hook.hpp +290 -0
  150. data/ext/boost/intrusive/member_value_traits.hpp +70 -0
  151. data/ext/boost/intrusive/options.hpp +810 -0
  152. data/ext/boost/intrusive/parent_from_member.hpp +42 -0
  153. data/ext/boost/intrusive/pointer_plus_bits.hpp +86 -0
  154. data/ext/boost/intrusive/pointer_traits.hpp +265 -0
  155. data/ext/boost/intrusive/priority_compare.hpp +39 -0
  156. data/ext/boost/intrusive/rbtree.hpp +1785 -0
  157. data/ext/boost/intrusive/rbtree_algorithms.hpp +934 -0
  158. data/ext/boost/intrusive/set.hpp +2554 -0
  159. data/ext/boost/intrusive/set_hook.hpp +300 -0
  160. data/ext/boost/intrusive/sg_set.hpp +2601 -0
  161. data/ext/boost/intrusive/sgtree.hpp +2009 -0
  162. data/ext/boost/intrusive/sgtree_algorithms.hpp +807 -0
  163. data/ext/boost/intrusive/slist.hpp +2219 -0
  164. data/ext/boost/intrusive/slist_hook.hpp +294 -0
  165. data/ext/boost/intrusive/splay_set.hpp +2575 -0
  166. data/ext/boost/intrusive/splay_set_hook.hpp +292 -0
  167. data/ext/boost/intrusive/splaytree.hpp +1784 -0
  168. data/ext/boost/intrusive/splaytree_algorithms.hpp +1008 -0
  169. data/ext/boost/intrusive/treap.hpp +1882 -0
  170. data/ext/boost/intrusive/treap_algorithms.hpp +919 -0
  171. data/ext/boost/intrusive/treap_set.hpp +2751 -0
  172. data/ext/boost/intrusive/trivial_value_traits.hpp +46 -0
  173. data/ext/boost/intrusive/unordered_set.hpp +2115 -0
  174. data/ext/boost/intrusive/unordered_set_hook.hpp +434 -0
  175. data/ext/boost/intrusive_ptr.hpp +18 -0
  176. data/ext/boost/math/common_factor_ct.hpp +180 -0
  177. data/ext/boost/math_fwd.hpp +108 -0
  178. data/ext/boost/move/detail/move_helpers.hpp +175 -0
  179. data/ext/boost/parameter.hpp +21 -0
  180. data/ext/boost/parameter/aux_/arg_list.hpp +459 -0
  181. data/ext/boost/parameter/aux_/cast.hpp +143 -0
  182. data/ext/boost/parameter/aux_/default.hpp +69 -0
  183. data/ext/boost/parameter/aux_/is_maybe.hpp +26 -0
  184. data/ext/boost/parameter/aux_/maybe.hpp +120 -0
  185. data/ext/boost/parameter/aux_/overloads.hpp +88 -0
  186. data/ext/boost/parameter/aux_/parameter_requirements.hpp +25 -0
  187. data/ext/boost/parameter/aux_/parenthesized_type.hpp +119 -0
  188. data/ext/boost/parameter/aux_/preprocessor/flatten.hpp +115 -0
  189. data/ext/boost/parameter/aux_/preprocessor/for_each.hpp +103 -0
  190. data/ext/boost/parameter/aux_/python/invoker.hpp +132 -0
  191. data/ext/boost/parameter/aux_/python/invoker_iterate.hpp +93 -0
  192. data/ext/boost/parameter/aux_/result_of0.hpp +36 -0
  193. data/ext/boost/parameter/aux_/set.hpp +67 -0
  194. data/ext/boost/parameter/aux_/tag.hpp +38 -0
  195. data/ext/boost/parameter/aux_/tagged_argument.hpp +188 -0
  196. data/ext/boost/parameter/aux_/template_keyword.hpp +47 -0
  197. data/ext/boost/parameter/aux_/unwrap_cv_reference.hpp +97 -0
  198. data/ext/boost/parameter/aux_/void.hpp +29 -0
  199. data/ext/boost/parameter/aux_/yesno.hpp +26 -0
  200. data/ext/boost/parameter/binding.hpp +106 -0
  201. data/ext/boost/parameter/config.hpp +14 -0
  202. data/ext/boost/parameter/keyword.hpp +152 -0
  203. data/ext/boost/parameter/macros.hpp +99 -0
  204. data/ext/boost/parameter/match.hpp +55 -0
  205. data/ext/boost/parameter/name.hpp +156 -0
  206. data/ext/boost/parameter/parameters.hpp +931 -0
  207. data/ext/boost/parameter/preprocessor.hpp +1178 -0
  208. data/ext/boost/parameter/python.hpp +735 -0
  209. data/ext/boost/parameter/value_type.hpp +108 -0
  210. data/ext/boost/pool/detail/for.m4 +107 -0
  211. data/ext/boost/pool/detail/guard.hpp +69 -0
  212. data/ext/boost/pool/detail/mutex.hpp +42 -0
  213. data/ext/boost/pool/detail/pool_construct.bat +24 -0
  214. data/ext/boost/pool/detail/pool_construct.ipp +852 -0
  215. data/ext/boost/pool/detail/pool_construct.m4 +84 -0
  216. data/ext/boost/pool/detail/pool_construct.sh +12 -0
  217. data/ext/boost/pool/detail/pool_construct_simple.bat +25 -0
  218. data/ext/boost/pool/detail/pool_construct_simple.ipp +43 -0
  219. data/ext/boost/pool/detail/pool_construct_simple.m4 +72 -0
  220. data/ext/boost/pool/detail/pool_construct_simple.sh +12 -0
  221. data/ext/boost/pool/object_pool.hpp +287 -0
  222. data/ext/boost/pool/pool.hpp +1024 -0
  223. data/ext/boost/pool/pool_alloc.hpp +488 -0
  224. data/ext/boost/pool/poolfwd.hpp +82 -0
  225. data/ext/boost/pool/simple_segregated_storage.hpp +377 -0
  226. data/ext/boost/pool/singleton_pool.hpp +251 -0
  227. data/ext/boost/preprocessor/arithmetic.hpp +25 -0
  228. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  229. data/ext/boost/preprocessor/arithmetic/div.hpp +39 -0
  230. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  231. data/ext/boost/preprocessor/arithmetic/mul.hpp +53 -0
  232. data/ext/boost/preprocessor/array.hpp +32 -0
  233. data/ext/boost/preprocessor/array/enum.hpp +33 -0
  234. data/ext/boost/preprocessor/array/insert.hpp +55 -0
  235. data/ext/boost/preprocessor/array/pop_back.hpp +37 -0
  236. data/ext/boost/preprocessor/array/pop_front.hpp +38 -0
  237. data/ext/boost/preprocessor/array/push_back.hpp +33 -0
  238. data/ext/boost/preprocessor/array/push_front.hpp +33 -0
  239. data/ext/boost/preprocessor/array/remove.hpp +54 -0
  240. data/ext/boost/preprocessor/array/replace.hpp +49 -0
  241. data/ext/boost/preprocessor/array/reverse.hpp +29 -0
  242. data/ext/boost/preprocessor/array/to_list.hpp +33 -0
  243. data/ext/boost/preprocessor/array/to_seq.hpp +33 -0
  244. data/ext/boost/preprocessor/array/to_tuple.hpp +22 -0
  245. data/ext/boost/preprocessor/assert_msg.hpp +17 -0
  246. data/ext/boost/preprocessor/comma.hpp +17 -0
  247. data/ext/boost/preprocessor/comparison.hpp +24 -0
  248. data/ext/boost/preprocessor/comparison/equal.hpp +34 -0
  249. data/ext/boost/preprocessor/comparison/greater.hpp +38 -0
  250. data/ext/boost/preprocessor/comparison/greater_equal.hpp +38 -0
  251. data/ext/boost/preprocessor/comparison/less.hpp +46 -0
  252. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  253. data/ext/boost/preprocessor/comparison/not_equal.hpp +814 -0
  254. data/ext/boost/preprocessor/config/limits.hpp +30 -0
  255. data/ext/boost/preprocessor/control.hpp +22 -0
  256. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  257. data/ext/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
  258. data/ext/boost/preprocessor/control/detail/edg/while.hpp +534 -0
  259. data/ext/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
  260. data/ext/boost/preprocessor/control/expr_if.hpp +30 -0
  261. data/ext/boost/preprocessor/debug.hpp +18 -0
  262. data/ext/boost/preprocessor/debug/assert.hpp +44 -0
  263. data/ext/boost/preprocessor/debug/line.hpp +35 -0
  264. data/ext/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
  265. data/ext/boost/preprocessor/detail/is_nullary.hpp +30 -0
  266. data/ext/boost/preprocessor/detail/is_unary.hpp +30 -0
  267. data/ext/boost/preprocessor/detail/null.hpp +17 -0
  268. data/ext/boost/preprocessor/detail/split.hpp +35 -0
  269. data/ext/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
  270. data/ext/boost/preprocessor/enum_shifted.hpp +17 -0
  271. data/ext/boost/preprocessor/expand.hpp +17 -0
  272. data/ext/boost/preprocessor/expr_if.hpp +17 -0
  273. data/ext/boost/preprocessor/facilities.hpp +23 -0
  274. data/ext/boost/preprocessor/facilities/apply.hpp +34 -0
  275. data/ext/boost/preprocessor/facilities/expand.hpp +28 -0
  276. data/ext/boost/preprocessor/facilities/is_1.hpp +23 -0
  277. data/ext/boost/preprocessor/facilities/is_empty.hpp +43 -0
  278. data/ext/boost/preprocessor/facilities/is_empty_or_1.hpp +30 -0
  279. data/ext/boost/preprocessor/for.hpp +17 -0
  280. data/ext/boost/preprocessor/if.hpp +17 -0
  281. data/ext/boost/preprocessor/iteration.hpp +19 -0
  282. data/ext/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
  283. data/ext/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
  284. data/ext/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
  285. data/ext/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
  286. data/ext/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
  287. data/ext/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
  288. data/ext/boost/preprocessor/iteration/detail/finish.hpp +99 -0
  289. data/ext/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
  290. data/ext/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
  291. data/ext/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
  292. data/ext/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
  293. data/ext/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
  294. data/ext/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
  295. data/ext/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
  296. data/ext/boost/preprocessor/iteration/detail/local.hpp +812 -0
  297. data/ext/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
  298. data/ext/boost/preprocessor/iteration/detail/self.hpp +21 -0
  299. data/ext/boost/preprocessor/iteration/detail/start.hpp +99 -0
  300. data/ext/boost/preprocessor/iteration/local.hpp +26 -0
  301. data/ext/boost/preprocessor/iteration/self.hpp +19 -0
  302. data/ext/boost/preprocessor/library.hpp +36 -0
  303. data/ext/boost/preprocessor/limits.hpp +17 -0
  304. data/ext/boost/preprocessor/list.hpp +37 -0
  305. data/ext/boost/preprocessor/list/at.hpp +39 -0
  306. data/ext/boost/preprocessor/list/cat.hpp +42 -0
  307. data/ext/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
  308. data/ext/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
  309. data/ext/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
  310. data/ext/boost/preprocessor/list/enum.hpp +41 -0
  311. data/ext/boost/preprocessor/list/filter.hpp +54 -0
  312. data/ext/boost/preprocessor/list/first_n.hpp +58 -0
  313. data/ext/boost/preprocessor/list/for_each.hpp +49 -0
  314. data/ext/boost/preprocessor/list/for_each_product.hpp +141 -0
  315. data/ext/boost/preprocessor/list/rest_n.hpp +55 -0
  316. data/ext/boost/preprocessor/list/size.hpp +58 -0
  317. data/ext/boost/preprocessor/list/to_array.hpp +123 -0
  318. data/ext/boost/preprocessor/list/to_seq.hpp +32 -0
  319. data/ext/boost/preprocessor/list/to_tuple.hpp +38 -0
  320. data/ext/boost/preprocessor/logical.hpp +29 -0
  321. data/ext/boost/preprocessor/logical/bitnor.hpp +38 -0
  322. data/ext/boost/preprocessor/logical/bitor.hpp +38 -0
  323. data/ext/boost/preprocessor/logical/bitxor.hpp +38 -0
  324. data/ext/boost/preprocessor/logical/nor.hpp +30 -0
  325. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  326. data/ext/boost/preprocessor/logical/or.hpp +30 -0
  327. data/ext/boost/preprocessor/logical/xor.hpp +30 -0
  328. data/ext/boost/preprocessor/max.hpp +17 -0
  329. data/ext/boost/preprocessor/min.hpp +17 -0
  330. data/ext/boost/preprocessor/punctuation.hpp +20 -0
  331. data/ext/boost/preprocessor/punctuation/paren_if.hpp +38 -0
  332. data/ext/boost/preprocessor/repeat_3rd.hpp +17 -0
  333. data/ext/boost/preprocessor/repeat_from_to.hpp +17 -0
  334. data/ext/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
  335. data/ext/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
  336. data/ext/boost/preprocessor/repetition.hpp +32 -0
  337. data/ext/boost/preprocessor/repetition/deduce_r.hpp +22 -0
  338. data/ext/boost/preprocessor/repetition/deduce_z.hpp +22 -0
  339. data/ext/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
  340. data/ext/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
  341. data/ext/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
  342. data/ext/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
  343. data/ext/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
  344. data/ext/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
  345. data/ext/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
  346. data/ext/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
  347. data/ext/boost/preprocessor/selection.hpp +18 -0
  348. data/ext/boost/preprocessor/selection/max.hpp +39 -0
  349. data/ext/boost/preprocessor/selection/min.hpp +39 -0
  350. data/ext/boost/preprocessor/seq.hpp +43 -0
  351. data/ext/boost/preprocessor/seq/cat.hpp +49 -0
  352. data/ext/boost/preprocessor/seq/detail/binary_transform.hpp +40 -0
  353. data/ext/boost/preprocessor/seq/detail/split.hpp +284 -0
  354. data/ext/boost/preprocessor/seq/filter.hpp +54 -0
  355. data/ext/boost/preprocessor/seq/first_n.hpp +30 -0
  356. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  357. data/ext/boost/preprocessor/seq/fold_right.hpp +288 -0
  358. data/ext/boost/preprocessor/seq/for_each.hpp +60 -0
  359. data/ext/boost/preprocessor/seq/for_each_product.hpp +126 -0
  360. data/ext/boost/preprocessor/seq/insert.hpp +28 -0
  361. data/ext/boost/preprocessor/seq/pop_back.hpp +29 -0
  362. data/ext/boost/preprocessor/seq/pop_front.hpp +27 -0
  363. data/ext/boost/preprocessor/seq/push_back.hpp +19 -0
  364. data/ext/boost/preprocessor/seq/push_front.hpp +19 -0
  365. data/ext/boost/preprocessor/seq/remove.hpp +29 -0
  366. data/ext/boost/preprocessor/seq/replace.hpp +29 -0
  367. data/ext/boost/preprocessor/seq/rest_n.hpp +30 -0
  368. data/ext/boost/preprocessor/seq/reverse.hpp +39 -0
  369. data/ext/boost/preprocessor/seq/subseq.hpp +28 -0
  370. data/ext/boost/preprocessor/seq/to_array.hpp +28 -0
  371. data/ext/boost/preprocessor/seq/to_list.hpp +29 -0
  372. data/ext/boost/preprocessor/seq/to_tuple.hpp +27 -0
  373. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  374. data/ext/boost/preprocessor/slot.hpp +17 -0
  375. data/ext/boost/preprocessor/slot/counter.hpp +25 -0
  376. data/ext/boost/preprocessor/slot/detail/counter.hpp +269 -0
  377. data/ext/boost/preprocessor/slot/detail/slot1.hpp +267 -0
  378. data/ext/boost/preprocessor/slot/detail/slot2.hpp +267 -0
  379. data/ext/boost/preprocessor/slot/detail/slot3.hpp +267 -0
  380. data/ext/boost/preprocessor/slot/detail/slot4.hpp +267 -0
  381. data/ext/boost/preprocessor/slot/detail/slot5.hpp +267 -0
  382. data/ext/boost/preprocessor/tuple.hpp +28 -0
  383. data/ext/boost/preprocessor/tuple/enum.hpp +22 -0
  384. data/ext/boost/preprocessor/tuple/reverse.hpp +114 -0
  385. data/ext/boost/preprocessor/tuple/size.hpp +28 -0
  386. data/ext/boost/preprocessor/tuple/to_array.hpp +37 -0
  387. data/ext/boost/preprocessor/tuple/to_seq.hpp +114 -0
  388. data/ext/boost/preprocessor/variadic.hpp +23 -0
  389. data/ext/boost/preprocessor/variadic/to_array.hpp +32 -0
  390. data/ext/boost/preprocessor/variadic/to_list.hpp +25 -0
  391. data/ext/boost/preprocessor/variadic/to_seq.hpp +25 -0
  392. data/ext/boost/preprocessor/variadic/to_tuple.hpp +24 -0
  393. data/ext/boost/preprocessor/while.hpp +17 -0
  394. data/ext/boost/preprocessor/wstringize.hpp +29 -0
  395. data/ext/boost/smart_ptr/intrusive_ptr.hpp +324 -0
  396. data/ext/common/AccountsDatabase.h +3 -4
  397. data/ext/common/AgentsStarter.cpp +12 -15
  398. data/ext/common/AgentsStarter.h +54 -120
  399. data/ext/common/ApplicationPool2/AppTypes.cpp +12 -5
  400. data/ext/common/ApplicationPool2/AppTypes.h +21 -14
  401. data/ext/common/ApplicationPool2/Common.h +36 -19
  402. data/ext/common/ApplicationPool2/DirectSpawner.h +15 -16
  403. data/ext/common/ApplicationPool2/DummySpawner.h +9 -8
  404. data/ext/common/ApplicationPool2/ErrorRenderer.h +1 -1
  405. data/ext/common/ApplicationPool2/Group.h +304 -171
  406. data/ext/common/ApplicationPool2/Implementation.cpp +234 -125
  407. data/ext/common/ApplicationPool2/Options.h +50 -62
  408. data/ext/common/ApplicationPool2/Pool.h +285 -189
  409. data/ext/common/ApplicationPool2/Process.h +126 -115
  410. data/ext/common/ApplicationPool2/Session.h +70 -30
  411. data/ext/common/ApplicationPool2/SmartSpawner.h +19 -18
  412. data/ext/common/ApplicationPool2/Socket.h +57 -43
  413. data/ext/common/ApplicationPool2/SpawnObject.h +83 -0
  414. data/ext/common/ApplicationPool2/Spawner.h +59 -38
  415. data/ext/common/ApplicationPool2/SpawnerFactory.h +8 -14
  416. data/ext/common/ApplicationPool2/SuperGroup.h +69 -40
  417. data/ext/common/BackgroundEventLoop.cpp +48 -1
  418. data/ext/common/BackgroundEventLoop.h +3 -1
  419. data/ext/common/Constants.h +30 -8
  420. data/ext/common/DataStructures/HashedStaticString.h +103 -0
  421. data/ext/common/DataStructures/LString.h +396 -0
  422. data/ext/common/DataStructures/StringKeyTable.h +588 -0
  423. data/ext/common/EventedMessageServer.h +1 -0
  424. data/ext/common/FileDescriptor.h +5 -0
  425. data/ext/common/InstanceDirectory.h +240 -0
  426. data/ext/common/Logging.cpp +38 -13
  427. data/ext/common/Logging.h +53 -22
  428. data/ext/common/MemoryKit/mbuf.cpp +413 -0
  429. data/ext/common/MemoryKit/mbuf.h +266 -0
  430. data/ext/common/MemoryKit/palloc.cpp +337 -0
  431. data/ext/common/MemoryKit/palloc.h +121 -0
  432. data/ext/common/ResourceLocator.h +62 -6
  433. data/ext/common/SafeLibev.h +4 -4
  434. data/ext/common/ServerKit/AcceptLoadBalancer.h +275 -0
  435. data/ext/common/ServerKit/Channel.h +747 -0
  436. data/ext/common/ServerKit/Client.h +166 -0
  437. data/ext/common/ServerKit/ClientRef.h +130 -0
  438. data/ext/common/ServerKit/Context.h +129 -0
  439. data/ext/common/ServerKit/Errors.h +103 -0
  440. data/ext/common/ServerKit/FdSinkChannel.h +206 -0
  441. data/ext/common/ServerKit/FdSourceChannel.h +230 -0
  442. data/ext/common/ServerKit/FileBufferedChannel.h +1399 -0
  443. data/ext/common/ServerKit/FileBufferedFdSinkChannel.h +228 -0
  444. data/ext/common/ServerKit/HeaderTable.h +472 -0
  445. data/ext/common/ServerKit/Hooks.h +79 -0
  446. data/ext/common/ServerKit/HttpChunkedBodyParser.h +289 -0
  447. data/ext/common/ServerKit/HttpChunkedBodyParserState.h +70 -0
  448. data/ext/common/ServerKit/HttpClient.h +94 -0
  449. data/ext/common/ServerKit/HttpHeaderParser.h +477 -0
  450. data/ext/common/ServerKit/HttpHeaderParserState.h +60 -0
  451. data/ext/common/ServerKit/HttpRequest.h +276 -0
  452. data/ext/common/ServerKit/HttpRequestRef.h +130 -0
  453. data/ext/common/ServerKit/HttpServer.h +1152 -0
  454. data/ext/common/ServerKit/Implementation.cpp +47 -0
  455. data/ext/common/ServerKit/Server.h +1040 -0
  456. data/ext/common/ServerKit/http_parser.cpp +2259 -0
  457. data/ext/common/ServerKit/http_parser.h +330 -0
  458. data/ext/common/StaticString.h +8 -0
  459. data/ext/common/Utils.cpp +14 -12
  460. data/ext/common/Utils.h +9 -103
  461. data/ext/common/Utils/BufferedIO.h +1 -0
  462. data/ext/common/Utils/CachedFileStat.hpp +1 -7
  463. data/ext/common/Utils/DateParsing.h +379 -0
  464. data/ext/common/Utils/FileChangeChecker.h +3 -9
  465. data/ext/common/Utils/Hasher.cpp +52 -0
  466. data/ext/common/Utils/Hasher.h +58 -0
  467. data/ext/common/Utils/IOUtils.cpp +62 -62
  468. data/ext/common/Utils/JsonUtils.h +21 -0
  469. data/ext/common/Utils/OptionParsing.h +75 -0
  470. data/ext/common/Utils/StrIntUtils.cpp +112 -19
  471. data/ext/common/Utils/StrIntUtils.h +52 -12
  472. data/ext/common/Utils/StrIntUtilsNoStrictAliasing.cpp +174 -0
  473. data/ext/common/Utils/VariantMap.h +18 -7
  474. data/ext/common/Utils/modp_b64.cpp +290 -0
  475. data/ext/common/Utils/modp_b64.h +241 -0
  476. data/ext/common/Utils/modp_b64_data.h +479 -0
  477. data/ext/common/Utils/sysqueue.h +811 -0
  478. data/ext/common/agents/Base.cpp +71 -98
  479. data/ext/common/agents/Base.h +11 -3
  480. data/ext/common/agents/HelperAgent/AdminServer.h +690 -0
  481. data/ext/common/agents/HelperAgent/Main.cpp +899 -487
  482. data/ext/common/agents/HelperAgent/OptionParser.h +311 -0
  483. data/ext/common/agents/HelperAgent/RequestHandler.h +315 -2548
  484. data/ext/common/agents/HelperAgent/RequestHandler/AppResponse.h +225 -0
  485. data/ext/common/agents/HelperAgent/RequestHandler/BufferBody.cpp +93 -0
  486. data/ext/common/agents/HelperAgent/RequestHandler/CheckoutSession.cpp +346 -0
  487. data/ext/common/agents/HelperAgent/RequestHandler/Client.h +54 -0
  488. data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +846 -0
  489. data/ext/common/agents/HelperAgent/RequestHandler/Hooks.cpp +231 -0
  490. data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +434 -0
  491. data/ext/common/agents/HelperAgent/RequestHandler/Request.h +149 -0
  492. data/ext/common/agents/HelperAgent/RequestHandler/SendRequest.cpp +887 -0
  493. data/ext/common/agents/HelperAgent/RequestHandler/TurboCaching.h +293 -0
  494. data/ext/common/agents/HelperAgent/RequestHandler/Utils.cpp +301 -0
  495. data/ext/common/agents/HelperAgent/ResponseCache.h +624 -0
  496. data/ext/common/agents/HelperAgent/SystemMetricsTool.cpp +21 -23
  497. data/ext/common/agents/LoggingAgent/AdminServer.h +369 -0
  498. data/ext/common/agents/LoggingAgent/LoggingServer.h +1 -0
  499. data/ext/common/agents/LoggingAgent/Main.cpp +422 -215
  500. data/ext/common/agents/LoggingAgent/OptionParser.h +167 -0
  501. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  502. data/ext/common/agents/Main.cpp +107 -0
  503. data/ext/common/agents/SpawnPreparer/Main.cpp +207 -0
  504. data/ext/common/agents/TempDirToucher/Main.cpp +429 -0
  505. data/ext/common/agents/Watchdog/AdminServer.h +390 -0
  506. data/ext/common/agents/Watchdog/AgentWatcher.cpp +7 -5
  507. data/ext/common/agents/Watchdog/HelperAgentWatcher.cpp +18 -39
  508. data/ext/common/agents/Watchdog/InstanceDirToucher.cpp +116 -0
  509. data/ext/common/agents/Watchdog/LoggingAgentWatcher.cpp +13 -17
  510. data/ext/common/agents/Watchdog/Main.cpp +743 -202
  511. data/ext/libeio/eio.c +17 -0
  512. data/ext/libeio/eio.h +2 -0
  513. data/ext/nginx/CacheLocationConfig.c +177 -198
  514. data/ext/nginx/CacheLocationConfig.c.erb +35 -22
  515. data/ext/nginx/Configuration.c +402 -236
  516. data/ext/nginx/Configuration.h +12 -5
  517. data/ext/nginx/ConfigurationCommands.c +35 -15
  518. data/ext/nginx/ConfigurationCommands.c.erb +4 -4
  519. data/ext/nginx/ConfigurationFields.h +9 -5
  520. data/ext/nginx/ConfigurationFields.h.erb +3 -1
  521. data/ext/nginx/ContentHandler.c +393 -362
  522. data/ext/nginx/CreateLocationConfig.c +8 -4
  523. data/ext/nginx/CreateLocationConfig.c.erb +8 -3
  524. data/ext/nginx/MergeLocationConfig.c +36 -6
  525. data/ext/nginx/MergeLocationConfig.c.erb +42 -1
  526. data/ext/nginx/ngx_http_passenger_module.c +28 -15
  527. data/ext/oxt/detail/backtrace_disabled.hpp +2 -1
  528. data/ext/oxt/detail/backtrace_enabled.hpp +15 -2
  529. data/ext/oxt/implementation.cpp +92 -20
  530. data/ext/oxt/thread.hpp +5 -0
  531. data/ext/ruby/extconf.rb +3 -6
  532. data/ext/ruby/passenger_native_support.c +13 -40
  533. data/helper-scripts/download_binaries/extconf.rb +4 -4
  534. data/helper-scripts/meteor-loader.rb +12 -112
  535. data/helper-scripts/node-loader.js +3 -91
  536. data/helper-scripts/rack-loader.rb +13 -14
  537. data/helper-scripts/rack-preloader.rb +16 -17
  538. data/helper-scripts/wsgi-loader.py +11 -7
  539. data/lib/phusion_passenger.rb +100 -79
  540. data/lib/phusion_passenger/abstract_installer.rb +28 -3
  541. data/lib/phusion_passenger/admin_tools.rb +3 -3
  542. data/lib/phusion_passenger/admin_tools/instance.rb +207 -0
  543. data/lib/phusion_passenger/admin_tools/instance_registry.rb +98 -0
  544. data/lib/phusion_passenger/apache2/config_options.rb +72 -22
  545. data/lib/phusion_passenger/common_library.rb +79 -14
  546. data/lib/phusion_passenger/config/about_command.rb +17 -23
  547. data/lib/phusion_passenger/config/admin_command_command.rb +175 -0
  548. data/lib/phusion_passenger/config/agent_compiler.rb +170 -0
  549. data/lib/phusion_passenger/config/command.rb +1 -4
  550. data/lib/phusion_passenger/config/compile_agent_command.rb +102 -0
  551. data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +112 -0
  552. data/lib/phusion_passenger/config/detach_process_command.rb +32 -10
  553. data/lib/phusion_passenger/config/download_agent_command.rb +285 -0
  554. data/lib/phusion_passenger/config/download_nginx_engine_command.rb +281 -0
  555. data/lib/phusion_passenger/config/install_agent_command.rb +174 -0
  556. data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +231 -0
  557. data/lib/phusion_passenger/config/installation_utils.rb +241 -0
  558. data/lib/phusion_passenger/config/list_instances_command.rb +13 -25
  559. data/lib/phusion_passenger/config/main.rb +43 -14
  560. data/lib/phusion_passenger/config/nginx_engine_compiler.rb +337 -0
  561. data/lib/phusion_passenger/config/reopen_logs_command.rb +110 -0
  562. data/lib/phusion_passenger/config/restart_app_command.rb +61 -14
  563. data/lib/phusion_passenger/config/system_metrics_command.rb +2 -1
  564. data/lib/phusion_passenger/config/utils.rb +64 -39
  565. data/lib/phusion_passenger/config/validate_install_command.rb +2 -2
  566. data/lib/phusion_passenger/constants.rb +27 -6
  567. data/lib/phusion_passenger/debug_logging.rb +32 -15
  568. data/lib/phusion_passenger/loader_shared_helpers.rb +2 -5
  569. data/lib/phusion_passenger/message_client.rb +21 -22
  570. data/lib/phusion_passenger/native_support.rb +26 -31
  571. data/lib/phusion_passenger/nginx/config_options.rb +32 -19
  572. data/lib/phusion_passenger/packaging.rb +7 -3
  573. data/lib/phusion_passenger/platform_info/cxx_portability.rb +1 -2
  574. data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +3 -4
  575. data/lib/phusion_passenger/platform_info/operating_system.rb +6 -6
  576. data/lib/phusion_passenger/preloader_shared_helpers.rb +2 -2
  577. data/lib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
  578. data/lib/phusion_passenger/rack/thread_handler_extension.rb +168 -65
  579. data/lib/phusion_passenger/request_handler.rb +47 -82
  580. data/lib/phusion_passenger/request_handler/thread_handler.rb +46 -10
  581. data/lib/phusion_passenger/ruby_core_enhancements.rb +25 -77
  582. data/lib/phusion_passenger/ruby_core_io_enhancements.rb +108 -0
  583. data/lib/phusion_passenger/standalone/app_finder.rb +39 -59
  584. data/lib/phusion_passenger/standalone/command.rb +27 -275
  585. data/lib/phusion_passenger/standalone/command2.rb +292 -0
  586. data/lib/phusion_passenger/standalone/config_utils.rb +87 -0
  587. data/lib/phusion_passenger/standalone/control_utils.rb +88 -0
  588. data/lib/phusion_passenger/standalone/main.rb +69 -71
  589. data/lib/phusion_passenger/standalone/start2_command.rb +799 -0
  590. data/lib/phusion_passenger/standalone/start_command.rb +406 -467
  591. data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +167 -0
  592. data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +165 -0
  593. data/lib/phusion_passenger/standalone/status_command.rb +64 -23
  594. data/lib/phusion_passenger/standalone/stop_command.rb +69 -32
  595. data/lib/phusion_passenger/standalone/version_command.rb +1 -5
  596. data/lib/phusion_passenger/utils.rb +0 -4
  597. data/lib/phusion_passenger/utils/json.rb +70 -4
  598. data/lib/phusion_passenger/utils/progress_bar.rb +56 -0
  599. data/lib/phusion_passenger/utils/tee_input.rb +3 -3
  600. data/lib/phusion_passenger/utils/unseekable_socket.rb +30 -0
  601. data/packaging/rpm/nginx_spec/nginx.spec.template +4 -3
  602. data/packaging/rpm/passenger_spec/passenger.spec.template +6 -10
  603. data/packaging/rpm/setup-system +2 -1
  604. data/resources/oss-binaries.phusionpassenger.com.crt +208 -0
  605. data/resources/templates/config/agent_compiler/confirm_enable_optimizations.txt.erb +5 -0
  606. data/resources/templates/config/installation_utils/cannot_create_user_support_binaries_dir.txt.erb +15 -0
  607. data/resources/templates/config/installation_utils/download_tool_missing.txt.erb +7 -0
  608. data/resources/templates/config/installation_utils/passenger_not_installed_as_root.txt.erb +12 -0
  609. data/resources/templates/config/installation_utils/support_binaries_dir_not_writable_despite_running_as_root.txt.erb +13 -0
  610. data/resources/templates/config/installation_utils/unexpected_filesystem_problem.txt.erb +16 -0
  611. data/{packaging/debian/debian_specs/passenger/patches/series → resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb} +0 -0
  612. data/resources/templates/nginx/nginx_module_sources_not_available.txt.erb +2 -2
  613. data/resources/templates/standalone/config.erb +14 -16
  614. data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +1 -1
  615. data/test/.rspec +1 -0
  616. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +20 -17
  617. data/test/cxx/ApplicationPool2/OptionsTest.cpp +0 -14
  618. data/test/cxx/ApplicationPool2/PoolTest.cpp +113 -90
  619. data/test/cxx/ApplicationPool2/ProcessTest.cpp +18 -27
  620. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +51 -53
  621. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +55 -57
  622. data/test/cxx/BufferedIOTest.cpp +40 -40
  623. data/test/cxx/CxxTestMain.cpp +4 -22
  624. data/test/cxx/DataStructures/LStringTest.cpp +275 -0
  625. data/test/cxx/DataStructures/StringKeyTableTest.cpp +199 -0
  626. data/test/cxx/MemoryKit/MbufTest.cpp +213 -0
  627. data/test/cxx/MessageServerTest.cpp +62 -55
  628. data/test/cxx/RequestHandlerTest.cpp +26 -27
  629. data/test/cxx/ServerKit/ChannelTest.cpp +1467 -0
  630. data/test/cxx/ServerKit/FileBufferedChannelTest.cpp +817 -0
  631. data/test/cxx/ServerKit/HeaderTableTest.cpp +171 -0
  632. data/test/cxx/ServerKit/HttpServerTest.cpp +1503 -0
  633. data/test/cxx/ServerKit/ServerTest.cpp +408 -0
  634. data/test/cxx/TestSupport.cpp +51 -15
  635. data/test/cxx/TestSupport.h +31 -21
  636. data/test/cxx/UnionStationTest.cpp +121 -122
  637. data/test/cxx/UtilsTest.cpp +9 -33
  638. data/test/integration_tests/apache2_tests.rb +65 -27
  639. data/test/integration_tests/downloaded_binaries_tests.rb +30 -6
  640. data/test/integration_tests/native_packaging_spec.rb +32 -17
  641. data/test/integration_tests/nginx_tests.rb +28 -10
  642. data/test/integration_tests/shared/example_webapp_tests.rb +40 -27
  643. data/test/integration_tests/standalone_tests.rb +232 -169
  644. data/test/ruby/debug_logging_spec.rb +44 -40
  645. data/test/ruby/rails3.0/preloader_spec.rb +1 -1
  646. data/test/ruby/rails3.1/preloader_spec.rb +1 -1
  647. data/test/ruby/rails3.2/preloader_spec.rb +1 -1
  648. data/test/ruby/rails4.0/preloader_spec.rb +1 -1
  649. data/test/ruby/rails4.1/preloader_spec.rb +1 -1
  650. data/test/ruby/request_handler_spec.rb +62 -24
  651. data/test/ruby/shared/loader_sharedspec.rb +10 -9
  652. data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +23 -22
  653. data/test/ruby/spec_helper.rb +2 -11
  654. data/test/ruby/standalone/runtime_installer_spec.rb +15 -13
  655. data/test/ruby/union_station_spec.rb +45 -40
  656. data/test/ruby/utils/tee_input_spec.rb +5 -5
  657. data/test/ruby/utils_spec.rb +3 -39
  658. data/test/stub/apache2/httpd.conf.erb +5 -2
  659. data/test/stub/nginx/nginx.conf.erb +3 -1
  660. data/test/support/apache2_controller.rb +25 -25
  661. data/test/support/nginx_controller.rb +14 -14
  662. data/test/support/test_helper.rb +74 -75
  663. metadata +439 -643
  664. metadata.gz.asc +7 -7
  665. data/ext/common/MultiLibeio.cpp +0 -204
  666. data/ext/common/MultiLibeio.h +0 -67
  667. data/ext/common/ServerInstanceDir.h +0 -402
  668. data/ext/common/Utils/Base64.cpp +0 -143
  669. data/ext/common/Utils/Base64.h +0 -83
  670. data/ext/common/Utils/HttpHeaderBufferer.h +0 -184
  671. data/ext/common/Utils/PriorityQueue.h +0 -54
  672. data/ext/common/Utils/StreamBoyerMooreHorspool.h +0 -512
  673. data/ext/common/Utils/fib.c +0 -699
  674. data/ext/common/Utils/fib.h +0 -101
  675. data/ext/common/Utils/fibpriv.h +0 -67
  676. data/ext/common/agents/EnvPrinter.c +0 -16
  677. data/ext/common/agents/HelperAgent/AgentOptions.h +0 -109
  678. data/ext/common/agents/HelperAgent/FileBackedPipe.h +0 -732
  679. data/ext/common/agents/HelperAgent/RequestHandler.cpp +0 -294
  680. data/ext/common/agents/HelperAgent/ScgiRequestParser.h +0 -457
  681. data/ext/common/agents/LoggingAgent/AdminController.h +0 -96
  682. data/ext/common/agents/SpawnPreparer.cpp +0 -206
  683. data/ext/common/agents/TempDirToucher.c +0 -383
  684. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +0 -116
  685. data/helper-scripts/classic-rails-loader.rb +0 -166
  686. data/helper-scripts/classic-rails-preloader.rb +0 -193
  687. data/lib/phusion_passenger/admin_tools/server_instance.rb +0 -339
  688. data/lib/phusion_passenger/classic_rails/cgi_fixed.rb +0 -68
  689. data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +0 -40
  690. data/lib/phusion_passenger/platform_info/openssl.rb +0 -61
  691. data/lib/phusion_passenger/standalone/config_file.rb +0 -119
  692. data/lib/phusion_passenger/standalone/help_command.rb +0 -57
  693. data/lib/phusion_passenger/standalone/runtime_installer.rb +0 -712
  694. data/lib/phusion_passenger/standalone/runtime_locator.rb +0 -170
  695. data/lib/phusion_passenger/standalone/utils.rb +0 -58
  696. data/lib/phusion_passenger/utils/tmpdir.rb +0 -69
  697. data/packaging/debian/LICENSE.md +0 -19
  698. data/packaging/debian/README.md +0 -320
  699. data/packaging/debian/Vagrantfile +0 -25
  700. data/packaging/debian/build +0 -210
  701. data/packaging/debian/debian_specs/nginx/changelog +0 -1989
  702. data/packaging/debian/debian_specs/nginx/compat.erb +0 -5
  703. data/packaging/debian/debian_specs/nginx/conf/fastcgi.conf +0 -25
  704. data/packaging/debian/debian_specs/nginx/conf/fastcgi_params +0 -24
  705. data/packaging/debian/debian_specs/nginx/conf/koi-utf +0 -109
  706. data/packaging/debian/debian_specs/nginx/conf/koi-win +0 -103
  707. data/packaging/debian/debian_specs/nginx/conf/mime.types +0 -89
  708. data/packaging/debian/debian_specs/nginx/conf/nginx.conf.erb +0 -97
  709. data/packaging/debian/debian_specs/nginx/conf/proxy_params +0 -4
  710. data/packaging/debian/debian_specs/nginx/conf/scgi_params +0 -16
  711. data/packaging/debian/debian_specs/nginx/conf/sites-available/default.erb +0 -93
  712. data/packaging/debian/debian_specs/nginx/conf/snippets/fastcgi-php.conf +0 -13
  713. data/packaging/debian/debian_specs/nginx/conf/snippets/snakeoil.conf +0 -5
  714. data/packaging/debian/debian_specs/nginx/conf/uwsgi_params +0 -16
  715. data/packaging/debian/debian_specs/nginx/conf/win-utf +0 -125
  716. data/packaging/debian/debian_specs/nginx/control.erb +0 -226
  717. data/packaging/debian/debian_specs/nginx/copyright +0 -196
  718. data/packaging/debian/debian_specs/nginx/debian-full.lintian-overrides +0 -1
  719. data/packaging/debian/debian_specs/nginx/gbp.conf +0 -2
  720. data/packaging/debian/debian_specs/nginx/help/docs/fcgiwrap +0 -14
  721. data/packaging/debian/debian_specs/nginx/help/docs/php +0 -119
  722. data/packaging/debian/debian_specs/nginx/help/docs/support-irc +0 -28
  723. data/packaging/debian/debian_specs/nginx/help/docs/upstream +0 -51
  724. data/packaging/debian/debian_specs/nginx/help/examples/drupal +0 -114
  725. data/packaging/debian/debian_specs/nginx/help/examples/http +0 -59
  726. data/packaging/debian/debian_specs/nginx/help/examples/mail +0 -30
  727. data/packaging/debian/debian_specs/nginx/help/examples/mailman +0 -59
  728. data/packaging/debian/debian_specs/nginx/help/examples/nginx.conf +0 -34
  729. data/packaging/debian/debian_specs/nginx/help/examples/nginx_modsite +0 -162
  730. data/packaging/debian/debian_specs/nginx/help/examples/virtual_hosts +0 -155
  731. data/packaging/debian/debian_specs/nginx/help/examples/wordpress +0 -74
  732. data/packaging/debian/debian_specs/nginx/helpers.rb +0 -41
  733. data/packaging/debian/debian_specs/nginx/index-debian.html.in +0 -32
  734. data/packaging/debian/debian_specs/nginx/index-ubuntu.html.in +0 -32
  735. data/packaging/debian/debian_specs/nginx/index.html.erb +0 -10
  736. data/packaging/debian/debian_specs/nginx/modules/README.Modules-versions +0 -65
  737. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/README.markdown +0 -510
  738. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/config +0 -5
  739. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/doc/HttpHeadersMoreModule.wiki +0 -395
  740. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ddebug.h +0 -119
  741. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.c +0 -348
  742. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.h +0 -80
  743. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.c +0 -826
  744. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.h +0 -26
  745. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.c +0 -716
  746. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.h +0 -26
  747. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.c +0 -380
  748. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.h +0 -52
  749. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/util/build.sh +0 -32
  750. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/valgrind.suppress +0 -215
  751. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ChangeLog +0 -35
  752. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/LICENSE +0 -25
  753. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/README.md +0 -93
  754. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/config +0 -4
  755. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ngx_http_auth_pam_module.c +0 -462
  756. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/CHANGES +0 -66
  757. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/LICENSE +0 -26
  758. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/README.md +0 -171
  759. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/TODO.md +0 -7
  760. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/config +0 -21
  761. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/ngx_cache_purge_module.c +0 -1803
  762. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/README +0 -29
  763. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/config +0 -9
  764. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/ngx_http_dav_ext_module.c +0 -824
  765. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README +0 -139
  766. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README_AUTO_LIB +0 -395
  767. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/TODO +0 -1
  768. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/array +0 -10
  769. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/palloc +0 -8
  770. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/build +0 -597
  771. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_replacements +0 -5
  772. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_types +0 -12
  773. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_args +0 -22
  774. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_locs +0 -25
  775. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_macros +0 -35
  776. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/contexts +0 -22
  777. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/header_files +0 -3
  778. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/headers +0 -4
  779. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/module_dependencies +0 -5
  780. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/modules_optional +0 -15
  781. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/prefixes +0 -2
  782. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/array.h +0 -7
  783. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_cmd_basic.h +0 -43
  784. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_merge.h +0 -78
  785. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/palloc.h +0 -6
  786. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/text/autogen +0 -12
  787. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/config +0 -49
  788. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/action_macros +0 -63
  789. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/conf_cmds +0 -62
  790. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/modules/set_var +0 -124
  791. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/patches/more_logging_info +0 -48
  792. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/upstream/list +0 -45
  793. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/README +0 -12
  794. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/config +0 -4
  795. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/ngx_http_set_var_examples_module.c +0 -136
  796. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/ngx_auto_lib_core +0 -797
  797. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/CHANGES +0 -17
  798. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/LICENSE +0 -24
  799. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_array.h +0 -113
  800. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_basic.h +0 -2203
  801. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_extra.h +0 -5423
  802. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_merge.h +0 -227
  803. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.c +0 -72
  804. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.h +0 -98
  805. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_includes.h +0 -66
  806. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_palloc.h +0 -112
  807. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/auto_config +0 -16
  808. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/expose_rewrite_functions +0 -291
  809. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/rewrite_phase_handler +0 -19
  810. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/md5.h +0 -117
  811. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/murmurhash2.c +0 -77
  812. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/sha.h +0 -200
  813. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.c +0 -155
  814. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.h +0 -58
  815. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.c +0 -43
  816. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.h +0 -5
  817. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.c +0 -129
  818. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.h +0 -30
  819. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.c +0 -192
  820. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.h +0 -21
  821. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.c +0 -396
  822. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.h +0 -44
  823. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.c +0 -72
  824. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.h +0 -171
  825. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.c +0 -57
  826. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.h +0 -12
  827. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.c +0 -82
  828. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.h +0 -45
  829. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.c +0 -138
  830. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.h +0 -3
  831. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http_headers.h +0 -35
  832. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.c +0 -3
  833. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.h +0 -165
  834. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_parse.h +0 -67
  835. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.c +0 -583
  836. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.h +0 -22
  837. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.c +0 -20
  838. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.h +0 -12
  839. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.c +0 -215
  840. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.h +0 -7
  841. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.c +0 -103
  842. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.h +0 -26
  843. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.c +0 -602
  844. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.h +0 -44
  845. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.c +0 -434
  846. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.h +0 -37
  847. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string_util.h +0 -14
  848. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.c +0 -205
  849. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.h +0 -27
  850. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.c +0 -45
  851. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.h +0 -6
  852. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/LICENSE +0 -25
  853. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/README.markdown +0 -1850
  854. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/config +0 -5
  855. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/doc/HttpEchoModule.wiki +0 -1558
  856. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ddebug.h +0 -109
  857. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.c +0 -344
  858. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.h +0 -25
  859. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.c +0 -282
  860. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.h +0 -15
  861. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.c +0 -183
  862. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.h +0 -16
  863. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.c +0 -429
  864. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.h +0 -18
  865. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.c +0 -178
  866. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.h +0 -13
  867. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.c +0 -667
  868. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.h +0 -137
  869. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.c +0 -452
  870. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.h +0 -31
  871. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.c +0 -208
  872. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.h +0 -16
  873. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.c +0 -788
  874. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.h +0 -19
  875. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.c +0 -96
  876. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.h +0 -13
  877. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.c +0 -298
  878. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.h +0 -58
  879. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.c +0 -110
  880. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.h +0 -9
  881. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/build.sh +0 -45
  882. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/releng +0 -8
  883. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/wiki2pod.pl +0 -131
  884. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/valgrind.suppress +0 -38
  885. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/LICENCE +0 -24
  886. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/README +0 -206
  887. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/changelog.txt +0 -54
  888. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/config +0 -26
  889. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/protocol.txt +0 -191
  890. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.c +0 -59
  891. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.h +0 -73
  892. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.c +0 -783
  893. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.h +0 -31
  894. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module_setup.c +0 -361
  895. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_types.h +0 -120
  896. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.c +0 -1180
  897. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.h +0 -1
  898. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.c +0 -146
  899. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.h +0 -5
  900. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_store.h +0 -51
  901. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.c +0 -178
  902. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.h +0 -5
  903. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.c +0 -246
  904. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.h +0 -9
  905. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/Changes +0 -51
  906. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/README.markdown +0 -6954
  907. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/config +0 -363
  908. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/doc/HttpLuaModule.wiki +0 -5898
  909. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/dtrace/ngx_lua_provider.d +0 -61
  910. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/Makefile +0 -3
  911. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/lib/RecvUntil.pm +0 -138
  912. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/t/sanity.t +0 -140
  913. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/api/ngx_http_lua_api.h +0 -52
  914. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ddebug.h +0 -82
  915. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.c +0 -377
  916. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.h +0 -22
  917. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_api.c +0 -77
  918. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.c +0 -537
  919. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.h +0 -20
  920. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.c +0 -632
  921. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.h +0 -31
  922. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.c +0 -296
  923. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.h +0 -24
  924. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.c +0 -175
  925. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.h +0 -20
  926. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.c +0 -887
  927. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.h +0 -22
  928. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_common.h +0 -478
  929. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.c +0 -67
  930. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.h +0 -19
  931. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.c +0 -148
  932. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.h +0 -20
  933. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.c +0 -369
  934. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.h +0 -26
  935. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.c +0 -483
  936. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.h +0 -20
  937. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.c +0 -379
  938. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.h +0 -23
  939. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.c +0 -216
  940. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.h +0 -23
  941. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.c +0 -1081
  942. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.h +0 -56
  943. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.c +0 -58
  944. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.h +0 -33
  945. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.c +0 -302
  946. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.h +0 -29
  947. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.c +0 -1370
  948. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.h +0 -22
  949. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.c +0 -782
  950. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.h +0 -22
  951. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.c +0 -625
  952. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.h +0 -23
  953. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.c +0 -42
  954. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.h +0 -23
  955. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.c +0 -320
  956. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.h +0 -25
  957. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.c +0 -300
  958. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.h +0 -20
  959. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.c +0 -227
  960. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.h +0 -22
  961. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.c +0 -252
  962. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.h +0 -20
  963. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_module.c +0 -924
  964. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.c +0 -184
  965. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.h +0 -21
  966. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.c +0 -794
  967. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.h +0 -28
  968. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.c +0 -106
  969. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.h +0 -23
  970. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.c +0 -94
  971. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.h +0 -13
  972. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_probe.h +0 -85
  973. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.c +0 -2468
  974. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.h +0 -22
  975. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.c +0 -1169
  976. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.h +0 -20
  977. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.c +0 -252
  978. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.h +0 -19
  979. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.c +0 -351
  980. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.h +0 -22
  981. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.c +0 -538
  982. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.h +0 -86
  983. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.c +0 -216
  984. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.h +0 -15
  985. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.c +0 -1844
  986. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.h +0 -52
  987. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.c +0 -191
  988. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.h +0 -20
  989. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.c +0 -5314
  990. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.h +0 -156
  991. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.c +0 -1624
  992. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.h +0 -56
  993. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.c +0 -704
  994. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.h +0 -20
  995. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.c +0 -1741
  996. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.h +0 -46
  997. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.c +0 -278
  998. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.h +0 -21
  999. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.c +0 -661
  1000. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.h +0 -20
  1001. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.c +0 -110
  1002. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.h +0 -20
  1003. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.c +0 -283
  1004. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.h +0 -36
  1005. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.c +0 -3972
  1006. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.h +0 -423
  1007. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.c +0 -499
  1008. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.h +0 -20
  1009. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.c +0 -64
  1010. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.h +0 -17
  1011. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/tapset/ngx_lua.stp +0 -5
  1012. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build.sh +0 -39
  1013. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build2.sh +0 -55
  1014. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/fix-comments +0 -27
  1015. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/gdbinit +0 -415
  1016. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/ngx-links +0 -62
  1017. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/reindex +0 -64
  1018. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/releng +0 -8
  1019. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/retab +0 -8
  1020. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/revim +0 -102
  1021. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/run_test.sh +0 -10
  1022. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/update-readme.sh +0 -4
  1023. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/valgrind.suppress +0 -144
  1024. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/CHANGES +0 -107
  1025. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/LICENSE +0 -25
  1026. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/Makefile +0 -8
  1027. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/README +0 -329
  1028. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/config +0 -3
  1029. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/ngx_http_uploadprogress_module.c +0 -1774
  1030. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/README +0 -53
  1031. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/config +0 -3
  1032. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/ngx_http_upstream_fair_module.c +0 -1356
  1033. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/CHANGELOG.md +0 -37
  1034. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/HACKING.md +0 -24
  1035. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/LICENSE +0 -20
  1036. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/README.rst +0 -182
  1037. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/config +0 -8
  1038. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/nginx-0.6-support.patch +0 -23
  1039. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/ngx_http_fancyindex_module.c +0 -1305
  1040. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.awk +0 -52
  1041. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.h +0 -103
  1042. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.html +0 -102
  1043. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/CHANGES +0 -37
  1044. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/README +0 -141
  1045. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/config +0 -3
  1046. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.google_code_home_page.wiki +0 -120
  1047. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.html +0 -199
  1048. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.wiki +0 -123
  1049. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/ngx_http_subs_filter_module.c +0 -1298
  1050. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README +0 -275
  1051. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/AutoInstall.pm +0 -820
  1052. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install.pm +0 -470
  1053. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/AutoInstall.pm +0 -82
  1054. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Base.pm +0 -83
  1055. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Can.pm +0 -81
  1056. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Fetch.pm +0 -93
  1057. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Include.pm +0 -34
  1058. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Makefile.pm +0 -415
  1059. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Metadata.pm +0 -716
  1060. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/TestBase.pm +0 -29
  1061. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Win32.pm +0 -64
  1062. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/WriteAll.pm +0 -63
  1063. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Spiffy.pm +0 -539
  1064. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base.pm +0 -682
  1065. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base/Filter.pm +0 -341
  1066. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder.pm +0 -1413
  1067. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder/Module.pm +0 -81
  1068. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/More.pm +0 -735
  1069. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx.pm +0 -315
  1070. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/LWP.pm +0 -524
  1071. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Socket.pm +0 -1749
  1072. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Util.pm +0 -874
  1073. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs.t +0 -136
  1074. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_capture.t +0 -32
  1075. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_fix_string.t +0 -32
  1076. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_regex.t +0 -108
  1077. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_types.t +0 -59
  1078. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/test.sh +0 -5
  1079. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/update-readme.sh +0 -7
  1080. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2google_code_homepage.pl +0 -29
  1081. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2pod.pl +0 -129
  1082. data/packaging/debian/debian_specs/nginx/nginx-common.NEWS +0 -135
  1083. data/packaging/debian/debian_specs/nginx/nginx-common.README.Debian +0 -45
  1084. data/packaging/debian/debian_specs/nginx/nginx-common.dirs.erb +0 -32
  1085. data/packaging/debian/debian_specs/nginx/nginx-common.install +0 -3
  1086. data/packaging/debian/debian_specs/nginx/nginx-common.lintian-overrides +0 -2
  1087. data/packaging/debian/debian_specs/nginx/nginx-common.manpages +0 -1
  1088. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.default +0 -10
  1089. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.init.erb +0 -214
  1090. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.logrotate +0 -18
  1091. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.service.erb +0 -37
  1092. data/packaging/debian/debian_specs/nginx/nginx-common.postinst.erb +0 -66
  1093. data/packaging/debian/debian_specs/nginx/nginx-common.postrm.erb +0 -46
  1094. data/packaging/debian/debian_specs/nginx/nginx-common.preinst +0 -47
  1095. data/packaging/debian/debian_specs/nginx/nginx-common.prerm.erb +0 -28
  1096. data/packaging/debian/debian_specs/nginx/nginx-doc.docs +0 -2
  1097. data/packaging/debian/debian_specs/nginx/nginx-doc.examples +0 -1
  1098. data/packaging/debian/debian_specs/nginx/nginx-extras.install.erb +0 -17
  1099. data/packaging/debian/debian_specs/nginx/nginx-extras.lintian-overrides +0 -1
  1100. data/packaging/debian/debian_specs/nginx/nginx-extras.postinst.erb +0 -44
  1101. data/packaging/debian/debian_specs/nginx/nginx-extras.prerm +0 -22
  1102. data/packaging/debian/debian_specs/nginx/nginx.1 +0 -47
  1103. data/packaging/debian/debian_specs/nginx/patches/perl-use-dpkg-buildflags.patch +0 -23
  1104. data/packaging/debian/debian_specs/nginx/patches/series +0 -1
  1105. data/packaging/debian/debian_specs/nginx/rules.erb +0 -185
  1106. data/packaging/debian/debian_specs/nginx/source/format +0 -1
  1107. data/packaging/debian/debian_specs/nginx/tests/control +0 -4
  1108. data/packaging/debian/debian_specs/nginx/ufw/nginx +0 -14
  1109. data/packaging/debian/debian_specs/nginx/upstream/signing-key.asc +0 -34
  1110. data/packaging/debian/debian_specs/nginx/watch +0 -3
  1111. data/packaging/debian/debian_specs/passenger/README.Debian +0 -12
  1112. data/packaging/debian/debian_specs/passenger/changelog +0 -316
  1113. data/packaging/debian/debian_specs/passenger/compat +0 -1
  1114. data/packaging/debian/debian_specs/passenger/control.erb +0 -123
  1115. data/packaging/debian/debian_specs/passenger/copyright +0 -385
  1116. data/packaging/debian/debian_specs/passenger/helpers.rb +0 -24
  1117. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.install +0 -3
  1118. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.postinst +0 -36
  1119. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.prerm +0 -15
  1120. data/packaging/debian/debian_specs/passenger/locations.ini.erb +0 -14
  1121. data/packaging/debian/debian_specs/passenger/passenger-dev.install.erb +0 -3
  1122. data/packaging/debian/debian_specs/passenger/passenger-doc.install.erb +0 -2
  1123. data/packaging/debian/debian_specs/passenger/passenger.conf +0 -6
  1124. data/packaging/debian/debian_specs/passenger/passenger.docs +0 -4
  1125. data/packaging/debian/debian_specs/passenger/passenger.install.erb +0 -16
  1126. data/packaging/debian/debian_specs/passenger/passenger.load +0 -3
  1127. data/packaging/debian/debian_specs/passenger/passenger.manpages +0 -3
  1128. data/packaging/debian/debian_specs/passenger/passenger_free_ruby.c +0 -29
  1129. data/packaging/debian/debian_specs/passenger/passenger_ruby_utils.c +0 -54
  1130. data/packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb +0 -37
  1131. data/packaging/debian/debian_specs/passenger/rules.erb +0 -84
  1132. data/packaging/debian/debian_specs/passenger/source/format +0 -1
  1133. data/packaging/debian/debian_specs/passenger_enterprise/README.Debian +0 -12
  1134. data/packaging/debian/debian_specs/passenger_enterprise/changelog +0 -316
  1135. data/packaging/debian/debian_specs/passenger_enterprise/compat +0 -1
  1136. data/packaging/debian/debian_specs/passenger_enterprise/control.erb +0 -123
  1137. data/packaging/debian/debian_specs/passenger_enterprise/copyright +0 -385
  1138. data/packaging/debian/debian_specs/passenger_enterprise/helpers.rb +0 -2
  1139. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.install +0 -3
  1140. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.postinst +0 -36
  1141. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.prerm +0 -15
  1142. data/packaging/debian/debian_specs/passenger_enterprise/locations.ini.erb +0 -14
  1143. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-dev.install.erb +0 -3
  1144. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-doc.install.erb +0 -2
  1145. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.docs +0 -4
  1146. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.install.erb +0 -14
  1147. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.manpages +0 -3
  1148. data/packaging/debian/debian_specs/passenger_enterprise/passenger.conf +0 -6
  1149. data/packaging/debian/debian_specs/passenger_enterprise/passenger.load +0 -3
  1150. data/packaging/debian/debian_specs/passenger_enterprise/passenger_free_ruby.c.erb +0 -1
  1151. data/packaging/debian/debian_specs/passenger_enterprise/passenger_ruby_utils.c.erb +0 -1
  1152. data/packaging/debian/debian_specs/passenger_enterprise/passenger_system_ruby.c.erb +0 -1
  1153. data/packaging/debian/debian_specs/passenger_enterprise/patches/series +0 -0
  1154. data/packaging/debian/debian_specs/passenger_enterprise/rules.erb +0 -84
  1155. data/packaging/debian/debian_specs/passenger_enterprise/source/format +0 -1
  1156. data/packaging/debian/docker_images/Makefile +0 -38
  1157. data/packaging/debian/docker_images/buildbox/CONTAINER_VERSION.txt +0 -0
  1158. data/packaging/debian/docker_images/buildbox/Dockerfile +0 -3
  1159. data/packaging/debian/docker_images/buildbox/Gemfile +0 -9
  1160. data/packaging/debian/docker_images/buildbox/Gemfile.lock +0 -42
  1161. data/packaging/debian/docker_images/buildbox/install.sh +0 -85
  1162. data/packaging/debian/docker_images/buildbox/pbuilderrc +0 -4
  1163. data/packaging/debian/docker_images/buildbox/sudoers.conf +0 -6
  1164. data/packaging/debian/docker_images/setup-buildbox-docker-image +0 -7
  1165. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-6 +0 -7
  1166. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-7 +0 -7
  1167. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-8 +0 -7
  1168. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-12.04 +0 -7
  1169. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-14.04 +0 -7
  1170. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.04 +0 -7
  1171. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.10 +0 -7
  1172. data/packaging/debian/docker_images/testbox-debian-6/Dockerfile +0 -3
  1173. data/packaging/debian/docker_images/testbox-debian-6/Gemfile +0 -2
  1174. data/packaging/debian/docker_images/testbox-debian-6/Gemfile.lock +0 -23
  1175. data/packaging/debian/docker_images/testbox-debian-6/argparse.py +0 -2374
  1176. data/packaging/debian/docker_images/testbox-debian-6/install.sh +0 -78
  1177. data/packaging/debian/docker_images/testbox-debian-7/Dockerfile +0 -3
  1178. data/packaging/debian/docker_images/testbox-debian-7/Gemfile +0 -2
  1179. data/packaging/debian/docker_images/testbox-debian-7/Gemfile.lock +0 -23
  1180. data/packaging/debian/docker_images/testbox-debian-7/install.sh +0 -71
  1181. data/packaging/debian/docker_images/testbox-debian-8/Dockerfile +0 -3
  1182. data/packaging/debian/docker_images/testbox-debian-8/Gemfile +0 -2
  1183. data/packaging/debian/docker_images/testbox-debian-8/Gemfile.lock +0 -23
  1184. data/packaging/debian/docker_images/testbox-debian-8/install.sh +0 -70
  1185. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Dockerfile +0 -3
  1186. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile +0 -2
  1187. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile.lock +0 -23
  1188. data/packaging/debian/docker_images/testbox-ubuntu-12.04/install.sh +0 -69
  1189. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Dockerfile +0 -3
  1190. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile +0 -2
  1191. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile.lock +0 -23
  1192. data/packaging/debian/docker_images/testbox-ubuntu-14.04/install.sh +0 -69
  1193. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Dockerfile +0 -3
  1194. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile +0 -2
  1195. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile.lock +0 -23
  1196. data/packaging/debian/docker_images/testbox-ubuntu-15.04/install.sh +0 -69
  1197. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Dockerfile +0 -3
  1198. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile +0 -2
  1199. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile.lock +0 -23
  1200. data/packaging/debian/docker_images/testbox-ubuntu-15.10/install.sh +0 -69
  1201. data/packaging/debian/internal/build/Rakefile +0 -235
  1202. data/packaging/debian/internal/build/build-passenger-orig-tarball.sh +0 -76
  1203. data/packaging/debian/internal/build/build-source-package.rb +0 -121
  1204. data/packaging/debian/internal/build/download-nginx-orig-tarball.sh +0 -17
  1205. data/packaging/debian/internal/build/rakefile_support.rb +0 -96
  1206. data/packaging/debian/internal/build/setup-environment-essentials.sh +0 -15
  1207. data/packaging/debian/internal/build/setup-environment.sh +0 -29
  1208. data/packaging/debian/internal/lib/distro_info.rb +0 -82
  1209. data/packaging/debian/internal/lib/distro_info.sh +0 -303
  1210. data/packaging/debian/internal/lib/distro_info.sh.erb +0 -65
  1211. data/packaging/debian/internal/lib/library.sh +0 -83
  1212. data/packaging/debian/internal/lib/preprocessor.rb +0 -173
  1213. data/packaging/debian/internal/lib/tracking.rb +0 -95
  1214. data/packaging/debian/internal/lib/tracking_category.rb +0 -45
  1215. data/packaging/debian/internal/lib/tracking_database.rb +0 -132
  1216. data/packaging/debian/internal/lib/tracking_task.rb +0 -148
  1217. data/packaging/debian/internal/lib/utils.rb +0 -78
  1218. data/packaging/debian/internal/publish/Rakefile +0 -97
  1219. data/packaging/debian/internal/publish/oss-binaries.phusionpassenger.com-fingerprint.txt +0 -1
  1220. data/packaging/debian/internal/publish/packagecloud_fingerprint.txt +0 -1
  1221. data/packaging/debian/internal/publish/passenger_website_fingerprint.txt +0 -1
  1222. data/packaging/debian/internal/publish/preinit.sh +0 -7
  1223. data/packaging/debian/internal/publish/rakefile_support.rb +0 -183
  1224. data/packaging/debian/internal/scripts/gpg_noninteractive/gpg +0 -11
  1225. data/packaging/debian/internal/scripts/initccache.sh +0 -35
  1226. data/packaging/debian/internal/scripts/inituidgid.sh +0 -19
  1227. data/packaging/debian/internal/scripts/my_init +0 -340
  1228. data/packaging/debian/internal/scripts/pin_certificates +0 -34
  1229. data/packaging/debian/internal/scripts/regen_distro_info_script.sh +0 -3
  1230. data/packaging/debian/internal/scripts/setup-vagrant.sh +0 -12
  1231. data/packaging/debian/internal/scripts/setuser +0 -31
  1232. data/packaging/debian/internal/shell/initpbuilder.sh +0 -3
  1233. data/packaging/debian/internal/shell/preinit.sh +0 -28
  1234. data/packaging/debian/internal/shell/sudoers.conf +0 -1
  1235. data/packaging/debian/internal/test/apache/apache-24.conf +0 -5
  1236. data/packaging/debian/internal/test/apache/apache-pre-24.conf +0 -4
  1237. data/packaging/debian/internal/test/apache/vhost.conf +0 -17
  1238. data/packaging/debian/internal/test/misc/config.json +0 -15
  1239. data/packaging/debian/internal/test/misc/hosts.conf +0 -4
  1240. data/packaging/debian/internal/test/misc/init.sh +0 -25
  1241. data/packaging/debian/internal/test/misc/nodejs_test_app.js +0 -6
  1242. data/packaging/debian/internal/test/misc/python_test_app.py +0 -3
  1243. data/packaging/debian/internal/test/misc/ruby_test_app.rb +0 -5
  1244. data/packaging/debian/internal/test/misc/test_support.rb +0 -61
  1245. data/packaging/debian/internal/test/nginx/vhost.conf +0 -23
  1246. data/packaging/debian/internal/test/system_web_server_test.rb +0 -126
  1247. data/packaging/debian/internal/test/test.sh +0 -141
  1248. data/packaging/debian/jenkins/publish/clear_caches.rb +0 -48
  1249. data/packaging/debian/jenkins/publish/publish.sh +0 -69
  1250. data/packaging/debian/jenkins/test/test.sh +0 -63
  1251. data/packaging/debian/passenger_apt_automation.sublime-project +0 -14
  1252. data/packaging/debian/publish +0 -172
  1253. data/packaging/debian/shell +0 -116
  1254. data/packaging/debian/test +0 -142
  1255. data/packaging/rpm/passenger_spec/rubygem-passenger-4.0.18-gcc47-include-sys_types.patch +0 -45
  1256. data/test/cxx/Base64Test.cpp +0 -50
  1257. data/test/cxx/FileBackedPipeTest.cpp +0 -626
  1258. data/test/cxx/HttpHeaderBuffererTest.cpp +0 -257
  1259. data/test/cxx/ScgiRequestParserTest.cpp +0 -423
  1260. data/test/cxx/ServerInstanceDirTest.cpp +0 -175
  1261. data/test/ruby/admin_tools_spec.rb +0 -360
  1262. data/test/ruby/classic_rails/loader_spec.rb +0 -46
  1263. data/test/ruby/classic_rails/preloader_spec.rb +0 -52
  1264. data/test/ruby/standalone/runtime_locator_spec.rb +0 -214
  1265. data/test/stub/rails2.3/Rakefile +0 -10
  1266. data/test/stub/rails2.3/app/controllers/application_controller.rb +0 -10
  1267. data/test/stub/rails2.3/app/controllers/bar_controller_1.rb +0 -5
  1268. data/test/stub/rails2.3/app/controllers/bar_controller_2.rb +0 -5
  1269. data/test/stub/rails2.3/app/controllers/foo_controller.rb +0 -21
  1270. data/test/stub/rails2.3/app/helpers/application_helper.rb +0 -3
  1271. data/test/stub/rails2.3/app/helpers/bar_helper.rb +0 -2
  1272. data/test/stub/rails2.3/app/helpers/foo_helper.rb +0 -2
  1273. data/test/stub/rails2.3/config/boot.rb +0 -110
  1274. data/test/stub/rails2.3/config/database.yml +0 -19
  1275. data/test/stub/rails2.3/config/environment.rb +0 -62
  1276. data/test/stub/rails2.3/config/environments/development.rb +0 -17
  1277. data/test/stub/rails2.3/config/environments/production.rb +0 -18
  1278. data/test/stub/rails2.3/config/environments/staging.rb +0 -18
  1279. data/test/stub/rails2.3/config/initializers/inflections.rb +0 -10
  1280. data/test/stub/rails2.3/config/initializers/mime_types.rb +0 -5
  1281. data/test/stub/rails2.3/config/routes.rb +0 -35
  1282. data/test/stub/rails2.3/log/.gitignore +0 -1
  1283. data/test/stub/rails2.3/public/.gitignore +0 -1
  1284. data/test/stub/rails2.3/script/about +0 -3
  1285. data/test/stub/rails2.3/script/console +0 -3
  1286. data/test/stub/rails2.3/script/dbconsole +0 -3
  1287. data/test/stub/rails2.3/script/destroy +0 -3
  1288. data/test/stub/rails2.3/script/generate +0 -3
  1289. data/test/stub/rails2.3/script/performance/benchmarker +0 -3
  1290. data/test/stub/rails2.3/script/performance/profiler +0 -3
  1291. data/test/stub/rails2.3/script/performance/request +0 -3
  1292. data/test/stub/rails2.3/script/plugin +0 -3
  1293. data/test/stub/rails2.3/script/process/inspector +0 -3
  1294. data/test/stub/rails2.3/script/process/reaper +0 -3
  1295. data/test/stub/rails2.3/script/process/spawner +0 -3
  1296. data/test/stub/rails2.3/script/runner +0 -3
  1297. data/test/stub/rails2.3/script/server +0 -3
  1298. data/test/stub/rails2.3/tmp/cache/.gitignore +0 -1
  1299. data/test/stub/rails2.3/tmp/pids/.gitignore +0 -1
  1300. data/test/stub/rails2.3/tmp/sessions/.gitignore +0 -1
  1301. data/test/stub/rails2.3/tmp/sockets/.gitignore +0 -1
@@ -1,341 +0,0 @@
1
- #line 1
2
- #===============================================================================
3
- # This is the default class for handling Test::Base data filtering.
4
- #===============================================================================
5
- package Test::Base::Filter;
6
- use Spiffy -Base;
7
- use Spiffy ':XXX';
8
-
9
- field 'current_block';
10
-
11
- our $arguments;
12
- sub current_arguments {
13
- return undef unless defined $arguments;
14
- my $args = $arguments;
15
- $args =~ s/(\\s)/ /g;
16
- $args =~ s/(\\[a-z])/'"' . $1 . '"'/gee;
17
- return $args;
18
- }
19
-
20
- sub assert_scalar {
21
- return if @_ == 1;
22
- require Carp;
23
- my $filter = (caller(1))[3];
24
- $filter =~ s/.*:://;
25
- Carp::croak "Input to the '$filter' filter must be a scalar, not a list";
26
- }
27
-
28
- sub _apply_deepest {
29
- my $method = shift;
30
- return () unless @_;
31
- if (ref $_[0] eq 'ARRAY') {
32
- for my $aref (@_) {
33
- @$aref = $self->_apply_deepest($method, @$aref);
34
- }
35
- return @_;
36
- }
37
- $self->$method(@_);
38
- }
39
-
40
- sub _split_array {
41
- map {
42
- [$self->split($_)];
43
- } @_;
44
- }
45
-
46
- sub _peel_deepest {
47
- return () unless @_;
48
- if (ref $_[0] eq 'ARRAY') {
49
- if (ref $_[0]->[0] eq 'ARRAY') {
50
- for my $aref (@_) {
51
- @$aref = $self->_peel_deepest(@$aref);
52
- }
53
- return @_;
54
- }
55
- return map { $_->[0] } @_;
56
- }
57
- return @_;
58
- }
59
-
60
- #===============================================================================
61
- # these filters work on the leaves of nested arrays
62
- #===============================================================================
63
- sub Join { $self->_peel_deepest($self->_apply_deepest(join => @_)) }
64
- sub Reverse { $self->_apply_deepest(reverse => @_) }
65
- sub Split { $self->_apply_deepest(_split_array => @_) }
66
- sub Sort { $self->_apply_deepest(sort => @_) }
67
-
68
-
69
- sub append {
70
- my $suffix = $self->current_arguments;
71
- map { $_ . $suffix } @_;
72
- }
73
-
74
- sub array {
75
- return [@_];
76
- }
77
-
78
- sub base64_decode {
79
- $self->assert_scalar(@_);
80
- require MIME::Base64;
81
- MIME::Base64::decode_base64(shift);
82
- }
83
-
84
- sub base64_encode {
85
- $self->assert_scalar(@_);
86
- require MIME::Base64;
87
- MIME::Base64::encode_base64(shift);
88
- }
89
-
90
- sub chomp {
91
- map { CORE::chomp; $_ } @_;
92
- }
93
-
94
- sub chop {
95
- map { CORE::chop; $_ } @_;
96
- }
97
-
98
- sub dumper {
99
- no warnings 'once';
100
- require Data::Dumper;
101
- local $Data::Dumper::Sortkeys = 1;
102
- local $Data::Dumper::Indent = 1;
103
- local $Data::Dumper::Terse = 1;
104
- Data::Dumper::Dumper(@_);
105
- }
106
-
107
- sub escape {
108
- $self->assert_scalar(@_);
109
- my $text = shift;
110
- $text =~ s/(\\.)/eval "qq{$1}"/ge;
111
- return $text;
112
- }
113
-
114
- sub eval {
115
- $self->assert_scalar(@_);
116
- my @return = CORE::eval(shift);
117
- return $@ if $@;
118
- return @return;
119
- }
120
-
121
- sub eval_all {
122
- $self->assert_scalar(@_);
123
- my $out = '';
124
- my $err = '';
125
- Test::Base::tie_output(*STDOUT, $out);
126
- Test::Base::tie_output(*STDERR, $err);
127
- my $return = CORE::eval(shift);
128
- no warnings;
129
- untie *STDOUT;
130
- untie *STDERR;
131
- return $return, $@, $out, $err;
132
- }
133
-
134
- sub eval_stderr {
135
- $self->assert_scalar(@_);
136
- my $output = '';
137
- Test::Base::tie_output(*STDERR, $output);
138
- CORE::eval(shift);
139
- no warnings;
140
- untie *STDERR;
141
- return $output;
142
- }
143
-
144
- sub eval_stdout {
145
- $self->assert_scalar(@_);
146
- my $output = '';
147
- Test::Base::tie_output(*STDOUT, $output);
148
- CORE::eval(shift);
149
- no warnings;
150
- untie *STDOUT;
151
- return $output;
152
- }
153
-
154
- sub exec_perl_stdout {
155
- my $tmpfile = "/tmp/test-blocks-$$";
156
- $self->_write_to($tmpfile, @_);
157
- open my $execution, "$^X $tmpfile 2>&1 |"
158
- or die "Couldn't open subprocess: $!\n";
159
- local $/;
160
- my $output = <$execution>;
161
- close $execution;
162
- unlink($tmpfile)
163
- or die "Couldn't unlink $tmpfile: $!\n";
164
- return $output;
165
- }
166
-
167
- sub flatten {
168
- $self->assert_scalar(@_);
169
- my $ref = shift;
170
- if (ref($ref) eq 'HASH') {
171
- return map {
172
- ($_, $ref->{$_});
173
- } sort keys %$ref;
174
- }
175
- if (ref($ref) eq 'ARRAY') {
176
- return @$ref;
177
- }
178
- die "Can only flatten a hash or array ref";
179
- }
180
-
181
- sub get_url {
182
- $self->assert_scalar(@_);
183
- my $url = shift;
184
- CORE::chomp($url);
185
- require LWP::Simple;
186
- LWP::Simple::get($url);
187
- }
188
-
189
- sub hash {
190
- return +{ @_ };
191
- }
192
-
193
- sub head {
194
- my $size = $self->current_arguments || 1;
195
- return splice(@_, 0, $size);
196
- }
197
-
198
- sub join {
199
- my $string = $self->current_arguments;
200
- $string = '' unless defined $string;
201
- CORE::join $string, @_;
202
- }
203
-
204
- sub lines {
205
- $self->assert_scalar(@_);
206
- my $text = shift;
207
- return () unless length $text;
208
- my @lines = ($text =~ /^(.*\n?)/gm);
209
- return @lines;
210
- }
211
-
212
- sub norm {
213
- $self->assert_scalar(@_);
214
- my $text = shift;
215
- $text = '' unless defined $text;
216
- $text =~ s/\015\012/\n/g;
217
- $text =~ s/\r/\n/g;
218
- return $text;
219
- }
220
-
221
- sub prepend {
222
- my $prefix = $self->current_arguments;
223
- map { $prefix . $_ } @_;
224
- }
225
-
226
- sub read_file {
227
- $self->assert_scalar(@_);
228
- my $file = shift;
229
- CORE::chomp $file;
230
- open my $fh, $file
231
- or die "Can't open '$file' for input:\n$!";
232
- CORE::join '', <$fh>;
233
- }
234
-
235
- sub regexp {
236
- $self->assert_scalar(@_);
237
- my $text = shift;
238
- my $flags = $self->current_arguments;
239
- if ($text =~ /\n.*?\n/s) {
240
- $flags = 'xism'
241
- unless defined $flags;
242
- }
243
- else {
244
- CORE::chomp($text);
245
- }
246
- $flags ||= '';
247
- my $regexp = eval "qr{$text}$flags";
248
- die $@ if $@;
249
- return $regexp;
250
- }
251
-
252
- sub reverse {
253
- CORE::reverse(@_);
254
- }
255
-
256
- sub slice {
257
- die "Invalid args for slice"
258
- unless $self->current_arguments =~ /^(\d+)(?:,(\d))?$/;
259
- my ($x, $y) = ($1, $2);
260
- $y = $x if not defined $y;
261
- die "Invalid args for slice"
262
- if $x > $y;
263
- return splice(@_, $x, 1 + $y - $x);
264
- }
265
-
266
- sub sort {
267
- CORE::sort(@_);
268
- }
269
-
270
- sub split {
271
- $self->assert_scalar(@_);
272
- my $separator = $self->current_arguments;
273
- if (defined $separator and $separator =~ s{^/(.*)/$}{$1}) {
274
- my $regexp = $1;
275
- $separator = qr{$regexp};
276
- }
277
- $separator = qr/\s+/ unless $separator;
278
- CORE::split $separator, shift;
279
- }
280
-
281
- sub strict {
282
- $self->assert_scalar(@_);
283
- <<'...' . shift;
284
- use strict;
285
- use warnings;
286
- ...
287
- }
288
-
289
- sub tail {
290
- my $size = $self->current_arguments || 1;
291
- return splice(@_, @_ - $size, $size);
292
- }
293
-
294
- sub trim {
295
- map {
296
- s/\A([ \t]*\n)+//;
297
- s/(?<=\n)\s*\z//g;
298
- $_;
299
- } @_;
300
- }
301
-
302
- sub unchomp {
303
- map { $_ . "\n" } @_;
304
- }
305
-
306
- sub write_file {
307
- my $file = $self->current_arguments
308
- or die "No file specified for write_file filter";
309
- if ($file =~ /(.*)[\\\/]/) {
310
- my $dir = $1;
311
- if (not -e $dir) {
312
- require File::Path;
313
- File::Path::mkpath($dir)
314
- or die "Can't create $dir";
315
- }
316
- }
317
- open my $fh, ">$file"
318
- or die "Can't open '$file' for output\n:$!";
319
- print $fh @_;
320
- close $fh;
321
- return $file;
322
- }
323
-
324
- sub yaml {
325
- $self->assert_scalar(@_);
326
- require YAML;
327
- return YAML::Load(shift);
328
- }
329
-
330
- sub _write_to {
331
- my $filename = shift;
332
- open my $script, ">$filename"
333
- or die "Couldn't open $filename: $!\n";
334
- print $script @_;
335
- close $script
336
- or die "Couldn't close $filename: $!\n";
337
- }
338
-
339
- __DATA__
340
-
341
- #line 636
@@ -1,1413 +0,0 @@
1
- #line 1
2
- package Test::Builder;
3
-
4
- use 5.006;
5
- use strict;
6
- use warnings;
7
-
8
- our $VERSION = '0.92';
9
- $VERSION = eval $VERSION; ## no critic (BuiltinFunctions::ProhibitStringyEval)
10
-
11
- BEGIN {
12
- if( $] < 5.008 ) {
13
- require Test::Builder::IO::Scalar;
14
- }
15
- }
16
-
17
-
18
- # Make Test::Builder thread-safe for ithreads.
19
- BEGIN {
20
- use Config;
21
- # Load threads::shared when threads are turned on.
22
- # 5.8.0's threads are so busted we no longer support them.
23
- if( $] >= 5.008001 && $Config{useithreads} && $INC{'threads.pm'} ) {
24
- require threads::shared;
25
-
26
- # Hack around YET ANOTHER threads::shared bug. It would
27
- # occassionally forget the contents of the variable when sharing it.
28
- # So we first copy the data, then share, then put our copy back.
29
- *share = sub (\[$@%]) {
30
- my $type = ref $_[0];
31
- my $data;
32
-
33
- if( $type eq 'HASH' ) {
34
- %$data = %{ $_[0] };
35
- }
36
- elsif( $type eq 'ARRAY' ) {
37
- @$data = @{ $_[0] };
38
- }
39
- elsif( $type eq 'SCALAR' ) {
40
- $$data = ${ $_[0] };
41
- }
42
- else {
43
- die( "Unknown type: " . $type );
44
- }
45
-
46
- $_[0] = &threads::shared::share( $_[0] );
47
-
48
- if( $type eq 'HASH' ) {
49
- %{ $_[0] } = %$data;
50
- }
51
- elsif( $type eq 'ARRAY' ) {
52
- @{ $_[0] } = @$data;
53
- }
54
- elsif( $type eq 'SCALAR' ) {
55
- ${ $_[0] } = $$data;
56
- }
57
- else {
58
- die( "Unknown type: " . $type );
59
- }
60
-
61
- return $_[0];
62
- };
63
- }
64
- # 5.8.0's threads::shared is busted when threads are off
65
- # and earlier Perls just don't have that module at all.
66
- else {
67
- *share = sub { return $_[0] };
68
- *lock = sub { 0 };
69
- }
70
- }
71
-
72
- #line 117
73
-
74
- my $Test = Test::Builder->new;
75
-
76
- sub new {
77
- my($class) = shift;
78
- $Test ||= $class->create;
79
- return $Test;
80
- }
81
-
82
- #line 139
83
-
84
- sub create {
85
- my $class = shift;
86
-
87
- my $self = bless {}, $class;
88
- $self->reset;
89
-
90
- return $self;
91
- }
92
-
93
- #line 158
94
-
95
- our $Level;
96
-
97
- sub reset { ## no critic (Subroutines::ProhibitBuiltinHomonyms)
98
- my($self) = @_;
99
-
100
- # We leave this a global because it has to be localized and localizing
101
- # hash keys is just asking for pain. Also, it was documented.
102
- $Level = 1;
103
-
104
- $self->{Have_Plan} = 0;
105
- $self->{No_Plan} = 0;
106
- $self->{Have_Output_Plan} = 0;
107
-
108
- $self->{Original_Pid} = $$;
109
-
110
- share( $self->{Curr_Test} );
111
- $self->{Curr_Test} = 0;
112
- $self->{Test_Results} = &share( [] );
113
-
114
- $self->{Exported_To} = undef;
115
- $self->{Expected_Tests} = 0;
116
-
117
- $self->{Skip_All} = 0;
118
-
119
- $self->{Use_Nums} = 1;
120
-
121
- $self->{No_Header} = 0;
122
- $self->{No_Ending} = 0;
123
-
124
- $self->{Todo} = undef;
125
- $self->{Todo_Stack} = [];
126
- $self->{Start_Todo} = 0;
127
- $self->{Opened_Testhandles} = 0;
128
-
129
- $self->_dup_stdhandles;
130
-
131
- return;
132
- }
133
-
134
- #line 219
135
-
136
- my %plan_cmds = (
137
- no_plan => \&no_plan,
138
- skip_all => \&skip_all,
139
- tests => \&_plan_tests,
140
- );
141
-
142
- sub plan {
143
- my( $self, $cmd, $arg ) = @_;
144
-
145
- return unless $cmd;
146
-
147
- local $Level = $Level + 1;
148
-
149
- $self->croak("You tried to plan twice") if $self->{Have_Plan};
150
-
151
- if( my $method = $plan_cmds{$cmd} ) {
152
- local $Level = $Level + 1;
153
- $self->$method($arg);
154
- }
155
- else {
156
- my @args = grep { defined } ( $cmd, $arg );
157
- $self->croak("plan() doesn't understand @args");
158
- }
159
-
160
- return 1;
161
- }
162
-
163
-
164
- sub _plan_tests {
165
- my($self, $arg) = @_;
166
-
167
- if($arg) {
168
- local $Level = $Level + 1;
169
- return $self->expected_tests($arg);
170
- }
171
- elsif( !defined $arg ) {
172
- $self->croak("Got an undefined number of tests");
173
- }
174
- else {
175
- $self->croak("You said to run 0 tests");
176
- }
177
-
178
- return;
179
- }
180
-
181
-
182
- #line 275
183
-
184
- sub expected_tests {
185
- my $self = shift;
186
- my($max) = @_;
187
-
188
- if(@_) {
189
- $self->croak("Number of tests must be a positive integer. You gave it '$max'")
190
- unless $max =~ /^\+?\d+$/;
191
-
192
- $self->{Expected_Tests} = $max;
193
- $self->{Have_Plan} = 1;
194
-
195
- $self->_output_plan($max) unless $self->no_header;
196
- }
197
- return $self->{Expected_Tests};
198
- }
199
-
200
- #line 299
201
-
202
- sub no_plan {
203
- my($self, $arg) = @_;
204
-
205
- $self->carp("no_plan takes no arguments") if $arg;
206
-
207
- $self->{No_Plan} = 1;
208
- $self->{Have_Plan} = 1;
209
-
210
- return 1;
211
- }
212
-
213
-
214
- #line 333
215
-
216
- sub _output_plan {
217
- my($self, $max, $directive, $reason) = @_;
218
-
219
- $self->carp("The plan was already output") if $self->{Have_Output_Plan};
220
-
221
- my $plan = "1..$max";
222
- $plan .= " # $directive" if defined $directive;
223
- $plan .= " $reason" if defined $reason;
224
-
225
- $self->_print("$plan\n");
226
-
227
- $self->{Have_Output_Plan} = 1;
228
-
229
- return;
230
- }
231
-
232
- #line 384
233
-
234
- sub done_testing {
235
- my($self, $num_tests) = @_;
236
-
237
- # If done_testing() specified the number of tests, shut off no_plan.
238
- if( defined $num_tests ) {
239
- $self->{No_Plan} = 0;
240
- }
241
- else {
242
- $num_tests = $self->current_test;
243
- }
244
-
245
- if( $self->{Done_Testing} ) {
246
- my($file, $line) = @{$self->{Done_Testing}}[1,2];
247
- $self->ok(0, "done_testing() was already called at $file line $line");
248
- return;
249
- }
250
-
251
- $self->{Done_Testing} = [caller];
252
-
253
- if( $self->expected_tests && $num_tests != $self->expected_tests ) {
254
- $self->ok(0, "planned to run @{[ $self->expected_tests ]} ".
255
- "but done_testing() expects $num_tests");
256
- }
257
- else {
258
- $self->{Expected_Tests} = $num_tests;
259
- }
260
-
261
- $self->_output_plan($num_tests) unless $self->{Have_Output_Plan};
262
-
263
- $self->{Have_Plan} = 1;
264
-
265
- return 1;
266
- }
267
-
268
-
269
- #line 429
270
-
271
- sub has_plan {
272
- my $self = shift;
273
-
274
- return( $self->{Expected_Tests} ) if $self->{Expected_Tests};
275
- return('no_plan') if $self->{No_Plan};
276
- return(undef);
277
- }
278
-
279
- #line 446
280
-
281
- sub skip_all {
282
- my( $self, $reason ) = @_;
283
-
284
- $self->{Skip_All} = 1;
285
-
286
- $self->_output_plan(0, "SKIP", $reason) unless $self->no_header;
287
- exit(0);
288
- }
289
-
290
- #line 468
291
-
292
- sub exported_to {
293
- my( $self, $pack ) = @_;
294
-
295
- if( defined $pack ) {
296
- $self->{Exported_To} = $pack;
297
- }
298
- return $self->{Exported_To};
299
- }
300
-
301
- #line 498
302
-
303
- sub ok {
304
- my( $self, $test, $name ) = @_;
305
-
306
- # $test might contain an object which we don't want to accidentally
307
- # store, so we turn it into a boolean.
308
- $test = $test ? 1 : 0;
309
-
310
- lock $self->{Curr_Test};
311
- $self->{Curr_Test}++;
312
-
313
- # In case $name is a string overloaded object, force it to stringify.
314
- $self->_unoverload_str( \$name );
315
-
316
- $self->diag(<<"ERR") if defined $name and $name =~ /^[\d\s]+$/;
317
- You named your test '$name'. You shouldn't use numbers for your test names.
318
- Very confusing.
319
- ERR
320
-
321
- # Capture the value of $TODO for the rest of this ok() call
322
- # so it can more easily be found by other routines.
323
- my $todo = $self->todo();
324
- my $in_todo = $self->in_todo;
325
- local $self->{Todo} = $todo if $in_todo;
326
-
327
- $self->_unoverload_str( \$todo );
328
-
329
- my $out;
330
- my $result = &share( {} );
331
-
332
- unless($test) {
333
- $out .= "not ";
334
- @$result{ 'ok', 'actual_ok' } = ( ( $self->in_todo ? 1 : 0 ), 0 );
335
- }
336
- else {
337
- @$result{ 'ok', 'actual_ok' } = ( 1, $test );
338
- }
339
-
340
- $out .= "ok";
341
- $out .= " $self->{Curr_Test}" if $self->use_numbers;
342
-
343
- if( defined $name ) {
344
- $name =~ s|#|\\#|g; # # in a name can confuse Test::Harness.
345
- $out .= " - $name";
346
- $result->{name} = $name;
347
- }
348
- else {
349
- $result->{name} = '';
350
- }
351
-
352
- if( $self->in_todo ) {
353
- $out .= " # TODO $todo";
354
- $result->{reason} = $todo;
355
- $result->{type} = 'todo';
356
- }
357
- else {
358
- $result->{reason} = '';
359
- $result->{type} = '';
360
- }
361
-
362
- $self->{Test_Results}[ $self->{Curr_Test} - 1 ] = $result;
363
- $out .= "\n";
364
-
365
- $self->_print($out);
366
-
367
- unless($test) {
368
- my $msg = $self->in_todo ? "Failed (TODO)" : "Failed";
369
- $self->_print_to_fh( $self->_diag_fh, "\n" ) if $ENV{HARNESS_ACTIVE};
370
-
371
- my( undef, $file, $line ) = $self->caller;
372
- if( defined $name ) {
373
- $self->diag(qq[ $msg test '$name'\n]);
374
- $self->diag(qq[ at $file line $line.\n]);
375
- }
376
- else {
377
- $self->diag(qq[ $msg test at $file line $line.\n]);
378
- }
379
- }
380
-
381
- return $test ? 1 : 0;
382
- }
383
-
384
- sub _unoverload {
385
- my $self = shift;
386
- my $type = shift;
387
-
388
- $self->_try(sub { require overload; }, die_on_fail => 1);
389
-
390
- foreach my $thing (@_) {
391
- if( $self->_is_object($$thing) ) {
392
- if( my $string_meth = overload::Method( $$thing, $type ) ) {
393
- $$thing = $$thing->$string_meth();
394
- }
395
- }
396
- }
397
-
398
- return;
399
- }
400
-
401
- sub _is_object {
402
- my( $self, $thing ) = @_;
403
-
404
- return $self->_try( sub { ref $thing && $thing->isa('UNIVERSAL') } ) ? 1 : 0;
405
- }
406
-
407
- sub _unoverload_str {
408
- my $self = shift;
409
-
410
- return $self->_unoverload( q[""], @_ );
411
- }
412
-
413
- sub _unoverload_num {
414
- my $self = shift;
415
-
416
- $self->_unoverload( '0+', @_ );
417
-
418
- for my $val (@_) {
419
- next unless $self->_is_dualvar($$val);
420
- $$val = $$val + 0;
421
- }
422
-
423
- return;
424
- }
425
-
426
- # This is a hack to detect a dualvar such as $!
427
- sub _is_dualvar {
428
- my( $self, $val ) = @_;
429
-
430
- # Objects are not dualvars.
431
- return 0 if ref $val;
432
-
433
- no warnings 'numeric';
434
- my $numval = $val + 0;
435
- return $numval != 0 and $numval ne $val ? 1 : 0;
436
- }
437
-
438
- #line 649
439
-
440
- sub is_eq {
441
- my( $self, $got, $expect, $name ) = @_;
442
- local $Level = $Level + 1;
443
-
444
- $self->_unoverload_str( \$got, \$expect );
445
-
446
- if( !defined $got || !defined $expect ) {
447
- # undef only matches undef and nothing else
448
- my $test = !defined $got && !defined $expect;
449
-
450
- $self->ok( $test, $name );
451
- $self->_is_diag( $got, 'eq', $expect ) unless $test;
452
- return $test;
453
- }
454
-
455
- return $self->cmp_ok( $got, 'eq', $expect, $name );
456
- }
457
-
458
- sub is_num {
459
- my( $self, $got, $expect, $name ) = @_;
460
- local $Level = $Level + 1;
461
-
462
- $self->_unoverload_num( \$got, \$expect );
463
-
464
- if( !defined $got || !defined $expect ) {
465
- # undef only matches undef and nothing else
466
- my $test = !defined $got && !defined $expect;
467
-
468
- $self->ok( $test, $name );
469
- $self->_is_diag( $got, '==', $expect ) unless $test;
470
- return $test;
471
- }
472
-
473
- return $self->cmp_ok( $got, '==', $expect, $name );
474
- }
475
-
476
- sub _diag_fmt {
477
- my( $self, $type, $val ) = @_;
478
-
479
- if( defined $$val ) {
480
- if( $type eq 'eq' or $type eq 'ne' ) {
481
- # quote and force string context
482
- $$val = "'$$val'";
483
- }
484
- else {
485
- # force numeric context
486
- $self->_unoverload_num($val);
487
- }
488
- }
489
- else {
490
- $$val = 'undef';
491
- }
492
-
493
- return;
494
- }
495
-
496
- sub _is_diag {
497
- my( $self, $got, $type, $expect ) = @_;
498
-
499
- $self->_diag_fmt( $type, $_ ) for \$got, \$expect;
500
-
501
- local $Level = $Level + 1;
502
- return $self->diag(<<"DIAGNOSTIC");
503
- got: $got
504
- expected: $expect
505
- DIAGNOSTIC
506
-
507
- }
508
-
509
- sub _isnt_diag {
510
- my( $self, $got, $type ) = @_;
511
-
512
- $self->_diag_fmt( $type, \$got );
513
-
514
- local $Level = $Level + 1;
515
- return $self->diag(<<"DIAGNOSTIC");
516
- got: $got
517
- expected: anything else
518
- DIAGNOSTIC
519
- }
520
-
521
- #line 746
522
-
523
- sub isnt_eq {
524
- my( $self, $got, $dont_expect, $name ) = @_;
525
- local $Level = $Level + 1;
526
-
527
- if( !defined $got || !defined $dont_expect ) {
528
- # undef only matches undef and nothing else
529
- my $test = defined $got || defined $dont_expect;
530
-
531
- $self->ok( $test, $name );
532
- $self->_isnt_diag( $got, 'ne' ) unless $test;
533
- return $test;
534
- }
535
-
536
- return $self->cmp_ok( $got, 'ne', $dont_expect, $name );
537
- }
538
-
539
- sub isnt_num {
540
- my( $self, $got, $dont_expect, $name ) = @_;
541
- local $Level = $Level + 1;
542
-
543
- if( !defined $got || !defined $dont_expect ) {
544
- # undef only matches undef and nothing else
545
- my $test = defined $got || defined $dont_expect;
546
-
547
- $self->ok( $test, $name );
548
- $self->_isnt_diag( $got, '!=' ) unless $test;
549
- return $test;
550
- }
551
-
552
- return $self->cmp_ok( $got, '!=', $dont_expect, $name );
553
- }
554
-
555
- #line 797
556
-
557
- sub like {
558
- my( $self, $this, $regex, $name ) = @_;
559
-
560
- local $Level = $Level + 1;
561
- return $self->_regex_ok( $this, $regex, '=~', $name );
562
- }
563
-
564
- sub unlike {
565
- my( $self, $this, $regex, $name ) = @_;
566
-
567
- local $Level = $Level + 1;
568
- return $self->_regex_ok( $this, $regex, '!~', $name );
569
- }
570
-
571
- #line 821
572
-
573
- my %numeric_cmps = map { ( $_, 1 ) } ( "<", "<=", ">", ">=", "==", "!=", "<=>" );
574
-
575
- sub cmp_ok {
576
- my( $self, $got, $type, $expect, $name ) = @_;
577
-
578
- my $test;
579
- my $error;
580
- {
581
- ## no critic (BuiltinFunctions::ProhibitStringyEval)
582
-
583
- local( $@, $!, $SIG{__DIE__} ); # isolate eval
584
-
585
- my($pack, $file, $line) = $self->caller();
586
-
587
- $test = eval qq[
588
- #line 1 "cmp_ok [from $file line $line]"
589
- \$got $type \$expect;
590
- ];
591
- $error = $@;
592
- }
593
- local $Level = $Level + 1;
594
- my $ok = $self->ok( $test, $name );
595
-
596
- # Treat overloaded objects as numbers if we're asked to do a
597
- # numeric comparison.
598
- my $unoverload
599
- = $numeric_cmps{$type}
600
- ? '_unoverload_num'
601
- : '_unoverload_str';
602
-
603
- $self->diag(<<"END") if $error;
604
- An error occurred while using $type:
605
- ------------------------------------
606
- $error
607
- ------------------------------------
608
- END
609
-
610
- unless($ok) {
611
- $self->$unoverload( \$got, \$expect );
612
-
613
- if( $type =~ /^(eq|==)$/ ) {
614
- $self->_is_diag( $got, $type, $expect );
615
- }
616
- elsif( $type =~ /^(ne|!=)$/ ) {
617
- $self->_isnt_diag( $got, $type );
618
- }
619
- else {
620
- $self->_cmp_diag( $got, $type, $expect );
621
- }
622
- }
623
- return $ok;
624
- }
625
-
626
- sub _cmp_diag {
627
- my( $self, $got, $type, $expect ) = @_;
628
-
629
- $got = defined $got ? "'$got'" : 'undef';
630
- $expect = defined $expect ? "'$expect'" : 'undef';
631
-
632
- local $Level = $Level + 1;
633
- return $self->diag(<<"DIAGNOSTIC");
634
- $got
635
- $type
636
- $expect
637
- DIAGNOSTIC
638
- }
639
-
640
- sub _caller_context {
641
- my $self = shift;
642
-
643
- my( $pack, $file, $line ) = $self->caller(1);
644
-
645
- my $code = '';
646
- $code .= "#line $line $file\n" if defined $file and defined $line;
647
-
648
- return $code;
649
- }
650
-
651
- #line 920
652
-
653
- sub BAIL_OUT {
654
- my( $self, $reason ) = @_;
655
-
656
- $self->{Bailed_Out} = 1;
657
- $self->_print("Bail out! $reason");
658
- exit 255;
659
- }
660
-
661
- #line 933
662
-
663
- *BAILOUT = \&BAIL_OUT;
664
-
665
- #line 944
666
-
667
- sub skip {
668
- my( $self, $why ) = @_;
669
- $why ||= '';
670
- $self->_unoverload_str( \$why );
671
-
672
- lock( $self->{Curr_Test} );
673
- $self->{Curr_Test}++;
674
-
675
- $self->{Test_Results}[ $self->{Curr_Test} - 1 ] = &share(
676
- {
677
- 'ok' => 1,
678
- actual_ok => 1,
679
- name => '',
680
- type => 'skip',
681
- reason => $why,
682
- }
683
- );
684
-
685
- my $out = "ok";
686
- $out .= " $self->{Curr_Test}" if $self->use_numbers;
687
- $out .= " # skip";
688
- $out .= " $why" if length $why;
689
- $out .= "\n";
690
-
691
- $self->_print($out);
692
-
693
- return 1;
694
- }
695
-
696
- #line 985
697
-
698
- sub todo_skip {
699
- my( $self, $why ) = @_;
700
- $why ||= '';
701
-
702
- lock( $self->{Curr_Test} );
703
- $self->{Curr_Test}++;
704
-
705
- $self->{Test_Results}[ $self->{Curr_Test} - 1 ] = &share(
706
- {
707
- 'ok' => 1,
708
- actual_ok => 0,
709
- name => '',
710
- type => 'todo_skip',
711
- reason => $why,
712
- }
713
- );
714
-
715
- my $out = "not ok";
716
- $out .= " $self->{Curr_Test}" if $self->use_numbers;
717
- $out .= " # TODO & SKIP $why\n";
718
-
719
- $self->_print($out);
720
-
721
- return 1;
722
- }
723
-
724
- #line 1062
725
-
726
- sub maybe_regex {
727
- my( $self, $regex ) = @_;
728
- my $usable_regex = undef;
729
-
730
- return $usable_regex unless defined $regex;
731
-
732
- my( $re, $opts );
733
-
734
- # Check for qr/foo/
735
- if( _is_qr($regex) ) {
736
- $usable_regex = $regex;
737
- }
738
- # Check for '/foo/' or 'm,foo,'
739
- elsif(( $re, $opts ) = $regex =~ m{^ /(.*)/ (\w*) $ }sx or
740
- ( undef, $re, $opts ) = $regex =~ m,^ m([^\w\s]) (.+) \1 (\w*) $,sx
741
- )
742
- {
743
- $usable_regex = length $opts ? "(?$opts)$re" : $re;
744
- }
745
-
746
- return $usable_regex;
747
- }
748
-
749
- sub _is_qr {
750
- my $regex = shift;
751
-
752
- # is_regexp() checks for regexes in a robust manner, say if they're
753
- # blessed.
754
- return re::is_regexp($regex) if defined &re::is_regexp;
755
- return ref $regex eq 'Regexp';
756
- }
757
-
758
- sub _regex_ok {
759
- my( $self, $this, $regex, $cmp, $name ) = @_;
760
-
761
- my $ok = 0;
762
- my $usable_regex = $self->maybe_regex($regex);
763
- unless( defined $usable_regex ) {
764
- local $Level = $Level + 1;
765
- $ok = $self->ok( 0, $name );
766
- $self->diag(" '$regex' doesn't look much like a regex to me.");
767
- return $ok;
768
- }
769
-
770
- {
771
- ## no critic (BuiltinFunctions::ProhibitStringyEval)
772
-
773
- my $test;
774
- my $code = $self->_caller_context;
775
-
776
- local( $@, $!, $SIG{__DIE__} ); # isolate eval
777
-
778
- # Yes, it has to look like this or 5.4.5 won't see the #line
779
- # directive.
780
- # Don't ask me, man, I just work here.
781
- $test = eval "
782
- $code" . q{$test = $this =~ /$usable_regex/ ? 1 : 0};
783
-
784
- $test = !$test if $cmp eq '!~';
785
-
786
- local $Level = $Level + 1;
787
- $ok = $self->ok( $test, $name );
788
- }
789
-
790
- unless($ok) {
791
- $this = defined $this ? "'$this'" : 'undef';
792
- my $match = $cmp eq '=~' ? "doesn't match" : "matches";
793
-
794
- local $Level = $Level + 1;
795
- $self->diag( sprintf <<'DIAGNOSTIC', $this, $match, $regex );
796
- %s
797
- %13s '%s'
798
- DIAGNOSTIC
799
-
800
- }
801
-
802
- return $ok;
803
- }
804
-
805
- # I'm not ready to publish this. It doesn't deal with array return
806
- # values from the code or context.
807
-
808
- #line 1162
809
-
810
- sub _try {
811
- my( $self, $code, %opts ) = @_;
812
-
813
- my $error;
814
- my $return;
815
- {
816
- local $!; # eval can mess up $!
817
- local $@; # don't set $@ in the test
818
- local $SIG{__DIE__}; # don't trip an outside DIE handler.
819
- $return = eval { $code->() };
820
- $error = $@;
821
- }
822
-
823
- die $error if $error and $opts{die_on_fail};
824
-
825
- return wantarray ? ( $return, $error ) : $return;
826
- }
827
-
828
- #line 1191
829
-
830
- sub is_fh {
831
- my $self = shift;
832
- my $maybe_fh = shift;
833
- return 0 unless defined $maybe_fh;
834
-
835
- return 1 if ref $maybe_fh eq 'GLOB'; # its a glob ref
836
- return 1 if ref \$maybe_fh eq 'GLOB'; # its a glob
837
-
838
- return eval { $maybe_fh->isa("IO::Handle") } ||
839
- # 5.5.4's tied() and can() doesn't like getting undef
840
- eval { ( tied($maybe_fh) || '' )->can('TIEHANDLE') };
841
- }
842
-
843
- #line 1235
844
-
845
- sub level {
846
- my( $self, $level ) = @_;
847
-
848
- if( defined $level ) {
849
- $Level = $level;
850
- }
851
- return $Level;
852
- }
853
-
854
- #line 1267
855
-
856
- sub use_numbers {
857
- my( $self, $use_nums ) = @_;
858
-
859
- if( defined $use_nums ) {
860
- $self->{Use_Nums} = $use_nums;
861
- }
862
- return $self->{Use_Nums};
863
- }
864
-
865
- #line 1300
866
-
867
- foreach my $attribute (qw(No_Header No_Ending No_Diag)) {
868
- my $method = lc $attribute;
869
-
870
- my $code = sub {
871
- my( $self, $no ) = @_;
872
-
873
- if( defined $no ) {
874
- $self->{$attribute} = $no;
875
- }
876
- return $self->{$attribute};
877
- };
878
-
879
- no strict 'refs'; ## no critic
880
- *{ __PACKAGE__ . '::' . $method } = $code;
881
- }
882
-
883
- #line 1353
884
-
885
- sub diag {
886
- my $self = shift;
887
-
888
- $self->_print_comment( $self->_diag_fh, @_ );
889
- }
890
-
891
- #line 1368
892
-
893
- sub note {
894
- my $self = shift;
895
-
896
- $self->_print_comment( $self->output, @_ );
897
- }
898
-
899
- sub _diag_fh {
900
- my $self = shift;
901
-
902
- local $Level = $Level + 1;
903
- return $self->in_todo ? $self->todo_output : $self->failure_output;
904
- }
905
-
906
- sub _print_comment {
907
- my( $self, $fh, @msgs ) = @_;
908
-
909
- return if $self->no_diag;
910
- return unless @msgs;
911
-
912
- # Prevent printing headers when compiling (i.e. -c)
913
- return if $^C;
914
-
915
- # Smash args together like print does.
916
- # Convert undef to 'undef' so its readable.
917
- my $msg = join '', map { defined($_) ? $_ : 'undef' } @msgs;
918
-
919
- # Escape the beginning, _print will take care of the rest.
920
- $msg =~ s/^/# /;
921
-
922
- local $Level = $Level + 1;
923
- $self->_print_to_fh( $fh, $msg );
924
-
925
- return 0;
926
- }
927
-
928
- #line 1418
929
-
930
- sub explain {
931
- my $self = shift;
932
-
933
- return map {
934
- ref $_
935
- ? do {
936
- $self->_try(sub { require Data::Dumper }, die_on_fail => 1);
937
-
938
- my $dumper = Data::Dumper->new( [$_] );
939
- $dumper->Indent(1)->Terse(1);
940
- $dumper->Sortkeys(1) if $dumper->can("Sortkeys");
941
- $dumper->Dump;
942
- }
943
- : $_
944
- } @_;
945
- }
946
-
947
- #line 1447
948
-
949
- sub _print {
950
- my $self = shift;
951
- return $self->_print_to_fh( $self->output, @_ );
952
- }
953
-
954
- sub _print_to_fh {
955
- my( $self, $fh, @msgs ) = @_;
956
-
957
- # Prevent printing headers when only compiling. Mostly for when
958
- # tests are deparsed with B::Deparse
959
- return if $^C;
960
-
961
- my $msg = join '', @msgs;
962
-
963
- local( $\, $", $, ) = ( undef, ' ', '' );
964
-
965
- # Escape each line after the first with a # so we don't
966
- # confuse Test::Harness.
967
- $msg =~ s{\n(?!\z)}{\n# }sg;
968
-
969
- # Stick a newline on the end if it needs it.
970
- $msg .= "\n" unless $msg =~ /\n\z/;
971
-
972
- return print $fh $msg;
973
- }
974
-
975
- #line 1506
976
-
977
- sub output {
978
- my( $self, $fh ) = @_;
979
-
980
- if( defined $fh ) {
981
- $self->{Out_FH} = $self->_new_fh($fh);
982
- }
983
- return $self->{Out_FH};
984
- }
985
-
986
- sub failure_output {
987
- my( $self, $fh ) = @_;
988
-
989
- if( defined $fh ) {
990
- $self->{Fail_FH} = $self->_new_fh($fh);
991
- }
992
- return $self->{Fail_FH};
993
- }
994
-
995
- sub todo_output {
996
- my( $self, $fh ) = @_;
997
-
998
- if( defined $fh ) {
999
- $self->{Todo_FH} = $self->_new_fh($fh);
1000
- }
1001
- return $self->{Todo_FH};
1002
- }
1003
-
1004
- sub _new_fh {
1005
- my $self = shift;
1006
- my($file_or_fh) = shift;
1007
-
1008
- my $fh;
1009
- if( $self->is_fh($file_or_fh) ) {
1010
- $fh = $file_or_fh;
1011
- }
1012
- elsif( ref $file_or_fh eq 'SCALAR' ) {
1013
- # Scalar refs as filehandles was added in 5.8.
1014
- if( $] >= 5.008 ) {
1015
- open $fh, ">>", $file_or_fh
1016
- or $self->croak("Can't open scalar ref $file_or_fh: $!");
1017
- }
1018
- # Emulate scalar ref filehandles with a tie.
1019
- else {
1020
- $fh = Test::Builder::IO::Scalar->new($file_or_fh)
1021
- or $self->croak("Can't tie scalar ref $file_or_fh");
1022
- }
1023
- }
1024
- else {
1025
- open $fh, ">", $file_or_fh
1026
- or $self->croak("Can't open test output log $file_or_fh: $!");
1027
- _autoflush($fh);
1028
- }
1029
-
1030
- return $fh;
1031
- }
1032
-
1033
- sub _autoflush {
1034
- my($fh) = shift;
1035
- my $old_fh = select $fh;
1036
- $| = 1;
1037
- select $old_fh;
1038
-
1039
- return;
1040
- }
1041
-
1042
- my( $Testout, $Testerr );
1043
-
1044
- sub _dup_stdhandles {
1045
- my $self = shift;
1046
-
1047
- $self->_open_testhandles;
1048
-
1049
- # Set everything to unbuffered else plain prints to STDOUT will
1050
- # come out in the wrong order from our own prints.
1051
- _autoflush($Testout);
1052
- _autoflush( \*STDOUT );
1053
- _autoflush($Testerr);
1054
- _autoflush( \*STDERR );
1055
-
1056
- $self->reset_outputs;
1057
-
1058
- return;
1059
- }
1060
-
1061
- sub _open_testhandles {
1062
- my $self = shift;
1063
-
1064
- return if $self->{Opened_Testhandles};
1065
-
1066
- # We dup STDOUT and STDERR so people can change them in their
1067
- # test suites while still getting normal test output.
1068
- open( $Testout, ">&STDOUT" ) or die "Can't dup STDOUT: $!";
1069
- open( $Testerr, ">&STDERR" ) or die "Can't dup STDERR: $!";
1070
-
1071
- # $self->_copy_io_layers( \*STDOUT, $Testout );
1072
- # $self->_copy_io_layers( \*STDERR, $Testerr );
1073
-
1074
- $self->{Opened_Testhandles} = 1;
1075
-
1076
- return;
1077
- }
1078
-
1079
- sub _copy_io_layers {
1080
- my( $self, $src, $dst ) = @_;
1081
-
1082
- $self->_try(
1083
- sub {
1084
- require PerlIO;
1085
- my @src_layers = PerlIO::get_layers($src);
1086
-
1087
- binmode $dst, join " ", map ":$_", @src_layers if @src_layers;
1088
- }
1089
- );
1090
-
1091
- return;
1092
- }
1093
-
1094
- #line 1631
1095
-
1096
- sub reset_outputs {
1097
- my $self = shift;
1098
-
1099
- $self->output ($Testout);
1100
- $self->failure_output($Testerr);
1101
- $self->todo_output ($Testout);
1102
-
1103
- return;
1104
- }
1105
-
1106
- #line 1657
1107
-
1108
- sub _message_at_caller {
1109
- my $self = shift;
1110
-
1111
- local $Level = $Level + 1;
1112
- my( $pack, $file, $line ) = $self->caller;
1113
- return join( "", @_ ) . " at $file line $line.\n";
1114
- }
1115
-
1116
- sub carp {
1117
- my $self = shift;
1118
- return warn $self->_message_at_caller(@_);
1119
- }
1120
-
1121
- sub croak {
1122
- my $self = shift;
1123
- return die $self->_message_at_caller(@_);
1124
- }
1125
-
1126
-
1127
- #line 1697
1128
-
1129
- sub current_test {
1130
- my( $self, $num ) = @_;
1131
-
1132
- lock( $self->{Curr_Test} );
1133
- if( defined $num ) {
1134
- $self->{Curr_Test} = $num;
1135
-
1136
- # If the test counter is being pushed forward fill in the details.
1137
- my $test_results = $self->{Test_Results};
1138
- if( $num > @$test_results ) {
1139
- my $start = @$test_results ? @$test_results : 0;
1140
- for( $start .. $num - 1 ) {
1141
- $test_results->[$_] = &share(
1142
- {
1143
- 'ok' => 1,
1144
- actual_ok => undef,
1145
- reason => 'incrementing test number',
1146
- type => 'unknown',
1147
- name => undef
1148
- }
1149
- );
1150
- }
1151
- }
1152
- # If backward, wipe history. Its their funeral.
1153
- elsif( $num < @$test_results ) {
1154
- $#{$test_results} = $num - 1;
1155
- }
1156
- }
1157
- return $self->{Curr_Test};
1158
- }
1159
-
1160
- #line 1739
1161
-
1162
- sub summary {
1163
- my($self) = shift;
1164
-
1165
- return map { $_->{'ok'} } @{ $self->{Test_Results} };
1166
- }
1167
-
1168
- #line 1794
1169
-
1170
- sub details {
1171
- my $self = shift;
1172
- return @{ $self->{Test_Results} };
1173
- }
1174
-
1175
- #line 1823
1176
-
1177
- sub todo {
1178
- my( $self, $pack ) = @_;
1179
-
1180
- return $self->{Todo} if defined $self->{Todo};
1181
-
1182
- local $Level = $Level + 1;
1183
- my $todo = $self->find_TODO($pack);
1184
- return $todo if defined $todo;
1185
-
1186
- return '';
1187
- }
1188
-
1189
- #line 1845
1190
-
1191
- sub find_TODO {
1192
- my( $self, $pack ) = @_;
1193
-
1194
- $pack = $pack || $self->caller(1) || $self->exported_to;
1195
- return unless $pack;
1196
-
1197
- no strict 'refs'; ## no critic
1198
- return ${ $pack . '::TODO' };
1199
- }
1200
-
1201
- #line 1863
1202
-
1203
- sub in_todo {
1204
- my $self = shift;
1205
-
1206
- local $Level = $Level + 1;
1207
- return( defined $self->{Todo} || $self->find_TODO ) ? 1 : 0;
1208
- }
1209
-
1210
- #line 1913
1211
-
1212
- sub todo_start {
1213
- my $self = shift;
1214
- my $message = @_ ? shift : '';
1215
-
1216
- $self->{Start_Todo}++;
1217
- if( $self->in_todo ) {
1218
- push @{ $self->{Todo_Stack} } => $self->todo;
1219
- }
1220
- $self->{Todo} = $message;
1221
-
1222
- return;
1223
- }
1224
-
1225
- #line 1935
1226
-
1227
- sub todo_end {
1228
- my $self = shift;
1229
-
1230
- if( !$self->{Start_Todo} ) {
1231
- $self->croak('todo_end() called without todo_start()');
1232
- }
1233
-
1234
- $self->{Start_Todo}--;
1235
-
1236
- if( $self->{Start_Todo} && @{ $self->{Todo_Stack} } ) {
1237
- $self->{Todo} = pop @{ $self->{Todo_Stack} };
1238
- }
1239
- else {
1240
- delete $self->{Todo};
1241
- }
1242
-
1243
- return;
1244
- }
1245
-
1246
- #line 1968
1247
-
1248
- sub caller { ## no critic (Subroutines::ProhibitBuiltinHomonyms)
1249
- my( $self, $height ) = @_;
1250
- $height ||= 0;
1251
-
1252
- my $level = $self->level + $height + 1;
1253
- my @caller;
1254
- do {
1255
- @caller = CORE::caller( $level );
1256
- $level--;
1257
- } until @caller;
1258
- return wantarray ? @caller : $caller[0];
1259
- }
1260
-
1261
- #line 1985
1262
-
1263
- #line 1999
1264
-
1265
- #'#
1266
- sub _sanity_check {
1267
- my $self = shift;
1268
-
1269
- $self->_whoa( $self->{Curr_Test} < 0, 'Says here you ran a negative number of tests!' );
1270
- $self->_whoa( $self->{Curr_Test} != @{ $self->{Test_Results} },
1271
- 'Somehow you got a different number of results than tests ran!' );
1272
-
1273
- return;
1274
- }
1275
-
1276
- #line 2020
1277
-
1278
- sub _whoa {
1279
- my( $self, $check, $desc ) = @_;
1280
- if($check) {
1281
- local $Level = $Level + 1;
1282
- $self->croak(<<"WHOA");
1283
- WHOA! $desc
1284
- This should never happen! Please contact the author immediately!
1285
- WHOA
1286
- }
1287
-
1288
- return;
1289
- }
1290
-
1291
- #line 2044
1292
-
1293
- sub _my_exit {
1294
- $? = $_[0]; ## no critic (Variables::RequireLocalizedPunctuationVars)
1295
-
1296
- return 1;
1297
- }
1298
-
1299
- #line 2056
1300
-
1301
- sub _ending {
1302
- my $self = shift;
1303
-
1304
- my $real_exit_code = $?;
1305
-
1306
- # Don't bother with an ending if this is a forked copy. Only the parent
1307
- # should do the ending.
1308
- if( $self->{Original_Pid} != $$ ) {
1309
- return;
1310
- }
1311
-
1312
- # Ran tests but never declared a plan or hit done_testing
1313
- if( !$self->{Have_Plan} and $self->{Curr_Test} ) {
1314
- $self->diag("Tests were run but no plan was declared and done_testing() was not seen.");
1315
- }
1316
-
1317
- # Exit if plan() was never called. This is so "require Test::Simple"
1318
- # doesn't puke.
1319
- if( !$self->{Have_Plan} ) {
1320
- return;
1321
- }
1322
-
1323
- # Don't do an ending if we bailed out.
1324
- if( $self->{Bailed_Out} ) {
1325
- return;
1326
- }
1327
-
1328
- # Figure out if we passed or failed and print helpful messages.
1329
- my $test_results = $self->{Test_Results};
1330
- if(@$test_results) {
1331
- # The plan? We have no plan.
1332
- if( $self->{No_Plan} ) {
1333
- $self->_output_plan($self->{Curr_Test}) unless $self->no_header;
1334
- $self->{Expected_Tests} = $self->{Curr_Test};
1335
- }
1336
-
1337
- # Auto-extended arrays and elements which aren't explicitly
1338
- # filled in with a shared reference will puke under 5.8.0
1339
- # ithreads. So we have to fill them in by hand. :(
1340
- my $empty_result = &share( {} );
1341
- for my $idx ( 0 .. $self->{Expected_Tests} - 1 ) {
1342
- $test_results->[$idx] = $empty_result
1343
- unless defined $test_results->[$idx];
1344
- }
1345
-
1346
- my $num_failed = grep !$_->{'ok'}, @{$test_results}[ 0 .. $self->{Curr_Test} - 1 ];
1347
-
1348
- my $num_extra = $self->{Curr_Test} - $self->{Expected_Tests};
1349
-
1350
- if( $num_extra != 0 ) {
1351
- my $s = $self->{Expected_Tests} == 1 ? '' : 's';
1352
- $self->diag(<<"FAIL");
1353
- Looks like you planned $self->{Expected_Tests} test$s but ran $self->{Curr_Test}.
1354
- FAIL
1355
- }
1356
-
1357
- if($num_failed) {
1358
- my $num_tests = $self->{Curr_Test};
1359
- my $s = $num_failed == 1 ? '' : 's';
1360
-
1361
- my $qualifier = $num_extra == 0 ? '' : ' run';
1362
-
1363
- $self->diag(<<"FAIL");
1364
- Looks like you failed $num_failed test$s of $num_tests$qualifier.
1365
- FAIL
1366
- }
1367
-
1368
- if($real_exit_code) {
1369
- $self->diag(<<"FAIL");
1370
- Looks like your test exited with $real_exit_code just after $self->{Curr_Test}.
1371
- FAIL
1372
-
1373
- _my_exit($real_exit_code) && return;
1374
- }
1375
-
1376
- my $exit_code;
1377
- if($num_failed) {
1378
- $exit_code = $num_failed <= 254 ? $num_failed : 254;
1379
- }
1380
- elsif( $num_extra != 0 ) {
1381
- $exit_code = 255;
1382
- }
1383
- else {
1384
- $exit_code = 0;
1385
- }
1386
-
1387
- _my_exit($exit_code) && return;
1388
- }
1389
- elsif( $self->{Skip_All} ) {
1390
- _my_exit(0) && return;
1391
- }
1392
- elsif($real_exit_code) {
1393
- $self->diag(<<"FAIL");
1394
- Looks like your test exited with $real_exit_code before it could output anything.
1395
- FAIL
1396
- _my_exit($real_exit_code) && return;
1397
- }
1398
- else {
1399
- $self->diag("No tests run!\n");
1400
- _my_exit(255) && return;
1401
- }
1402
-
1403
- $self->_whoa( 1, "We fell off the end of _ending()" );
1404
- }
1405
-
1406
- END {
1407
- $Test->_ending if defined $Test and !$Test->no_ending;
1408
- }
1409
-
1410
- #line 2236
1411
-
1412
- 1;
1413
-