jasmine 1.1.2 → 1.2.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,57 @@
1
+ before_script:
2
+ - "sh -e /etc/init.d/xvfb start"
3
+ script: "DISPLAY=:99.0 bundle exec rake"
4
+
5
+ rvm:
6
+ - "1.8.7"
7
+ - "1.9.2"
8
+ - "1.9.3"
9
+ - "ree"
10
+ - "jruby"
11
+ - "rbx"
12
+
13
+ env:
14
+ - "RAILS_VERSION=rails2"
15
+ - "RAILS_VERSION=rails2_3_5"
16
+ - "RAILS_VERSION=rails3"
17
+ - "RAILS_VERSION=pojs-rspec1"
18
+ - "RAILS_VERSION=pojs-rspec2"
19
+
20
+ matrix:
21
+ exclude:
22
+ - rvm: rbx
23
+ env: RAILS_VERSION=rails2
24
+ - rvm: rbx
25
+ env: RAILS_VERSION=rails2_3_5
26
+ - rvm: rbx
27
+ env: RAILS_VERSION=pojs-rspec1
28
+ - rvm: rbx
29
+ env: RAILS_VERSION=pojs-rspec2
30
+ - rvm: jruby
31
+ env: RAILS_VERSION=rails2
32
+ - rvm: jruby
33
+ env: RAILS_VERSION=rails2_3_5
34
+ - rvm: jruby
35
+ env: RAILS_VERSION=pojs-rspec1
36
+ - rvm: jruby
37
+ env: RAILS_VERSION=pojs-rspec2
38
+ - rvm: 1.9.2
39
+ env: RAILS_VERSION=rails2
40
+ - rvm: 1.9.2
41
+ env: RAILS_VERSION=rails2_3_5
42
+ - rvm: 1.9.2
43
+ env: RAILS_VERSION=pojs-rspec1
44
+ - rvm: 1.9.2
45
+ env: RAILS_VERSION=pojs-rspec2
46
+ - rvm: ree
47
+ env: RAILS_VERSION=pojs-rspec2
48
+ - rvm: 1.8.7
49
+ env: RAILS_VERSION=rails2
50
+ - rvm: 1.8.7
51
+ env: RAILS_VERSION=rails2_3_5
52
+ - rvm: 1.8.7
53
+ env: RAILS_VERSION=pojs-rspec1
54
+ - rvm: 1.8.7
55
+ env: RAILS_VERSION=pojs-rspec2
56
+ allow_failures:
57
+ - rvm: rbx
data/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
1
  source "http://rubygems.org"
2
- gem "ci_reporter", :git => "git://github.com/nicksieger/ci_reporter.git", :ref => "af8674c7bddc338fad228c566a03e3b8188d8a22"
3
2
  gemspec
data/README.markdown CHANGED
@@ -1,4 +1,4 @@
1
- # The Jasmine Gem
1
+ # The Jasmine Gem <a title="Build at Travis CI" href="http://travis-ci.org/#!/pivotal/jasmine-gem"><img src="https://secure.travis-ci.org/pivotal/jasmine-gem.png" /></a>
2
2
 
3
3
  The [Jasmine](http://github.com/pivotal/jasmine) Ruby Gem is a package of helper code for developing Jasmine projects for Ruby-based web projects (Rails, Sinatra, etc.) or for JavaScript projects where Ruby is a welcome partner. It serves up a project's Jasmine suite in a browser so you can focus on your code instead of manually editing script tags in the Jasmine runner HTML file.
4
4
 
data/Rakefile CHANGED
@@ -12,7 +12,6 @@ else
12
12
  require 'spec'
13
13
  require 'spec/rake/spectask'
14
14
  end
15
- require 'ci/reporter/rake/rspec'
16
15
 
17
16
  desc "Run all examples"
18
17
  if Jasmine::Dependencies.rspec2?
@@ -25,14 +24,14 @@ else
25
24
  end
26
25
  end
27
26
 
28
- task :spec => ['jasmine:copy_examples_to_gem', 'ci:setup:rspec']
27
+ task :spec => ['jasmine:copy_examples_to_gem']
29
28
 
30
29
  task :default => :spec
31
30
 
32
31
  namespace :jasmine do
33
32
  require "jasmine-core"
34
33
  require './spec/jasmine_self_test_config'
35
- task :server do
34
+ task :server do
36
35
  port = ENV['JASMINE_PORT'] || 8888
37
36
  JasmineSelfTestConfig.new.start_server(port)
38
37
 
@@ -13,20 +13,12 @@ class JasmineGenerator < Rails::Generator::Base
13
13
  m.file "jasmine-example/spec/SpecHelper.js", "spec/javascripts/helpers/SpecHelper.js"
14
14
 
15
15
  m.directory "spec/javascripts/support"
16
- m.file "spec/javascripts/support/jasmine_runner.rb", "spec/javascripts/support/jasmine_runner.rb"
17
- m.file "spec/javascripts/support/jasmine_config.rb", "spec/javascripts/support/jasmine_config.rb"
18
16
  m.file "spec/javascripts/support/jasmine-rails.yml", "spec/javascripts/support/jasmine.yml"
19
17
  m.readme "INSTALL"
20
18
 
21
- unless ::Rails::VERSION::STRING[0,1] == "3"
22
- m.directory "lib/tasks"
23
- m.file "lib/tasks/jasmine.rake", "lib/tasks/jasmine.rake"
24
- end
19
+ m.directory "lib/tasks"
20
+ m.file "lib/tasks/jasmine.rake", "lib/tasks/jasmine.rake"
25
21
  m
26
22
  end
27
23
 
28
- def file_name
29
- "create_blog"
30
- end
31
-
32
- end
24
+ end
@@ -10,11 +10,11 @@
10
10
  <script type="text/javascript" src="lib/jasmine-1.1.0.rc1/jasmine.js"></script>
11
11
  <script type="text/javascript" src="lib/jasmine-1.1.0.rc1/jasmine-html.js"></script>
12
12
 
13
- <!-- include spec files here... -->
13
+ <!-- include source files here... -->
14
14
  <script type="text/javascript" src="spec/SpecHelper.js"></script>
15
15
  <script type="text/javascript" src="spec/PlayerSpec.js"></script>
16
16
 
17
- <!-- include source files here... -->
17
+ <!-- include spec files here... -->
18
18
  <script type="text/javascript" src="src/Player.js"></script>
19
19
  <script type="text/javascript" src="src/Song.js"></script>
20
20
 
data/jasmine.gemspec CHANGED
@@ -46,7 +46,15 @@ Gem::Specification.new do |s|
46
46
  end
47
47
  # for development & test of Rails 2 Generators
48
48
  s.add_development_dependency 'rails', '2.3.11', "< 3"
49
- s.add_development_dependency 'rack', '>= 1.1', "< 1.2"
49
+ elsif ENV['RAILS_VERSION'] == 'rails2_3_5'
50
+ if ENV["RUBY_VERSION"] =~ /1\.8\.6/
51
+ #1.3.2 buffer overflows
52
+ s.add_development_dependency 'rspec', '= 1.3.1'
53
+ else
54
+ s.add_development_dependency 'rspec', '>= 1.3.1', '< 2'
55
+ end
56
+ # for development & test of Rails 2 Generators
57
+ s.add_development_dependency 'rails', '= 2.3.5'
50
58
  else
51
59
  # for development & test of Rails 3 Generators
52
60
  s.add_development_dependency 'rspec', '>= 2.5.0'
@@ -55,11 +63,10 @@ Gem::Specification.new do |s|
55
63
  end
56
64
 
57
65
  s.add_development_dependency 'rack-test'
58
- s.add_development_dependency 'ci_reporter'
59
66
  s.add_development_dependency 'json_pure'
60
67
 
61
- s.add_dependency 'jasmine-core', ">= 1.1.0"
62
- s.add_dependency 'rack', '>= 1.1'
68
+ s.add_dependency 'jasmine-core', ">= 1.2.0.rc3"
69
+ s.add_dependency 'rack', '~> 1.0'
63
70
  s.add_dependency 'rspec', '>= 1.3.1'
64
71
  s.add_dependency 'selenium-webdriver', '>= 0.1.3'
65
72
  end
data/lib/jasmine/base.rb CHANGED
@@ -30,7 +30,7 @@ module Jasmine
30
30
  true
31
31
  end
32
32
 
33
- def self.wait_for_listener(port, name = "required process", seconds_to_wait = 10)
33
+ def self.wait_for_listener(port, name = "required process", seconds_to_wait = 20)
34
34
  time_out_at = Time.now + seconds_to_wait
35
35
  until server_is_listening_on "localhost", port
36
36
  sleep 0.1
@@ -39,4 +39,8 @@ module Jasmine
39
39
  end
40
40
  end
41
41
 
42
+ def self.runner_filepath
43
+ File.expand_path(File.join(File.dirname(__FILE__), "runner.rb"))
44
+ end
45
+
42
46
  end
@@ -35,8 +35,6 @@ module Jasmine
35
35
  copy_unless_exists('jasmine-example/src/Song.js', 'public/javascripts/Song.js')
36
36
  copy_unless_exists('jasmine-example/spec/PlayerSpec.js', 'spec/javascripts/PlayerSpec.js')
37
37
  copy_unless_exists('jasmine-example/spec/SpecHelper.js', 'spec/javascripts/helpers/SpecHelper.js')
38
- copy_unless_exists('spec/javascripts/support/jasmine_runner.rb')
39
- copy_unless_exists('spec/javascripts/support/jasmine_config.rb')
40
38
 
41
39
  rails_tasks_dir = dest_path('lib/tasks')
42
40
  if File.exist?(rails_tasks_dir)
@@ -16,9 +16,14 @@ module Jasmine
16
16
  end
17
17
 
18
18
  def start_server(port = 8888)
19
- server = Rack::Server.new(:Port => port, :AccessLog => [])
20
- server.instance_variable_set(:@app, Jasmine.app(self)) # workaround for Rack bug, when Rack > 1.2.1 is released Rack::Server.start(:app => Jasmine.app(self)) will work
21
- server.start
19
+ if defined? Rack::Server # Rack ~>1.0 compatibility
20
+ server = Rack::Server.new(:Port => port, :AccessLog => [])
21
+ server.instance_variable_set(:@app, Jasmine.app(self)) # workaround for Rack bug, when Rack > 1.2.1 is released Rack::Server.start(:app => Jasmine.app(self)) will work
22
+ server.start
23
+ else
24
+ handler = Rack::Handler.get('webrick')
25
+ handler.run(Jasmine.app(self), :Port => port, :AccessLog => [])
26
+ end
22
27
  end
23
28
 
24
29
  def start
@@ -32,10 +37,15 @@ module Jasmine
32
37
  end
33
38
 
34
39
  def start_jasmine_server
40
+ require 'json'
35
41
  @jasmine_server_port = jasmine_port
36
- Thread.new do
37
- start_server(@jasmine_server_port)
42
+ t = Thread.new do
43
+ begin
44
+ start_server(@jasmine_server_port)
45
+ rescue ChildProcess::TimeoutError; end
46
+ #ignore bad exits
38
47
  end
48
+ t.abort_on_exception = true
39
49
  Jasmine::wait_for_listener(@jasmine_server_port, "jasmine server")
40
50
  puts "jasmine server started."
41
51
  end
@@ -70,7 +80,7 @@ module Jasmine
70
80
  chosen, negated = [positive, negative].collect do |patterns|
71
81
  patterns.collect do |pattern|
72
82
  matches = Dir.glob(File.join(dir, pattern.gsub(/^!/,'')))
73
- matches.collect {|f| f.sub("#{dir}/", "")}.sort
83
+ matches.empty? && !(pattern =~ /\*|^\!/) ? pattern : matches.collect {|f| f.sub("#{dir}/", "")}.sort
74
84
  end.flatten.uniq
75
85
  end
76
86
  chosen - negated
@@ -159,4 +169,4 @@ module Jasmine
159
169
  end
160
170
  end
161
171
  end
162
- end
172
+ end
@@ -10,10 +10,18 @@ module Jasmine
10
10
  safe_gem_check("rails", "~> 2.3")
11
11
  end
12
12
 
13
+ def legacy_rails?
14
+ safe_gem_check("rails", "< 2.3.11")
15
+ end
16
+
13
17
  def rails3?
14
18
  safe_gem_check("rails", ">= 3.0")
15
19
  end
16
20
 
21
+ def rails_3_asset_pipeline?
22
+ rails3? && Rails.respond_to?(:application) && Rails.application.respond_to?(:assets) && Rails.application.assets
23
+ end
24
+
17
25
  private
18
26
  def safe_gem_check(gem_name, version_string)
19
27
  if Gem::Specification.respond_to?(:find_by_name)
@@ -15,6 +15,7 @@ module Jasmine
15
15
 
16
16
  rake_tasks do
17
17
  load "jasmine/tasks/jasmine.rake"
18
+ load "jasmine/tasks/jasmine_rails3.rake"
18
19
  end
19
20
  end
20
- end
21
+ end
@@ -18,13 +18,13 @@
18
18
  var jasmineEnv = jasmine.getEnv();
19
19
 
20
20
  jsApiReporter = new jasmine.JsApiReporter();
21
- var trivialReporter = new jasmine.TrivialReporter();
21
+ var htmlReporter = new jasmine.HtmlReporter();
22
22
 
23
23
  jasmineEnv.addReporter(jsApiReporter);
24
- jasmineEnv.addReporter(trivialReporter);
24
+ jasmineEnv.addReporter(htmlReporter);
25
25
 
26
26
  jasmineEnv.specFilter = function(spec) {
27
- return trivialReporter.specFilter(spec);
27
+ return htmlReporter.specFilter(spec);
28
28
  };
29
29
 
30
30
  var currentWindowOnload = window.onload;
@@ -2,7 +2,7 @@ $:.unshift(ENV['JASMINE_GEM_PATH']) if ENV['JASMINE_GEM_PATH'] # for gem testing
2
2
 
3
3
  require 'rubygems'
4
4
  require 'jasmine'
5
- jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config.rb'))
5
+ jasmine_config_overrides = File.expand_path(File.join(Dir.pwd, 'spec', 'javascripts', 'support', 'jasmine_config.rb'))
6
6
  require jasmine_config_overrides if File.exist?(jasmine_config_overrides)
7
7
  if Jasmine::Dependencies.rspec2?
8
8
  require 'rspec'
@@ -1,4 +1,5 @@
1
1
  require 'rack'
2
+ require 'rack/utils'
2
3
  require 'jasmine-core'
3
4
 
4
5
  module Jasmine
@@ -30,7 +31,7 @@ module Jasmine
30
31
  body = ERB.new(File.read(File.join(File.dirname(__FILE__), "run.html.erb"))).result(binding)
31
32
  [
32
33
  200,
33
- { 'Content-Type' => 'text/html', 'Cache-Control' => 'no-cache', 'Pragma' => 'no-cache' },
34
+ { 'Content-Type' => 'text/html', 'Pragma' => 'no-cache' },
34
35
  [body]
35
36
  ]
36
37
  end
@@ -71,9 +72,29 @@ module Jasmine
71
72
  end
72
73
  end
73
74
 
75
+ class CacheControl
76
+ def initialize(app)
77
+ @app, @content_type = app
78
+ end
79
+
80
+ def call(env)
81
+ status, headers, body = @app.call(env)
82
+ headers = Rack::Utils::HeaderHash.new(headers)
83
+ headers['Cache-Control'] ||= "max-age=0, private, must-revalidate"
84
+ [status, headers, body]
85
+ end
86
+ end
87
+
88
+
74
89
  def self.app(config)
75
90
  Rack::Builder.app do
76
91
  use Rack::Head
92
+ use Jasmine::CacheControl
93
+ if Jasmine::Dependencies.rails_3_asset_pipeline?
94
+ map('/assets') do
95
+ run Rails.application.assets
96
+ end
97
+ end
77
98
 
78
99
  map('/run.html') { run Jasmine::Redirect.new('/') }
79
100
  map('/__suite__') { run Jasmine::FocusedSuite.new(config) }
@@ -26,13 +26,16 @@ namespace :jasmine do
26
26
  RSpec::Core::RakeTask.new(:jasmine_continuous_integration_runner) do |t|
27
27
  t.rspec_opts = ["--colour", "--format", ENV['JASMINE_SPEC_FORMAT'] || "progress"]
28
28
  t.verbose = true
29
- t.pattern = ['spec/javascripts/support/jasmine_runner.rb']
29
+ if Jasmine::Dependencies.rails_3_asset_pipeline?
30
+ t.ruby_opts = ["-r #{File.expand_path(File.join(::Rails.root, 'config', 'environment'))}"]
31
+ end
32
+ t.pattern = [Jasmine.runner_filepath]
30
33
  end
31
34
  else
32
35
  Spec::Rake::SpecTask.new(:jasmine_continuous_integration_runner) do |t|
33
36
  t.spec_opts = ["--color", "--format", ENV['JASMINE_SPEC_FORMAT'] || "specdoc"]
34
37
  t.verbose = true
35
- t.spec_files = ['spec/javascripts/support/jasmine_runner.rb']
38
+ t.spec_files = [Jasmine.runner_filepath]
36
39
  end
37
40
  end
38
41
  Rake::Task["jasmine_continuous_integration_runner"].invoke
@@ -0,0 +1 @@
1
+ task "jasmine:require" => [:environment]
@@ -1,3 +1,3 @@
1
1
  module Jasmine
2
- VERSION = "1.1.2"
2
+ VERSION = "1.2.0.rc3"
3
3
  end
data/spec/config_spec.rb CHANGED
@@ -162,6 +162,18 @@ describe Jasmine::Config do
162
162
  end
163
163
  end
164
164
 
165
+ describe "should permit explicity-declared filenames to pass through regardless of their existence" do
166
+ before(:each) do
167
+ Dir.stub!(:glob).and_return { |glob_string| [] }
168
+ fake_config = Hash.new.stub!(:[]).and_return { |x| ["file1.ext", "!file2.ext", "**/*file3.ext"] }
169
+ @config.stub!(:simple_config).and_return(fake_config)
170
+ end
171
+
172
+ it "should contain explicitly files" do
173
+ @config.src_files.should == ["file1.ext"]
174
+ end
175
+ end
176
+
165
177
  describe "should allow .gitignore style negation (!pattern)" do
166
178
  before(:each) do
167
179
  Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
@@ -305,4 +317,5 @@ describe Jasmine::Config do
305
317
  end
306
318
  end
307
319
  end
320
+
308
321
  end
@@ -3,54 +3,131 @@ require 'spec_helper'
3
3
  #rspec 1 fails to stub respond_to
4
4
  if Jasmine::Dependencies.rspec2?
5
5
  describe Jasmine::Dependencies do
6
+ module Rails
7
+ end
6
8
 
7
- context "with ruby gems > 1.8" do
9
+ context "with ruby_gems > 1.8" do
8
10
  before do
9
11
  Gem::Specification.should_receive(:respond_to?).with(:find_by_name).and_return(true)
10
12
  end
11
13
 
12
- context "and rspec 2" do
13
- before do
14
- Gem::Specification.should_receive(:find_by_name).with("rspec", ">= 2.0").and_raise(Gem::LoadError)
14
+ describe ".rspec2?" do
15
+ subject { Jasmine::Dependencies.rspec2? }
16
+ context "when rspec 2 is present" do
17
+ before do
18
+ Gem::Specification.should_receive(:find_by_name).with("rspec", ">= 2.0").and_return(true)
19
+ end
20
+ it { should be_true }
15
21
  end
16
- it "should return the correct results" do
17
- Jasmine::Dependencies.rspec2?.should be false
22
+ context "when rspec 2 is not present" do
23
+ before do
24
+ Gem::Specification.should_receive(:find_by_name).with("rspec", ">= 2.0").and_raise(Gem::LoadError)
25
+ end
26
+ it { should be_false }
18
27
  end
28
+ end
19
29
 
20
- it "should not raise an error" do
21
- lambda do
22
- Jasmine::Dependencies.rspec2?
23
- end.should_not raise_error(Gem::LoadError)
30
+ describe ".rails2?" do
31
+ subject { Jasmine::Dependencies.rails2? }
32
+ context "when rails 2 is present" do
33
+ before do
34
+ Gem::Specification.should_receive(:find_by_name).with("rails", "~> 2.3").and_return(true)
35
+ end
36
+ it { should be_true }
37
+ end
38
+ context "when rails 2 is not present" do
39
+ before do
40
+ Gem::Specification.should_receive(:find_by_name).with("rails", "~> 2.3").and_raise(Gem::LoadError)
41
+ end
42
+ it { should be_false }
24
43
  end
25
44
  end
26
45
 
27
- context "and rails 2" do
28
- before do
29
- Gem::Specification.should_receive(:find_by_name).with("rails", "~> 2.3").and_raise(Gem::LoadError)
46
+ describe ".legacy_rails?" do
47
+ subject { Jasmine::Dependencies.legacy_rails? }
48
+ context "when rails < 2.3.11 is present" do
49
+ before do
50
+ Gem::Specification.should_receive(:find_by_name).with("rails", "< 2.3.11").and_return(true)
51
+ end
52
+ it { should be_true }
30
53
  end
31
- it "should return the correct results" do
32
- Jasmine::Dependencies.rails2?.should be false
54
+ context "when rails < 2.3.11 is not present" do
55
+ before do
56
+ Gem::Specification.should_receive(:find_by_name).with("rails", "< 2.3.11").and_raise(Gem::LoadError)
57
+ end
58
+ it { should be_false }
33
59
  end
60
+ end
34
61
 
35
- it "should not raise an error" do
36
- lambda do
37
- Jasmine::Dependencies.rails2?
38
- end.should_not raise_error(Gem::LoadError)
62
+ describe ".rails3?" do
63
+ subject { Jasmine::Dependencies.rails3? }
64
+ context "when rails 3 is present" do
65
+ before do
66
+ Gem::Specification.should_receive(:find_by_name).with("rails", ">= 3.0").and_return(true)
67
+ end
68
+ it { should be_true }
69
+ end
70
+ context "when rails 3 is not present" do
71
+ before do
72
+ Gem::Specification.should_receive(:find_by_name).with("rails", ">= 3.0").and_raise(Gem::LoadError)
73
+ end
74
+ it { should be_false }
39
75
  end
40
76
  end
41
77
 
42
- context "and rails 3" do
78
+ describe ".rails_3_asset_pipeline?" do
79
+ subject { Jasmine::Dependencies.rails_3_asset_pipeline? }
80
+ let(:application) { double(:application) }
43
81
  before do
44
- Gem::Specification.should_receive(:find_by_name).with("rails", ">= 3.0").and_raise(Gem::LoadError)
82
+ Rails.stub(:respond_to?).with(:application).and_return(respond_to_application)
83
+ Rails.stub(:application).and_return(application)
45
84
  end
46
- it "should return the correct results" do
47
- Jasmine::Dependencies.rails3?.should be false
85
+ context "when rails 3 is present and the application pipeline is in use" do
86
+ before do
87
+ Gem::Specification.should_receive(:find_by_name).with("rails", ">= 3.0").and_return(true)
88
+ application.stub(:assets).and_return(rails_application_assets)
89
+ end
90
+ let(:rails3_present) { true }
91
+ let(:respond_to_application) { true }
92
+ let(:rails_application_assets) { true }
93
+ it { should be_true }
48
94
  end
49
-
50
- it "should not raise an error" do
51
- lambda do
52
- Jasmine::Dependencies.rails3?
53
- end.should_not raise_error(Gem::LoadError)
95
+ context "when rails 3 is present and the application pipeline is not in use" do
96
+ before do
97
+ Gem::Specification.should_receive(:find_by_name).with("rails", ">= 3.0").and_return(true)
98
+ application.stub(:assets).and_return(rails_application_assets)
99
+ end
100
+ let(:rails3_present) { true }
101
+ let(:respond_to_application) { true }
102
+ let(:rails_application_assets) { false }
103
+ it { should be_false }
104
+ end
105
+ context "when rails 3 is present but not loaded" do
106
+ before do
107
+ Gem::Specification.should_receive(:find_by_name).with("rails", ">= 3.0").and_return(true)
108
+ application.stub(:assets).and_return(rails_application_assets)
109
+ end
110
+ let(:rails3_present) { true }
111
+ let(:respond_to_application) { false }
112
+ let(:rails_application_assets) { false }
113
+ it { should be_false }
114
+ end
115
+ context "when rails 3 is present but doesn't respond to assets" do
116
+ before do
117
+ Gem::Specification.should_receive(:find_by_name).with("rails", ">= 3.0").and_return(true)
118
+ end
119
+ let(:rails3_present) { true }
120
+ let(:respond_to_application) { true }
121
+ it { should be_false }
122
+ end
123
+ context "when rails 3 is not present" do
124
+ before do
125
+ Gem::Specification.should_receive(:find_by_name).with("rails", ">= 3.0").and_raise(Gem::LoadError)
126
+ end
127
+ let(:rails3_present) { false }
128
+ let(:respond_to_application) { false }
129
+ let(:rails_application_assets) { false }
130
+ it { should be_false }
54
131
  end
55
132
  end
56
133
  end
@@ -59,28 +136,101 @@ if Jasmine::Dependencies.rspec2?
59
136
  before do
60
137
  Gem::Specification.should_receive(:respond_to?).with(:find_by_name).and_return(false)
61
138
  end
62
- context "and rspec 2" do
63
- it "should not break when it is not present" do
64
- Gem.should_receive(:available?).with("rspec", ">= 2.0").and_return false
65
- Jasmine::Dependencies.rspec2?.should be false
139
+
140
+ describe ".rspec2?" do
141
+ subject { Jasmine::Dependencies.rspec2? }
142
+ before do
143
+ Gem.should_receive(:available?).with("rspec", ">= 2.0").and_return(rspec2_present)
144
+ end
145
+ context "when rspec 2 is present" do
146
+ let(:rspec2_present) { true }
147
+ it { should be_true }
148
+ end
149
+ context "when rspec 2 is not present" do
150
+ let(:rspec2_present) { false }
151
+ it { should be_false }
152
+ end
153
+ end
154
+
155
+ describe ".rails2?" do
156
+ subject { Jasmine::Dependencies.rails2? }
157
+ before do
158
+ Gem.should_receive(:available?).with("rails", "~> 2.3").and_return(rails2_present)
159
+ end
160
+ context "when rails 2 is present" do
161
+ let(:rails2_present) { true }
162
+ it { should be_true }
163
+ end
164
+ context "when rails 2 is not present" do
165
+ let(:rails2_present) { false }
166
+ it { should be_false }
167
+ end
168
+ end
169
+
170
+ describe ".legacy_rails?" do
171
+ subject { Jasmine::Dependencies.legacy_rails? }
172
+ before do
173
+ Gem.should_receive(:available?).with("rails", "< 2.3.11").and_return(legacy_rails_present)
174
+ end
175
+ context "when rails < 2.3.11 is present" do
176
+ let(:legacy_rails_present) { true }
177
+ it { should be_true }
178
+ end
179
+ context "when rails < 2.3.11 is not present" do
180
+ let(:legacy_rails_present) { false }
181
+ it { should be_false }
66
182
  end
67
183
  end
68
184
 
69
- context "and rails 2" do
70
- it "should not break when it is not present" do
71
- Gem.should_receive(:available?).with("rails", "~> 2.3").and_return false
72
- Jasmine::Dependencies.rails2?.should be false
185
+ describe ".rails3?" do
186
+ subject { Jasmine::Dependencies.rails3? }
187
+ before do
188
+ Gem.should_receive(:available?).with("rails", ">= 3.0").and_return(rails3_present)
189
+ end
190
+ context "when rails 3 is present" do
191
+ let(:rails3_present) { true }
192
+ it { should be_true }
193
+ end
194
+ context "when rails 3 is not present" do
195
+ let(:rails3_present) { false }
196
+ it { should be_false }
73
197
  end
74
198
  end
75
199
 
76
- context "and rails 3" do
77
- it "should not break when it is not present" do
78
- Gem.should_receive(:available?).with("rails", ">= 3.0").and_return false
79
- Jasmine::Dependencies.rails3?.should be false
200
+ describe ".rails_3_asset_pipeline?" do
201
+ subject { Jasmine::Dependencies.rails_3_asset_pipeline? }
202
+ let(:application) { double(:application, :assets => rails_application_assets)}
203
+ before do
204
+ Gem.should_receive(:available?).with("rails", ">= 3.0").and_return(rails3_present)
205
+ Rails.stub(:respond_to?).with(:application).and_return(respond_to_application)
206
+ Rails.stub(:application).and_return(application)
207
+ end
208
+ context "when rails 3 is present and the application pipeline is in use" do
209
+ let(:rails3_present) { true }
210
+ let(:respond_to_application) { true }
211
+ let(:rails_application_assets) { true }
212
+ it { should be_true }
213
+ end
214
+ context "when rails 3 is present and the application pipeline is not in use" do
215
+ let(:rails3_present) { true }
216
+ let(:respond_to_application) { true }
217
+ let(:rails_application_assets) { false }
218
+ it { should be_false }
219
+ end
220
+ context "when rails 3 is present but not loaded" do
221
+ let(:rails3_present) { true }
222
+ let(:respond_to_application) { false }
223
+ let(:rails_application_assets) { false }
224
+ it { should be_false }
225
+ end
226
+ context "when rails 3 is not present" do
227
+ let(:rails3_present) { false }
228
+ let(:respond_to_application) { false }
229
+ let(:rails_application_assets) { false }
230
+ it { should be_false }
80
231
  end
81
232
  end
82
233
  end
83
234
 
84
235
  end
85
-
86
236
  end
@@ -21,8 +21,6 @@ describe "POJS jasmine install" do
21
21
 
22
22
  it "should find the Jasmine configuration files" do
23
23
  File.exists?("spec/javascripts/support/jasmine.yml").should == true
24
- File.exists?("spec/javascripts/support/jasmine_runner.rb").should == true
25
- File.exists?("spec/javascripts/support/jasmine_config.rb").should == true
26
24
  end
27
25
 
28
26
  it "should find the Jasmine example files" do
@@ -33,8 +31,6 @@ describe "POJS jasmine install" do
33
31
  File.exists?("spec/javascripts/helpers/SpecHelper.js").should == true
34
32
 
35
33
  File.exists?("spec/javascripts/support/jasmine.yml").should == true
36
- File.exists?("spec/javascripts/support/jasmine_runner.rb").should == true
37
- File.exists?("spec/javascripts/support/jasmine_config.rb").should == true
38
34
  end
39
35
 
40
36
  it "should show jasmine rake task" do
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
2
2
 
3
- if Jasmine::Dependencies.rails2?
3
+ if Jasmine::Dependencies.rails2? && !Jasmine::Dependencies.legacy_rails?
4
4
 
5
5
  describe "A Rails 2 app" do
6
6
 
@@ -17,7 +17,7 @@ if Jasmine::Dependencies.rails2?
17
17
 
18
18
  context "before Jasmine has been installed" do
19
19
 
20
- it "should not the jasmine:install generator" do
20
+ it "should not show the jasmine:install generator" do
21
21
  output = `./script/generate --help`
22
22
  output.should_not include('jasmine:install')
23
23
  end
@@ -62,8 +62,6 @@ if Jasmine::Dependencies.rails2?
62
62
 
63
63
  it "should find the Jasmine configuration files" do
64
64
  File.exists?("spec/javascripts/support/jasmine.yml").should == true
65
- File.exists?("spec/javascripts/support/jasmine_runner.rb").should == true
66
- File.exists?("spec/javascripts/support/jasmine_config.rb").should == true
67
65
  end
68
66
 
69
67
  it "should find the Jasmine example files" do
@@ -74,8 +72,6 @@ if Jasmine::Dependencies.rails2?
74
72
  File.exists?("spec/javascripts/helpers/SpecHelper.js").should == true
75
73
 
76
74
  File.exists?("spec/javascripts/support/jasmine.yml").should == true
77
- File.exists?("spec/javascripts/support/jasmine_runner.rb").should == true
78
- File.exists?("spec/javascripts/support/jasmine_config.rb").should == true
79
75
  end
80
76
 
81
77
  it "should show jasmine rake task" do
@@ -49,8 +49,6 @@ if Jasmine::Dependencies.rails3?
49
49
 
50
50
  File.exists?("spec/javascripts/helpers/.gitkeep").should == true
51
51
  File.exists?("spec/javascripts/support/jasmine.yml").should == true
52
- File.exists?("spec/javascripts/support/jasmine_runner.rb").should == true
53
- File.exists?("spec/javascripts/support/jasmine_config.rb").should == true
54
52
  end
55
53
  end
56
54
 
data/spec/server_spec.rb CHANGED
@@ -15,6 +15,12 @@ describe "Jasmine.app" do
15
15
  Jasmine.app(config)
16
16
  end
17
17
 
18
+ it "includes no-cache headers for specs" do
19
+ get "/__spec__/example_spec.js"
20
+ last_response.headers.should have_key("Cache-Control")
21
+ last_response.headers["Cache-Control"].should == "max-age=0, private, must-revalidate"
22
+ end
23
+
18
24
  it "should serve static files from spec dir under __spec__" do
19
25
  get "/__spec__/example_spec.js"
20
26
  last_response.status.should == 200
@@ -80,7 +86,7 @@ describe "Jasmine.app" do
80
86
 
81
87
  it "should tell the browser not to cache any assets" do
82
88
  head "/"
83
- ['Cache-Control', 'Pragma'].each do |key|
89
+ ['Pragma'].each do |key|
84
90
  last_response.headers[key].should == 'no-cache'
85
91
  end
86
92
  end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
5
- prerelease:
4
+ version: 1.2.0.rc3
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Rajan Agaskar
@@ -11,12 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-10-27 00:00:00.000000000 -07:00
15
- default_executable:
14
+ date: 2012-04-04 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: rspec
19
- requirement: &70282392007960 !ruby/object:Gem::Requirement
18
+ requirement: &70119527196580 !ruby/object:Gem::Requirement
20
19
  none: false
21
20
  requirements:
22
21
  - - ! '>='
@@ -24,10 +23,10 @@ dependencies:
24
23
  version: 2.5.0
25
24
  type: :development
26
25
  prerelease: false
27
- version_requirements: *70282392007960
26
+ version_requirements: *70119527196580
28
27
  - !ruby/object:Gem::Dependency
29
28
  name: rails
30
- requirement: &70282392004820 !ruby/object:Gem::Requirement
29
+ requirement: &70119527211980 !ruby/object:Gem::Requirement
31
30
  none: false
32
31
  requirements:
33
32
  - - ! '>='
@@ -35,10 +34,10 @@ dependencies:
35
34
  version: 3.0.0
36
35
  type: :development
37
36
  prerelease: false
38
- version_requirements: *70282392004820
37
+ version_requirements: *70119527211980
39
38
  - !ruby/object:Gem::Dependency
40
39
  name: rack
41
- requirement: &70282392002860 !ruby/object:Gem::Requirement
40
+ requirement: &70119527210920 !ruby/object:Gem::Requirement
42
41
  none: false
43
42
  requirements:
44
43
  - - ! '>='
@@ -46,10 +45,10 @@ dependencies:
46
45
  version: 1.2.1
47
46
  type: :development
48
47
  prerelease: false
49
- version_requirements: *70282392002860
48
+ version_requirements: *70119527210920
50
49
  - !ruby/object:Gem::Dependency
51
50
  name: rack-test
52
- requirement: &70282392001920 !ruby/object:Gem::Requirement
51
+ requirement: &70119527210060 !ruby/object:Gem::Requirement
53
52
  none: false
54
53
  requirements:
55
54
  - - ! '>='
@@ -57,21 +56,10 @@ dependencies:
57
56
  version: '0'
58
57
  type: :development
59
58
  prerelease: false
60
- version_requirements: *70282392001920
61
- - !ruby/object:Gem::Dependency
62
- name: ci_reporter
63
- requirement: &70282392000880 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - ! '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- type: :development
70
- prerelease: false
71
- version_requirements: *70282392000880
59
+ version_requirements: *70119527210060
72
60
  - !ruby/object:Gem::Dependency
73
61
  name: json_pure
74
- requirement: &70282391999500 !ruby/object:Gem::Requirement
62
+ requirement: &70119527209120 !ruby/object:Gem::Requirement
75
63
  none: false
76
64
  requirements:
77
65
  - - ! '>='
@@ -79,32 +67,32 @@ dependencies:
79
67
  version: '0'
80
68
  type: :development
81
69
  prerelease: false
82
- version_requirements: *70282391999500
70
+ version_requirements: *70119527209120
83
71
  - !ruby/object:Gem::Dependency
84
72
  name: jasmine-core
85
- requirement: &70282391997920 !ruby/object:Gem::Requirement
73
+ requirement: &70119527208320 !ruby/object:Gem::Requirement
86
74
  none: false
87
75
  requirements:
88
76
  - - ! '>='
89
77
  - !ruby/object:Gem::Version
90
- version: 1.1.0
78
+ version: 1.2.0.rc3
91
79
  type: :runtime
92
80
  prerelease: false
93
- version_requirements: *70282391997920
81
+ version_requirements: *70119527208320
94
82
  - !ruby/object:Gem::Dependency
95
83
  name: rack
96
- requirement: &70282391996620 !ruby/object:Gem::Requirement
84
+ requirement: &70119527207280 !ruby/object:Gem::Requirement
97
85
  none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - ~>
100
88
  - !ruby/object:Gem::Version
101
- version: '1.1'
89
+ version: '1.0'
102
90
  type: :runtime
103
91
  prerelease: false
104
- version_requirements: *70282391996620
92
+ version_requirements: *70119527207280
105
93
  - !ruby/object:Gem::Dependency
106
94
  name: rspec
107
- requirement: &70282391995520 !ruby/object:Gem::Requirement
95
+ requirement: &70119527206480 !ruby/object:Gem::Requirement
108
96
  none: false
109
97
  requirements:
110
98
  - - ! '>='
@@ -112,10 +100,10 @@ dependencies:
112
100
  version: 1.3.1
113
101
  type: :runtime
114
102
  prerelease: false
115
- version_requirements: *70282391995520
103
+ version_requirements: *70119527206480
116
104
  - !ruby/object:Gem::Dependency
117
105
  name: selenium-webdriver
118
- requirement: &70282391994420 !ruby/object:Gem::Requirement
106
+ requirement: &70119527205400 !ruby/object:Gem::Requirement
119
107
  none: false
120
108
  requirements:
121
109
  - - ! '>='
@@ -123,7 +111,7 @@ dependencies:
123
111
  version: 0.1.3
124
112
  type: :runtime
125
113
  prerelease: false
126
- version_requirements: *70282391994420
114
+ version_requirements: *70119527205400
127
115
  description: Test your JavaScript without any framework dependencies, in any environment,
128
116
  and with a nice descriptive syntax.
129
117
  email: jasmine-js@googlegroups.com
@@ -133,6 +121,7 @@ extensions: []
133
121
  extra_rdoc_files: []
134
122
  files:
135
123
  - .gitignore
124
+ - .travis.yml
136
125
  - Gemfile
137
126
  - HOW_TO_TEST.markdown
138
127
  - MIT.LICENSE
@@ -150,8 +139,6 @@ files:
150
139
  - generators/jasmine/templates/lib/tasks/jasmine.rake
151
140
  - generators/jasmine/templates/spec/javascripts/support/jasmine-rails.yml
152
141
  - generators/jasmine/templates/spec/javascripts/support/jasmine.yml
153
- - generators/jasmine/templates/spec/javascripts/support/jasmine_config.rb
154
- - generators/jasmine/templates/spec/javascripts/support/jasmine_runner.rb
155
142
  - jasmine.gemspec
156
143
  - lib/generators/jasmine/examples/USAGE
157
144
  - lib/generators/jasmine/examples/examples_generator.rb
@@ -163,15 +150,10 @@ files:
163
150
  - lib/generators/jasmine/install/install_generator.rb
164
151
  - lib/generators/jasmine/install/templates/spec/javascripts/helpers/.gitkeep
165
152
  - lib/generators/jasmine/install/templates/spec/javascripts/support/jasmine.yml
166
- - lib/generators/jasmine/install/templates/spec/javascripts/support/jasmine_config.rb
167
- - lib/generators/jasmine/install/templates/spec/javascripts/support/jasmine_runner.rb
168
- - lib/generators/jasmine/jasmine_generator.rb
169
153
  - lib/generators/jasmine/templates/INSTALL
170
154
  - lib/generators/jasmine/templates/lib/tasks/jasmine.rake
171
155
  - lib/generators/jasmine/templates/spec/javascripts/support/jasmine-rails.yml
172
156
  - lib/generators/jasmine/templates/spec/javascripts/support/jasmine.yml
173
- - lib/generators/jasmine/templates/spec/javascripts/support/jasmine_config.rb
174
- - lib/generators/jasmine/templates/spec/javascripts/support/jasmine_runner.rb
175
157
  - lib/jasmine.rb
176
158
  - lib/jasmine/base.rb
177
159
  - lib/jasmine/command_line_tool.rb
@@ -183,10 +165,12 @@ files:
183
165
  - lib/jasmine/firebug/firebug.rb
184
166
  - lib/jasmine/railtie.rb
185
167
  - lib/jasmine/run.html.erb
168
+ - lib/jasmine/runner.rb
186
169
  - lib/jasmine/selenium_driver.rb
187
170
  - lib/jasmine/server.rb
188
171
  - lib/jasmine/spec_builder.rb
189
172
  - lib/jasmine/tasks/jasmine.rake
173
+ - lib/jasmine/tasks/jasmine_rails3.rake
190
174
  - lib/jasmine/version.rb
191
175
  - spec/config_spec.rb
192
176
  - spec/dependencies_spec.rb
@@ -203,7 +187,6 @@ files:
203
187
  - spec/jasmine_self_test_spec.rb
204
188
  - spec/server_spec.rb
205
189
  - spec/spec_helper.rb
206
- has_rdoc: true
207
190
  homepage: http://pivotal.github.com/jasmine
208
191
  licenses: []
209
192
  post_install_message:
@@ -219,19 +202,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
219
202
  version: '0'
220
203
  segments:
221
204
  - 0
222
- hash: -2801835989228056808
205
+ hash: 4256175879128965687
223
206
  required_rubygems_version: !ruby/object:Gem::Requirement
224
207
  none: false
225
208
  requirements:
226
- - - ! '>='
209
+ - - ! '>'
227
210
  - !ruby/object:Gem::Version
228
- version: '0'
229
- segments:
230
- - 0
231
- hash: -2801835989228056808
211
+ version: 1.3.1
232
212
  requirements: []
233
213
  rubyforge_project:
234
- rubygems_version: 1.6.2
214
+ rubygems_version: 1.8.10
235
215
  signing_key:
236
216
  specification_version: 3
237
217
  summary: JavaScript BDD framework
@@ -1,23 +0,0 @@
1
- module Jasmine
2
- class Config
3
-
4
- # Add your overrides or custom config code here
5
-
6
- end
7
- end
8
-
9
-
10
- # Note - this is necessary for rspec2, which has removed the backtrace
11
- module Jasmine
12
- class SpecBuilder
13
- def declare_spec(parent, spec)
14
- me = self
15
- example_name = spec["name"]
16
- @spec_ids << spec["id"]
17
- backtrace = @example_locations[parent.description + " " + example_name]
18
- parent.it example_name, {} do
19
- me.report_spec(spec["id"])
20
- end
21
- end
22
- end
23
- end
@@ -1,32 +0,0 @@
1
- $:.unshift(ENV['JASMINE_GEM_PATH']) if ENV['JASMINE_GEM_PATH'] # for gem testing purposes
2
-
3
- require 'rubygems'
4
- require 'jasmine'
5
- jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config.rb'))
6
- require jasmine_config_overrides if File.exist?(jasmine_config_overrides)
7
- if Jasmine::Dependencies.rspec2?
8
- require 'rspec'
9
- else
10
- require 'spec'
11
- end
12
-
13
- jasmine_config = Jasmine::Config.new
14
- spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
15
-
16
- should_stop = false
17
-
18
- if Jasmine::Dependencies.rspec2?
19
- RSpec.configuration.after(:suite) do
20
- spec_builder.stop if should_stop
21
- end
22
- else
23
- Spec::Runner.configure do |config|
24
- config.after(:suite) do
25
- spec_builder.stop if should_stop
26
- end
27
- end
28
- end
29
-
30
- spec_builder.start
31
- should_stop = true
32
- spec_builder.declare_suites
@@ -1,23 +0,0 @@
1
- module Jasmine
2
- class Config
3
-
4
- # Add your overrides or custom config code here
5
-
6
- end
7
- end
8
-
9
-
10
- # Note - this is necessary for rspec2, which has removed the backtrace
11
- module Jasmine
12
- class SpecBuilder
13
- def declare_spec(parent, spec)
14
- me = self
15
- example_name = spec["name"]
16
- @spec_ids << spec["id"]
17
- backtrace = @example_locations[parent.description + " " + example_name]
18
- parent.it example_name, {} do
19
- me.report_spec(spec["id"])
20
- end
21
- end
22
- end
23
- end
@@ -1,20 +0,0 @@
1
- $:.unshift(ENV['JASMINE_GEM_PATH']) if ENV['JASMINE_GEM_PATH'] # for gem testing purposes
2
-
3
- require 'rubygems'
4
- require 'jasmine'
5
- require 'rspec'
6
- jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config.rb'))
7
- require jasmine_config_overrides if File.exists?(jasmine_config_overrides)
8
-
9
- jasmine_config = Jasmine::Config.new
10
- spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
11
-
12
- should_stop = false
13
-
14
- RSpec.configuration.after(:suite) do
15
- spec_builder.stop if should_stop
16
- end
17
-
18
- spec_builder.start
19
- should_stop = true
20
- spec_builder.declare_suites
@@ -1,32 +0,0 @@
1
- class JasmineGenerator < Rails::Generator::Base
2
- def manifest
3
- m = ::Rails::Generator::Manifest.new
4
-
5
- m.directory "public/javascripts"
6
- m.file "jasmine-example/src/Player.js", "public/javascripts/Player.js"
7
- m.file "jasmine-example/src/Song.js", "public/javascripts/Song.js"
8
-
9
- m.directory "spec/javascripts"
10
- m.file "jasmine-example/spec/PlayerSpec.js", "spec/javascripts/PlayerSpec.js"
11
-
12
- m.directory "spec/javascripts/helpers"
13
- m.file "jasmine-example/spec/SpecHelper.js", "spec/javascripts/helpers/SpecHelper.js"
14
-
15
- m.directory "spec/javascripts/support"
16
- m.file "spec/javascripts/support/jasmine_runner.rb", "spec/javascripts/support/jasmine_runner.rb"
17
- m.file "spec/javascripts/support/jasmine_config.rb", "spec/javascripts/support/jasmine_config.rb"
18
- m.file "spec/javascripts/support/jasmine-rails.yml", "spec/javascripts/support/jasmine.yml"
19
- m.readme "INSTALL"
20
-
21
- unless ::Rails::VERSION::STRING[0,1] == "3"
22
- m.directory "lib/tasks"
23
- m.file "lib/tasks/jasmine.rake", "lib/tasks/jasmine.rake"
24
- end
25
- m
26
- end
27
-
28
- def file_name
29
- "create_blog"
30
- end
31
-
32
- end
@@ -1,23 +0,0 @@
1
- module Jasmine
2
- class Config
3
-
4
- # Add your overrides or custom config code here
5
-
6
- end
7
- end
8
-
9
-
10
- # Note - this is necessary for rspec2, which has removed the backtrace
11
- module Jasmine
12
- class SpecBuilder
13
- def declare_spec(parent, spec)
14
- me = self
15
- example_name = spec["name"]
16
- @spec_ids << spec["id"]
17
- backtrace = @example_locations[parent.description + " " + example_name]
18
- parent.it example_name, {} do
19
- me.report_spec(spec["id"])
20
- end
21
- end
22
- end
23
- end