Class: MSpec::Opal::Runner

Inherits:
Object show all
Defined in:
opal/lib/mspec/opal/rake_task.rb

Defined Under Namespace

Classes: PhantomJS

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Runner

Returns a new instance of Runner



60
61
62
63
# File 'opal/lib/mspec/opal/rake_task.rb', line 60

def initialize &block
  @app = RackApp.new(&block).to_app
  @port = 9999
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app



65
66
67
# File 'opal/lib/mspec/opal/rake_task.rb', line 65

def app
  @app
end

#portObject

Returns the value of attribute port



66
67
68
# File 'opal/lib/mspec/opal/rake_task.rb', line 66

def port
  @port
end

#serverObject (readonly)

Returns the value of attribute server



65
66
67
# File 'opal/lib/mspec/opal/rake_task.rb', line 65

def server
  @server
end

Instance Method Details

#passed?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'opal/lib/mspec/opal/rake_task.rb', line 68

def passed?
  @passed
end

#runObject



72
73
74
75
76
77
78
79
80
81
# File 'opal/lib/mspec/opal/rake_task.rb', line 72

def run
  start_server
  start_phantomjs

  exit 1 unless passed?
rescue => e
  puts e.message
ensure
  stop_server if server
end

#start_phantomjsObject



102
103
104
105
106
107
# File 'opal/lib/mspec/opal/rake_task.rb', line 102

def start_phantomjs
  runner  = File.expand_path('../sprockets.js', __FILE__).shellescape
  url     = "http://localhost:#{port}/".shellescape
  command = PhantomJS.new(runner, url)
  @passed = command.run
end

#start_serverObject



109
110
111
112
113
114
# File 'opal/lib/mspec/opal/rake_task.rb', line 109

def start_server
  @server = Thread.new do
    Rack::Server.start(:app => app, :Port => port, :AccessLog => [],
      :Logger => WEBrick::Log.new("/dev/null"))
  end
end

#stop_serverObject



83
84
85
# File 'opal/lib/mspec/opal/rake_task.rb', line 83

def stop_server
  server.kill
end