jasmine 0.10.2.0 → 0.10.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -113,6 +113,10 @@ module Jasmine
113
113
  src_files.collect {|f| "/" + f } + spec_files.collect {|f| File.join(spec_path, f) }
114
114
  end
115
115
 
116
+ def focused_files(spec_filter)
117
+ src_files.collect {|f| "/" + f } + match_files(spec_dir, spec_filter).collect {|f| File.join(spec_path, f) }
118
+ end
119
+
116
120
  def css_files
117
121
  stylesheets.collect {|f| "/" + f }
118
122
  end
@@ -13,24 +13,23 @@ module Jasmine
13
13
 
14
14
  def call(env)
15
15
  return not_found if env["PATH_INFO"] != "/"
16
- return [200,{ 'Content-Type' => 'text/html' }, ''] if (env['REQUEST_METHOD'] == 'HEAD')
16
+ return [200, { 'Content-Type' => 'text/html' }, ''] if (env['REQUEST_METHOD'] == 'HEAD')
17
17
  run if env['REQUEST_METHOD'] == 'GET'
18
18
  end
19
19
 
20
20
  def not_found
21
21
  body = "File not found: #{@path_info}\n"
22
22
  [404, {"Content-Type" => "text/plain",
23
- "Content-Length" => body.size.to_s,
24
- "X-Cascade" => "pass"},
23
+ "Content-Length" => body.size.to_s,
24
+ "X-Cascade" => "pass"},
25
25
  [body]]
26
26
  end
27
27
 
28
28
  #noinspection RubyUnusedLocalVariable
29
- def run
29
+ def run(focused_suite = nil)
30
30
  jasmine_files = @jasmine_files
31
31
  css_files = @jasmine_stylesheets + (@config.css_files || [])
32
- js_files = @config.js_files
33
-
32
+ js_files = focused_suite.nil? ? @config.js_files : @config.focused_files(focused_suite)
34
33
  body = ERB.new(File.read(File.join(File.dirname(__FILE__), "run.html.erb"))).result(binding)
35
34
  [
36
35
  200,
@@ -72,18 +71,8 @@ module Jasmine
72
71
  end
73
72
 
74
73
  def call(env)
75
- spec_files = @config.spec_files_or_proc
76
- matching_specs = spec_files.select {|spec_file| spec_file =~ /#{Regexp.escape(env["PATH_INFO"])}/ }.compact
77
- if !matching_specs.empty?
78
- run_adapter = Jasmine::RunAdapter.new(matching_specs, @options)
79
- run_adapter.run
80
- else
81
- [
82
- 200,
83
- { 'Content-Type' => 'application/javascript' },
84
- "document.write('<p>Couldn\\'t find any specs matching #{env["PATH_INFO"]}!</p>');"
85
- ]
86
- end
74
+ run_adapter = Jasmine::RunAdapter.new(@config)
75
+ run_adapter.run(env["PATH_INFO"])
87
76
  end
88
77
 
89
78
  end
@@ -97,7 +86,7 @@ module Jasmine
97
86
 
98
87
  require 'thin'
99
88
  thin_config = {
100
- '/__suite__' => Jasmine::FocusedSuite.new(@config),
89
+ '/__suite__/' => Jasmine::FocusedSuite.new(@config),
101
90
  '/run.html' => Jasmine::Redirect.new('/'),
102
91
  '/' => Jasmine::RunAdapter.new(@config)
103
92
  }
data/spec/config_spec.rb CHANGED
@@ -44,6 +44,7 @@ describe Jasmine::Config do
44
44
  @config.src_files.should == []
45
45
  @config.stylesheets.should == []
46
46
  @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
47
+ @config.focused_files("javascripts/ExampleSpec.js").should == ['/__spec__/javascripts/ExampleSpec.js']
47
48
  @config.mappings.should == {
48
49
  '/__root__' => @config.project_root,
49
50
  '/__spec__' => @config.spec_dir
@@ -56,6 +57,7 @@ describe Jasmine::Config do
56
57
  @config.src_files.should == []
57
58
  @config.stylesheets.should == []
58
59
  @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
60
+ @config.focused_files("javascripts/ExampleSpec.js").should == ['/__spec__/javascripts/ExampleSpec.js']
59
61
  @config.mappings.should == {
60
62
  '/__root__' => @config.project_root,
61
63
  '/__spec__' => @config.spec_dir
@@ -66,9 +68,10 @@ describe Jasmine::Config do
66
68
  @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
67
69
  @config.src_files.should == []
68
70
  @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
71
+ @config.focused_files("javascripts/ExampleSpec.js").should == ['/__spec__/javascripts/ExampleSpec.js']
69
72
  @config.mappings.should == {
70
- '/__root__' => @config.project_root,
71
- '/__spec__' => @config.spec_dir
73
+ '/__root__' => @config.project_root,
74
+ '/__spec__' => @config.spec_dir
72
75
  }
73
76
  end
74
77
 
@@ -106,6 +109,15 @@ describe Jasmine::Config do
106
109
  '/__spec__/javascripts/ExampleSpec.js',
107
110
  '/__spec__/javascripts/SpecHelper.js',
108
111
  ]
112
+ @config.focused_files("javascripts/ExampleSpec.js").should == [
113
+ '/javascripts/prototype.js',
114
+ '/javascripts/effects.js',
115
+ '/javascripts/controls.js',
116
+ '/javascripts/dragdrop.js',
117
+ '/javascripts/application.js',
118
+ '/__spec__/javascripts/ExampleSpec.js'
119
+ ]
120
+
109
121
  end
110
122
 
111
123
  it "should provide a list of all spec files with full paths" do
data/spec/server_spec.rb CHANGED
@@ -10,12 +10,10 @@ end
10
10
  describe Jasmine::Server do
11
11
  before(:each) do
12
12
  config = Jasmine::Config.new
13
- config.stub!(:mappings).and_return({
14
- "/src" => File.join(Jasmine.root, "src"),
15
- "/spec" => File.join(Jasmine.root, "spec")
16
- })
17
-
18
- config.stub!(:js_files).and_return(["/src/file1.js", "/spec/file2.js"])
13
+ config.stub!(:spec_dir).and_return(File.join(Jasmine.root, "spec"))
14
+ config.stub!(:src_dir).and_return(File.join(Jasmine.root, "src"))
15
+ config.stub!(:src_files).and_return(["file1.js"])
16
+ config.stub!(:spec_files).and_return(["file2.js"])
19
17
 
20
18
  @server = Jasmine::Server.new(0, config)
21
19
  @thin_app = @server.thin.app
@@ -25,11 +23,18 @@ describe Jasmine::Server do
25
23
  @server.thin.stop if @server && @server.thin.running?
26
24
  end
27
25
 
28
- it "should serve static files" do
29
- code, headers, body = @thin_app.call("PATH_INFO" => "/spec/suites/EnvSpec.js", "SCRIPT_NAME" => "xxx")
26
+ it "should serve static files from spec dir under __spec__" do
27
+ code, headers, body = @thin_app.call("PATH_INFO" => "/__spec__/suites/EnvSpec.js", "SCRIPT_NAME" => "xxx")
30
28
  code.should == 200
31
29
  headers["Content-Type"].should == "application/javascript"
32
30
  read(body).should == File.read(File.join(Jasmine.root, "spec/suites/EnvSpec.js"))
31
+ end
32
+
33
+ it "should serve static files from root dir under /" do
34
+ code, headers, body = @thin_app.call("PATH_INFO" => "/base.js", "SCRIPT_NAME" => "xxx")
35
+ code.should == 200
36
+ headers["Content-Type"].should == "application/javascript"
37
+ read(body).should == File.read(File.join(Jasmine.root, "src/base.js"))
33
38
  end
34
39
 
35
40
  it "should serve Jasmine static files under /__JASMINE_ROOT__/" do
@@ -39,6 +44,16 @@ describe Jasmine::Server do
39
44
  read(body).should == File.read(File.join(Jasmine.root, "lib/jasmine.css"))
40
45
  end
41
46
 
47
+ it "should serve focused suites when prefixing spec files with /__suite__/" do
48
+ Dir.stub!(:glob).and_return do |glob_string|
49
+ glob_string
50
+ end
51
+ code, headers, body = @thin_app.call("PATH_INFO" => "/__suite__/file2.js", "SCRIPT_NAME" => "xxx")
52
+ code.should == 200
53
+ headers["Content-Type"].should == "text/html"
54
+ read(body).should include("\"/__spec__/file2.js")
55
+ end
56
+
42
57
  it "should redirect /run.html to /" do
43
58
  code, headers, body = @thin_app.call("PATH_INFO" => "/run.html", "SCRIPT_NAME" => "xxx")
44
59
  code.should == 302
@@ -56,9 +71,9 @@ describe Jasmine::Server do
56
71
  code, headers, body = @thin_app.call("PATH_INFO" => "/", "SCRIPT_NAME" => "xxx", "REQUEST_METHOD" => 'GET')
57
72
  code.should == 200
58
73
  body = read(body)
59
- body.should include("\"/src/file1.js")
60
- body.should include("\"/spec/file2.js")
61
- body.should satisfy {|s| s.index("/src/file1.js") < s.index("/spec/file2.js") }
74
+ body.should include("\"/file1.js")
75
+ body.should include("\"/__spec__/file2.js")
76
+ body.should satisfy {|s| s.index("/file1.js") < s.index("/__spec__/file2.js") }
62
77
  end
63
78
 
64
79
  it "should return an empty 200 for HEAD requests to /" do
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.10.2.0
4
+ version: 0.10.2.1
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-03-18 00:00:00 -07:00
13
+ date: 2010-03-19 00:00:00 -07:00
14
14
  default_executable: jasmine
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency