working on stuff, broken

This commit is contained in:
John Bintz 2011-11-16 15:28:02 -05:00
parent 91d9773933
commit 4150dd1828
18 changed files with 126 additions and 13 deletions

View File

@ -15,3 +15,5 @@ gem 'mocha', '0.9.12'
gem 'guard-jasmine-headless-webkit', :git => 'git://github.com/johnbintz/guard-jasmine-headless-webkit.git' gem 'guard-jasmine-headless-webkit', :git => 'git://github.com/johnbintz/guard-jasmine-headless-webkit.git'
gem 'facter' gem 'facter'
gem 'jquery-rails'

View File

@ -1,21 +1,23 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
require 'rubygems' require 'rubygems'
require 'rainbow'
def gem_dir def gem_dir
File.expand_path('../..', __FILE__) File.expand_path('../..', __FILE__)
end end
$:.unshift(File.join(gem_dir, 'lib')) $:.unshift(File.join(gem_dir, 'lib'))
require 'jasmine-headless-webkit' require 'jasmine-headless-webkit'
require 'coffee-script'
require 'rainbow'
begin begin
options = Jasmine::Headless::Options.from_command_line options = Jasmine::Headless::Options.from_command_line
runner = Jasmine::Headless::Runner.new(options) runner = Jasmine::Headless::Runner.new(options)
if options[:do_list] if options[:do_list]
files_list = Jasmine::FilesList.new(:config => runner.jasmine_config) files_list = Jasmine::Headless::FilesList.new(:config => runner.jasmine_config)
files_list.files.each { |file| puts file } files_list.files.each { |file| puts file }
else else
exit runner.run exit runner.run

View File

@ -24,4 +24,5 @@ Gem::Specification.new do |s|
s.add_dependency 'coffee-script', '>= 2.2' s.add_dependency 'coffee-script', '>= 2.2'
s.add_dependency 'rainbow' s.add_dependency 'rainbow'
s.add_dependency 'multi_json' s.add_dependency 'multi_json'
s.add_dependency 'sprockets', '~> 2.0'
end end

View File

@ -1,7 +1,3 @@
module Jasmine
autoload :FilesList, 'jasmine/files_list'
end
require 'jasmine/headless' require 'jasmine/headless'
require 'jasmine/headless/railtie' if defined?(Rails) && Rails::VERSION::MAJOR >= 3 require 'jasmine/headless/railtie' if defined?(Rails) && Rails::VERSION::MAJOR >= 3

View File

@ -8,6 +8,8 @@ module Jasmine::Headless
autoload :Runner, 'jasmine/headless/runner' autoload :Runner, 'jasmine/headless/runner'
autoload :Options, 'jasmine/headless/options' autoload :Options, 'jasmine/headless/options'
autoload :Task, 'jasmine/headless/task' autoload :Task, 'jasmine/headless/task'
autoload :FilesList, 'jasmine/headless/files_list'
autoload :TestFile, 'jasmine/headless/test_file'
autoload :TemplateWriter, 'jasmine/headless/template_writer' autoload :TemplateWriter, 'jasmine/headless/template_writer'

View File

@ -2,7 +2,7 @@ require 'jasmine-core'
require 'time' require 'time'
require 'multi_json' require 'multi_json'
module Jasmine module Jasmine::Headless
class FilesList class FilesList
attr_reader :files, :spec_files, :filtered_files, :spec_outside_scope attr_reader :files, :spec_files, :filtered_files, :spec_outside_scope
@ -60,7 +60,7 @@ module Jasmine
def spec_file_line_numbers def spec_file_line_numbers
@spec_file_line_numbers ||= Hash[@spec_files.collect { |file| @spec_file_line_numbers ||= Hash[@spec_files.collect { |file|
if File.exist?(file) if ::File.exist?(file)
if !(lines = Jasmine::Headless::SpecFileAnalyzer.for(file)).empty? if !(lines = Jasmine::Headless::SpecFileAnalyzer.for(file)).empty?
[ file, lines ] [ file, lines ]
end end
@ -82,6 +82,8 @@ module Jasmine
source = nil source = nil
next file.to_html
result = case File.extname(file) result = case File.extname(file)
when '.coffee' when '.coffee'
begin begin
@ -162,6 +164,9 @@ module Jasmine
end end
end end
end end
@files.collect! { |file| Jasmine::Headless::TestFile.new(file) }
@filtered_files.collect! { |file| Jasmine::Headless::TestFile.new(file) }
end end
def config? def config?

View File

@ -66,7 +66,7 @@ module Jasmine
def run def run
Jasmine::Headless::CacheableAction.enabled = @options[:enable_cache] Jasmine::Headless::CacheableAction.enabled = @options[:enable_cache]
files_list = Jasmine::FilesList.new( files_list = Jasmine::Headless::FilesList.new(
:config => jasmine_config, :config => jasmine_config,
:only => @options[:files] :only => @options[:files]
) )

View File

@ -0,0 +1,9 @@
module Jasmine::Headless
class TestFile
attr_reader :path
def initialize(path)
@path = path
end
end
end

View File

@ -138,5 +138,21 @@ describe "jasmine-headless-webkit" do
File.size(runner_path.path).should_not == 0 File.size(runner_path.path).should_not == 0
end end
end end
describe 'sprockets' do
it 'should pull in the code via sprockets' do
files = %x{bin/jasmine-headless-webkit -l -j spec/jasmine/with_sprockets_includes/with_sprockets_includes.yml}
$?.exitstatus.should == 0
puts files
files.lines.to_a.should include('vendor/assets/javascripts/jquery.js')
files.lines.to_a.should include('assets/code.js')
files.lines.to_a.should include('assets/required.js')
files.lines.to_a.should include('assets/subcode/more_code.js')
files.lines.to_a.should include('spec/spec_helper.js')
files.lines.to_a.should include('spec/code_spec.js')
end
end
end end

View File

@ -0,0 +1,2 @@
//= require 'jquery'
//= require_tree '.'

View File

@ -0,0 +1,2 @@
window.a = '1';

View File

@ -0,0 +1,2 @@
//= require 'required'

View File

@ -0,0 +1,9 @@
//= require 'code'
describe('code', function() {
it('should equal 1', function() {
expect(window.a).toEqual(1)
expect(jQuery).not.toBeUndefined()
});
});

View File

@ -0,0 +1,2 @@
//= require 'jquery'

View File

@ -0,0 +1,12 @@
src_dir: spec/jasmine/with_sprockets_includes/assets
spec_dir: spec/jasmine/with_sprockets_includes/spec
spec_files:
- "*_spec.js"
src_files:
- "*.js"
helpers:
- "spec_helper.js"

View File

@ -1,11 +1,10 @@
# encoding: UTF-8 # encoding: UTF-8
require 'spec_helper' require 'spec_helper'
require 'jasmine/files_list'
require 'fakefs/spec_helpers' require 'fakefs/spec_helpers'
require 'coffee-script' require 'coffee-script'
describe Jasmine::FilesList do describe Jasmine::Headless::FilesList do
let(:files_list) { described_class.new } let(:files_list) { described_class.new }
describe '#initialize' do describe '#initialize' do
@ -47,7 +46,7 @@ describe Jasmine::FilesList do
shared_examples_for :reading_data do shared_examples_for :reading_data do
it 'should read the data from the jasmine.yml file and add the files' do it 'should read the data from the jasmine.yml file and add the files' do
files_list.files.should == Jasmine::FilesList::DEFAULT_FILES + [ files_list.files.should == Jasmine::Headless::FilesList::DEFAULT_FILES + [
File.expand_path(first_file), File.expand_path(first_file),
File.expand_path(src_file), File.expand_path(src_file),
File.expand_path(stylesheet_file), File.expand_path(stylesheet_file),
@ -114,7 +113,7 @@ describe Jasmine::FilesList do
end end
context 'with filtered specs' do context 'with filtered specs' do
let(:files_list) { Jasmine::FilesList.new(:only => filter, :config => config) } let(:files_list) { Jasmine::Headless::FilesList.new(:only => filter, :config => config) }
let(:spec_dir) { 'spec' } let(:spec_dir) { 'spec' }
include FakeFS::SpecHelpers include FakeFS::SpecHelpers

View File

@ -0,0 +1,52 @@
require 'spec_helper'
describe Jasmine::Headless::TestFile do
let(:file) { described_class.new(path) }
let(:path) { 'path' }
subject { file }
its(:path) { should == path }
describe '#to_html' do
subject { file.to_html }
context '.js' do
let(:path) { 'path.js' }
it { should == %{<script type="text/javascript" src="#{path}"></script>} }
end
context '.css' do
let(:path) { 'path.css' }
it { should == %{<script type="text/javascript" src="#{path}"></script>} }
end
context '.coffee' do
let(:path) { 'path.coffee' }
let(:handle_expectation) { Jasmine::Headless::CoffeeScriptCache.any_instance.stubs(:handle) }
context 'compilation error' do
let(:error) { CoffeeScript::CompilationError.new("fail") }
before do
handle_exception.raises(error)
end
it 'should pass along the error' do
expect { subject }.to raise_error(error)
end
end
context 'compiles fine' do
let(:cached_expectation) { Jasmine::Headless::CoffeeScriptCache.any_instance.stubs(:cached?).returns(cache_return) }
before do
end
end
end
end
end