Module: Guard::Jasmine::Util
- Included in:
- Guard::Jasmine, CLI, Runner, JasmineCoverage
- Defined in:
- lib/guard/jasmine/util.rb
Overview
Provider of some shared utility methods.
Instance Method Summary collapse
-
#find_free_server_port ⇒ Integer
Finds a free server port to use.
-
#phantomjs_bin_valid?(bin) ⇒ Boolean
Verifies that the phantomjs bin is available and the right version is installed.
-
#runner_available?(options) ⇒ Boolean
Verifies if the Jasmine test runner is available.
-
#which(cmd) ⇒ String?
Cross-platform way of finding an executable in the $PATH.
Instance Method Details
#find_free_server_port ⇒ Integer
Finds a free server port to use
87 88 89 |
# File 'lib/guard/jasmine/util.rb', line 87 def find_free_server_port ::Jasmine.find_unused_port end |
#phantomjs_bin_valid?(bin) ⇒ Boolean
Verifies that the phantomjs bin is available and the right version is installed.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/guard/jasmine/util.rb', line 58 def phantomjs_bin_valid?(bin) if bin && !bin.empty? version = `#{ bin } --version` if version # Remove all but version, e.g. from '1.5 (development)' cleaned_version = version.match(/(\d\.)*(\d)/) if cleaned_version if Gem::Version.new(cleaned_version[0]) < Gem::Version.new('1.3.0') ::Guard::Jasmine::Formatter.error "PhantomJS executable at #{bin} must be at least version 1.3.0" else true end else ::Guard::Jasmine::Formatter.error "PhantomJS reports unknown version format: #{version}" end else ::Guard::Jasmine::Formatter.error "PhantomJS executable doesn't exist at #{bin}" end else ::Guard::Jasmine::Formatter.error 'PhantomJS executable couldn\'t be auto detected.' end end |
#runner_available?(options) ⇒ Boolean
Verifies if the Jasmine test runner is available. If the runner is not available within 15 seconds, then the availability check will cancel.
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 45 46 47 48 49 50 |
# File 'lib/guard/jasmine/util.rb', line 20 def runner_available?() url = URI.parse([:jasmine_url]) begin ::Guard::Jasmine::Formatter.info "Waiting for Jasmine test runner at #{url}" http = Net::HTTP.new(url.host, url.port) http.read_timeout = [:server_timeout] http.start do response = http.request(Net::HTTP::Get.new(url.path)) available = response.code.to_i == 200 unless available ::Guard::Jasmine::Formatter.error "Jasmine test runner failed with status #{response.code}" if response.body ::Guard::Jasmine::Formatter.error 'Please open the Jasmine runner in your browser for more information.' end end available end rescue Timeout::Error ::Guard::Jasmine::Formatter.error 'Timeout waiting for the Jasmine test runner.' false rescue => e ::Guard::Jasmine::Formatter.error "Jasmine test runner isn't available: #{e.message}" false end end |
#which(cmd) ⇒ String?
Cross-platform way of finding an executable in the $PATH. http://stackoverflow.com/questions/2108727/which-in-ruby-checking-if-program-exists-in-path-from-ruby
100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/guard/jasmine/util.rb', line 100 def which(cmd) exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| exts.each do |ext| exe = "#{path}/#{cmd}#{ext}" return exe if File.file?(exe) && File.executable?(exe) end end nil end |