jasmine 0.4.5 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/lib/jasmine/config.rb +23 -13
  2. data/spec/config_spec.rb +125 -85
  3. metadata +2 -2
@@ -5,9 +5,8 @@ module Jasmine
5
5
  def initialize(options = {})
6
6
  require 'selenium_rc'
7
7
  @selenium_jar_path = SeleniumRC::Server.allocate.jar_path
8
- @options = options
9
8
 
10
- @browser = options[:browser] ? options.delete(:browser) : 'firefox'
9
+ @browser = ENV["JASMINE_BROWSER"] || 'firefox'
11
10
  @selenium_pid = nil
12
11
  @jasmine_server_pid = nil
13
12
  end
@@ -27,27 +26,38 @@ module Jasmine
27
26
  stop_servers
28
27
  end
29
28
 
30
- def start_servers
29
+ def start_jasmine_server
31
30
  @jasmine_server_port = Jasmine::find_unused_port
32
- @selenium_server_port = Jasmine::find_unused_port
33
-
34
31
  server = Jasmine::Server.new(@jasmine_server_port, self)
35
-
36
- @selenium_pid = fork do
37
- Process.setpgrp
38
- exec "java -jar #{@selenium_jar_path} -port #{@selenium_server_port} > /dev/null 2>&1"
39
- end
40
- puts "selenium started. pid is #{@selenium_pid}"
41
-
42
32
  @jasmine_server_pid = fork do
43
33
  Process.setpgrp
44
34
  server.start
45
35
  exit! 0
46
36
  end
47
37
  puts "jasmine server started. pid is #{@jasmine_server_pid}"
38
+ Jasmine::wait_for_listener(@jasmine_server_port, "jasmine server")
39
+ end
48
40
 
41
+ def external_selenium_server_port
42
+ ENV['SELENIUM_SERVER_PORT'] && ENV['SELENIUM_SERVER_PORT'].to_i > 0 ? ENV['SELENIUM_SERVER_PORT'].to_i : nil
43
+ end
44
+
45
+ def start_selenium_server
46
+ @selenium_server_port = external_selenium_server_port
47
+ if @selenium_server_port.nil?
48
+ @selenium_server_port = Jasmine::find_unused_port
49
+ @selenium_pid = fork do
50
+ Process.setpgrp
51
+ exec "java -jar #{@selenium_jar_path} -port #{@selenium_server_port} > /dev/null 2>&1"
52
+ end
53
+ puts "selenium started. pid is #{@selenium_pid}"
54
+ end
49
55
  Jasmine::wait_for_listener(@selenium_server_port, "selenium server")
50
- Jasmine::wait_for_listener(@jasmine_server_port, "jasmine server")
56
+ end
57
+
58
+ def start_servers
59
+ start_jasmine_server
60
+ start_selenium_server
51
61
  end
52
62
 
53
63
  def stop_servers
data/spec/config_spec.rb CHANGED
@@ -1,113 +1,153 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
2
2
 
3
3
  describe Jasmine::Config do
4
- before(:each) do
5
- @template_dir = File.expand_path(File.join(File.dirname(__FILE__), "../generators/jasmine/templates"))
6
- @config = Jasmine::Config.new
7
- end
8
4
 
9
5
  describe "configuration" do
6
+
10
7
  before(:each) do
11
- @config.stub!(:src_dir).and_return(File.join(@template_dir, "public"))
12
- @config.stub!(:spec_dir).and_return(File.join(@template_dir, "spec"))
8
+ @template_dir = File.expand_path(File.join(File.dirname(__FILE__), "../generators/jasmine/templates"))
9
+ @config = Jasmine::Config.new
13
10
  end
14
11
 
15
- it "if sources.yaml not found" do
16
- File.stub!(:exist?).and_return(false)
17
- @config.src_files.should == []
18
- @config.stylesheets.should == []
19
- @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
20
- @config.mappings.should == {
21
- '/__root__' => @config.project_root,
22
- '/__spec__' => @config.spec_dir
23
- }
24
- end
12
+ describe "defaults" do
25
13
 
26
- it "if jasmine.yml is empty" do
27
- @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
28
- YAML.stub!(:load).and_return(false)
29
- @config.src_files.should == []
30
- @config.stylesheets.should == []
31
- @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
32
- @config.mappings.should == {
33
- '/__root__' => @config.project_root,
34
- '/__spec__' => @config.spec_dir
35
- }
36
- end
14
+ it "src_dir uses root when src dir is blank" do
15
+ @config.stub!(:project_root).and_return('some_project_root')
16
+ @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
17
+ YAML.stub!(:load).and_return({'src_dir' => nil})
18
+ @config.src_dir.should == 'some_project_root'
19
+ end
37
20
 
38
- it "using default jasmine.yml" do
39
- @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
40
- @config.src_files.should == []
41
- @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
42
- @config.mappings.should == {
43
- '/__root__' => @config.project_root,
44
- '/__spec__' => @config.spec_dir
45
- }
46
- end
21
+ it "should use correct default yaml config" do
22
+ @config.stub!(:project_root).and_return('some_project_root')
23
+ @config.simple_config_file.should == (File.join('some_project_root', 'spec/javascripts/support/jasmine.yml'))
24
+ end
47
25
 
48
- it "simple_config stylesheets" do
49
- @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
50
- YAML.stub!(:load).and_return({'stylesheets' => ['foo.css', 'bar.css']})
51
- Dir.stub!(:glob).and_return do |glob_string|
52
- glob_string
26
+
27
+ it "should provide dir mappings" do
28
+ @config.mappings.should == {
29
+ '/__root__' => @config.project_root,
30
+ '/__spec__' => @config.spec_dir
31
+ }
53
32
  end
54
- @config.stylesheets.should == ['foo.css', 'bar.css']
55
33
  end
56
34
 
57
- it "using rails jasmine.yml" do
58
- original_glob = Dir.method(:glob)
59
- Dir.stub!(:glob).and_return do |glob_string|
60
- if glob_string =~ /public/
35
+
36
+ describe "simple_config" do
37
+ before(:each) do
38
+ @config.stub!(:src_dir).and_return(File.join(@template_dir, "public"))
39
+ @config.stub!(:spec_dir).and_return(File.join(@template_dir, "spec"))
40
+ end
41
+
42
+ it "if sources.yaml not found" do
43
+ File.stub!(:exist?).and_return(false)
44
+ @config.src_files.should == []
45
+ @config.stylesheets.should == []
46
+ @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
47
+ @config.mappings.should == {
48
+ '/__root__' => @config.project_root,
49
+ '/__spec__' => @config.spec_dir
50
+ }
51
+ end
52
+
53
+ it "if jasmine.yml is empty" do
54
+ @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
55
+ YAML.stub!(:load).and_return(false)
56
+ @config.src_files.should == []
57
+ @config.stylesheets.should == []
58
+ @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
59
+ @config.mappings.should == {
60
+ '/__root__' => @config.project_root,
61
+ '/__spec__' => @config.spec_dir
62
+ }
63
+ end
64
+
65
+ it "using default jasmine.yml" do
66
+ @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
67
+ @config.src_files.should == []
68
+ @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
69
+ @config.mappings.should == {
70
+ '/__root__' => @config.project_root,
71
+ '/__spec__' => @config.spec_dir
72
+ }
73
+ end
74
+
75
+ it "simple_config stylesheets" do
76
+ @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
77
+ YAML.stub!(:load).and_return({'stylesheets' => ['foo.css', 'bar.css']})
78
+ Dir.stub!(:glob).and_return do |glob_string|
61
79
  glob_string
62
- else
63
- original_glob.call(glob_string)
64
80
  end
81
+ @config.stylesheets.should == ['foo.css', 'bar.css']
82
+ end
83
+
84
+ it "using rails jasmine.yml" do
85
+ original_glob = Dir.method(:glob)
86
+ Dir.stub!(:glob).and_return do |glob_string|
87
+ if glob_string =~ /public/
88
+ glob_string
89
+ else
90
+ original_glob.call(glob_string)
91
+ end
92
+ end
93
+ @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine-rails.yml'))
94
+ @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
95
+ @config.src_files.should == ['javascripts/prototype.js',
96
+ 'javascripts/effects.js',
97
+ 'javascripts/controls.js',
98
+ 'javascripts/dragdrop.js',
99
+ 'javascripts/application.js']
100
+ @config.js_files.should == [
101
+ '/javascripts/prototype.js',
102
+ '/javascripts/effects.js',
103
+ '/javascripts/controls.js',
104
+ '/javascripts/dragdrop.js',
105
+ '/javascripts/application.js',
106
+ '/__spec__/javascripts/ExampleSpec.js',
107
+ '/__spec__/javascripts/SpecHelper.js',
108
+ ]
109
+ end
110
+
111
+ it "should provide a list of all spec files with full paths" do
112
+ @config.spec_files_full_paths.should == [
113
+ File.join(@template_dir, 'spec/javascripts/ExampleSpec.js'),
114
+ File.join(@template_dir, 'spec/javascripts/SpecHelper.js')
115
+ ]
65
116
  end
66
- @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine-rails.yml'))
67
- @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
68
- @config.src_files.should == ['javascripts/prototype.js',
69
- 'javascripts/effects.js',
70
- 'javascripts/controls.js',
71
- 'javascripts/dragdrop.js',
72
- 'javascripts/application.js']
73
- @config.js_files.should == [
74
- '/javascripts/prototype.js',
75
- '/javascripts/effects.js',
76
- '/javascripts/controls.js',
77
- '/javascripts/dragdrop.js',
78
- '/javascripts/application.js',
79
- '/__spec__/javascripts/ExampleSpec.js',
80
- '/__spec__/javascripts/SpecHelper.js',
81
- ]
82
- end
83
117
 
84
- it "should provide a list of all spec files with full paths" do
85
- @config.spec_files_full_paths.should == [
86
- File.join(@template_dir, 'spec/javascripts/ExampleSpec.js'),
87
- File.join(@template_dir, 'spec/javascripts/SpecHelper.js')
88
- ]
89
118
  end
90
119
 
91
120
  end
92
121
 
93
- it "src_dir uses root when src dir is blank" do
94
- @config.stub!(:project_root).and_return('some_project_root')
95
- @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
96
- YAML.stub!(:load).and_return({'src_dir' => nil})
97
- @config.src_dir.should == 'some_project_root'
98
- end
122
+ describe "browsers" do
123
+ it "should use firefox by default" do
124
+ ENV.should_receive(:[], "JASMINE_BROWSER").and_return(nil)
125
+ config = Jasmine::Config.new
126
+ config.stub!(:start_servers)
127
+ Jasmine::SeleniumDriver.should_receive(:new).
128
+ with(anything(), anything(), "*firefox", anything()).
129
+ and_return(mock(Jasmine::SeleniumDriver, :connect => true))
130
+ config.start
131
+ end
99
132
 
100
- it "should use correct default yaml config" do
101
- @config.stub!(:project_root).and_return('some_project_root')
102
- @config.simple_config_file.should == (File.join('some_project_root', 'spec/javascripts/support/jasmine.yml'))
133
+ it "should use ENV['JASMINE_BROWSER'] if set" do
134
+ ENV.should_receive(:[], "JASMINE_BROWSER").and_return("mosaic")
135
+ config = Jasmine::Config.new
136
+ config.stub!(:start_servers)
137
+ Jasmine::SeleniumDriver.should_receive(:new).
138
+ with(anything(), anything(), "*mosaic", anything()).
139
+ and_return(mock(Jasmine::SeleniumDriver, :connect => true))
140
+ config.start
141
+ end
103
142
  end
104
143
 
105
-
106
- it "should provide dir mappings" do
107
- @config.mappings.should == {
108
- '/__root__' => @config.project_root,
109
- '/__spec__' => @config.spec_dir
110
- }
144
+ describe "#start_selenium_server" do
145
+ it "should use an existing selenium server if SELENIUM_SERVER_PORT is set" do
146
+ config = Jasmine::Config.new
147
+ ENV.stub!(:[], "SELENIUM_SERVER_PORT").and_return(1234)
148
+ Jasmine.should_receive(:wait_for_listener).with(1234, "selenium server")
149
+ config.start_selenium_server
150
+ end
111
151
  end
112
152
 
113
153
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rajan Agaskar
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-02-24 00:00:00 -08:00
13
+ date: 2010-03-10 00:00:00 -08:00
14
14
  default_executable: jasmine
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency