test_server 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. data/.bowerrc +4 -0
  2. data/.gitignore +19 -0
  3. data/.rdebugrc +7 -0
  4. data/.rspec +3 -0
  5. data/.simplecov +8 -0
  6. data/.travis.yml +8 -0
  7. data/.yardopts +5 -0
  8. data/Gemfile +55 -0
  9. data/LICENSE.md +22 -0
  10. data/README.md +29 -0
  11. data/Rakefile +107 -0
  12. data/app/assets/javascripts/application.js +65 -0
  13. data/app/assets/stylesheets/application.scss +150 -0
  14. data/app/controllers/application_controller.rb +71 -0
  15. data/app/controllers/assets_controller.rb +72 -0
  16. data/app/controllers/javascript_controller.rb +31 -0
  17. data/app/controllers/streaming_controller.rb +52 -0
  18. data/app/controllers/string_controller.rb +51 -0
  19. data/app/views/application.haml +19 -0
  20. data/app/views/xhr/show.haml +38 -0
  21. data/bin/test_server +10 -0
  22. data/bower.json +8 -0
  23. data/config.ru +51 -0
  24. data/files/config.yaml +1 -0
  25. data/files/example-config.erb +12 -0
  26. data/lib/test_server/access_logger.rb +13 -0
  27. data/lib/test_server/actions/create_directory.rb +33 -0
  28. data/lib/test_server/actions/create_file.rb +55 -0
  29. data/lib/test_server/actions/create_output.rb +36 -0
  30. data/lib/test_server/actions/handle_error.rb +39 -0
  31. data/lib/test_server/actions/initialize_application.rb +56 -0
  32. data/lib/test_server/actions/reload_configuration.rb +21 -0
  33. data/lib/test_server/actions/send_signal.rb +32 -0
  34. data/lib/test_server/cli/helper.rb +12 -0
  35. data/lib/test_server/cli/main.rb +105 -0
  36. data/lib/test_server/cli/reload.rb +40 -0
  37. data/lib/test_server/config.rb +107 -0
  38. data/lib/test_server/data.rb +23 -0
  39. data/lib/test_server/encoder.rb +39 -0
  40. data/lib/test_server/encoders/base64.rb +14 -0
  41. data/lib/test_server/encoders/base64_strict.rb +14 -0
  42. data/lib/test_server/encoders/gzip.rb +14 -0
  43. data/lib/test_server/encoders/null.rb +14 -0
  44. data/lib/test_server/erb_generator.rb +35 -0
  45. data/lib/test_server/error_handler.rb +109 -0
  46. data/lib/test_server/error_messages.rb +67 -0
  47. data/lib/test_server/exceptions.rb +39 -0
  48. data/lib/test_server/locales/en.yml +72 -0
  49. data/lib/test_server/main.rb +31 -0
  50. data/lib/test_server/null_access_logger.rb +6 -0
  51. data/lib/test_server/process_environment.rb +23 -0
  52. data/lib/test_server/server.rb +19 -0
  53. data/lib/test_server/server_commands/puma.rb +37 -0
  54. data/lib/test_server/server_commands/rackup.rb +44 -0
  55. data/lib/test_server/template_file.rb +19 -0
  56. data/lib/test_server/template_repository.rb +22 -0
  57. data/lib/test_server/ui_logger.rb +37 -0
  58. data/lib/test_server/version.rb +4 -0
  59. data/lib/test_server/web_helper.rb +66 -0
  60. data/lib/test_server.rb +78 -0
  61. data/share/archlinux/Makefile +7 -0
  62. data/share/archlinux/PKGBUILD.sh.erb +110 -0
  63. data/share/archlinux/config.yaml.erb +10 -0
  64. data/share/archlinux/defaults.sh.erb +3 -0
  65. data/share/archlinux/startup.sh.erb +9 -0
  66. data/share/archlinux/test_server.install +65 -0
  67. data/share/archlinux/tmpfiles.conf.erb +2 -0
  68. data/share/systemd/test_server.service +9 -0
  69. data/share/systemd/test_server.service.erb +11 -0
  70. data/share/systemd/test_server.socket +10 -0
  71. data/spec/encoder_spec.rb +50 -0
  72. data/spec/encoders/base64_spec.rb +18 -0
  73. data/spec/encoders/base64_strict_spec.rb +18 -0
  74. data/spec/encoders/gzip_spec.rb +18 -0
  75. data/spec/encoders/null_spec.rb +18 -0
  76. data/spec/error_handler_spec.rb +155 -0
  77. data/spec/features/fetch_data_via_javascript_spec.rb +19 -0
  78. data/spec/features/fetch_test_data_plain_spec.rb +109 -0
  79. data/spec/features/fetch_test_data_via_streaming_spec.rb +53 -0
  80. data/spec/features/helper_spec.rb +125 -0
  81. data/spec/process_environment_spec.rb +44 -0
  82. data/spec/spec_helper.rb +20 -0
  83. data/spec/support/capybara.rb +16 -0
  84. data/spec/support/debugging.rb +3 -0
  85. data/spec/support/encoding.rb +1 -0
  86. data/spec/support/environment.rb +33 -0
  87. data/spec/support/example.rb +16 -0
  88. data/spec/support/filesystem.rb +19 -0
  89. data/spec/support/html.rb +20 -0
  90. data/spec/support/matcher.rb +17 -0
  91. data/spec/support/pretty_print.xsl +46 -0
  92. data/spec/support/reporting.rb +8 -0
  93. data/spec/support/rspec.rb +5 -0
  94. data/spec/support/string.rb +2 -0
  95. data/spec/support/timeout.rb +18 -0
  96. data/test_server.gemspec +40 -0
  97. data/vendor/assets/components/bootstrap-sass/.bower.json +25 -0
  98. data/vendor/assets/components/bootstrap-sass/CNAME +1 -0
  99. data/vendor/assets/components/bootstrap-sass/CONTRIBUTING.md +61 -0
  100. data/vendor/assets/components/bootstrap-sass/DOCS-LICENSE +319 -0
  101. data/vendor/assets/components/bootstrap-sass/Gemfile +5 -0
  102. data/vendor/assets/components/bootstrap-sass/Gruntfile.js +244 -0
  103. data/vendor/assets/components/bootstrap-sass/LICENSE +176 -0
  104. data/vendor/assets/components/bootstrap-sass/LICENSE-MIT +21 -0
  105. data/vendor/assets/components/bootstrap-sass/README.md +277 -0
  106. data/vendor/assets/components/bootstrap-sass/Rakefile +44 -0
  107. data/vendor/assets/components/bootstrap-sass/_config.yml +25 -0
  108. data/vendor/assets/components/bootstrap-sass/_includes/ads.html +1 -0
  109. data/vendor/assets/components/bootstrap-sass/_includes/footer.html +34 -0
  110. data/vendor/assets/components/bootstrap-sass/_includes/header.html +42 -0
  111. data/vendor/assets/components/bootstrap-sass/_includes/nav-about.html +12 -0
  112. data/vendor/assets/components/bootstrap-sass/_includes/nav-components.html +137 -0
  113. data/vendor/assets/components/bootstrap-sass/_includes/nav-css.html +99 -0
  114. data/vendor/assets/components/bootstrap-sass/_includes/nav-customize.html +40 -0
  115. data/vendor/assets/components/bootstrap-sass/_includes/nav-getting-started.html +44 -0
  116. data/vendor/assets/components/bootstrap-sass/_includes/nav-javascript.html +88 -0
  117. data/vendor/assets/components/bootstrap-sass/_includes/nav-main.html +37 -0
  118. data/vendor/assets/components/bootstrap-sass/_includes/old-bs-docs.html +8 -0
  119. data/vendor/assets/components/bootstrap-sass/_includes/social-buttons.html +16 -0
  120. data/vendor/assets/components/bootstrap-sass/_layouts/default.html +79 -0
  121. data/vendor/assets/components/bootstrap-sass/_layouts/home.html +47 -0
  122. data/vendor/assets/components/bootstrap-sass/about.html +93 -0
  123. data/vendor/assets/components/bootstrap-sass/bower.json +11 -0
  124. data/vendor/assets/components/bootstrap-sass/browserstack.json +37 -0
  125. data/vendor/assets/components/bootstrap-sass/components.html +3689 -0
  126. data/vendor/assets/components/bootstrap-sass/composer.json +28 -0
  127. data/vendor/assets/components/bootstrap-sass/css.html +2674 -0
  128. data/vendor/assets/components/bootstrap-sass/customize.html +1715 -0
  129. data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap-theme.css +427 -0
  130. data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap-theme.min.css +1 -0
  131. data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap.css +6350 -0
  132. data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap.min.css +1 -0
  133. data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  134. data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.svg +229 -0
  135. data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  136. data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  137. data/vendor/assets/components/bootstrap-sass/dist/js/bootstrap.js +2002 -0
  138. data/vendor/assets/components/bootstrap-sass/dist/js/bootstrap.min.js +9 -0
  139. data/vendor/assets/components/bootstrap-sass/docs-assets/css/docs.css +1195 -0
  140. data/vendor/assets/components/bootstrap-sass/docs-assets/css/pygments-manni.css +66 -0
  141. data/vendor/assets/components/bootstrap-sass/docs-assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  142. data/vendor/assets/components/bootstrap-sass/docs-assets/ico/favicon.png +0 -0
  143. data/vendor/assets/components/bootstrap-sass/docs-assets/js/application.js +103 -0
  144. data/vendor/assets/components/bootstrap-sass/docs-assets/js/customizer.js +332 -0
  145. data/vendor/assets/components/bootstrap-sass/docs-assets/js/filesaver.js +169 -0
  146. data/vendor/assets/components/bootstrap-sass/docs-assets/js/holder.js +404 -0
  147. data/vendor/assets/components/bootstrap-sass/docs-assets/js/ie8-responsive-file-warning.js +12 -0
  148. data/vendor/assets/components/bootstrap-sass/docs-assets/js/jszip.js +1467 -0
  149. data/vendor/assets/components/bootstrap-sass/docs-assets/js/less.js +9 -0
  150. data/vendor/assets/components/bootstrap-sass/docs-assets/js/raw-files.js +3 -0
  151. data/vendor/assets/components/bootstrap-sass/docs-assets/js/uglify.js +14 -0
  152. data/vendor/assets/components/bootstrap-sass/examples/carousel/carousel.css +148 -0
  153. data/vendor/assets/components/bootstrap-sass/examples/carousel/index.html +206 -0
  154. data/vendor/assets/components/bootstrap-sass/examples/grid/grid.css +28 -0
  155. data/vendor/assets/components/bootstrap-sass/examples/grid/index.html +148 -0
  156. data/vendor/assets/components/bootstrap-sass/examples/jumbotron/index.html +99 -0
  157. data/vendor/assets/components/bootstrap-sass/examples/jumbotron/jumbotron.css +5 -0
  158. data/vendor/assets/components/bootstrap-sass/examples/jumbotron-narrow/index.html +82 -0
  159. data/vendor/assets/components/bootstrap-sass/examples/jumbotron-narrow/jumbotron-narrow.css +79 -0
  160. data/vendor/assets/components/bootstrap-sass/examples/justified-nav/index.html +83 -0
  161. data/vendor/assets/components/bootstrap-sass/examples/justified-nav/justified-nav.css +88 -0
  162. data/vendor/assets/components/bootstrap-sass/examples/navbar/index.html +88 -0
  163. data/vendor/assets/components/bootstrap-sass/examples/navbar/navbar.css +8 -0
  164. data/vendor/assets/components/bootstrap-sass/examples/navbar-fixed-top/index.html +91 -0
  165. data/vendor/assets/components/bootstrap-sass/examples/navbar-fixed-top/navbar-fixed-top.css +4 -0
  166. data/vendor/assets/components/bootstrap-sass/examples/navbar-static-top/index.html +92 -0
  167. data/vendor/assets/components/bootstrap-sass/examples/navbar-static-top/navbar-static-top.css +7 -0
  168. data/vendor/assets/components/bootstrap-sass/examples/non-responsive/index.html +101 -0
  169. data/vendor/assets/components/bootstrap-sass/examples/non-responsive/non-responsive.css +116 -0
  170. data/vendor/assets/components/bootstrap-sass/examples/offcanvas/index.html +130 -0
  171. data/vendor/assets/components/bootstrap-sass/examples/offcanvas/offcanvas.css +50 -0
  172. data/vendor/assets/components/bootstrap-sass/examples/offcanvas/offcanvas.js +5 -0
  173. data/vendor/assets/components/bootstrap-sass/examples/screenshots/carousel.jpg +0 -0
  174. data/vendor/assets/components/bootstrap-sass/examples/screenshots/grid.jpg +0 -0
  175. data/vendor/assets/components/bootstrap-sass/examples/screenshots/jumbotron-narrow.jpg +0 -0
  176. data/vendor/assets/components/bootstrap-sass/examples/screenshots/jumbotron.jpg +0 -0
  177. data/vendor/assets/components/bootstrap-sass/examples/screenshots/justified-nav.jpg +0 -0
  178. data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar-fixed.jpg +0 -0
  179. data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar-static.jpg +0 -0
  180. data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar.jpg +0 -0
  181. data/vendor/assets/components/bootstrap-sass/examples/screenshots/non-responsive.jpg +0 -0
  182. data/vendor/assets/components/bootstrap-sass/examples/screenshots/offcanvas.jpg +0 -0
  183. data/vendor/assets/components/bootstrap-sass/examples/screenshots/sign-in.jpg +0 -0
  184. data/vendor/assets/components/bootstrap-sass/examples/screenshots/starter-template.jpg +0 -0
  185. data/vendor/assets/components/bootstrap-sass/examples/screenshots/sticky-footer-navbar.jpg +0 -0
  186. data/vendor/assets/components/bootstrap-sass/examples/screenshots/sticky-footer.jpg +0 -0
  187. data/vendor/assets/components/bootstrap-sass/examples/screenshots/theme.jpg +0 -0
  188. data/vendor/assets/components/bootstrap-sass/examples/signin/index.html +50 -0
  189. data/vendor/assets/components/bootstrap-sass/examples/signin/signin.css +40 -0
  190. data/vendor/assets/components/bootstrap-sass/examples/starter-template/index.html +68 -0
  191. data/vendor/assets/components/bootstrap-sass/examples/starter-template/starter-template.css +7 -0
  192. data/vendor/assets/components/bootstrap-sass/examples/sticky-footer/index.html +55 -0
  193. data/vendor/assets/components/bootstrap-sass/examples/sticky-footer/sticky-footer.css +38 -0
  194. data/vendor/assets/components/bootstrap-sass/examples/sticky-footer-navbar/index.html +91 -0
  195. data/vendor/assets/components/bootstrap-sass/examples/sticky-footer-navbar/sticky-footer-navbar.css +45 -0
  196. data/vendor/assets/components/bootstrap-sass/examples/theme/index.html +384 -0
  197. data/vendor/assets/components/bootstrap-sass/examples/theme/theme.css +14 -0
  198. data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.eot +0 -0
  199. data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.svg +229 -0
  200. data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.ttf +0 -0
  201. data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.woff +0 -0
  202. data/vendor/assets/components/bootstrap-sass/getting-started.html +1021 -0
  203. data/vendor/assets/components/bootstrap-sass/index.html +16 -0
  204. data/vendor/assets/components/bootstrap-sass/javascript.html +1983 -0
  205. data/vendor/assets/components/bootstrap-sass/js/affix.js +126 -0
  206. data/vendor/assets/components/bootstrap-sass/js/alert.js +98 -0
  207. data/vendor/assets/components/bootstrap-sass/js/button.js +109 -0
  208. data/vendor/assets/components/bootstrap-sass/js/carousel.js +217 -0
  209. data/vendor/assets/components/bootstrap-sass/js/collapse.js +179 -0
  210. data/vendor/assets/components/bootstrap-sass/js/dropdown.js +154 -0
  211. data/vendor/assets/components/bootstrap-sass/js/modal.js +246 -0
  212. data/vendor/assets/components/bootstrap-sass/js/popover.js +117 -0
  213. data/vendor/assets/components/bootstrap-sass/js/scrollspy.js +158 -0
  214. data/vendor/assets/components/bootstrap-sass/js/tab.js +135 -0
  215. data/vendor/assets/components/bootstrap-sass/js/tests/index.html +52 -0
  216. data/vendor/assets/components/bootstrap-sass/js/tests/unit/affix.js +25 -0
  217. data/vendor/assets/components/bootstrap-sass/js/tests/unit/alert.js +62 -0
  218. data/vendor/assets/components/bootstrap-sass/js/tests/unit/button.js +116 -0
  219. data/vendor/assets/components/bootstrap-sass/js/tests/unit/carousel.js +87 -0
  220. data/vendor/assets/components/bootstrap-sass/js/tests/unit/collapse.js +164 -0
  221. data/vendor/assets/components/bootstrap-sass/js/tests/unit/dropdown.js +219 -0
  222. data/vendor/assets/components/bootstrap-sass/js/tests/unit/modal.js +196 -0
  223. data/vendor/assets/components/bootstrap-sass/js/tests/unit/phantom.js +69 -0
  224. data/vendor/assets/components/bootstrap-sass/js/tests/unit/popover.js +133 -0
  225. data/vendor/assets/components/bootstrap-sass/js/tests/unit/scrollspy.js +37 -0
  226. data/vendor/assets/components/bootstrap-sass/js/tests/unit/tab.js +86 -0
  227. data/vendor/assets/components/bootstrap-sass/js/tests/unit/tooltip.js +437 -0
  228. data/vendor/assets/components/bootstrap-sass/js/tests/unit/transition.js +13 -0
  229. data/vendor/assets/components/bootstrap-sass/js/tests/vendor/jquery.js +6 -0
  230. data/vendor/assets/components/bootstrap-sass/js/tests/vendor/qunit.css +232 -0
  231. data/vendor/assets/components/bootstrap-sass/js/tests/vendor/qunit.js +1510 -0
  232. data/vendor/assets/components/bootstrap-sass/js/tooltip.js +386 -0
  233. data/vendor/assets/components/bootstrap-sass/js/transition.js +56 -0
  234. data/vendor/assets/components/bootstrap-sass/lib/_alerts.scss +67 -0
  235. data/vendor/assets/components/bootstrap-sass/lib/_badges.scss +51 -0
  236. data/vendor/assets/components/bootstrap-sass/lib/_breadcrumbs.scss +23 -0
  237. data/vendor/assets/components/bootstrap-sass/lib/_button-groups.scss +253 -0
  238. data/vendor/assets/components/bootstrap-sass/lib/_buttons.scss +158 -0
  239. data/vendor/assets/components/bootstrap-sass/lib/_carousel.scss +231 -0
  240. data/vendor/assets/components/bootstrap-sass/lib/_close.scss +35 -0
  241. data/vendor/assets/components/bootstrap-sass/lib/_code.scss +53 -0
  242. data/vendor/assets/components/bootstrap-sass/lib/_component-animations.scss +29 -0
  243. data/vendor/assets/components/bootstrap-sass/lib/_dropdowns.scss +193 -0
  244. data/vendor/assets/components/bootstrap-sass/lib/_forms.scss +363 -0
  245. data/vendor/assets/components/bootstrap-sass/lib/_glyphicons.scss +237 -0
  246. data/vendor/assets/components/bootstrap-sass/lib/_grid.scss +93 -0
  247. data/vendor/assets/components/bootstrap-sass/lib/_input-groups.scss +136 -0
  248. data/vendor/assets/components/bootstrap-sass/lib/_jumbotron.scss +40 -0
  249. data/vendor/assets/components/bootstrap-sass/lib/_labels.scss +58 -0
  250. data/vendor/assets/components/bootstrap-sass/lib/_list-group.scss +88 -0
  251. data/vendor/assets/components/bootstrap-sass/lib/_media.scss +56 -0
  252. data/vendor/assets/components/bootstrap-sass/lib/_mixins.scss +861 -0
  253. data/vendor/assets/components/bootstrap-sass/lib/_modals.scss +132 -0
  254. data/vendor/assets/components/bootstrap-sass/lib/_navbar.scss +628 -0
  255. data/vendor/assets/components/bootstrap-sass/lib/_navs.scss +262 -0
  256. data/vendor/assets/components/bootstrap-sass/lib/_normalize.scss +406 -0
  257. data/vendor/assets/components/bootstrap-sass/lib/_pager.scss +55 -0
  258. data/vendor/assets/components/bootstrap-sass/lib/_pagination.scss +85 -0
  259. data/vendor/assets/components/bootstrap-sass/lib/_panels.scss +172 -0
  260. data/vendor/assets/components/bootstrap-sass/lib/_popovers.scss +133 -0
  261. data/vendor/assets/components/bootstrap-sass/lib/_print.scss +105 -0
  262. data/vendor/assets/components/bootstrap-sass/lib/_progress-bars.scss +92 -0
  263. data/vendor/assets/components/bootstrap-sass/lib/_responsive-utilities.scss +198 -0
  264. data/vendor/assets/components/bootstrap-sass/lib/_scaffolding.scss +119 -0
  265. data/vendor/assets/components/bootstrap-sass/lib/_tables.scss +244 -0
  266. data/vendor/assets/components/bootstrap-sass/lib/_theme.scss +247 -0
  267. data/vendor/assets/components/bootstrap-sass/lib/_thumbnails.scss +32 -0
  268. data/vendor/assets/components/bootstrap-sass/lib/_tooltip.scss +95 -0
  269. data/vendor/assets/components/bootstrap-sass/lib/_type.scss +279 -0
  270. data/vendor/assets/components/bootstrap-sass/lib/_utilities.scss +56 -0
  271. data/vendor/assets/components/bootstrap-sass/lib/_variables.scss +637 -0
  272. data/vendor/assets/components/bootstrap-sass/lib/_wells.scss +29 -0
  273. data/vendor/assets/components/bootstrap-sass/lib/bootstrap.scss +49 -0
  274. data/vendor/assets/components/bootstrap-sass/package.json +40 -0
  275. data/vendor/assets/components/jquery/.bower.json +37 -0
  276. data/vendor/assets/components/jquery/MIT-LICENSE.txt +21 -0
  277. data/vendor/assets/components/jquery/bower.json +27 -0
  278. data/vendor/assets/components/jquery/dist/jquery.js +9174 -0
  279. data/vendor/assets/components/jquery/dist/jquery.min.js +5 -0
  280. data/vendor/assets/components/jquery/dist/jquery.min.map +1 -0
  281. data/vendor/assets/components/jquery/src/ajax/jsonp.js +89 -0
  282. data/vendor/assets/components/jquery/src/ajax/load.js +75 -0
  283. data/vendor/assets/components/jquery/src/ajax/parseJSON.js +13 -0
  284. data/vendor/assets/components/jquery/src/ajax/parseXML.js +28 -0
  285. data/vendor/assets/components/jquery/src/ajax/script.js +64 -0
  286. data/vendor/assets/components/jquery/src/ajax/var/nonce.js +5 -0
  287. data/vendor/assets/components/jquery/src/ajax/var/rquery.js +3 -0
  288. data/vendor/assets/components/jquery/src/ajax/xhr.js +135 -0
  289. data/vendor/assets/components/jquery/src/ajax.js +806 -0
  290. data/vendor/assets/components/jquery/src/attributes/attr.js +143 -0
  291. data/vendor/assets/components/jquery/src/attributes/classes.js +158 -0
  292. data/vendor/assets/components/jquery/src/attributes/prop.js +96 -0
  293. data/vendor/assets/components/jquery/src/attributes/support.js +35 -0
  294. data/vendor/assets/components/jquery/src/attributes/val.js +163 -0
  295. data/vendor/assets/components/jquery/src/attributes.js +11 -0
  296. data/vendor/assets/components/jquery/src/callbacks.js +205 -0
  297. data/vendor/assets/components/jquery/src/core/access.js +60 -0
  298. data/vendor/assets/components/jquery/src/core/init.js +123 -0
  299. data/vendor/assets/components/jquery/src/core/parseHTML.js +39 -0
  300. data/vendor/assets/components/jquery/src/core/ready.js +97 -0
  301. data/vendor/assets/components/jquery/src/core/var/rsingleTag.js +4 -0
  302. data/vendor/assets/components/jquery/src/core.js +498 -0
  303. data/vendor/assets/components/jquery/src/css/addGetHookIf.js +24 -0
  304. data/vendor/assets/components/jquery/src/css/curCSS.js +57 -0
  305. data/vendor/assets/components/jquery/src/css/defaultDisplay.js +70 -0
  306. data/vendor/assets/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  307. data/vendor/assets/components/jquery/src/css/support.js +91 -0
  308. data/vendor/assets/components/jquery/src/css/swap.js +28 -0
  309. data/vendor/assets/components/jquery/src/css/var/cssExpand.js +3 -0
  310. data/vendor/assets/components/jquery/src/css/var/getStyles.js +5 -0
  311. data/vendor/assets/components/jquery/src/css/var/isHidden.js +13 -0
  312. data/vendor/assets/components/jquery/src/css/var/rmargin.js +3 -0
  313. data/vendor/assets/components/jquery/src/css/var/rnumnonpx.js +5 -0
  314. data/vendor/assets/components/jquery/src/css.js +451 -0
  315. data/vendor/assets/components/jquery/src/data/Data.js +181 -0
  316. data/vendor/assets/components/jquery/src/data/accepts.js +20 -0
  317. data/vendor/assets/components/jquery/src/data/var/data_priv.js +5 -0
  318. data/vendor/assets/components/jquery/src/data/var/data_user.js +5 -0
  319. data/vendor/assets/components/jquery/src/data.js +175 -0
  320. data/vendor/assets/components/jquery/src/deferred.js +149 -0
  321. data/vendor/assets/components/jquery/src/deprecated.js +13 -0
  322. data/vendor/assets/components/jquery/src/dimensions.js +50 -0
  323. data/vendor/assets/components/jquery/src/effects/Tween.js +114 -0
  324. data/vendor/assets/components/jquery/src/effects/animatedSelector.js +13 -0
  325. data/vendor/assets/components/jquery/src/effects.js +647 -0
  326. data/vendor/assets/components/jquery/src/event/alias.js +39 -0
  327. data/vendor/assets/components/jquery/src/event/support.js +9 -0
  328. data/vendor/assets/components/jquery/src/event.js +868 -0
  329. data/vendor/assets/components/jquery/src/exports/amd.js +24 -0
  330. data/vendor/assets/components/jquery/src/exports/global.js +32 -0
  331. data/vendor/assets/components/jquery/src/intro.js +44 -0
  332. data/vendor/assets/components/jquery/src/jquery.js +36 -0
  333. data/vendor/assets/components/jquery/src/manipulation/_evalUrl.js +18 -0
  334. data/vendor/assets/components/jquery/src/manipulation/support.js +31 -0
  335. data/vendor/assets/components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  336. data/vendor/assets/components/jquery/src/manipulation.js +582 -0
  337. data/vendor/assets/components/jquery/src/offset.js +204 -0
  338. data/vendor/assets/components/jquery/src/outro.js +1 -0
  339. data/vendor/assets/components/jquery/src/queue/delay.js +22 -0
  340. data/vendor/assets/components/jquery/src/queue.js +142 -0
  341. data/vendor/assets/components/jquery/src/selector-native.js +172 -0
  342. data/vendor/assets/components/jquery/src/selector-sizzle.js +14 -0
  343. data/vendor/assets/components/jquery/src/selector.js +1 -0
  344. data/vendor/assets/components/jquery/src/serialize.js +111 -0
  345. data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.js +2034 -0
  346. data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  347. data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  348. data/vendor/assets/components/jquery/src/traversing/findFilter.js +100 -0
  349. data/vendor/assets/components/jquery/src/traversing/var/rneedsContext.js +6 -0
  350. data/vendor/assets/components/jquery/src/traversing.js +200 -0
  351. data/vendor/assets/components/jquery/src/var/arr.js +3 -0
  352. data/vendor/assets/components/jquery/src/var/class2type.js +4 -0
  353. data/vendor/assets/components/jquery/src/var/concat.js +5 -0
  354. data/vendor/assets/components/jquery/src/var/hasOwn.js +5 -0
  355. data/vendor/assets/components/jquery/src/var/indexOf.js +5 -0
  356. data/vendor/assets/components/jquery/src/var/pnum.js +3 -0
  357. data/vendor/assets/components/jquery/src/var/push.js +5 -0
  358. data/vendor/assets/components/jquery/src/var/rnotwhite.js +3 -0
  359. data/vendor/assets/components/jquery/src/var/slice.js +5 -0
  360. data/vendor/assets/components/jquery/src/var/strundefined.js +3 -0
  361. data/vendor/assets/components/jquery/src/var/support.js +4 -0
  362. data/vendor/assets/components/jquery/src/var/toString.js +5 -0
  363. data/vendor/assets/components/jquery/src/wrap.js +78 -0
  364. data/vendor/assets/components/open-sans/.bower.json +36 -0
  365. data/vendor/assets/components/open-sans/bower.json +27 -0
  366. data/vendor/assets/components/open-sans/css/open-sans.css +91 -0
  367. data/vendor/assets/components/open-sans/css/open-sans.min.css +1 -0
  368. data/vendor/assets/components/open-sans/fonts/bold/opensans-bold-webfont.eot +0 -0
  369. data/vendor/assets/components/open-sans/fonts/bold/opensans-bold-webfont.svg +958 -0
  370. data/vendor/assets/components/open-sans/fonts/bold/opensans-bold-webfont.ttf +0 -0
  371. data/vendor/assets/components/open-sans/fonts/bold/opensans-bold-webfont.woff +0 -0
  372. data/vendor/assets/components/open-sans/fonts/bold-italic/opensans-bold-italic-webfont.eot +0 -0
  373. data/vendor/assets/components/open-sans/fonts/bold-italic/opensans-bold-italic-webfont.svg +958 -0
  374. data/vendor/assets/components/open-sans/fonts/bold-italic/opensans-bold-italic-webfont.ttf +0 -0
  375. data/vendor/assets/components/open-sans/fonts/bold-italic/opensans-bold-italic-webfont.woff +0 -0
  376. data/vendor/assets/components/open-sans/fonts/extrabold/opensans-extrabold-webfont.eot +0 -0
  377. data/vendor/assets/components/open-sans/fonts/extrabold/opensans-extrabold-webfont.svg +958 -0
  378. data/vendor/assets/components/open-sans/fonts/extrabold/opensans-extrabold-webfont.ttf +0 -0
  379. data/vendor/assets/components/open-sans/fonts/extrabold/opensans-extrabold-webfont.woff +0 -0
  380. data/vendor/assets/components/open-sans/fonts/extrabold-italic/opensans-extrabold-italic-webfont.eot +0 -0
  381. data/vendor/assets/components/open-sans/fonts/extrabold-italic/opensans-extrabold-italic-webfont.svg +958 -0
  382. data/vendor/assets/components/open-sans/fonts/extrabold-italic/opensans-extrabold-italic-webfont.ttf +0 -0
  383. data/vendor/assets/components/open-sans/fonts/extrabold-italic/opensans-extrabold-italic-webfont.woff +0 -0
  384. data/vendor/assets/components/open-sans/fonts/italic/opensans-italic-webfont.eot +0 -0
  385. data/vendor/assets/components/open-sans/fonts/italic/opensans-italic-webfont.svg +958 -0
  386. data/vendor/assets/components/open-sans/fonts/italic/opensans-italic-webfont.ttf +0 -0
  387. data/vendor/assets/components/open-sans/fonts/italic/opensans-italic-webfont.woff +0 -0
  388. data/vendor/assets/components/open-sans/fonts/light/opensans-light-webfont.eot +0 -0
  389. data/vendor/assets/components/open-sans/fonts/light/opensans-light-webfont.svg +958 -0
  390. data/vendor/assets/components/open-sans/fonts/light/opensans-light-webfont.ttf +0 -0
  391. data/vendor/assets/components/open-sans/fonts/light/opensans-light-webfont.woff +0 -0
  392. data/vendor/assets/components/open-sans/fonts/light-italic/opensans-light-italic-webfont.eot +0 -0
  393. data/vendor/assets/components/open-sans/fonts/light-italic/opensans-light-italic-webfont.svg +958 -0
  394. data/vendor/assets/components/open-sans/fonts/light-italic/opensans-light-italic-webfont.ttf +0 -0
  395. data/vendor/assets/components/open-sans/fonts/light-italic/opensans-light-italic-webfont.woff +0 -0
  396. data/vendor/assets/components/open-sans/fonts/regular/opensans-regular-webfont.eot +0 -0
  397. data/vendor/assets/components/open-sans/fonts/regular/opensans-regular-webfont.svg +958 -0
  398. data/vendor/assets/components/open-sans/fonts/regular/opensans-regular-webfont.ttf +0 -0
  399. data/vendor/assets/components/open-sans/fonts/regular/opensans-regular-webfont.woff +0 -0
  400. data/vendor/assets/components/open-sans/fonts/semibold/opensans-semibold-webfont.eot +0 -0
  401. data/vendor/assets/components/open-sans/fonts/semibold/opensans-semibold-webfont.svg +958 -0
  402. data/vendor/assets/components/open-sans/fonts/semibold/opensans-semibold-webfont.ttf +0 -0
  403. data/vendor/assets/components/open-sans/fonts/semibold/opensans-semibold-webfont.woff +0 -0
  404. data/vendor/assets/components/open-sans/fonts/semibold-italic/opensans-semibold-italic-webfont.eot +0 -0
  405. data/vendor/assets/components/open-sans/fonts/semibold-italic/opensans-semibold-italic-webfont.svg +958 -0
  406. data/vendor/assets/components/open-sans/fonts/semibold-italic/opensans-semibold-italic-webfont.ttf +0 -0
  407. data/vendor/assets/components/open-sans/fonts/semibold-italic/opensans-semibold-italic-webfont.woff +0 -0
  408. data/vendor/assets/components/open-sans/scss/_base.scss +19 -0
  409. data/vendor/assets/components/open-sans/scss/_bold-italic.scss +8 -0
  410. data/vendor/assets/components/open-sans/scss/_bold.scss +4 -0
  411. data/vendor/assets/components/open-sans/scss/_extrabold-italic.scss +8 -0
  412. data/vendor/assets/components/open-sans/scss/_extrabold.scss +4 -0
  413. data/vendor/assets/components/open-sans/scss/_italic.scss +8 -0
  414. data/vendor/assets/components/open-sans/scss/_light-italic.scss +8 -0
  415. data/vendor/assets/components/open-sans/scss/_light.scss +4 -0
  416. data/vendor/assets/components/open-sans/scss/_regular.scss +4 -0
  417. data/vendor/assets/components/open-sans/scss/_semibold-italic.scss +8 -0
  418. data/vendor/assets/components/open-sans/scss/_semibold.scss +4 -0
  419. data/vendor/assets/components/open-sans/scss/open-sans.scss +15 -0
  420. metadata +795 -0
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ module Cli
4
+ class Reload < Thor
5
+ no_commands {
6
+ include TestServer::Cli::Helper
7
+ }
8
+
9
+ desc 'configuration', 'Reload configuration'
10
+ def configuration
11
+ TestServer.config = TestServer::Config.new(options[:config_file]) if options[:config_file]
12
+ TestServer.config.log_level = options[:log_level] if options[:log_level]
13
+ TestServer.config.debug_mode = options[:debug_mode] if options[:debug_mode]
14
+ TestServer.config.pid_file = options[:pid_file] if options[:pid_file]
15
+ TestServer.config.lock
16
+
17
+ TestServer.ui_logger.level = TestServer.config.log_level
18
+ TestServer.enable_debug_mode if TestServer.config.debug_mode
19
+
20
+ TestServer.ui_logger.info "Ask web application (PID: #{pid(TestServer.config)}) to reload configuration"
21
+ Actions::SendSignal.new(TestServer.config.reload_config_signal).run
22
+ end
23
+
24
+ desc 'local_storage', 'Reload local_storage'
25
+ def local_storage
26
+ TestServer.config = TestServer::Config.new(options[:config_file]) if options[:config_file]
27
+ TestServer.config.log_level = options[:log_level] if options[:log_level]
28
+ TestServer.config.debug_mode = options[:debug_mode] if options[:debug_mode]
29
+ TestServer.config.pid_file = options[:pid_file] if options[:pid_file]
30
+ TestServer.config.lock
31
+
32
+ TestServer.ui_logger.level = TestServer.config.log_level
33
+ TestServer.enable_debug_mode if TestServer.config.debug_mode
34
+
35
+ TestServer.ui_logger.info "Ask web application (PID: #{pid(TestServer.config)}) to reload storage"
36
+ Actions::SendSignal.new(TestServer.config.reload_storage_signal).run
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,107 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ class Config
4
+
5
+ private
6
+
7
+ attr_reader :config
8
+
9
+ @options = Set.new
10
+ @process_environment = ProcessEnvironment.new
11
+
12
+ class << self
13
+
14
+ public
15
+
16
+ attr_reader :options, :process_environment
17
+
18
+ def option_reader(option, default_value)
19
+ define_method option.to_sym do
20
+ config.fetch(option.to_sym, default_value)
21
+ end
22
+
23
+ @options << option
24
+ end
25
+
26
+ def option_writer(option)
27
+ define_method "#{option}=".to_sym do |value|
28
+ begin
29
+ config[option.to_sym] = value
30
+ rescue RuntimeError
31
+ raise Exceptions::ConfigLocked
32
+ end
33
+ end
34
+
35
+ @options << option
36
+ end
37
+
38
+ def option(option, default_value)
39
+ option_reader(option, default_value)
40
+ option_writer(option)
41
+ end
42
+ end
43
+
44
+ public
45
+
46
+ def initialize(file = available_config_file, config_engine = Psych)
47
+ config_mutex = Mutex.new
48
+ config_mutex.synchronize do
49
+ yaml = Psych.load_file(file)
50
+
51
+ if yaml.respond_to? :[]
52
+ @config = yaml.symbolize_keys
53
+ else
54
+ @config = {}
55
+ end
56
+ end
57
+ rescue StandardError => e
58
+ fail Exceptions::ConfigFileNotReadable, JSON.dump(message: e.message, file: file)
59
+ end
60
+
61
+ def lock
62
+ config.freeze
63
+ end
64
+
65
+ def to_s
66
+ result = []
67
+ result << sprintf("%20s | %s", 'option', 'value')
68
+ result << sprintf("%s + %s", '-' * 20, '-' * 80)
69
+
70
+ Config.options.each do |o|
71
+ result << sprintf("%20s | %s", o, Array(public_send(o)).join(', '))
72
+ end
73
+
74
+ result.join("\n")
75
+ end
76
+
77
+ def allowed_config_file_paths
78
+ [
79
+ ::File.expand_path(::File.join(self.class.process_environment.fetch('HOME'), '.config', 'test_server', 'config.yaml')),
80
+ ::File.expand_path(::File.join(self.class.process_environment.fetch('HOME'), '.test_server', 'config.yaml')),
81
+ ::File.expand_path(::File.join('/etc', 'test_server', 'config.yaml')),
82
+ ::File.expand_path('../../../files/config.yaml', __FILE__),
83
+ ]
84
+ end
85
+
86
+ option :access_log, ::File.expand_path(::File.join(process_environment.fetch('HOME'), '.local', 'share', 'test_server', 'log', 'access.log'))
87
+ option :config_file, ::File.expand_path(::File.join(process_environment.fetch('HOME'), '.config', 'test_server', 'config.yaml'))
88
+ option :debug_mode, false
89
+ option :environment, 'development'
90
+ option :executable, ::File.expand_path(::File.expand_path('../../../bin/test_server', __FILE__))
91
+ option :gem_path, Gem.path.collect {|p|::File.expand_path(p) }
92
+ option :listen, 'tcp://127.0.0.1:8000'
93
+ option :log_level, :info
94
+ option :pid_file, ::File.expand_path(::File.join(process_environment.fetch('HOME'), '.local', 'share', 'test_server', 'run', 'pid'))
95
+ option :reload_config_signal, :USR1
96
+ option :reload_storage_signal, :USR2
97
+ option :sass_cache, ::File.expand_path(::File.join(process_environment.fetch('HOME'), '.local', 'share', 'test_server', 'cache'))
98
+ option :worker_count, 10
99
+
100
+ private
101
+
102
+ def available_config_file
103
+ allowed_config_file_paths.find { |f| ::File.exists? f }
104
+ end
105
+
106
+ end
107
+ end
@@ -0,0 +1,23 @@
1
+ module TestServer
2
+ class Data
3
+ private
4
+
5
+ attr_reader :config
6
+
7
+ public
8
+
9
+ def initialize(config = TestServer.config)
10
+ @config = config
11
+ end
12
+
13
+ def instance_binding
14
+ binding
15
+ end
16
+
17
+ def lookup(variable)
18
+ config.public_send variable.to_sym
19
+ rescue NoMethodError
20
+ fail "Variable \"#{variable}\" not found."
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ class Encoder
4
+ include Comparable
5
+
6
+ def name
7
+ self.class.to_s.demodulize.underscore.to_sym
8
+ end
9
+
10
+ def encode(string)
11
+ fail NotImplementedError, JSON.dump(method: 'encode')
12
+ end
13
+
14
+ def decode(string)
15
+ fail NotImplementedError, JSON.dump(method: 'decode')
16
+ end
17
+
18
+ def name?(n)
19
+ name == n
20
+ end
21
+
22
+ def eql?(other)
23
+ name? other.name
24
+ end
25
+
26
+ def hash
27
+ Digest::SHA1.hexdigest name.to_s
28
+ end
29
+
30
+ def <=>(other)
31
+ name <=> other.name
32
+ end
33
+
34
+ def find_by_name(name)
35
+ rescue NameError
36
+ raise
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ module Encoders
4
+ class Base64 < Encoder
5
+ def encode(string)
6
+ ::Base64.encode64(string)
7
+ end
8
+
9
+ def decode(string)
10
+ ::Base64.decode64(string)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ module Encoders
4
+ class Base64Strict < Encoder
5
+ def encode(string)
6
+ ::Base64.strict_encode64(string)
7
+ end
8
+
9
+ def decode(string)
10
+ ::Base64.strict_decode64(string)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ module Encoders
4
+ class Gzip < Encoder
5
+ def encode(string)
6
+ Zlib::Deflate.deflate(string)
7
+ end
8
+
9
+ def decode(string)
10
+ Zlib::Inflate.inflate(string)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ module Encoders
4
+ class Null < Encoder
5
+ def encode(string)
6
+ string
7
+ end
8
+
9
+ def decode(string)
10
+ string
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ # Used to generate the template
4
+ class ErbGenerator
5
+
6
+ private
7
+
8
+ attr_reader :data
9
+
10
+ public
11
+
12
+ # Create erb generator
13
+ #
14
+ # @param [Data] data
15
+ # The data class to be used within the template
16
+ def initialize(data)
17
+ @data = data
18
+ end
19
+
20
+ # Compile the template
21
+ #
22
+ # @param [IO] source
23
+ # The source template to be used
24
+ # @param [IO] destination
25
+ # The output io handle
26
+ def compile(source, destination)
27
+ erb = ERB.new(source.read, nil, '-')
28
+ begin
29
+ destination.puts erb.result(data.instance_binding)
30
+ rescue SyntaxError => e
31
+ raise Exceptions::ErbTemplateHasSyntaxErrors, e.message
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,109 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ class ErrorHandler
4
+
5
+ @handlers = []
6
+ @mutex = Mutex.new
7
+
8
+ class << self
9
+ attr_reader :handlers, :mutex
10
+ end
11
+
12
+ private
13
+
14
+ attr_reader :details_i18n, :summary_i18n, :exit_code
15
+
16
+ public
17
+
18
+ attr_reader :exception
19
+ attr_accessor :original_message
20
+ attr_accessor :backtrace
21
+
22
+ def initialize(options = {})
23
+ @exception = options.fetch(:exception)
24
+ @details_i18n = options.fetch(:details)
25
+ @summary_i18n = options.fetch(:summary)
26
+ @exit_code = options.fetch(:exit_code)
27
+ rescue KeyError => e
28
+ raise ArgumentError, e.message
29
+ end
30
+
31
+ class << self
32
+ def create(options = {}, &block)
33
+ handler = new(options, &block)
34
+ handlers << handler
35
+
36
+ handler
37
+ end
38
+
39
+ def find(exception)
40
+ handlers.find(proc { default_handler }) { |h| h.exception == exception }
41
+ end
42
+
43
+ private
44
+
45
+ def default_handler
46
+ mutex.synchronize do
47
+ @default_handler ||= new(
48
+ exception: StandardError,
49
+ details: 'errors.default.details',
50
+ summary: 'errors.default.summary',
51
+ exit_code: 99,
52
+ )
53
+ end
54
+ end
55
+ end
56
+
57
+ def details(format = :plain)
58
+ case format
59
+ when :plain
60
+ @details
61
+ when :html
62
+ Rack::Utils.escape_html(@details)
63
+ else
64
+ @details
65
+ end
66
+ end
67
+
68
+ def summary(format = :plain)
69
+ case format
70
+ when :plain
71
+ @summary
72
+ when :html
73
+ Rack::Utils.escape_html(@summary)
74
+ else
75
+ @summary
76
+ end
77
+ end
78
+
79
+ def use(data)
80
+ data = JSON.parse(data) if data.kind_of? String
81
+ data = data.symbolize_keys
82
+
83
+ @details ||= I18n.t(details_i18n, data)
84
+ @summary ||= I18n.t(summary_i18n, data)
85
+ end
86
+
87
+ def execute(data = {})
88
+ use(data)
89
+
90
+ TestServer.ui_logger.fatal details
91
+ TestServer.ui_logger.debug original_message if original_message
92
+ TestServer.ui_logger.debug "Original Backtrace follows\n" + backtrace.join("\n") if backtrace
93
+ Kernel.exit exit_code
94
+ end
95
+
96
+ def to_json
97
+ ErrorHandler.mutex.synchronize do
98
+ @details ||= I18n.t(details_i18n)
99
+ @summary ||= I18n.t(summary_i18n)
100
+ end
101
+
102
+ JSON.dump(
103
+ error_summary: summary,
104
+ error_details: details,
105
+ result: :failure,
106
+ )
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ module ErrorMessages
4
+ ErrorHandler.create(
5
+ exception: StandardError,
6
+ summary: 'errors.default.summary',
7
+ details: 'errors.default.details',
8
+ exit_code: 99,
9
+ )
10
+
11
+ ErrorHandler.create(
12
+ exception: Exceptions::InternalError,
13
+ details: 'errors.internal_error.details',
14
+ summary: 'errors.internal_error.summary',
15
+ exit_code: 1,
16
+ )
17
+
18
+ ErrorHandler.create(
19
+ exception: Exceptions::ConfigFileNotReadable,
20
+ details: 'errors.unreadable_config_file.details',
21
+ summary: 'errors.unreadable_config_file.summary',
22
+ exit_code: 2,
23
+ )
24
+
25
+ ErrorHandler.create(
26
+ exception: Exceptions::UserError,
27
+ details: 'errors.user_error.details',
28
+ summary: 'errors.user_error.summary',
29
+ exit_code: 3,
30
+ )
31
+
32
+ ErrorHandler.create(
33
+ exception: Sinatra::Param::InvalidParameterError,
34
+ details: 'errors.invalid_parameter.details',
35
+ summary: 'errors.invalid_parameter.summary',
36
+ exit_code: 4,
37
+ )
38
+
39
+ ErrorHandler.create(
40
+ exception: Exceptions::PidFileDoesNotExist,
41
+ details: 'errors.invalid_proxy_pac.details',
42
+ summary: 'errors.invalid_proxy_pac.summary',
43
+ exit_code: 5,
44
+ )
45
+
46
+ ErrorHandler.create(
47
+ exception: Exceptions::GivenUrlInvalid,
48
+ details: 'errors.invalid_url.details',
49
+ summary: 'errors.invalid_url.summary',
50
+ exit_code: 6,
51
+ )
52
+
53
+ ErrorHandler.create(
54
+ exception: Exceptions::ServerListenStatementInvalid,
55
+ details: 'errors.invalid_listen_statement.details',
56
+ summary: 'errors.invalid_listen_statement.summary',
57
+ exit_code: 8,
58
+ )
59
+
60
+ ErrorHandler.create(
61
+ exception: Exceptions::AccessLogPathInvalid,
62
+ details: 'errors.invalid_access_log_path.details',
63
+ summary: 'errors.invalid_access_log_path.summary',
64
+ exit_code: 9,
65
+ )
66
+ end
67
+ end
@@ -0,0 +1,39 @@
1
+ module TestServer
2
+ module Exceptions
3
+ # user error
4
+ class UserError < StandardError; end
5
+
6
+ # internal error
7
+ class InternalError < StandardError; end
8
+
9
+ # raised if config file does not exist
10
+ class ConfigFileNotReadable < UserError; end
11
+
12
+ # file in repository not found
13
+ class LocalFileIsUnknown < UserError; end
14
+
15
+ # invalid path to access log
16
+ class AccessLogPathInvalid < UserError; end
17
+
18
+ # reload of configuration failed
19
+ class ReloadOfConfigurationFailed < InternalError; end
20
+
21
+ # raised if pid file does not exist
22
+ class PidFileDoesNotExist < UserError; end
23
+
24
+ # raise if there are template syntax errrors
25
+ class ErbTemplateHasSyntaxErrors < InternalError; end
26
+
27
+ # raised if Template does not exist
28
+ class ErbTemplateIsUnknown < InternalError; end
29
+
30
+ # raised if listen statement is invalid
31
+ class ServerListenStatementInvalid < UserError; end
32
+
33
+ # raised if request is invalid
34
+ class GivenUrlInvalid < UserError; end
35
+
36
+ # raised if variable cannot be looked up
37
+ class VariableUnknown < InternalError; end
38
+ end
39
+ end
@@ -0,0 +1,72 @@
1
+ ---
2
+ en:
3
+ errors:
4
+ default:
5
+ summary: Unexpected Error...
6
+ details: Sorry, but I cannot fullfill your request. An unexpected error occured. Please ask your administrator for support.
7
+ internal_error:
8
+ summary: Internal error...
9
+ details: 'Sorry, but I cannot fullfill your request. An internal error occured: "%{message}". Please notify the author of the software about the problem.'
10
+ user_error:
11
+ summary: User Error...
12
+ details: Sorry, but I cannot fullfill your request. An error occured. There should be a better error message displayed here. Please notify the author of the software about the problem.
13
+ unreadable_config_file:
14
+ summary: Unreadable config file...
15
+ details: 'Sorry, but I cannot fullfill your request. The config file "%{file}" given could not be read: "%{message}".'
16
+ sigint:
17
+ summary: Program Execution Interrupted...
18
+ details: You've chosen to interrupt the program execution.
19
+ sigterm:
20
+ summary: Program Execution Aborted...
21
+ details: I received a SIGTERM. Aborting program execution.
22
+ unknown_local_file:
23
+ summary: Local File Unknown
24
+ details: Sorry, but I cannot fullfill your request. The requested file "%{file}" cannot be found in the local file repository.
25
+ invalid_url:
26
+ summary: Invalid URL...
27
+ details: Sorry, but your request is invalid. The URL "%{url}" is not a correct one. Allowed are URLs like "http://www.example.org" or "www.example.org".
28
+ invalid_access_log_path:
29
+ summary: Invalid Path to Access Log...
30
+ details: Sorry, but I cannot start the server. The path "%{file}" to the access log is invalid. Maybe the directory "%{directory}" where the access log should be stored, does not exist.
31
+ invalid_parameter:
32
+ summary: Invalid Parameter...
33
+ details: Sorry, but your request is invalid. The parameter "%{parameter}" is unknown or the format given cannot be accepted.
34
+ unreadable_config_file:
35
+ summary: Unreadable config file...
36
+ details: 'Sorry, but I cannot fullfill your request. The config file "%{file}" given could not be read: "%{message}".'
37
+ invalid_pac_result:
38
+ summary: Invalid result from pac file...
39
+ details: 'Sorry, but I cannot fullfill your request. The result "%{result}" of proxy.pac "%{file}" is invalid. Please fix the proxy.pac and try again.'
40
+ compress_pac_file_failed:
41
+ summary: Pac file cannot be compressed...
42
+ details: 'Sorry, but an error occurred while I tried to compress the proxy.pac-file "%{file}": %{message}. Please fix the proxy.pac and try again.'
43
+ views:
44
+ application:
45
+ title: Test Server
46
+ buttons:
47
+ submit: 'Start'
48
+ reset: 'Reset'
49
+ close: 'Close'
50
+ dialogs:
51
+ notification:
52
+ title: Notification
53
+ root:
54
+ link: Home
55
+ test:
56
+ link: Tests
57
+ javascript:
58
+ xhr:
59
+ link: XHR
60
+ title: 'Javascript Tests'
61
+ fields: &fields
62
+ url: URL
63
+ count: Count
64
+ timeout: Timeout (s)
65
+ result_table:
66
+ url: URL
67
+ runtime: Runtime (ms)
68
+ timeout: Timeout (ms)
69
+ status: Status
70
+ notification:
71
+ text: You asked me to send out requests.
72
+
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ @config = TestServer::Config.new
4
+ @ui_logger = TestServer::UiLogger.new
5
+
6
+ class << self
7
+ attr_accessor :environment, :config, :ui_logger
8
+
9
+ def root_path
10
+ ::File.expand_path('../../..', __FILE__)
11
+ end
12
+
13
+ def enable_debug_mode
14
+ TestServer.ui_logger.info "Activating debug mode."
15
+
16
+ require 'pry'
17
+ require 'debugger'
18
+ rescue LoadError
19
+ TestServer.ui_logger.error "You tried to enable debug-mode, but either 'pry'- or 'debugger'-gem are not installed. Please fix that before using the debug-switch again."
20
+ end
21
+
22
+ def configure_i18n
23
+ I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
24
+ I18n.load_path = Dir[::File.join(TestServer.root_path, 'lib', 'test_server', 'locales', '*.yml')]
25
+ I18n.backend.load_translations
26
+ I18n.enforce_available_locales = true
27
+ end
28
+ end
29
+ end
30
+
31
+ TestServer.configure_i18n
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ class NullAccessLogger
4
+ def write(*args, &block); end
5
+ end
6
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ module TestServer
3
+ class ProcessEnvironment
4
+ private
5
+
6
+ attr_reader :environment
7
+
8
+ public
9
+
10
+ def initialize(environment = ENV)
11
+ @environment = environment
12
+
13
+ end
14
+
15
+ def fetch(key, default_value = nil)
16
+ environment.to_hash.symbolize_keys.fetch(key.to_sym, default_value).to_s
17
+ end
18
+
19
+ def write(key, value)
20
+ environment[key.to_s] = value
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # encoding:utf-8
2
+ module TestServer
3
+ class Server
4
+
5
+ private
6
+
7
+ attr_reader :command
8
+
9
+ public
10
+
11
+ def initialize(command = ServerCommands::Rackup.new)
12
+ @command = command
13
+ end
14
+
15
+ def start
16
+ exec command.to_s
17
+ end
18
+ end
19
+ end