Skip to content

Commit

Permalink
Add helpers option to jasmine.yml, config. Do not automatically creat…
Browse files Browse the repository at this point in the history
…e a jasmine_config.rb file in javascripts/support
  • Loading branch information
ragaskar committed Mar 20, 2010
1 parent 285143e commit 0b09f6d
Show file tree
Hide file tree
Showing 12 changed files with 112 additions and 146 deletions.
4 changes: 2 additions & 2 deletions bin/jasmine
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ if ARGV[0] == 'init'
require 'ftools'
File.makedirs('spec/javascripts')
File.makedirs('spec/javascripts/support')
File.makedirs('spec/javascripts/helpers')

copy_unless_exists('spec/javascripts/SpecHelper.js')
copy_unless_exists('spec/javascripts/helpers/SpecHelper.js')
copy_unless_exists('spec/javascripts/ExampleSpec.js')
copy_unless_exists('spec/javascripts/support/jasmine_config.rb')
copy_unless_exists('spec/javascripts/support/jasmine_runner.rb')

rails_tasks_dir = dest_path('lib/tasks')
Expand Down
5 changes: 3 additions & 2 deletions generators/jasmine/jasmine_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ def manifest
record do |m|

m.directory "spec/javascripts"
m.file "spec/javascripts/SpecHelper.js", "spec/javascripts/SpecHelper.js"
m.file "spec/javascripts/ExampleSpec.js", "spec/javascripts/ExampleSpec.js"

m.directory "spec/javascripts/helpers"
m.file "spec/javascripts/helpers/SpecHelper.js", "spec/javascripts/helpers/SpecHelper.js"

m.directory "spec/javascripts/support"
m.file "spec/javascripts/support/jasmine_config.rb", "spec/javascripts/support/jasmine_config.rb"
m.file "spec/javascripts/support/jasmine_runner.rb", "spec/javascripts/support/jasmine_runner.rb"
m.file "spec/javascripts/support/jasmine-rails.yml", "spec/javascripts/support/jasmine.yml"

Expand Down
3 changes: 2 additions & 1 deletion generators/jasmine/templates/lib/tasks/jasmine.rake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ namespace :jasmine do
t.spec_files = ['spec/javascripts/support/jasmine_runner.rb']
end
task :server do
require 'spec/javascripts/support/jasmine_config'
jasmine_config_overrides = 'spec/javascripts/support/jasmine_config'
require jasmine_config_overrides if File.exists?(jasmine_config_overrides)

puts "your tests are here:"
puts " http://localhost:8888/run.html"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
# Return an array of filepaths relative to src_dir to include before jasmine specs.
src_files:
- javascripts/prototype.js
- javascripts/effects.js
- javascripts/controls.js
- javascripts/dragdrop.js
- javascripts/application.js
- public/javascripts/prototype.js
- public/javascripts/effects.js
- public/javascripts/controls.js
- public/javascripts/dragdrop.js
- public/javascripts/application.js

# Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
stylesheets:
- stylesheets/**/*.css

# Return an array of filepaths relative to spec_dir to include before jasmine specs.
helpers:
- helpers/**/*.js

# Return an array of filepaths relative to spec_dir to include
spec_files:
- **/*.js
- **/*[sS]pec.js

# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
src_dir: public
src_dir:

# Spec directory path. Your spec_files must be returned relative to this path.
spec_dir: spec/javascripts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@
# - stylesheets/*.css

# Return an array of filepaths relative to spec_dir to include before jasmine specs.
#helpers:
# - helpers/**/*.js

# Return an array of filepaths relative to spec_dir to include.
#spec_files:
# - **/*.js
# - **/*[sS]pec.js

# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
#src_dir:
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
require 'rubygems'
require File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config'))
require 'jasmine'
jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config'))
require jasmine_config_overrides if File.exists?(jasmine_config_overrides)

jasmine_config = Jasmine::Config.new
spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
Expand Down
5 changes: 2 additions & 3 deletions jasmine.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Gem::Specification.new do |s|

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Rajan Agaskar", "Christian Williams"]
s.date = %q{2010-03-19}
s.date = %q{2010-03-20}
s.default_executable = %q{jasmine}
s.description = %q{Javascript BDD test framework}
s.email = %q{ragaskar@gmail.com}
Expand All @@ -22,10 +22,9 @@ Gem::Specification.new do |s|
"generators/jasmine/templates/INSTALL",
"generators/jasmine/templates/lib/tasks/jasmine.rake",
"generators/jasmine/templates/spec/javascripts/ExampleSpec.js",
"generators/jasmine/templates/spec/javascripts/SpecHelper.js",
"generators/jasmine/templates/spec/javascripts/helpers/SpecHelper.js",
"generators/jasmine/templates/spec/javascripts/support/jasmine-rails.yml",
"generators/jasmine/templates/spec/javascripts/support/jasmine.yml",
"generators/jasmine/templates/spec/javascripts/support/jasmine_config.rb",
"generators/jasmine/templates/spec/javascripts/support/jasmine_runner.rb",
"jasmine/contrib/ruby/jasmine_runner.rb",
"jasmine/contrib/ruby/jasmine_spec_builder.rb",
Expand Down
19 changes: 12 additions & 7 deletions lib/jasmine/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,9 @@ def mappings
}
end

def js_files
src_files.collect {|f| "/" + f } + spec_files.collect {|f| File.join(spec_path, f) }
end

def focused_files(spec_filter)
src_files.collect {|f| "/" + f } + match_files(spec_dir, spec_filter).collect {|f| File.join(spec_path, f) }
def js_files(spec_filter = nil)
spec_files_to_include = spec_filter.nil? ? spec_files : match_files(spec_dir, spec_filter)
src_files.collect {|f| "/" + f } + helpers.collect {|f| File.join(spec_path, f) } + spec_files_to_include.collect {|f| File.join(spec_path, f) }
end

def css_files
Expand Down Expand Up @@ -149,6 +146,14 @@ def spec_dir
end
end

def helpers
files = match_files(spec_dir, "helpers/**/*.js")
if simple_config['helpers']
files = match_files(spec_dir, simple_config['helpers'])
end
files
end

def src_files
files = []
if simple_config['src_files']
Expand All @@ -158,7 +163,7 @@ def src_files
end

def spec_files
files = match_files(spec_dir, "**/*.js")
files = match_files(spec_dir, "**/*[sS]pec.js")
if simple_config['spec_files']
files = match_files(spec_dir, simple_config['spec_files'])
end
Expand Down
2 changes: 1 addition & 1 deletion lib/jasmine/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def not_found
def run(focused_suite = nil)
jasmine_files = @jasmine_files
css_files = @jasmine_stylesheets + (@config.css_files || [])
js_files = focused_suite.nil? ? @config.js_files : @config.focused_files(focused_suite)
js_files = @config.js_files(focused_suite)
body = ERB.new(File.read(File.join(File.dirname(__FILE__), "run.html.erb"))).result(binding)
[
200,
Expand Down
130 changes: 70 additions & 60 deletions spec/config_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,46 +35,59 @@

describe "simple_config" do
before(:each) do
@config.stub!(:src_dir).and_return(File.join(@template_dir, "public"))
@config.stub!(:spec_dir).and_return(File.join(@template_dir, "spec"))
@config.stub!(:src_dir).and_return(File.join(@template_dir))
@config.stub!(:spec_dir).and_return(File.join(@template_dir, "spec/javascripts"))
end

it "if sources.yaml not found" do
File.stub!(:exist?).and_return(false)
@config.src_files.should == []
@config.stylesheets.should == []
@config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
@config.focused_files("javascripts/ExampleSpec.js").should == ['/__spec__/javascripts/ExampleSpec.js']
@config.mappings.should == {
'/__root__' => @config.project_root,
'/__spec__' => @config.spec_dir
}
shared_examples_for "simple_config defaults" do
it "should return the correct files and mappings" do
@config.src_files.should == []
@config.stylesheets.should == []
@config.spec_files.should == ['ExampleSpec.js']
@config.helpers.should == ['helpers/SpecHelper.js']
@config.js_files.should == [
'/__spec__/helpers/SpecHelper.js',
'/__spec__/ExampleSpec.js',
]
@config.js_files("ExampleSpec.js").should ==
['/__spec__/helpers/SpecHelper.js',
'/__spec__/ExampleSpec.js']
@config.mappings.should == {
'/__root__' => @config.project_root,
'/__spec__' => @config.spec_dir
}
@config.spec_files_full_paths.should == [
File.join(@template_dir, 'spec/javascripts/ExampleSpec.js'),
]
end
end

it "if jasmine.yml is empty" do
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
YAML.stub!(:load).and_return(false)
@config.src_files.should == []
@config.stylesheets.should == []
@config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
@config.focused_files("javascripts/ExampleSpec.js").should == ['/__spec__/javascripts/ExampleSpec.js']
@config.mappings.should == {
'/__root__' => @config.project_root,
'/__spec__' => @config.spec_dir
}

describe "if sources.yaml not found" do
before(:each) do
File.stub!(:exist?).and_return(false)
end
it_should_behave_like "simple_config defaults"
end

it "using default jasmine.yml" do
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
@config.src_files.should == []
@config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
@config.focused_files("javascripts/ExampleSpec.js").should == ['/__spec__/javascripts/ExampleSpec.js']
@config.mappings.should == {
'/__root__' => @config.project_root,
'/__spec__' => @config.spec_dir
}
describe "if jasmine.yml is empty" do
before(:each) do
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
YAML.stub!(:load).and_return(false)
end
it_should_behave_like "simple_config defaults"

end

describe "using default jasmine.yml" do
before(:each) do
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
end
it_should_behave_like "simple_config defaults"

end


it "simple_config stylesheets" do
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
YAML.stub!(:load).and_return({'stylesheets' => ['foo.css', 'bar.css']})
Expand All @@ -84,7 +97,9 @@
@config.stylesheets.should == ['foo.css', 'bar.css']
end


it "using rails jasmine.yml" do

original_glob = Dir.method(:glob)
Dir.stub!(:glob).and_return do |glob_string|
if glob_string =~ /public/
Expand All @@ -94,39 +109,34 @@
end
end
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine-rails.yml'))
@config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
@config.src_files.should == ['javascripts/prototype.js',
'javascripts/effects.js',
'javascripts/controls.js',
'javascripts/dragdrop.js',
'javascripts/application.js']
@config.spec_files.should == ['ExampleSpec.js']
@config.helpers.should == ['helpers/SpecHelper.js']
@config.src_files.should == ['public/javascripts/prototype.js',
'public/javascripts/effects.js',
'public/javascripts/controls.js',
'public/javascripts/dragdrop.js',
'public/javascripts/application.js']
@config.js_files.should == [
'/javascripts/prototype.js',
'/javascripts/effects.js',
'/javascripts/controls.js',
'/javascripts/dragdrop.js',
'/javascripts/application.js',
'/__spec__/javascripts/ExampleSpec.js',
'/__spec__/javascripts/SpecHelper.js',
'/public/javascripts/prototype.js',
'/public/javascripts/effects.js',
'/public/javascripts/controls.js',
'/public/javascripts/dragdrop.js',
'/public/javascripts/application.js',
'/__spec__/helpers/SpecHelper.js',
'/__spec__/ExampleSpec.js',
]
@config.focused_files("javascripts/ExampleSpec.js").should == [
'/javascripts/prototype.js',
'/javascripts/effects.js',
'/javascripts/controls.js',
'/javascripts/dragdrop.js',
'/javascripts/application.js',
'/__spec__/javascripts/ExampleSpec.js'
@config.js_files("ExampleSpec.js").should == [
'/public/javascripts/prototype.js',
'/public/javascripts/effects.js',
'/public/javascripts/controls.js',
'/public/javascripts/dragdrop.js',
'/public/javascripts/application.js',
'/__spec__/helpers/SpecHelper.js',
'/__spec__/ExampleSpec.js'
]

end

it "should provide a list of all spec files with full paths" do
@config.spec_files_full_paths.should == [
File.join(@template_dir, 'spec/javascripts/ExampleSpec.js'),
File.join(@template_dir, 'spec/javascripts/SpecHelper.js')
]
end

end

end
Expand Down Expand Up @@ -154,7 +164,7 @@
end

describe "#start_selenium_server" do
it "should use an existing selenium server if SELENIUM_SERVER_PORT is set" do
it "should use an existing selenium server if SELENIUM_SERVER_PORT is set" do
config = Jasmine::Config.new
ENV.stub!(:[], "SELENIUM_SERVER_PORT").and_return(1234)
Jasmine.should_receive(:wait_for_listener).with(1234, "selenium server")
Expand Down

0 comments on commit 0b09f6d

Please sign in to comment.