Class: Plushie::Test::Script::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/plushie/test/script/runner.rb

Overview

Executes a parsed .plushie script against a test session.

Creates a Session from the header's app declaration, then runs each instruction sequentially.

Examples:

parsed = Plushie::Test::Script.parse_file("test/scripts/counter.plushie")
runner = Plushie::Test::Script::Runner.new(parsed)
runner.run

Instance Method Summary collapse

Constructor Details

#initialize(script, pool: nil) ⇒ Runner

Returns a new instance of Runner.

Parameters:

  • script (ParsedScript)

    parsed script

  • pool (SessionPool, nil) (defaults to: nil)

    override pool (uses default if nil)



18
19
20
21
22
# File 'lib/plushie/test/script/runner.rb', line 18

def initialize(script, pool: nil)
  @script = script
  @pool = pool || Plushie::Test.pool
  @session = nil
end

Instance Method Details

#runSession

Execute the script.

Returns:

  • (Session)

    the session after execution



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/plushie/test/script/runner.rb', line 27

def run
  app_class = resolve_app_class(@script.header["app"])
  session_id = @pool.register
  @session = Session.new(app_class, pool: @pool, session_id: session_id)

  @script.instructions.each do |instruction|
    execute(instruction)
  end

  @session
ensure
  @session&.stop
end