Class: Guard::Jasmine::CLI

Inherits:
Thor
  • Object
show all
Extended by:
Util
Defined in:
lib/guard/jasmine/cli.rb

Overview

Small helper class to run the Jasmine runner_options once from the command line. This can be useful to integrate guard-jasmine into a continuous integration server.

This outputs the specdoc and disables any notifications.

Instance Method Summary collapse

Methods included from Util

find_free_server_port, phantomjs_bin_valid?, runner_available?, which

Instance Method Details

#runner_optionsObject (private)



203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/guard/jasmine/cli.rb', line 203

def runner_options
  ro                            = {}
  ro[:port]                     = options.port || CLI.find_free_server_port
  ro[:spec_dir]                 = options.spec_dir || (File.exist?(File.join('spec', 'javascripts')) ? File.join('spec', 'javascripts') : 'spec')
  ro[:line_number]              = options.line_number
  ro[:server]                   = options.server.to_sym == :auto ? ::Guard::Jasmine::Server.detect_server(ro[:spec_dir]) : options.server.to_sym
  ro[:server_mount]             = options.mount || (defined?(JasmineRails) ? '/specs' : '/jasmine')
  ro[:jasmine_url]              = options.url || "http://localhost:#{ro[:port]}#{options.server.to_sym == :jasmine_gem ? '/' : ro[:server_mount]}"
  ro[:phantomjs_bin]            = options.bin || CLI.which('phantomjs')
  ro[:timeout]                  = options.timeout
  ro[:verbose]                  = options.verbose
  ro[:server_env]               = options.server_env
  ro[:server_timeout]           = options.server_timeout
  ro[:rackup_config]            = options.rackup_config
  ro[:console]                  = [:always, :never, :failure].include?(options.console.to_sym) ? options.console.to_sym : :failure
  ro[:errors]                   = [:always, :never, :failure].include?(options.errors.to_sym) ? options.errors.to_sym : :failure
  ro[:specdoc]                  = [:always, :never, :failure].include?(options.specdoc.to_sym) ? options.specdoc.to_sym : :always
  ro[:focus]                    = options.focus
  ro[:coverage]                 = options.coverage || options.coverage_html || options.coverage_summary || options.coverage_html_dir != './coverage'
  ro[:coverage_html]            = options.coverage_html || options.coverage_html_dir != './coverage'
  ro[:coverage_html_dir]        = options.coverage_html_dir
  ro[:coverage_summary]         = options.coverage_summary
  ro[:ignore_instrumentation]   = options.ignore_instrumentation
  ro[:statements_threshold]     = options.statements_threshold
  ro[:functions_threshold]      = options.functions_threshold
  ro[:branches_threshold]       = options.branches_threshold
  ro[:lines_threshold]          = options.lines_threshold
  ro[:notification]             = false
  ro[:hide_success]             = true
  ro[:max_error_notify]         = 0
  ro[:query_params]             = options.reporters ? { reporters: options.reporters } : nil
  ro[:is_cli]                   = true
  ro
end

#spec(*paths) ⇒ Object

Run the Guard::Jasmine::Runner with options from the command line.

Parameters:

  • paths (Array<String>)

    the name of the specs to run



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/guard/jasmine/cli.rb', line 164

def spec(*paths)
  options = runner_options
  paths = [options[:spec_dir]] if paths.empty?
  if CLI.phantomjs_bin_valid?(options[:phantomjs_bin])
    catch(:task_has_failed) do
      ::Guard::Jasmine::Server.start(options) unless options[:server] == :none
    end
    if CLI.runner_available?(options)
      result = ::Guard::Jasmine::Runner.new(options).run(paths)
      ::Guard::Jasmine::Server.stop
      Process.exit result.empty? ? 0 : 1
    else
      Process.exit 2
    end

  else
    Process.exit 2
  end

rescue => e
  Compat::UI.error "Something went wrong: #{e.message}"
  Process.exit 2
ensure
  ::Guard::Jasmine::Server.stop
end

#versionObject

Shows the current version of Guard::Jasmine.

See Also:

  • VERSION


197
198
199
# File 'lib/guard/jasmine/cli.rb', line 197

def version
  Compat::UI.info "Guard::Jasmine version #{::Guard::JasmineVersion::VERSION}"
end