Module: Jasmine
- Defined in:
- lib/jasmine/base.rb,
lib/jasmine/page.rb,
lib/jasmine/config.rb,
lib/jasmine/server.rb,
lib/jasmine/railtie.rb,
lib/jasmine/results.rb,
lib/jasmine/version.rb,
lib/jasmine/application.rb,
lib/jasmine/path_mapper.rb,
lib/jasmine/dependencies.rb,
lib/jasmine/runners/http.rb,
lib/jasmine/configuration.rb,
lib/jasmine/path_expander.rb,
lib/jasmine/asset_expander.rb,
lib/jasmine/rspec_formatter.rb,
lib/jasmine/selenium_driver.rb,
lib/jasmine/command_line_tool.rb,
lib/jasmine/results_processor.rb,
lib/jasmine/core_configuration.rb,
lib/jasmine/yaml_config_parser.rb,
lib/jasmine/asset_pipeline_mapper.rb,
lib/jasmine/asset_pipeline_utility.rb,
lib/generators/jasmine/install/install_generator.rb,
lib/generators/jasmine/examples/examples_generator.rb
Defined Under Namespace
Modules: Dependencies, Generators, Runners
Classes: Application, AssetExpander, AssetPipelineMapper, AssetPipelineUtility, CommandLineTool, Configuration, CoreConfiguration, Page, PathExpander, PathMapper, Railtie, Results, ResultsProcessor, RspecFormatter, SeleniumDriver, Server, YamlConfigParser
Constant Summary
collapse
- VERSION =
"1.3.2.1"
Class Method Summary
collapse
Class Method Details
.config ⇒ Object
60
61
62
63
|
# File 'lib/jasmine/config.rb', line 60
def self.config
initialize_config
@config
end
|
4
5
6
|
# File 'lib/jasmine/config.rb', line 4
def self.configure(&block)
block.call(self.config)
end
|
.find_unused_port ⇒ Object
15
16
17
18
19
20
|
# File 'lib/jasmine/base.rb', line 15
def self.find_unused_port
socket = open_socket_on_unused_port
port = socket.addr[1]
socket.close
port
end
|
.initialize_config ⇒ Object
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/jasmine/config.rb', line 8
def self.initialize_config
return if @config
@config = Jasmine::Configuration.new
core_config = Jasmine::CoreConfiguration.new
@config.add_path_mapper(Jasmine::PathMapper.method(:new))
@config.jasmine_path = jasmine_path = "/__jasmine__"
@config.src_path = src_path = "/"
@config.spec_path = spec_path = "/__spec__"
@config.boot_path = boot_path = "/__boot__"
@config.jasmine_dir = core_config.path
@config.boot_dir = core_config.boot_path
@config.boot_files = lambda { core_config.boot_files }
@config.jasmine_files = lambda { core_config.js_files }
@config.jasmine_css_files = lambda { core_config.css_files }
@config.add_rack_path(jasmine_path, lambda { Rack::File.new(config.jasmine_dir) })
@config.add_rack_path(boot_path, lambda { Rack::File.new(config.boot_dir) })
@config.add_rack_path(spec_path, lambda { Rack::File.new(config.spec_dir) })
@config.add_rack_path(src_path, lambda {
Rack::Cascade.new([
Rack::URLMap.new('/' => Rack::File.new(config.src_dir)),
Rack::Jasmine::Runner.new(Jasmine::Page.new(config))
])
})
@config.add_rack_app(Rack::Head)
@config.add_rack_app(Rack::Jasmine::CacheControl)
if Jasmine::Dependencies.rails_3_asset_pipeline?
@config.add_path_mapper(lambda { |config|
asset_expander = Jasmine::AssetExpander.new(
Jasmine::AssetPipelineUtility.method(:bundled_asset_factory),
Jasmine::AssetPipelineUtility.method(:asset_path_for)
)
Jasmine::AssetPipelineMapper.new(config, asset_expander.method(:expand))
})
@config.add_rack_path('/assets', lambda {
Rails.application.assets.context_class.instance_eval do
include ::Sprockets::Helpers::IsolatedHelper
include ::Sprockets::Helpers::RailsHelper
end
Rails.application.assets
})
end
end
|
.load_configuration_from_yaml(path = nil) ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/jasmine/config.rb', line 65
def self.load_configuration_from_yaml(path = nil)
path ||= File.join(Dir.pwd, 'spec', 'javascripts', 'support', 'jasmine.yml')
if File.exist?(path)
yaml_loader = lambda do |filepath|
YAML::load(ERB.new(File.read(filepath)).result(binding)) if File.exist?(filepath)
end
yaml_config = Jasmine::YamlConfigParser.new(path, Dir.pwd, Jasmine::PathExpander.method(:expand), yaml_loader)
Jasmine.configure do |config|
config.jasmine_dir = yaml_config.jasmine_dir if yaml_config.jasmine_dir
config.jasmine_files = lambda { yaml_config.jasmine_files } if yaml_config.jasmine_files.any?
config.jasmine_css_files = lambda { yaml_config.jasmine_css_files } if yaml_config.jasmine_css_files.any?
config.src_files = lambda { yaml_config.src_files }
config.spec_files = lambda { yaml_config.helpers + yaml_config.spec_files }
config.css_files = lambda { yaml_config.css_files }
config.src_dir = yaml_config.src_dir
config.spec_dir = yaml_config.spec_dir
end
require yaml_config.spec_helper if File.exist?(yaml_config.spec_helper)
end
end
|
.open_socket_on_unused_port ⇒ Object
this seemingly-over-complex method is necessary to get an open port on at least some of our Macs
6
7
8
9
10
11
12
13
|
# File 'lib/jasmine/base.rb', line 6
def self.open_socket_on_unused_port
infos = Socket::getaddrinfo("localhost", nil, Socket::AF_UNSPEC, Socket::SOCK_STREAM, 0, Socket::AI_PASSIVE)
families = Hash[*infos.collect { |af, *_| af }.uniq.zip([]).flatten]
return TCPServer.open('0.0.0.0', 0) if families.has_key?('AF_INET')
return TCPServer.open('::', 0) if families.has_key?('AF_INET6')
return TCPServer.open(0)
end
|
.root(*paths) ⇒ Object
50
51
52
|
# File 'lib/jasmine/base.rb', line 50
def self.root(*paths)
File.expand_path(File.join(File.dirname(__FILE__), *paths))
end
|
.runner_filepath ⇒ Object
42
43
44
|
# File 'lib/jasmine/base.rb', line 42
def self.runner_filepath
File.expand_path(File.join(File.dirname(__FILE__), "run_specs.rb"))
end
|
.runner_template ⇒ Object
46
47
48
|
# File 'lib/jasmine/base.rb', line 46
def self.runner_template
File.read(File.join(File.dirname(__FILE__), "run.html.erb"))
end
|
.server_is_listening_on(hostname, port) ⇒ Object
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/jasmine/base.rb', line 22
def self.server_is_listening_on(hostname, port)
require 'socket'
begin
socket = TCPSocket.open(hostname, port)
rescue Errno::ECONNREFUSED
return false
end
socket.close
true
end
|
.wait_for_listener(port, name = "required process", seconds_to_wait = 20) ⇒ Object
33
34
35
36
37
38
39
40
|
# File 'lib/jasmine/base.rb', line 33
def self.wait_for_listener(port, name = "required process", seconds_to_wait = 20)
time_out_at = Time.now + seconds_to_wait
until server_is_listening_on "localhost", port
sleep 0.1
puts "Waiting for #{name} on #{port}..."
raise "#{name} didn't show up on port #{port} after #{seconds_to_wait} seconds." if Time.now > time_out_at
end
end
|