targeted runs w/ files outside scope work
This commit is contained in:
parent
e9a9a79142
commit
c359e8b28b
@ -11,7 +11,7 @@ end
|
|||||||
|
|
||||||
module Jasmine
|
module Jasmine
|
||||||
class FilesList
|
class FilesList
|
||||||
attr_reader :files, :filtered_files
|
attr_reader :files, :filtered_files, :spec_outside_scope
|
||||||
|
|
||||||
DEFAULT_FILES = [
|
DEFAULT_FILES = [
|
||||||
File.join(Jasmine.root, "lib/jasmine.js"),
|
File.join(Jasmine.root, "lib/jasmine.js"),
|
||||||
@ -23,11 +23,16 @@ module Jasmine
|
|||||||
@options = options
|
@options = options
|
||||||
@files = DEFAULT_FILES.dup
|
@files = DEFAULT_FILES.dup
|
||||||
@filtered_files = @files.dup
|
@filtered_files = @files.dup
|
||||||
|
@spec_outside_scope = false
|
||||||
use_config! if config?
|
use_config! if config?
|
||||||
|
|
||||||
@code_for_file = {}
|
@code_for_file = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def has_spec_outside_scope?
|
||||||
|
@spec_outside_scope
|
||||||
|
end
|
||||||
|
|
||||||
def use_spec?(file)
|
def use_spec?(file)
|
||||||
spec_filter.empty? || spec_filter.include?(file)
|
spec_filter.empty? || spec_filter.include?(file)
|
||||||
end
|
end
|
||||||
@ -114,10 +119,12 @@ module Jasmine
|
|||||||
|
|
||||||
@files += found_files
|
@files += found_files
|
||||||
|
|
||||||
if searches == 'spec_files'
|
@filtered_files += (if searches == 'spec_files'
|
||||||
found_files = found_files.find_all { |file| use_spec?(file) }
|
@spec_outside_scope = ((spec_filter | found_files).sort != found_files.sort)
|
||||||
end
|
spec_filter || found_files
|
||||||
@filtered_files += found_files
|
else
|
||||||
|
found_files
|
||||||
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -58,7 +58,7 @@ module Jasmine
|
|||||||
|
|
||||||
targets = Jasmine::TemplateWriter.write!(files_list)
|
targets = Jasmine::TemplateWriter.write!(files_list)
|
||||||
run_targets = targets.dup
|
run_targets = targets.dup
|
||||||
run_targets.pop if !@options[:full_run] && files_list.filtered?
|
run_targets.pop if (!@options[:full_run] && files_list.filtered?) || files_list.has_spec_outside_scope?
|
||||||
|
|
||||||
system jasmine_command(run_targets)
|
system jasmine_command(run_targets)
|
||||||
status = $?.exitstatus
|
status = $?.exitstatus
|
||||||
|
@ -26,7 +26,7 @@ describe "jasmine-headless-webkit" do
|
|||||||
system %{bin/jasmine-headless-webkit -j spec/jasmine/success_with_error/success_with_error.yml --report #{report}}
|
system %{bin/jasmine-headless-webkit -j spec/jasmine/success_with_error/success_with_error.yml --report #{report}}
|
||||||
$?.exitstatus.should == 1
|
$?.exitstatus.should == 1
|
||||||
|
|
||||||
report.should be_a_report_containing(1, 0, false)
|
report.should be_a_report_containing(0, 0, false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -65,6 +65,13 @@ describe "jasmine-headless-webkit" do
|
|||||||
|
|
||||||
report.should be_a_report_containing(1, 0, false)
|
report.should be_a_report_containing(1, 0, false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should use a file outside the normal test run and only run one" do
|
||||||
|
system %{bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml --report #{report} ./spec/jasmine/filtered_success/success_other_file.js}
|
||||||
|
$?.exitstatus.should == 0
|
||||||
|
|
||||||
|
report.should be_a_report_containing(1, 0, false)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "do both runs" do
|
context "do both runs" do
|
||||||
|
7
spec/jasmine/filtered_success/success_other_file.js
Normal file
7
spec/jasmine/filtered_success/success_other_file.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
describe('outside success', function() {
|
||||||
|
it('should succeed', function() {
|
||||||
|
expect(true).toEqual(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
@ -99,15 +99,28 @@ describe Jasmine::FilesList do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
let(:filter) { 'spec/one_spec.js' }
|
context 'filter with a file that is matchable' do
|
||||||
|
let(:filter) { [ File.expand_path('spec/one_spec.js') ] }
|
||||||
|
|
||||||
it 'should return all files for files' do
|
it 'should return all files for files' do
|
||||||
files_list.files.any? { |file| file['two_spec.js'] }.should be_true
|
files_list.files.any? { |file| file['two_spec.js'] }.should be_true
|
||||||
files_list.filtered?.should be_true
|
files_list.filtered?.should be_true
|
||||||
|
files_list.should_not have_spec_outside_scope
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should return only filtered files for filtered_files' do
|
||||||
|
files_list.filtered_files.any? { |file| file['two_spec.js'] }.should be_false
|
||||||
|
files_list.should_not have_spec_outside_scope
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return only filtered files for filtered_files' do
|
context 'filter with a file that is not even there' do
|
||||||
files_list.filtered_files.any? { |file| file['two_spec.js'] }.should be_false
|
let(:filter) { [ File.expand_path('spec/whatever.js') ] }
|
||||||
|
|
||||||
|
it 'should use the provided file' do
|
||||||
|
files_list.filtered_files.any? { |file| file['whatever.js'] }.should be_true
|
||||||
|
files_list.should have_spec_outside_scope
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -12,12 +12,20 @@ end
|
|||||||
|
|
||||||
RSpec::Matchers.define :be_a_report_containing do |total, fails, used_console|
|
RSpec::Matchers.define :be_a_report_containing do |total, fails, used_console|
|
||||||
match do |filename|
|
match do |filename|
|
||||||
parts = File.read(filename).strip.split('/')
|
parts(filename).length.should == 4
|
||||||
parts.length.should == 4
|
|
||||||
parts[0].should == total.to_s
|
parts[0].should == total.to_s
|
||||||
parts[1].should == fails.to_s
|
parts[1].should == fails.to_s
|
||||||
parts[2].should == (used_console ? "T" : "F")
|
parts[2].should == (used_console ? "T" : "F")
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
failure_message_for_should do |filename|
|
||||||
|
parts(filename)
|
||||||
|
"expected #{filename} to be a report containing (#{total}, #{fails}, #{used_console.inspect}), instead it contained (#{parts[0]}, #{parts[1]}, #{(parts[2] == "T").inspect})"
|
||||||
|
end
|
||||||
|
|
||||||
|
def parts(filename = nil)
|
||||||
|
@parts ||= File.read(filename).strip.split('/')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user