passenger 5.0.0.beta3 → 5.0.0.rc1

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 (218) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +11 -5
  5. data/CHANGELOG +38 -0
  6. data/CONTRIBUTING.md +1 -4
  7. data/Gemfile +0 -1
  8. data/Gemfile.lock +0 -2
  9. data/Rakefile +33 -33
  10. data/bin/passenger +1 -1
  11. data/bin/passenger-config +1 -1
  12. data/bin/passenger-install-apache2-module +800 -800
  13. data/bin/passenger-install-nginx-module +592 -592
  14. data/bin/passenger-memory-stats +127 -127
  15. data/bin/passenger-status +216 -216
  16. data/build/agents.rb +127 -127
  17. data/build/apache2.rb +87 -87
  18. data/build/basics.rb +60 -60
  19. data/build/common_library.rb +165 -165
  20. data/build/cplusplus_support.rb +51 -51
  21. data/build/cxx_tests.rb +268 -268
  22. data/build/debian.rb +143 -143
  23. data/build/documentation.rb +58 -58
  24. data/build/integration_tests.rb +81 -81
  25. data/build/misc.rb +132 -132
  26. data/build/nginx.rb +20 -20
  27. data/build/node_tests.rb +7 -7
  28. data/build/oxt_tests.rb +14 -14
  29. data/build/packaging.rb +570 -570
  30. data/build/preprocessor.rb +260 -260
  31. data/build/rake_extensions.rb +71 -71
  32. data/build/ruby_extension.rb +29 -29
  33. data/build/ruby_tests.rb +6 -6
  34. data/build/test_basics.rb +37 -37
  35. data/debian.template/control.template +3 -5
  36. data/dev/copy_boost_headers +134 -134
  37. data/dev/install_scripts_bootstrap_code.rb +25 -25
  38. data/dev/list_tests +20 -20
  39. data/dev/ruby_server.rb +223 -223
  40. data/dev/runner +18 -18
  41. data/doc/ServerOptimizationGuide.txt.md +55 -2
  42. data/doc/Users guide Nginx.txt +0 -26
  43. data/doc/Users guide Standalone.txt +5 -1
  44. data/doc/users_guide_snippets/tips.txt +9 -0
  45. data/ext/common/ApplicationPool2/Group.h +23 -11
  46. data/ext/common/ApplicationPool2/Implementation.cpp +32 -7
  47. data/ext/common/ApplicationPool2/Pool.h +22 -17
  48. data/ext/common/ApplicationPool2/SmartSpawner.h +4 -1
  49. data/ext/common/ApplicationPool2/Spawner.h +1 -1
  50. data/ext/common/Constants.h +1 -1
  51. data/ext/common/agents/Base.cpp +35 -20
  52. data/ext/common/agents/HelperAgent/Main.cpp +8 -1
  53. data/ext/common/agents/HelperAgent/OptionParser.h +18 -4
  54. data/ext/common/agents/HelperAgent/RequestHandler.h +2 -83
  55. data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +54 -1
  56. data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +7 -4
  57. data/ext/common/agents/Main.cpp +1 -1
  58. data/ext/common/agents/Watchdog/Main.cpp +54 -19
  59. data/ext/nginx/Configuration.c +7 -0
  60. data/ext/nginx/ContentHandler.c +9 -1
  61. data/helper-scripts/backtrace-sanitizer.rb +106 -87
  62. data/helper-scripts/crash-watch.rb +32 -0
  63. data/helper-scripts/download_binaries/extconf.rb +38 -38
  64. data/helper-scripts/meteor-loader.rb +107 -107
  65. data/helper-scripts/prespawn +101 -101
  66. data/helper-scripts/rack-loader.rb +96 -96
  67. data/helper-scripts/rack-preloader.rb +137 -137
  68. data/lib/phusion_passenger.rb +292 -292
  69. data/lib/phusion_passenger/abstract_installer.rb +438 -438
  70. data/lib/phusion_passenger/active_support3_extensions/init.rb +168 -170
  71. data/lib/phusion_passenger/admin_tools.rb +20 -20
  72. data/lib/phusion_passenger/admin_tools/instance.rb +178 -178
  73. data/lib/phusion_passenger/admin_tools/instance_registry.rb +61 -61
  74. data/lib/phusion_passenger/admin_tools/memory_stats.rb +267 -267
  75. data/lib/phusion_passenger/apache2/config_options.rb +182 -182
  76. data/lib/phusion_passenger/common_library.rb +479 -485
  77. data/lib/phusion_passenger/config/about_command.rb +161 -161
  78. data/lib/phusion_passenger/config/admin_command_command.rb +129 -129
  79. data/lib/phusion_passenger/config/agent_compiler.rb +121 -121
  80. data/lib/phusion_passenger/config/build_native_support_command.rb +43 -43
  81. data/lib/phusion_passenger/config/command.rb +25 -25
  82. data/lib/phusion_passenger/config/compile_agent_command.rb +62 -62
  83. data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +88 -73
  84. data/lib/phusion_passenger/config/detach_process_command.rb +72 -72
  85. data/lib/phusion_passenger/config/download_agent_command.rb +246 -227
  86. data/lib/phusion_passenger/config/download_nginx_engine_command.rb +245 -224
  87. data/lib/phusion_passenger/config/install_agent_command.rb +144 -132
  88. data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +205 -185
  89. data/lib/phusion_passenger/config/installation_utils.rb +204 -204
  90. data/lib/phusion_passenger/config/list_instances_command.rb +64 -64
  91. data/lib/phusion_passenger/config/main.rb +152 -152
  92. data/lib/phusion_passenger/config/nginx_engine_compiler.rb +319 -300
  93. data/lib/phusion_passenger/config/reopen_logs_command.rb +67 -67
  94. data/lib/phusion_passenger/config/restart_app_command.rb +155 -155
  95. data/lib/phusion_passenger/config/system_metrics_command.rb +13 -13
  96. data/lib/phusion_passenger/config/utils.rb +95 -95
  97. data/lib/phusion_passenger/config/validate_install_command.rb +198 -198
  98. data/lib/phusion_passenger/console_text_template.rb +25 -25
  99. data/lib/phusion_passenger/constants.rb +90 -90
  100. data/lib/phusion_passenger/debug_logging.rb +106 -106
  101. data/lib/phusion_passenger/loader_shared_helpers.rb +447 -432
  102. data/lib/phusion_passenger/message_channel.rb +312 -312
  103. data/lib/phusion_passenger/message_client.rb +176 -176
  104. data/lib/phusion_passenger/native_support.rb +369 -369
  105. data/lib/phusion_passenger/nginx/config_options.rb +297 -297
  106. data/lib/phusion_passenger/packaging.rb +131 -131
  107. data/lib/phusion_passenger/platform_info.rb +360 -360
  108. data/lib/phusion_passenger/platform_info/apache.rb +767 -767
  109. data/lib/phusion_passenger/platform_info/apache_detector.rb +199 -199
  110. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +107 -107
  111. data/lib/phusion_passenger/platform_info/compiler.rb +570 -570
  112. data/lib/phusion_passenger/platform_info/curl.rb +32 -32
  113. data/lib/phusion_passenger/platform_info/cxx_portability.rb +188 -188
  114. data/lib/phusion_passenger/platform_info/depcheck.rb +372 -372
  115. data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +109 -109
  116. data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
  117. data/lib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -34
  118. data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +101 -101
  119. data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -5
  120. data/lib/phusion_passenger/platform_info/depcheck_specs/utilities.rb +13 -13
  121. data/lib/phusion_passenger/platform_info/linux.rb +55 -55
  122. data/lib/phusion_passenger/platform_info/operating_system.rb +149 -149
  123. data/lib/phusion_passenger/platform_info/ruby.rb +468 -448
  124. data/lib/phusion_passenger/platform_info/zlib.rb +9 -9
  125. data/lib/phusion_passenger/plugin.rb +66 -66
  126. data/lib/phusion_passenger/preloader_shared_helpers.rb +126 -126
  127. data/lib/phusion_passenger/public_api.rb +191 -191
  128. data/lib/phusion_passenger/rack/out_of_band_gc.rb +93 -94
  129. data/lib/phusion_passenger/rack/thread_handler_extension.rb +231 -227
  130. data/lib/phusion_passenger/request_handler.rb +567 -577
  131. data/lib/phusion_passenger/request_handler/thread_handler.rb +379 -381
  132. data/lib/phusion_passenger/ruby_core_enhancements.rb +86 -86
  133. data/lib/phusion_passenger/ruby_core_io_enhancements.rb +74 -74
  134. data/lib/phusion_passenger/simple_benchmarking.rb +25 -25
  135. data/lib/phusion_passenger/standalone/app_finder.rb +153 -150
  136. data/lib/phusion_passenger/standalone/command.rb +44 -40
  137. data/lib/phusion_passenger/standalone/config_utils.rb +53 -53
  138. data/lib/phusion_passenger/standalone/control_utils.rb +38 -59
  139. data/lib/phusion_passenger/standalone/main.rb +73 -73
  140. data/lib/phusion_passenger/standalone/start_command.rb +697 -685
  141. data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +193 -155
  142. data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +162 -133
  143. data/lib/phusion_passenger/standalone/status_command.rb +64 -64
  144. data/lib/phusion_passenger/standalone/stop_command.rb +72 -72
  145. data/lib/phusion_passenger/standalone/version_command.rb +9 -9
  146. data/lib/phusion_passenger/union_station/connection.rb +32 -32
  147. data/lib/phusion_passenger/union_station/core.rb +251 -251
  148. data/lib/phusion_passenger/union_station/transaction.rb +126 -126
  149. data/lib/phusion_passenger/utils.rb +199 -167
  150. data/lib/phusion_passenger/utils/ansi_colors.rb +128 -128
  151. data/lib/phusion_passenger/utils/download.rb +196 -196
  152. data/lib/phusion_passenger/utils/file_system_watcher.rb +158 -158
  153. data/lib/phusion_passenger/utils/hosts_file_parser.rb +101 -101
  154. data/lib/phusion_passenger/utils/lock.rb +31 -31
  155. data/lib/phusion_passenger/utils/native_support_utils.rb +31 -31
  156. data/lib/phusion_passenger/utils/progress_bar.rb +26 -26
  157. data/lib/phusion_passenger/utils/shellwords.rb +20 -20
  158. data/lib/phusion_passenger/utils/terminal_choice_menu.rb +206 -206
  159. data/lib/phusion_passenger/utils/unseekable_socket.rb +272 -272
  160. data/lib/phusion_passenger/vendor/crash_watch/app.rb +129 -0
  161. data/lib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +341 -0
  162. data/lib/phusion_passenger/vendor/crash_watch/version.rb +24 -0
  163. data/lib/phusion_passenger/vendor/daemon_controller.rb +877 -0
  164. data/lib/phusion_passenger/vendor/daemon_controller/lock_file.rb +127 -0
  165. data/lib/phusion_passenger/vendor/daemon_controller/spawn.rb +26 -0
  166. data/lib/phusion_passenger/vendor/daemon_controller/version.rb +29 -0
  167. data/packaging/rpm/passenger_spec/passenger.spec.template +0 -1
  168. data/passenger.gemspec +0 -1
  169. data/resources/templates/config/nginx_engine_compiler/possible_solutions_for_download_and_extraction_problems.txt.erb +27 -0
  170. data/resources/templates/standalone/config.erb +19 -15
  171. data/test/integration_tests/apache2_tests.rb +566 -566
  172. data/test/integration_tests/downloaded_binaries_tests.rb +126 -125
  173. data/test/integration_tests/native_packaging_spec.rb +296 -296
  174. data/test/integration_tests/nginx_tests.rb +393 -393
  175. data/test/integration_tests/shared/example_webapp_tests.rb +282 -280
  176. data/test/integration_tests/source_packaging_test.rb +138 -138
  177. data/test/integration_tests/spec_helper.rb +5 -5
  178. data/test/integration_tests/standalone_tests.rb +367 -367
  179. data/test/ruby/debug_logging_spec.rb +133 -133
  180. data/test/ruby/message_channel_spec.rb +186 -186
  181. data/test/ruby/rack/loader_spec.rb +28 -28
  182. data/test/ruby/rack/preloader_spec.rb +34 -34
  183. data/test/ruby/rails3.0/loader_spec.rb +12 -12
  184. data/test/ruby/rails3.0/preloader_spec.rb +18 -18
  185. data/test/ruby/rails3.1/loader_spec.rb +12 -12
  186. data/test/ruby/rails3.1/preloader_spec.rb +18 -18
  187. data/test/ruby/rails3.2/loader_spec.rb +12 -12
  188. data/test/ruby/rails3.2/preloader_spec.rb +18 -18
  189. data/test/ruby/rails4.0/loader_spec.rb +12 -12
  190. data/test/ruby/rails4.0/preloader_spec.rb +18 -18
  191. data/test/ruby/rails4.1/loader_spec.rb +12 -12
  192. data/test/ruby/rails4.1/preloader_spec.rb +18 -18
  193. data/test/ruby/request_handler_spec.rb +730 -730
  194. data/test/ruby/shared/loader_sharedspec.rb +224 -224
  195. data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +327 -327
  196. data/test/ruby/shared/ruby_loader_sharedspec.rb +47 -47
  197. data/test/ruby/spec_helper.rb +65 -65
  198. data/test/ruby/standalone/runtime_installer_spec.rb +384 -384
  199. data/test/ruby/union_station_spec.rb +276 -276
  200. data/test/ruby/utils/file_system_watcher_spec.rb +220 -220
  201. data/test/ruby/utils/hosts_file_parser.rb +248 -248
  202. data/test/ruby/utils/tee_input_spec.rb +215 -215
  203. data/test/ruby/utils/unseekable_socket_spec.rb +57 -57
  204. data/test/ruby/utils_spec.rb +21 -21
  205. data/test/stub/rack/config.ru +87 -87
  206. data/test/stub/rack/library.rb +8 -8
  207. data/test/stub/rack/start.rb +30 -30
  208. data/test/support/apache2_controller.rb +191 -191
  209. data/test/support/nginx_controller.rb +90 -99
  210. data/test/support/placebo-preloader.rb +57 -57
  211. data/test/support/test_helper.rb +435 -435
  212. metadata +11 -21
  213. metadata.gz.asc +7 -7
  214. data/lib/phusion_passenger/standalone/command2.rb +0 -292
  215. data/lib/phusion_passenger/standalone/start2_command.rb +0 -799
  216. data/resources/templates/standalone/download_tool_missing.txt.erb +0 -18
  217. data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -17
  218. data/resources/templates/standalone/run_installer_as_root.txt.erb +0 -8
@@ -45,140 +45,141 @@ ENV.delete('PASSENGER_DEBUG')
45
45
  module PhusionPassenger
46
46
 
47
47
  describe "Downloaded Phusion Passenger binaries" do
48
- before :each do
49
- @temp_dir = Dir.mktmpdir
50
- File.open("#{PhusionPassenger.resources_dir}/release.txt", "w").close
51
- @user_dir = File.expand_path("~/#{USER_NAMESPACE_DIRNAME}")
52
- if File.exist?("buildout.old")
53
- raise "buildout.old exists. Please fix this first."
54
- end
55
- if File.exist?("#{@user_dir}.old")
56
- raise "#{@user_dir} exists. Please fix this first."
57
- end
58
- if PhusionPassenger.build_system_dir && File.exist?("#{PhusionPassenger.build_system_dir}/buildout")
59
- FileUtils.mv("#{PhusionPassenger.build_system_dir}/buildout",
60
- "#{PhusionPassenger.build_system_dir}/buildout.old")
61
- end
62
- if File.exist?(@user_dir)
63
- FileUtils.mv(@user_dir, "#{@user_dir}.old")
64
- end
65
- end
48
+ before :each do
49
+ @temp_dir = Dir.mktmpdir
50
+ File.open("#{PhusionPassenger.resources_dir}/release.txt", "w").close
51
+ @user_dir = File.expand_path("~/#{USER_NAMESPACE_DIRNAME}")
52
+ if File.exist?("buildout.old")
53
+ raise "buildout.old exists. Please fix this first."
54
+ end
55
+ if File.exist?("#{@user_dir}.old")
56
+ raise "#{@user_dir} exists. Please fix this first."
57
+ end
58
+ if PhusionPassenger.build_system_dir && File.exist?("#{PhusionPassenger.build_system_dir}/buildout")
59
+ FileUtils.mv("#{PhusionPassenger.build_system_dir}/buildout",
60
+ "#{PhusionPassenger.build_system_dir}/buildout.old")
61
+ end
62
+ if File.exist?(@user_dir)
63
+ FileUtils.mv(@user_dir, "#{@user_dir}.old")
64
+ end
65
+ end
66
66
 
67
- after :each do
68
- FileUtils.remove_entry_secure(@temp_dir)
69
- File.unlink("#{PhusionPassenger.resources_dir}/release.txt")
70
- FileUtils.rm_rf("#{PhusionPassenger.build_system_dir}/buildout")
71
- FileUtils.rm_rf(@user_dir)
72
- if PhusionPassenger.build_system_dir && File.exist?("#{PhusionPassenger.build_system_dir}/buildout.old")
73
- FileUtils.mv("#{PhusionPassenger.build_system_dir}/buildout.old",
74
- "#{PhusionPassenger.build_system_dir}/buildout")
75
- end
76
- if File.exist?("#{@user_dir}.old")
77
- FileUtils.mv("#{@user_dir}.old", @user_dir)
78
- end
79
- end
67
+ after :each do
68
+ FileUtils.remove_entry_secure(@temp_dir)
69
+ File.unlink("#{PhusionPassenger.resources_dir}/release.txt")
70
+ FileUtils.rm_rf("#{PhusionPassenger.build_system_dir}/buildout")
71
+ FileUtils.rm_rf(@user_dir)
72
+ if PhusionPassenger.build_system_dir && File.exist?("#{PhusionPassenger.build_system_dir}/buildout.old")
73
+ FileUtils.mv("#{PhusionPassenger.build_system_dir}/buildout.old",
74
+ "#{PhusionPassenger.build_system_dir}/buildout")
75
+ end
76
+ if File.exist?("#{@user_dir}.old")
77
+ FileUtils.mv("#{@user_dir}.old", @user_dir)
78
+ end
79
+ end
80
80
 
81
- let(:version) { VERSION_STRING }
82
- let(:nginx_version) { PREFERRED_NGINX_VERSION }
83
- let(:compat_id) { PlatformInfo.cxx_binary_compatibility_id }
81
+ let(:version) { VERSION_STRING }
82
+ let(:nginx_version) { PREFERRED_NGINX_VERSION }
83
+ let(:compat_id) { PlatformInfo.cxx_binary_compatibility_id }
84
84
 
85
- def sh(*command)
86
- if !system(*command)
87
- abort "Command failed: #{command.join(' ')}"
88
- end
89
- end
85
+ def sh(*command)
86
+ if !system(*command)
87
+ abort "Command failed: #{command.join(' ')}"
88
+ end
89
+ end
90
90
 
91
- def start_server(document_root)
92
- server = WEBrick::HTTPServer.new(:BindAddress => '127.0.0.1',
93
- :Port => 0,
94
- :DocumentRoot => document_root,
95
- :Logger => WEBrick::Log.new("/dev/null"),
96
- :AccessLog => [])
97
- Thread.new do
98
- Thread.current.abort_on_exception = true
99
- server.start
100
- end
101
- [server, "http://127.0.0.1:#{server.config[:Port]}"]
102
- end
91
+ def start_server(document_root)
92
+ server = WEBrick::HTTPServer.new(:BindAddress => '127.0.0.1',
93
+ :Port => 0,
94
+ :DocumentRoot => document_root,
95
+ :Logger => WEBrick::Log.new("/dev/null"),
96
+ :AccessLog => [])
97
+ Thread.new do
98
+ Thread.current.abort_on_exception = true
99
+ server.start
100
+ end
101
+ [server, "http://127.0.0.1:#{server.config[:Port]}"]
102
+ end
103
103
 
104
- specify "Passenger Standalone is able to use the binaries" do
105
- Dir.mkdir("#{@temp_dir}/#{version}")
106
- Dir.chdir("#{@temp_dir}/#{version}") do
107
- #tarballs = Dir["#{PhusionPassenger.download_cache_dir}/*.tar.gz"]
108
- #tarballs.should_not be_empty
104
+ specify "Passenger Standalone is able to use the binaries" do
105
+ Dir.mkdir("#{@temp_dir}/#{version}")
106
+ Dir.chdir("#{@temp_dir}/#{version}") do
107
+ #tarballs = Dir["#{PhusionPassenger.download_cache_dir}/*.tar.gz"]
108
+ #tarballs.should_not be_empty
109
109
 
110
- File.open("config.ru", "w") do |f|
111
- f.write(%Q{
112
- app = lambda do |env|
113
- [200, { "Content-Type" => "text/plain" }, ["ok"]]
114
- end
115
- run app
116
- })
117
- end
118
- Dir.mkdir("public")
119
- Dir.mkdir("tmp")
120
- Dir.mkdir("log")
110
+ File.open("config.ru", "w") do |f|
111
+ f.write(%Q{
112
+ app = lambda do |env|
113
+ [200, { "Content-Type" => "text/plain" }, ["ok"]]
114
+ end
115
+ run app
116
+ })
117
+ end
118
+ Dir.mkdir("public")
119
+ Dir.mkdir("tmp")
120
+ Dir.mkdir("log")
121
121
 
122
- begin
123
- sh("passenger start " +
124
- "-p 4000 " +
125
- "-d " +
126
- "--no-compile-runtime " +
127
- "--binaries-url-root http://127.0.0.1:4001 " +
128
- ">log/start.log 2>&1")
129
- rescue Exception
130
- system("cat log/start.log")
131
- raise
132
- end
133
- begin
134
- open("http://127.0.0.1:4000/") do |f|
135
- f.read.should == "ok"
136
- end
137
- rescue
138
- system("cat log/passenger.4000.log")
139
- raise
140
- ensure
141
- sh "passenger stop -p 4000"
142
- end
143
- end
144
- end
122
+ begin
123
+ sh("passenger start " +
124
+ "-p 4000 " +
125
+ "-d " +
126
+ "--no-compile-runtime " +
127
+ "--binaries-url-root http://127.0.0.1:4001 " +
128
+ ">log/start.log 2>&1")
129
+ rescue Exception
130
+ puts " --> Log file contents:"
131
+ system("cat log/start.log")
132
+ raise
133
+ end
134
+ begin
135
+ open("http://127.0.0.1:4000/") do |f|
136
+ f.read.should == "ok"
137
+ end
138
+ rescue
139
+ system("cat log/passenger.4000.log")
140
+ raise
141
+ ensure
142
+ sh "passenger stop -p 4000"
143
+ end
144
+ end
145
+ end
145
146
 
146
- specify "helper-scripts/download_binaries/extconf.rb succeeds in downloading all necessary binaries" do
147
- FileUtils.mkdir_p("server_root")
148
- server, url_root = start_server("server_root")
149
- File.rename("download_cache", "download_cache.old")
150
- begin
151
- FileUtils.cp_r("download_cache.old", "server_root/#{VERSION_STRING}")
152
- sh "cd #{PhusionPassenger.build_system_dir} && " +
153
- "env BINARIES_URL_ROOT=#{url_root} " +
154
- "ruby helper-scripts/download_binaries/extconf.rb --abort-on-error"
155
- Dir["download_cache/*"].should_not be_empty
156
- ensure
157
- File.unlink("Makefile") rescue nil
158
- FileUtils.rm_rf("download_cache")
159
- FileUtils.rm_rf("server_root")
160
- File.rename("download_cache.old", "download_cache")
161
- server.stop
162
- end
163
- end if PlatformInfo.os_name == "linux"
147
+ specify "helper-scripts/download_binaries/extconf.rb succeeds in downloading all necessary binaries" do
148
+ FileUtils.mkdir_p("server_root")
149
+ server, url_root = start_server("server_root")
150
+ File.rename("download_cache", "download_cache.old")
151
+ begin
152
+ FileUtils.cp_r("download_cache.old", "server_root/#{VERSION_STRING}")
153
+ sh "cd #{PhusionPassenger.build_system_dir} && " +
154
+ "env BINARIES_URL_ROOT=#{url_root} " +
155
+ "ruby helper-scripts/download_binaries/extconf.rb --abort-on-error"
156
+ Dir["download_cache/*"].should_not be_empty
157
+ ensure
158
+ File.unlink("Makefile") rescue nil
159
+ FileUtils.rm_rf("download_cache")
160
+ FileUtils.rm_rf("server_root")
161
+ File.rename("download_cache.old", "download_cache")
162
+ server.stop
163
+ end
164
+ end if PlatformInfo.os_name == "linux"
164
165
 
165
- specify "helper-scripts/download_binaries/extconf.rb fails at downloading all necessary binaries if one of them does not exist" do
166
- FileUtils.mkdir_p("server_root")
167
- server, url_root = start_server("server_root")
168
- File.rename("download_cache", "download_cache.old")
169
- begin
170
- result = system "cd #{PhusionPassenger.build_system_dir} && " +
171
- "env BINARIES_URL_ROOT=#{url_root} " +
172
- "ruby helper-scripts/download_binaries/extconf.rb --abort-on-error"
173
- result.should be_false
174
- ensure
175
- File.unlink("Makefile") rescue nil
176
- FileUtils.rm_rf("download_cache")
177
- FileUtils.rm_rf("server_root")
178
- File.rename("download_cache.old", "download_cache")
179
- server.stop
180
- end
181
- end
166
+ specify "helper-scripts/download_binaries/extconf.rb fails at downloading all necessary binaries if one of them does not exist" do
167
+ FileUtils.mkdir_p("server_root")
168
+ server, url_root = start_server("server_root")
169
+ File.rename("download_cache", "download_cache.old")
170
+ begin
171
+ result = system "cd #{PhusionPassenger.build_system_dir} && " +
172
+ "env BINARIES_URL_ROOT=#{url_root} " +
173
+ "ruby helper-scripts/download_binaries/extconf.rb --abort-on-error"
174
+ result.should be_false
175
+ ensure
176
+ File.unlink("Makefile") rescue nil
177
+ FileUtils.rm_rf("download_cache")
178
+ FileUtils.rm_rf("server_root")
179
+ File.rename("download_cache.old", "download_cache")
180
+ server.stop
181
+ end
182
+ end
182
183
  end
183
184
 
184
185
  end # module PhusionPassenger
@@ -27,17 +27,17 @@ abort "Please set the LOCATIONS_INI environment variable to the right locations.
27
27
 
28
28
  PACKAGING_METHOD = ENV['NATIVE_PACKAGING_METHOD'] || ENV['PACKAGING_METHOD']
29
29
  if !["deb", "rpm", "homebrew"].include?(PACKAGING_METHOD)
30
- abort "Please set PACKAGING_METHOD to either 'deb', 'rpm' or 'homebrew'"
30
+ abort "Please set PACKAGING_METHOD to either 'deb', 'rpm' or 'homebrew'"
31
31
  end
32
32
 
33
33
  # Clean Bundler environment variables. We don't want to start Passenger Standalone
34
34
  # with Bundler.
35
35
  if defined?(Bundler)
36
- clean_env = nil
37
- Bundler.with_clean_env do
38
- clean_env = ENV.to_hash
39
- end
40
- ENV.replace(clean_env)
36
+ clean_env = nil
37
+ Bundler.with_clean_env do
38
+ clean_env = ENV.to_hash
39
+ end
40
+ ENV.replace(clean_env)
41
41
  end
42
42
 
43
43
  source_root = File.expand_path("../..", File.dirname(__FILE__))
@@ -62,307 +62,307 @@ module PhusionPassenger
62
62
 
63
63
  case PACKAGING_METHOD
64
64
  when "deb"
65
- BINDIR = "/usr/bin"
66
- SBINDIR = "/usr/sbin"
67
- INCLUDEDIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/include"
68
- NGINX_ADDON_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ngx_http_passenger_module"
69
- DOCDIR = "/usr/share/doc/passenger"
70
- HELPER_SCRIPTS_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/helper-scripts"
71
- RUBY_EXTENSION_SOURCE_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ruby_extension_source"
72
- SUPPORT_BINARIES_DIR = "/usr/lib/#{GLOBAL_NAMESPACE_DIRNAME}/support-binaries"
73
- APACHE2_MODULE_PATH = "/usr/lib/apache2/modules/mod_passenger.so"
74
- SUPPORTS_COMPILING_APACHE_MODULE = false
75
-
76
- if `lsb_release -r -s`.strip <= '12.04'
77
- APXS2 = "/usr/bin/apxs2"
78
- else
79
- APXS2 = "/usr/bin/apxs"
80
- end
81
- APACHE2 = "/usr/sbin/apache2"
82
- APACHE2CTL = "/usr/sbin/apache2ctl"
83
- APACHE_CONFIG_FILE = "/etc/apache2/apache2.conf"
84
- APACHE_ERROR_LOG = "/var/log/apache2/error.log"
65
+ BINDIR = "/usr/bin"
66
+ SBINDIR = "/usr/sbin"
67
+ INCLUDEDIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/include"
68
+ NGINX_ADDON_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ngx_http_passenger_module"
69
+ DOCDIR = "/usr/share/doc/passenger"
70
+ HELPER_SCRIPTS_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/helper-scripts"
71
+ RUBY_EXTENSION_SOURCE_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ruby_extension_source"
72
+ SUPPORT_BINARIES_DIR = "/usr/lib/#{GLOBAL_NAMESPACE_DIRNAME}/support-binaries"
73
+ APACHE2_MODULE_PATH = "/usr/lib/apache2/modules/mod_passenger.so"
74
+ SUPPORTS_COMPILING_APACHE_MODULE = false
75
+
76
+ if `lsb_release -r -s`.strip <= '12.04'
77
+ APXS2 = "/usr/bin/apxs2"
78
+ else
79
+ APXS2 = "/usr/bin/apxs"
80
+ end
81
+ APACHE2 = "/usr/sbin/apache2"
82
+ APACHE2CTL = "/usr/sbin/apache2ctl"
83
+ APACHE_CONFIG_FILE = "/etc/apache2/apache2.conf"
84
+ APACHE_ERROR_LOG = "/var/log/apache2/error.log"
85
85
  when "rpm"
86
- BINDIR = "/usr/bin"
87
- SBINDIR = "/usr/sbin"
88
- INCLUDEDIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/include"
89
- NGINX_ADDON_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ngx_http_passenger_module"
90
- DOCDIR = "/usr/share/doc/passenger"
91
- HELPER_SCRIPTS_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/helper-scripts"
92
- RUBY_EXTENSION_SOURCE_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ruby_extension_source"
93
- SUPPORT_BINARIES_DIR = "/usr/lib64/#{GLOBAL_NAMESPACE_DIRNAME}/support-binaries"
94
- APACHE2_MODULE_PATH = "/usr/lib64/httpd/modules/mod_passenger.so"
95
- SUPPORTS_COMPILING_APACHE_MODULE = false
96
-
97
- APXS2 = "/usr/sbin/apxs"
98
- APACHE2 = "/usr/sbin/httpd"
99
- APACHE2CTL = "/usr/sbin/apachectl"
100
- APACHE_CONFIG_FILE = "/etc/httpd/conf/httpd.conf"
101
- APACHE_ERROR_LOG = "/etc/httpd/logs/error_log"
86
+ BINDIR = "/usr/bin"
87
+ SBINDIR = "/usr/sbin"
88
+ INCLUDEDIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/include"
89
+ NGINX_ADDON_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ngx_http_passenger_module"
90
+ DOCDIR = "/usr/share/doc/passenger"
91
+ HELPER_SCRIPTS_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/helper-scripts"
92
+ RUBY_EXTENSION_SOURCE_DIR = "/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ruby_extension_source"
93
+ SUPPORT_BINARIES_DIR = "/usr/lib64/#{GLOBAL_NAMESPACE_DIRNAME}/support-binaries"
94
+ APACHE2_MODULE_PATH = "/usr/lib64/httpd/modules/mod_passenger.so"
95
+ SUPPORTS_COMPILING_APACHE_MODULE = false
96
+
97
+ APXS2 = "/usr/sbin/apxs"
98
+ APACHE2 = "/usr/sbin/httpd"
99
+ APACHE2CTL = "/usr/sbin/apachectl"
100
+ APACHE_CONFIG_FILE = "/etc/httpd/conf/httpd.conf"
101
+ APACHE_ERROR_LOG = "/etc/httpd/logs/error_log"
102
102
  when "homebrew"
103
- # Ensure that the Homebrew-installed Phusion Passenger is the first in PATH.
104
- ENV['PATH'] = "/usr/local/bin:#{ENV['PATH']}"
105
- root = "/usr/local/Cellar/passenger/#{VERSION_STRING}/libexec"
106
-
107
- BINDIR = "#{root}/bin"
108
- SBINDIR = BINDIR
109
- INCLUDEDIR = "#{root}/ext"
110
- NGINX_ADDON_DIR = "#{root}/ext/nginx"
111
- DOCDIR = "#{root}/doc"
112
- HELPER_SCRIPTS_DIR = "#{root}/helper-scripts"
113
- RUBY_EXTENSION_SOURCE_DIR = "#{root}/ext/ruby"
114
- SUPPORT_BINARIES_DIR = "#{root}/buildout/support-binaries"
115
- APACHE2_MODULE_PATH = "#{root}/buildout/apache2/mod_passenger.so"
116
- SUPPORTS_COMPILING_APACHE_MODULE = true
117
-
118
- APXS2 = "/usr/sbin/apxs"
119
- APACHE2 = "/usr/sbin/httpd"
120
- APACHE2CTL = "/usr/sbin/apachectl"
121
- APACHE_CONFIG_FILE = "/private/etc/apache2/httpd.conf"
122
- APACHE_ERROR_LOG = "/private/var/log/apache2/error_log"
103
+ # Ensure that the Homebrew-installed Phusion Passenger is the first in PATH.
104
+ ENV['PATH'] = "/usr/local/bin:#{ENV['PATH']}"
105
+ root = "/usr/local/Cellar/passenger/#{VERSION_STRING}/libexec"
106
+
107
+ BINDIR = "#{root}/bin"
108
+ SBINDIR = BINDIR
109
+ INCLUDEDIR = "#{root}/ext"
110
+ NGINX_ADDON_DIR = "#{root}/ext/nginx"
111
+ DOCDIR = "#{root}/doc"
112
+ HELPER_SCRIPTS_DIR = "#{root}/helper-scripts"
113
+ RUBY_EXTENSION_SOURCE_DIR = "#{root}/ext/ruby"
114
+ SUPPORT_BINARIES_DIR = "#{root}/buildout/support-binaries"
115
+ APACHE2_MODULE_PATH = "#{root}/buildout/apache2/mod_passenger.so"
116
+ SUPPORTS_COMPILING_APACHE_MODULE = true
117
+
118
+ APXS2 = "/usr/sbin/apxs"
119
+ APACHE2 = "/usr/sbin/httpd"
120
+ APACHE2CTL = "/usr/sbin/apachectl"
121
+ APACHE_CONFIG_FILE = "/private/etc/apache2/httpd.conf"
122
+ APACHE_ERROR_LOG = "/private/var/log/apache2/error_log"
123
123
  end
124
124
 
125
125
  describe "A natively packaged Phusion Passenger" do
126
- def capture_output(command)
127
- output = `#{command}`.strip
128
- if $?.exitstatus == 0
129
- return output
130
- else
131
- filename = `mktemp /tmp/output.XXXXXX`.strip
132
- File.open(filename, "w") do |f|
133
- f.write(output)
134
- end
135
- STDERR.puts "Command #{command} exited with status #{$?.exitstatus}. Output written to #{filename}"
136
- if ENV['PRINT_FAILED_COMMAND_OUTPUT']
137
- STDERR.puts output
138
- end
139
- abort
140
- end
141
- end
142
-
143
- def which(command)
144
- return capture_output("which #{command}")
145
- end
146
-
147
- def realpath(path)
148
- Pathname.new(path).realpath.to_s
149
- end
150
-
151
- def sh(*command)
152
- if !system(*command)
153
- abort "Command failed: #{command.join(' ')}"
154
- end
155
- end
156
-
157
- def install_apache2_module
158
- orig_mtime = File.stat(APACHE2_MODULE_PATH).mtime
159
- output = capture_output("passenger-install-apache2-module --auto 2>&1")
160
- output.should include("Almost there!")
161
- output.should include("LoadModule passenger_module #{APACHE2_MODULE_PATH}\n")
162
- output.should include("PassengerRoot #{LOCATIONS_INI}\n")
163
- File.stat(APACHE2_MODULE_PATH).mtime.should_not == orig_mtime
164
- end
165
-
166
- def install_nginx_module
167
- Dir.mktmpdir do |path|
168
- output = capture_output("passenger-install-nginx-module --auto --prefix=#{path} --auto-download 2>&1")
169
- output.should include("passenger_root #{LOCATIONS_INI};")
170
- File.exist?("#{path}/sbin/nginx").should be_true
171
- end
172
- end
173
-
174
- specify "locations.ini only refers to existent filesystem locations" do
175
- File.read(LOCATIONS_INI).split("\n").each do |line|
176
- if line =~ /=/
177
- name, filename = line.split('=', 2)
178
- if filename =~ /^\// && !File.exist?(filename)
179
- raise "#{filename} does not exist"
180
- end
181
- end
182
- end
183
- end
184
-
185
- specify "locations.ini sets packaging_method to #{PACKAGING_METHOD}" do
186
- File.read(LOCATIONS_INI).should =~ /^packaging_method=#{PACKAGING_METHOD}$/
187
- end
188
-
189
- specify "passenger-status is in #{SBINDIR}" do
190
- realpath(which("passenger-status")).should == "#{SBINDIR}/passenger-status"
191
- end
192
-
193
- specify "the Nginx runtime library headers exist" do
194
- File.directory?(INCLUDEDIR).should be_true
195
- Dir["#{INCLUDEDIR}/common/*.h"].should_not be_empty
196
- end
197
-
198
- specify "the Nginx addon directory exists" do
199
- File.directory?(NGINX_ADDON_DIR).should be_true
200
- File.file?("#{NGINX_ADDON_DIR}/ngx_http_passenger_module.c")
201
- end
202
-
203
- specify "the documentation directory exists" do
204
- File.directory?(DOCDIR).should be_true
205
- File.file?("#{DOCDIR}/Users guide Apache.html").should be_true
206
- end
207
-
208
- specify "the helper-scripts directory exists" do
209
- File.directory?(HELPER_SCRIPTS_DIR).should be_true
210
- File.file?("#{HELPER_SCRIPTS_DIR}/rack-loader.rb").should be_true
211
- end
212
-
213
- specify "the Ruby extension source directory exists" do
214
- File.directory?(RUBY_EXTENSION_SOURCE_DIR).should be_true
215
- File.file?("#{RUBY_EXTENSION_SOURCE_DIR}/extconf.rb").should be_true
216
- end
217
-
218
- specify "the support-binaries directory exists" do
219
- File.directory?(SUPPORT_BINARIES_DIR).should be_true
220
- File.file?("#{SUPPORT_BINARIES_DIR}/#{AGENT_EXE}").should be_true
221
- File.executable?("#{SUPPORT_BINARIES_DIR}/#{AGENT_EXE}").should be_true
222
- end
223
-
224
- specify "the Apache 2 module exists" do
225
- File.file?(APACHE2_MODULE_PATH).should be_true
226
- end
227
-
228
- describe "passenger-config" do
229
- it "passenger-config is in #{BINDIR}" do
230
- realpath(which("passenger-config")).should == "#{BINDIR}/passenger-config"
231
- end
232
-
233
- it "shows the path to locations.ini" do
234
- capture_output("passenger-config --root").should == LOCATIONS_INI
235
- end
236
-
237
- it "recognizes the runtime libraries as compiled" do
238
- system("passenger-config --compiled").should be_true
239
- end
240
-
241
- it "recognizes the install as custom packaged" do
242
- system("passenger-config --custom-packaged").should be_true
243
- end
244
-
245
- it "recognizes the install as coming from an official package" do
246
- system("passenger-config --installed-from-release-package").should be_true
247
- end
248
-
249
- it "recognizes the system's Apache" do
250
- output = capture_output("passenger-config --detect-apache2")
251
- output.gsub!(/.*Final autodetection results\n/m, '')
252
- output.scan(/\* Found Apache .*\!/).size.should == 1
253
- output.should include("apxs2 : #{APXS2}\n")
254
- output.should include("Main executable: #{APACHE2}\n")
255
- output.should include("Control command: #{APACHE2CTL}\n")
256
- output.should include("Config file : #{APACHE_CONFIG_FILE}\n")
257
- output.should include("Error log file : #{APACHE_ERROR_LOG}\n")
258
- output.should include(%Q{
126
+ def capture_output(command)
127
+ output = `#{command}`.strip
128
+ if $?.exitstatus == 0
129
+ return output
130
+ else
131
+ filename = `mktemp /tmp/output.XXXXXX`.strip
132
+ File.open(filename, "w") do |f|
133
+ f.write(output)
134
+ end
135
+ STDERR.puts "Command #{command} exited with status #{$?.exitstatus}. Output written to #{filename}"
136
+ if ENV['PRINT_FAILED_COMMAND_OUTPUT']
137
+ STDERR.puts output
138
+ end
139
+ abort
140
+ end
141
+ end
142
+
143
+ def which(command)
144
+ return capture_output("which #{command}")
145
+ end
146
+
147
+ def realpath(path)
148
+ Pathname.new(path).realpath.to_s
149
+ end
150
+
151
+ def sh(*command)
152
+ if !system(*command)
153
+ abort "Command failed: #{command.join(' ')}"
154
+ end
155
+ end
156
+
157
+ def install_apache2_module
158
+ orig_mtime = File.stat(APACHE2_MODULE_PATH).mtime
159
+ output = capture_output("passenger-install-apache2-module --auto 2>&1")
160
+ output.should include("Almost there!")
161
+ output.should include("LoadModule passenger_module #{APACHE2_MODULE_PATH}\n")
162
+ output.should include("PassengerRoot #{LOCATIONS_INI}\n")
163
+ File.stat(APACHE2_MODULE_PATH).mtime.should_not == orig_mtime
164
+ end
165
+
166
+ def install_nginx_module
167
+ Dir.mktmpdir do |path|
168
+ output = capture_output("passenger-install-nginx-module --auto --prefix=#{path} --auto-download 2>&1")
169
+ output.should include("passenger_root #{LOCATIONS_INI};")
170
+ File.exist?("#{path}/sbin/nginx").should be_true
171
+ end
172
+ end
173
+
174
+ specify "locations.ini only refers to existent filesystem locations" do
175
+ File.read(LOCATIONS_INI).split("\n").each do |line|
176
+ if line =~ /=/
177
+ name, filename = line.split('=', 2)
178
+ if filename =~ /^\// && !File.exist?(filename)
179
+ raise "#{filename} does not exist"
180
+ end
181
+ end
182
+ end
183
+ end
184
+
185
+ specify "locations.ini sets packaging_method to #{PACKAGING_METHOD}" do
186
+ File.read(LOCATIONS_INI).should =~ /^packaging_method=#{PACKAGING_METHOD}$/
187
+ end
188
+
189
+ specify "passenger-status is in #{SBINDIR}" do
190
+ realpath(which("passenger-status")).should == "#{SBINDIR}/passenger-status"
191
+ end
192
+
193
+ specify "the Nginx runtime library headers exist" do
194
+ File.directory?(INCLUDEDIR).should be_true
195
+ Dir["#{INCLUDEDIR}/common/*.h"].should_not be_empty
196
+ end
197
+
198
+ specify "the Nginx addon directory exists" do
199
+ File.directory?(NGINX_ADDON_DIR).should be_true
200
+ File.file?("#{NGINX_ADDON_DIR}/ngx_http_passenger_module.c")
201
+ end
202
+
203
+ specify "the documentation directory exists" do
204
+ File.directory?(DOCDIR).should be_true
205
+ File.file?("#{DOCDIR}/Users guide Apache.html").should be_true
206
+ end
207
+
208
+ specify "the helper-scripts directory exists" do
209
+ File.directory?(HELPER_SCRIPTS_DIR).should be_true
210
+ File.file?("#{HELPER_SCRIPTS_DIR}/rack-loader.rb").should be_true
211
+ end
212
+
213
+ specify "the Ruby extension source directory exists" do
214
+ File.directory?(RUBY_EXTENSION_SOURCE_DIR).should be_true
215
+ File.file?("#{RUBY_EXTENSION_SOURCE_DIR}/extconf.rb").should be_true
216
+ end
217
+
218
+ specify "the support-binaries directory exists" do
219
+ File.directory?(SUPPORT_BINARIES_DIR).should be_true
220
+ File.file?("#{SUPPORT_BINARIES_DIR}/#{AGENT_EXE}").should be_true
221
+ File.executable?("#{SUPPORT_BINARIES_DIR}/#{AGENT_EXE}").should be_true
222
+ end
223
+
224
+ specify "the Apache 2 module exists" do
225
+ File.file?(APACHE2_MODULE_PATH).should be_true
226
+ end
227
+
228
+ describe "passenger-config" do
229
+ it "passenger-config is in #{BINDIR}" do
230
+ realpath(which("passenger-config")).should == "#{BINDIR}/passenger-config"
231
+ end
232
+
233
+ it "shows the path to locations.ini" do
234
+ capture_output("passenger-config --root").should == LOCATIONS_INI
235
+ end
236
+
237
+ it "recognizes the runtime libraries as compiled" do
238
+ system("passenger-config --compiled").should be_true
239
+ end
240
+
241
+ it "recognizes the install as custom packaged" do
242
+ system("passenger-config --custom-packaged").should be_true
243
+ end
244
+
245
+ it "recognizes the install as coming from an official package" do
246
+ system("passenger-config --installed-from-release-package").should be_true
247
+ end
248
+
249
+ it "recognizes the system's Apache" do
250
+ output = capture_output("passenger-config --detect-apache2")
251
+ output.gsub!(/.*Final autodetection results\n/m, '')
252
+ output.scan(/\* Found Apache .*\!/).size.should == 1
253
+ output.should include("apxs2 : #{APXS2}\n")
254
+ output.should include("Main executable: #{APACHE2}\n")
255
+ output.should include("Control command: #{APACHE2CTL}\n")
256
+ output.should include("Config file : #{APACHE_CONFIG_FILE}\n")
257
+ output.should include("Error log file : #{APACHE_ERROR_LOG}\n")
258
+ output.should include(%Q{
259
259
  To start, stop or restart this specific Apache version:
260
260
  #{APACHE2CTL} start
261
261
  #{APACHE2CTL} stop
262
262
  #{APACHE2CTL} restart})
263
- output.should include(%Q{
263
+ output.should include(%Q{
264
264
  To troubleshoot, please read the logs in this file:
265
265
  #{APACHE_ERROR_LOG}})
266
- end
267
-
268
- it "shows the directory to the runtime library headers" do
269
- capture_output("passenger-config --includedir").should == INCLUDEDIR
270
- end
271
-
272
- it "shows the directory to the Nginx addon" do
273
- capture_output("passenger-config --nginx-addon-dir").should == NGINX_ADDON_DIR
274
- end
275
-
276
- it "shows the Nginx runtime libraries" do
277
- libs = capture_output("passenger-config --nginx-libs").split(" ")
278
- libs.should_not be_empty
279
- libs.each do |lib|
280
- File.file?(lib).should be_true
281
- end
282
- end
283
-
284
- it "validates the install as working" do
285
- system("passenger-config validate-install >/dev/null 2>/dev/null")
286
- [0, Config::ValidateInstallCommand::WARN_EXIT_CODE].should include($?.exitstatus)
287
- end
288
- end
289
-
290
- describe "passenger-memory-stats" do
291
- it "is in #{SBINDIR}" do
292
- realpath(which("passenger-memory-stats")).should == "#{SBINDIR}/passenger-memory-stats"
293
- end
294
-
295
- it "works" do
296
- capture_output("passenger-memory-stats").should =~ /Passenger processes/
297
- end
298
- end
299
-
300
- describe "passenger-install-apache2-module" do
301
- it "is in #{BINDIR}" do
302
- realpath(which("passenger-install-apache2-module")).should == "#{BINDIR}/passenger-install-apache2-module"
303
- end
304
-
305
- if SUPPORTS_COMPILING_APACHE_MODULE
306
- it "is able to compile the Apache module and doesn't break passenger-install-nginx-module" do
307
- install_apache2_module
308
- install_nginx_module
309
- end
310
- else
311
- it "checks whether the Apache module is installed" do
312
- output = capture_output("passenger-install-apache2-module --auto 2>&1")
313
- output.should =~ /Apache module is correctly installed/
314
- end
315
- end
316
- end
317
-
318
- describe "passenger-install-nginx-module" do
319
- it "is in #{BINDIR}" do
320
- realpath(which("passenger-install-nginx-module")).should == "#{BINDIR}/passenger-install-nginx-module"
321
- end
322
-
323
- if SUPPORTS_COMPILING_APACHE_MODULE
324
- it "is able to compile Nginx and doesn't break passenger-install-apache2-module" do
325
- install_nginx_module
326
- install_apache2_module
327
- end
328
- else
329
- it "is able to compile Nginx" do
330
- install_nginx_module
331
- end
332
- end
333
- end
334
-
335
- describe "Passenger Standalone" do
336
- it "is in #{BINDIR}" do
337
- realpath(which("passenger")).should == "#{BINDIR}/passenger"
338
- end
339
-
340
- it "works" do
341
- Dir.mktmpdir do |dir|
342
- File.chmod(0755, dir)
343
- Dir.chdir(dir) do
344
- File.open("config.ru", "w") do |f|
345
- f.write(%Q{
346
- app = lambda do |env|
347
- [200, { "Content-Type" => "text/plain" }, ["ok"]]
348
- end
349
- run app
350
- })
351
- end
352
- Dir.mkdir("public")
353
- Dir.mkdir("tmp")
354
- sh("passenger start --no-install-runtime -p 4000 -d >/dev/null")
355
- begin
356
- open("http://127.0.0.1:4000/") do |f|
357
- f.read.should == "ok"
358
- end
359
- ensure
360
- sh("passenger stop -p 4000")
361
- end
362
- end
363
- end
364
- end
365
- end
266
+ end
267
+
268
+ it "shows the directory to the runtime library headers" do
269
+ capture_output("passenger-config --includedir").should == INCLUDEDIR
270
+ end
271
+
272
+ it "shows the directory to the Nginx addon" do
273
+ capture_output("passenger-config --nginx-addon-dir").should == NGINX_ADDON_DIR
274
+ end
275
+
276
+ it "shows the Nginx runtime libraries" do
277
+ libs = capture_output("passenger-config --nginx-libs").split(" ")
278
+ libs.should_not be_empty
279
+ libs.each do |lib|
280
+ File.file?(lib).should be_true
281
+ end
282
+ end
283
+
284
+ it "validates the install as working" do
285
+ system("passenger-config validate-install >/dev/null 2>/dev/null")
286
+ [0, Config::ValidateInstallCommand::WARN_EXIT_CODE].should include($?.exitstatus)
287
+ end
288
+ end
289
+
290
+ describe "passenger-memory-stats" do
291
+ it "is in #{SBINDIR}" do
292
+ realpath(which("passenger-memory-stats")).should == "#{SBINDIR}/passenger-memory-stats"
293
+ end
294
+
295
+ it "works" do
296
+ capture_output("passenger-memory-stats").should =~ /Passenger processes/
297
+ end
298
+ end
299
+
300
+ describe "passenger-install-apache2-module" do
301
+ it "is in #{BINDIR}" do
302
+ realpath(which("passenger-install-apache2-module")).should == "#{BINDIR}/passenger-install-apache2-module"
303
+ end
304
+
305
+ if SUPPORTS_COMPILING_APACHE_MODULE
306
+ it "is able to compile the Apache module and doesn't break passenger-install-nginx-module" do
307
+ install_apache2_module
308
+ install_nginx_module
309
+ end
310
+ else
311
+ it "checks whether the Apache module is installed" do
312
+ output = capture_output("passenger-install-apache2-module --auto 2>&1")
313
+ output.should =~ /Apache module is correctly installed/
314
+ end
315
+ end
316
+ end
317
+
318
+ describe "passenger-install-nginx-module" do
319
+ it "is in #{BINDIR}" do
320
+ realpath(which("passenger-install-nginx-module")).should == "#{BINDIR}/passenger-install-nginx-module"
321
+ end
322
+
323
+ if SUPPORTS_COMPILING_APACHE_MODULE
324
+ it "is able to compile Nginx and doesn't break passenger-install-apache2-module" do
325
+ install_nginx_module
326
+ install_apache2_module
327
+ end
328
+ else
329
+ it "is able to compile Nginx" do
330
+ install_nginx_module
331
+ end
332
+ end
333
+ end
334
+
335
+ describe "Passenger Standalone" do
336
+ it "is in #{BINDIR}" do
337
+ realpath(which("passenger")).should == "#{BINDIR}/passenger"
338
+ end
339
+
340
+ it "works" do
341
+ Dir.mktmpdir do |dir|
342
+ File.chmod(0755, dir)
343
+ Dir.chdir(dir) do
344
+ File.open("config.ru", "w") do |f|
345
+ f.write(%Q{
346
+ app = lambda do |env|
347
+ [200, { "Content-Type" => "text/plain" }, ["ok"]]
348
+ end
349
+ run app
350
+ })
351
+ end
352
+ Dir.mkdir("public")
353
+ Dir.mkdir("tmp")
354
+ sh("passenger start --no-install-runtime -p 4000 -d >/dev/null")
355
+ begin
356
+ open("http://127.0.0.1:4000/") do |f|
357
+ f.read.should == "ok"
358
+ end
359
+ ensure
360
+ sh("passenger stop -p 4000")
361
+ end
362
+ end
363
+ end
364
+ end
365
+ end
366
366
  end
367
367
 
368
368
  end # module PhusionPassenger