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.
|
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
|
### JavaScript Dialogs
|
||||||
|
|
||||||
You can call `alert()` and `confirm()` in your code. `alert()` will print the message to the console, and
|
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
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
gem_dir = File.expand_path('../..', __FILE__)
|
||||||
|
$:.unshift(File.join(gem_dir, 'lib'))
|
||||||
|
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
require 'fileutils'
|
require 'fileutils'
|
||||||
require 'getoptlong'
|
require 'getoptlong'
|
||||||
|
|
||||||
|
require 'rubygems'
|
||||||
|
|
||||||
|
gem 'jasmine'
|
||||||
|
gem 'coffee-script'
|
||||||
|
|
||||||
|
require 'jasmine'
|
||||||
|
require 'coffee-script'
|
||||||
|
|
||||||
|
require 'jasmine/cli'
|
||||||
|
include Jasmine::CLI
|
||||||
|
|
||||||
opts = GetoptLong.new(
|
opts = GetoptLong.new(
|
||||||
[ '--colors', '-c', GetoptLong::NO_ARGUMENT ],
|
[ '--colors', '-c', GetoptLong::NO_ARGUMENT ],
|
||||||
[ '--no-colors', GetoptLong::NO_ARGUMENT ]
|
[ '--no-colors', GetoptLong::NO_ARGUMENT ]
|
||||||
@ -28,7 +42,6 @@ end
|
|||||||
opts.each(&process_options)
|
opts.each(&process_options)
|
||||||
|
|
||||||
data = YAML.load_file(ARGV.shift || 'spec/javascripts/support/jasmine.yml')
|
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'))
|
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."
|
puts "The Qt WebKit widget is not compiled! Try re-installing this gem."
|
||||||
@ -38,17 +51,10 @@ end
|
|||||||
puts "Running Jasmine specs..."
|
puts "Running Jasmine specs..."
|
||||||
|
|
||||||
files = [
|
files = [
|
||||||
'file://' + File.join(gem_dir, 'jasmine/lib/jasmine.js'),
|
'file://' + File.join(Jasmine.root, 'lib/jasmine.js'),
|
||||||
'file://' + File.join(gem_dir, 'jasmine/lib/jasmine-html.js'),
|
'file://' + File.join(Jasmine.root, 'lib/jasmine-html.js')
|
||||||
'file://' + File.join(gem_dir, 'jasmine/lib/jasmine.css')
|
|
||||||
]
|
]
|
||||||
|
|
||||||
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|
|
files += [ [ 'src_files', 'src_dir' ], [ 'stylesheets', 'src_dir' ], [ 'helpers', 'spec_dir' ], [ 'spec_files', 'spec_dir' ] ].collect do |searches, root|
|
||||||
data[searches] ||= DEFAULTS[searches]
|
data[searches] ||= DEFAULTS[searches]
|
||||||
data[root] ||= DEFAULTS[root]
|
data[root] ||= DEFAULTS[root]
|
||||||
@ -66,6 +72,8 @@ files = files.flatten.compact.collect { |file|
|
|||||||
case File.extname(file)
|
case File.extname(file)
|
||||||
when '.js'
|
when '.js'
|
||||||
%{<script type="text/javascript" src="#{file}"></script>}
|
%{<script type="text/javascript" src="#{file}"></script>}
|
||||||
|
when '.coffee'
|
||||||
|
%{<script type="text/javascript">#{CoffeeScript.compile File.read(file)}</script>}
|
||||||
when '.css'
|
when '.css'
|
||||||
%{<link rel="stylesheet" href="#{file}" type="text/css" />}
|
%{<link rel="stylesheet" href="#{file}" type="text/css" />}
|
||||||
end
|
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.require_paths = ["lib"]
|
||||||
|
|
||||||
s.add_dependency 'jasmine'
|
s.add_dependency 'jasmine'
|
||||||
|
s.add_dependency 'coffee-script'
|
||||||
end
|
end
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
module JasmineMixin
|
module JasmineMixin
|
||||||
JASMINE_PROGRAM = File.expand_path('../../../bin/jasmine-headless-webkit', __FILE__)
|
JASMINE_PROGRAM = File.expand_path('../../../bin/jasmine-headless-webkit', __FILE__)
|
||||||
|
|
||||||
JAVASCRIPT_EXTENSIONS = %w{js}
|
JAVASCRIPT_EXTENSIONS = %w{js coffee}
|
||||||
|
|
||||||
def self.included(klass)
|
def self.included(klass)
|
||||||
klass::ALL_HOOKS << [ :run_jasmine, :ran_jasmine ]
|
klass::ALL_HOOKS << [ :run_jasmine, :ran_jasmine ]
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_accessor :is_jasmine_running, :jasmine_to_run
|
attr_accessor :is_jasmine_running, :jasmine_to_run, :jasmine_ran_once
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
super()
|
super()
|
||||||
setup_jasmine_project_mappings
|
setup_jasmine_project_mappings
|
||||||
|
jasmine_ran_once = false
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_to_green
|
def get_to_green
|
||||||
@ -20,6 +21,7 @@ module JasmineMixin
|
|||||||
super if find_files_to_test
|
super if find_files_to_test
|
||||||
|
|
||||||
reset_jasmine(:yes)
|
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
|
run_jasmine if find_files_to_test
|
||||||
|
|
||||||
self.is_jasmine_running = :all
|
self.is_jasmine_running = :all
|
||||||
@ -29,6 +31,16 @@ module JasmineMixin
|
|||||||
reset_jasmine(:all)
|
reset_jasmine(:all)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def rerun_all_tests
|
||||||
|
reset_jasmine(:no)
|
||||||
|
super
|
||||||
|
|
||||||
|
reset_jasmine(:yes)
|
||||||
|
run_jasmine
|
||||||
|
|
||||||
|
reset_jasmine(:all)
|
||||||
|
end
|
||||||
|
|
||||||
def reset_jasmine(method)
|
def reset_jasmine(method)
|
||||||
self.files_to_test = new_hash_of_arrays
|
self.files_to_test = new_hash_of_arrays
|
||||||
self.is_jasmine_running = method
|
self.is_jasmine_running = method
|
||||||
@ -50,6 +62,8 @@ module JasmineMixin
|
|||||||
end
|
end
|
||||||
|
|
||||||
hook :ran_jasmine
|
hook :ran_jasmine
|
||||||
|
|
||||||
|
jasmine_ran_once = true
|
||||||
end
|
end
|
||||||
|
|
||||||
def all_jasmine_good
|
def all_jasmine_good
|
||||||
@ -77,12 +91,16 @@ module JasmineMixin
|
|||||||
end
|
end
|
||||||
|
|
||||||
def setup_jasmine_project_mappings
|
def setup_jasmine_project_mappings
|
||||||
add_mapping(%r{spec/javascripts/.*_spec\.js}) { |filename, _|
|
add_mapping(%r{spec/javascripts/.*_spec\.(js|coffee)}) { |filename, _|
|
||||||
filename
|
filename
|
||||||
}
|
}
|
||||||
|
|
||||||
add_mapping(%r{public/javascripts/(.*)\.js}) { |_, m|
|
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
|
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