Merge branch 'coffeescript'
This commit is contained in:
commit
086086cd3e
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
||||
[submodule "jasmine"]
|
||||
path = jasmine
|
||||
url = https://github.com/pivotal/jasmine.git
|
16
README.md
16
README.md
@ -42,6 +42,22 @@ Current supported options:
|
||||
|
||||
These options can also be placed into a `.jasmine-headless-webkit` file in your project root.
|
||||
|
||||
### CoffeeScript Support
|
||||
|
||||
`jasmine-headless-webkit` brings in the `coffee-script` gem and compiles & injects all CoffeeScript into the
|
||||
generated HTML page. All you need to do is configure your `jasmine.yml` file to look for .coffee files:
|
||||
|
||||
src_files:
|
||||
- app/assets/javascripts/**/*.coffee
|
||||
spec_files:
|
||||
- **/*[sS]pec.coffee
|
||||
|
||||
*(This will probably make it difficult to test your code in an official Jasmine server for now. You can try
|
||||
[a technique like this](https://github.com/jbaudanza/rack-asset-compiler/blob/master/examples/jasmine_config.rb) for compiling CoffeeScript when it's requested from the server
|
||||
or use [this fork of jasmine-gem](https://github.com/johnbintz/jasmine-gem/tree/coffeescript-inline-support) which
|
||||
is thoroughly untested.)*
|
||||
|
||||
|
||||
### JavaScript Dialogs
|
||||
|
||||
You can call `alert()` and `confirm()` in your code. `alert()` will print the message to the console, and
|
||||
|
@ -1,9 +1,23 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
gem_dir = File.expand_path('../..', __FILE__)
|
||||
$:.unshift(File.join(gem_dir, 'lib'))
|
||||
|
||||
require 'yaml'
|
||||
require 'fileutils'
|
||||
require 'getoptlong'
|
||||
|
||||
require 'rubygems'
|
||||
|
||||
gem 'jasmine'
|
||||
gem 'coffee-script'
|
||||
|
||||
require 'jasmine'
|
||||
require 'coffee-script'
|
||||
|
||||
require 'jasmine/cli'
|
||||
include Jasmine::CLI
|
||||
|
||||
opts = GetoptLong.new(
|
||||
[ '--colors', '-c', GetoptLong::NO_ARGUMENT ],
|
||||
[ '--no-colors', GetoptLong::NO_ARGUMENT ]
|
||||
@ -28,7 +42,6 @@ end
|
||||
opts.each(&process_options)
|
||||
|
||||
data = YAML.load_file(ARGV.shift || 'spec/javascripts/support/jasmine.yml')
|
||||
gem_dir = File.expand_path('../..', __FILE__)
|
||||
|
||||
if !File.file?(File.join(gem_dir, 'ext/jasmine-webkit-specrunner/jasmine-webkit-specrunner'))
|
||||
puts "The Qt WebKit widget is not compiled! Try re-installing this gem."
|
||||
@ -38,17 +51,10 @@ end
|
||||
puts "Running Jasmine specs..."
|
||||
|
||||
files = [
|
||||
'file://' + File.join(gem_dir, 'jasmine/lib/jasmine.js'),
|
||||
'file://' + File.join(gem_dir, 'jasmine/lib/jasmine-html.js'),
|
||||
'file://' + File.join(gem_dir, 'jasmine/lib/jasmine.css')
|
||||
'file://' + File.join(Jasmine.root, 'lib/jasmine.js'),
|
||||
'file://' + File.join(Jasmine.root, 'lib/jasmine-html.js')
|
||||
]
|
||||
|
||||
DEFAULTS = {
|
||||
'spec_files' => [ '**/*[sS]pec.js' ],
|
||||
'helpers' => [ 'helpers/**/*.js' ],
|
||||
'spec_dir' => 'spec/javascripts'
|
||||
}
|
||||
|
||||
files += [ [ 'src_files', 'src_dir' ], [ 'stylesheets', 'src_dir' ], [ 'helpers', 'spec_dir' ], [ 'spec_files', 'spec_dir' ] ].collect do |searches, root|
|
||||
data[searches] ||= DEFAULTS[searches]
|
||||
data[root] ||= DEFAULTS[root]
|
||||
@ -66,6 +72,8 @@ files = files.flatten.compact.collect { |file|
|
||||
case File.extname(file)
|
||||
when '.js'
|
||||
%{<script type="text/javascript" src="#{file}"></script>}
|
||||
when '.coffee'
|
||||
%{<script type="text/javascript">#{CoffeeScript.compile File.read(file)}</script>}
|
||||
when '.css'
|
||||
%{<link rel="stylesheet" href="#{file}" type="text/css" />}
|
||||
end
|
||||
|
1
jasmine
1
jasmine
@ -1 +0,0 @@
|
||||
Subproject commit e826fbb17088f9e31a570ac4e09a738592af7b30
|
@ -21,4 +21,5 @@ Gem::Specification.new do |s|
|
||||
s.require_paths = ["lib"]
|
||||
|
||||
s.add_dependency 'jasmine'
|
||||
s.add_dependency 'coffee-script'
|
||||
end
|
||||
|
@ -1,17 +1,18 @@
|
||||
module JasmineMixin
|
||||
JASMINE_PROGRAM = File.expand_path('../../../bin/jasmine-headless-webkit', __FILE__)
|
||||
|
||||
JAVASCRIPT_EXTENSIONS = %w{js}
|
||||
JAVASCRIPT_EXTENSIONS = %w{js coffee}
|
||||
|
||||
def self.included(klass)
|
||||
klass::ALL_HOOKS << [ :run_jasmine, :ran_jasmine ]
|
||||
end
|
||||
|
||||
attr_accessor :is_jasmine_running, :jasmine_to_run
|
||||
attr_accessor :is_jasmine_running, :jasmine_to_run, :jasmine_ran_once
|
||||
|
||||
def initialize
|
||||
super()
|
||||
setup_jasmine_project_mappings
|
||||
jasmine_ran_once = false
|
||||
end
|
||||
|
||||
def get_to_green
|
||||
@ -20,6 +21,7 @@ module JasmineMixin
|
||||
super if find_files_to_test
|
||||
|
||||
reset_jasmine(:yes)
|
||||
self.last_mtime = Time.at(0) if !options[:no_full_after_start] && !jasmine_ran_once
|
||||
run_jasmine if find_files_to_test
|
||||
|
||||
self.is_jasmine_running = :all
|
||||
@ -29,6 +31,16 @@ module JasmineMixin
|
||||
reset_jasmine(:all)
|
||||
end
|
||||
|
||||
def rerun_all_tests
|
||||
reset_jasmine(:no)
|
||||
super
|
||||
|
||||
reset_jasmine(:yes)
|
||||
run_jasmine
|
||||
|
||||
reset_jasmine(:all)
|
||||
end
|
||||
|
||||
def reset_jasmine(method)
|
||||
self.files_to_test = new_hash_of_arrays
|
||||
self.is_jasmine_running = method
|
||||
@ -50,6 +62,8 @@ module JasmineMixin
|
||||
end
|
||||
|
||||
hook :ran_jasmine
|
||||
|
||||
jasmine_ran_once = true
|
||||
end
|
||||
|
||||
def all_jasmine_good
|
||||
@ -77,12 +91,16 @@ module JasmineMixin
|
||||
end
|
||||
|
||||
def setup_jasmine_project_mappings
|
||||
add_mapping(%r{spec/javascripts/.*_spec\.js}) { |filename, _|
|
||||
add_mapping(%r{spec/javascripts/.*_spec\.(js|coffee)}) { |filename, _|
|
||||
filename
|
||||
}
|
||||
|
||||
add_mapping(%r{public/javascripts/(.*)\.js}) { |_, m|
|
||||
[ "spec/javascripts/#{m[1]}_spec.js" ]
|
||||
files_matching(%r{spec/javascripts/#{m[1]}_spec\..*$})
|
||||
}
|
||||
|
||||
add_mapping(%r{app/coffeescripts/(.*)\.coffee}) { |_, m|
|
||||
files_matching(%r{spec/javascripts/#{m[1]}_spec\..*$})
|
||||
}
|
||||
end
|
||||
|
||||
|
17
lib/jasmine/cli.rb
Normal file
17
lib/jasmine/cli.rb
Normal file
@ -0,0 +1,17 @@
|
||||
module Jasmine
|
||||
module CLI
|
||||
DEFAULTS = {
|
||||
'spec_files' => [ '**/*[sS]pec.js' ],
|
||||
'helpers' => [ 'helpers/**/*.js' ],
|
||||
'spec_dir' => 'spec/javascripts',
|
||||
'src_dir' => nil,
|
||||
'stylesheets' => [],
|
||||
'src_files' => []
|
||||
}
|
||||
|
||||
def process_jasmine_config(overrides = {})
|
||||
DEFAULTS.merge(overrides)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
44
spec/lib/jasmine/cli_spec.rb
Normal file
44
spec/lib/jasmine/cli_spec.rb
Normal file
@ -0,0 +1,44 @@
|
||||
require 'spec_helper'
|
||||
require 'jasmine/cli'
|
||||
|
||||
describe Jasmine::CLI do
|
||||
include Jasmine::CLI
|
||||
|
||||
describe '#process_jasmine_config' do
|
||||
context 'without overrides' do
|
||||
let(:config) { {} }
|
||||
|
||||
it "should just return the defaults" do
|
||||
process_jasmine_config(config).should == {
|
||||
'src_files' => [],
|
||||
'stylesheets' => [],
|
||||
'helpers' => [ 'helpers/**/*.js' ],
|
||||
'spec_files' => [ '**/*[sS]pec.js' ],
|
||||
'src_dir' => nil,
|
||||
'spec_dir' => 'spec/javascripts'
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
context 'with overrides' do
|
||||
let(:config) {
|
||||
{
|
||||
'src_files' => [ 'one', 'two' ],
|
||||
'src_dir' => 'this-dir',
|
||||
'stylesheets' => [ 'three', 'four' ],
|
||||
'helpers' => [ 'five', 'six' ],
|
||||
'spec_files' => [ 'seven', 'eight' ],
|
||||
'spec_dir' => 'that-dir'
|
||||
}
|
||||
}
|
||||
|
||||
it "should return the merged data" do
|
||||
process_jasmine_config(config).should == config
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#get_files' do
|
||||
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user