File: integration_start_test.rb

package info (click to toggle)
ruby-sinatra 4.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,932 kB
  • sloc: ruby: 17,700; sh: 25; makefile: 8
file content (44 lines) | stat: -rw-r--r-- 1,910 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
require_relative "integration_start_helper"

class IntegrationStartTest < Minitest::Test
  include IntegrationStartHelper

  def test_app_start_without_rackup
    # Why we skip head versions: The Gemfile used here would have to support
    # the ENVs and we would need to bundle before starting the app
    #
    # Example from locally playing with this:
    #
    #   root@df8b1e7cb106:/app# rack_session=head BUNDLE_GEMFILE=./test/integration/gemfile_without_rackup.rb ruby ./test/integration/simple_app.rb -p 0 -s puma
    #   The git source https://github.com/rack/rack-session.git is not yet checked out. Please run `bundle install` before trying to start your application
    #
    # Using bundler/inline is an idea, but it would add to the startup time
    skip "So much work to run with rack head branch" if ENV['rack'] == 'head'
    skip "So much work to run with rack-session head branch" if ENV['rack_session'] == 'head'

    app_file = File.join(__dir__, "integration", "simple_app.rb")
    gem_file = File.join(__dir__, "integration", "gemfile_without_rackup.rb")
    command = command_for(app_file)
    env = { "BUNDLE_GEMFILE" => gem_file }

    with_process(command: command, env: env) do |process, read_io|
      assert wait_for_output(read_io, /Sinatra could not start, the required gems weren't found/)
    end
  end

  def test_classic_app_start
    app_file = File.join(__dir__, "integration", "simple_app.rb")
    command = command_for(app_file)
    with_process(command: command) do |process, read_io|
      assert wait_for_output(read_io, /Sinatra \(v.+\) has taken the stage/)
    end
  end

  def test_classic_app_with_zeitwerk
    app_file = File.join(__dir__, "integration", "zeitwerk_app.rb")
    command = command_for(app_file)
    with_process(command: command) do |process, read_io|
      assert wait_for_output(read_io, /Sinatra \(v.+\) has taken the stage/)
    end
  end
end