jasmine-headless-webkit-firstbanco 0.9.0.rc.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.rspec +1 -0
- data/CHANGELOG.md +89 -0
- data/Gemfile +30 -0
- data/Guardfile +41 -0
- data/README.md +44 -0
- data/Rakefile +65 -0
- data/bin/jasmine-headless-webkit +11 -0
- data/config/cucumber.yml +2 -0
- data/ext/jasmine-webkit-specrunner/Info.plist +22 -0
- data/ext/jasmine-webkit-specrunner/Makefile.dummy +5 -0
- data/ext/jasmine-webkit-specrunner/Page.cpp +15 -0
- data/ext/jasmine-webkit-specrunner/Page.h +20 -0
- data/ext/jasmine-webkit-specrunner/Runner.cpp +208 -0
- data/ext/jasmine-webkit-specrunner/Runner.h +73 -0
- data/ext/jasmine-webkit-specrunner/common.pri +8 -0
- data/ext/jasmine-webkit-specrunner/extconf.rb +10 -0
- data/ext/jasmine-webkit-specrunner/specrunner.cpp +79 -0
- data/ext/jasmine-webkit-specrunner/specrunner.pro +5 -0
- data/features/bin/failure.feature +7 -0
- data/features/bin/files.feature +7 -0
- data/features/bin/filtered_run/both_runs.feature +18 -0
- data/features/bin/filtered_run/no_full_run.feature +14 -0
- data/features/bin/help.feature +7 -0
- data/features/bin/quiet_messages.feature +8 -0
- data/features/bin/runner_out.feature +8 -0
- data/features/bin/spec_files_with_same_basename.feature +7 -0
- data/features/bin/success.feature +20 -0
- data/features/bin/success_with_js_error.feature +5 -0
- data/features/bin/tries_to_leave_page.feature +7 -0
- data/features/bin/try_to_click_a_button.feature +7 -0
- data/features/bin/two_files_from_src_files.feature +11 -0
- data/features/bin/with_coffeescript_error.feature +7 -0
- data/features/bin/with_console_log.feature +7 -0
- data/features/bin/with_server.feature +7 -0
- data/features/bin/with_window_prompt.feature +7 -0
- data/features/reporters.feature +24 -0
- data/features/runner.feature +34 -0
- data/features/steps/given/i_have_test_suite.rb +2 -0
- data/features/steps/given/no_existing_file.rb +4 -0
- data/features/steps/given/options/i_have_defaults.rb +4 -0
- data/features/steps/given/options/i_have_reporters.rb +10 -0
- data/features/steps/given/options/i_have_runner_options.rb +3 -0
- data/features/steps/then/bin/exit_status_should_be.rb +3 -0
- data/features/steps/then/bin/file_should_contain_runner.rb +4 -0
- data/features/steps/then/bin/following_files_loaded_in_order.rb +10 -0
- data/features/steps/then/bin/i_should_get_help_output.rb +4 -0
- data/features/steps/then/bin/output_should_include.rb +3 -0
- data/features/steps/then/bin/output_should_not_include.rb +4 -0
- data/features/steps/then/reporting/report_does_not_exist.rb +4 -0
- data/features/steps/then/reporting/report_should_exist.rb +3 -0
- data/features/steps/then/reporting/report_should_have.rb +7 -0
- data/features/steps/then/reporting/report_should_have_seed.rb +4 -0
- data/features/steps/then/runner/it_should_have_exit_status.rb +3 -0
- data/features/steps/then/runner/it_should_include_report_file.rb +4 -0
- data/features/steps/then/runner/it_should_not_include_report_file.rb +3 -0
- data/features/steps/then/templates/it_should_use_reporter.rb +6 -0
- data/features/steps/when/i_delete_file.rb +3 -0
- data/features/steps/when/i_get_runner.rb +4 -0
- data/features/steps/when/i_get_template_writer.rb +4 -0
- data/features/steps/when/i_run_executable.rb +4 -0
- data/features/steps/when/i_run_runner.rb +4 -0
- data/features/support/env.rb +7 -0
- data/jasmine-headless-webkit-firstbanco.gemspec +30 -0
- data/lib/autotest/discover.rb +1 -0
- data/lib/autotest/jasmine.rb +7 -0
- data/lib/autotest/jasmine_mixin.rb +111 -0
- data/lib/autotest/jasmine_rspec2.rb +7 -0
- data/lib/jasmine-headless-webkit.rb +3 -0
- data/lib/jasmine/headless.rb +61 -0
- data/lib/jasmine/headless/cacheable_action.rb +85 -0
- data/lib/jasmine/headless/coffee_script_cache.rb +20 -0
- data/lib/jasmine/headless/coffee_template.rb +36 -0
- data/lib/jasmine/headless/command_line.rb +31 -0
- data/lib/jasmine/headless/css_template.rb +19 -0
- data/lib/jasmine/headless/errors.rb +16 -0
- data/lib/jasmine/headless/file_checker.rb +25 -0
- data/lib/jasmine/headless/files_list.rb +332 -0
- data/lib/jasmine/headless/js_template.rb +23 -0
- data/lib/jasmine/headless/jst_template.rb +15 -0
- data/lib/jasmine/headless/nil_template.rb +14 -0
- data/lib/jasmine/headless/options.rb +206 -0
- data/lib/jasmine/headless/railtie.rb +12 -0
- data/lib/jasmine/headless/report.rb +81 -0
- data/lib/jasmine/headless/report_message.rb +12 -0
- data/lib/jasmine/headless/report_message/console.rb +18 -0
- data/lib/jasmine/headless/report_message/error.rb +20 -0
- data/lib/jasmine/headless/report_message/fail.rb +5 -0
- data/lib/jasmine/headless/report_message/pass.rb +5 -0
- data/lib/jasmine/headless/report_message/seed.rb +14 -0
- data/lib/jasmine/headless/report_message/spec.rb +28 -0
- data/lib/jasmine/headless/report_message/total.rb +31 -0
- data/lib/jasmine/headless/runner.rb +264 -0
- data/lib/jasmine/headless/spec_file_analyzer.rb +44 -0
- data/lib/jasmine/headless/task.rb +39 -0
- data/lib/jasmine/headless/template_writer.rb +65 -0
- data/lib/jasmine/headless/unique_asset_list.rb +16 -0
- data/lib/jasmine/headless/version.rb +5 -0
- data/lib/qt/qmake.rb +155 -0
- data/script/gemfile +11 -0
- data/script/hooks/post-commit +4 -0
- data/script/hooks/pre-commit +15 -0
- data/script/initialize-environment +35 -0
- data/script/install-git-hooks +6 -0
- data/skel/template.html.erb +77 -0
- data/spec/files/UTF-8-test.txt +0 -0
- data/spec/integration/randomization_spec.rb +13 -0
- data/spec/integration/specify_runner_file_spec.rb +22 -0
- data/spec/integration/sprockets_spec.rb +23 -0
- data/spec/jasmine/click_button/click_button.js +5 -0
- data/spec/jasmine/click_button/click_button.yml +12 -0
- data/spec/jasmine/click_button/click_button_spec.js +11 -0
- data/spec/jasmine/coffeescript_error/coffeescript_error.yml +10 -0
- data/spec/jasmine/coffeescript_error/spec.coffee +2 -0
- data/spec/jasmine/coffeescript_error/src.coffee +2 -0
- data/spec/jasmine/console_log/console_log.js +1 -0
- data/spec/jasmine/console_log/console_log.yml +10 -0
- data/spec/jasmine/console_log/console_log_spec.js +7 -0
- data/spec/jasmine/failure/failure.js +1 -0
- data/spec/jasmine/failure/failure.yml +9 -0
- data/spec/jasmine/failure/failure_spec.js +6 -0
- data/spec/jasmine/filtered_failure/failure_spec.js +6 -0
- data/spec/jasmine/filtered_failure/filtered_failure.yml +10 -0
- data/spec/jasmine/filtered_failure/src.js +0 -0
- data/spec/jasmine/filtered_failure/success_spec.js +6 -0
- data/spec/jasmine/filtered_success/filtered_success.yml +10 -0
- data/spec/jasmine/filtered_success/src.js +0 -0
- data/spec/jasmine/filtered_success/success_one_spec.js +6 -0
- data/spec/jasmine/filtered_success/success_other_file.js +7 -0
- data/spec/jasmine/filtered_success/success_two_spec.js +6 -0
- data/spec/jasmine/filtered_success_with_console/filtered_success.yml +10 -0
- data/spec/jasmine/filtered_success_with_console/src.js +0 -0
- data/spec/jasmine/filtered_success_with_console/success_one_spec.js +7 -0
- data/spec/jasmine/filtered_success_with_console/success_two_spec.js +6 -0
- data/spec/jasmine/leave_page/leave_page.js +4 -0
- data/spec/jasmine/leave_page/leave_page.yml +9 -0
- data/spec/jasmine/leave_page/leave_page_spec.js +11 -0
- data/spec/jasmine/noisy/file.js.erb +0 -0
- data/spec/jasmine/noisy/noisy.yml +8 -0
- data/spec/jasmine/noisy/other_file.js +2 -0
- data/spec/jasmine/runner_out_in_jasmine_yml/jasmine.yml +11 -0
- data/spec/jasmine/runner_out_in_jasmine_yml/test.js +2 -0
- data/spec/jasmine/runner_out_in_jasmine_yml/test_spec.coffee +4 -0
- data/spec/jasmine/success/success.js +1 -0
- data/spec/jasmine/success/success.yml +9 -0
- data/spec/jasmine/success/success_spec.js +6 -0
- data/spec/jasmine/success_with_error/success_with_error.js +3 -0
- data/spec/jasmine/success_with_error/success_with_error.yml +9 -0
- data/spec/jasmine/success_with_error/success_with_error_spec.js +6 -0
- data/spec/jasmine/two_files_from_src_files/app/app-file.js +0 -0
- data/spec/jasmine/two_files_from_src_files/app/app.js +2 -0
- data/spec/jasmine/two_files_from_src_files/jasmine.yml +7 -0
- data/spec/jasmine/two_files_from_src_files/vendor/vendor-file.js +0 -0
- data/spec/jasmine/two_files_from_src_files/vendor/vendor.js +2 -0
- data/spec/jasmine/two_spec_files_same_basename/jasmine.yml +6 -0
- data/spec/jasmine/two_spec_files_same_basename/spec.coffee +4 -0
- data/spec/jasmine/two_spec_files_same_basename/spec.js +6 -0
- data/spec/jasmine/window_prompt/source.js +2 -0
- data/spec/jasmine/window_prompt/window_prompt.yml +4 -0
- data/spec/jasmine/with_sprockets_includes/assets/application.js.erb +2 -0
- data/spec/jasmine/with_sprockets_includes/assets/things/code.js +6 -0
- data/spec/jasmine/with_sprockets_includes/assets/things/jquery.string.js +0 -0
- data/spec/jasmine/with_sprockets_includes/assets/things/required.js +3 -0
- data/spec/jasmine/with_sprockets_includes/assets/things/subcode/more_code.js +2 -0
- data/spec/jasmine/with_sprockets_includes/assets/things/templates/that.jst.ejs +1 -0
- data/spec/jasmine/with_sprockets_includes/assets/things/templates/this.jst +2 -0
- data/spec/jasmine/with_sprockets_includes/spec/spec_helper.js +1 -0
- data/spec/jasmine/with_sprockets_includes/spec/things/code_spec.js +9 -0
- data/spec/jasmine/with_sprockets_includes/with_sprockets_includes.yml +12 -0
- data/spec/javascripts/console.log_spec.coffee +15 -0
- data/spec/javascripts/headless_reporter_result_spec.coffee +30 -0
- data/spec/javascripts/helpers/spec_helper.coffee +2 -0
- data/spec/javascripts/jasmine-extensions_spec.coffee +80 -0
- data/spec/javascripts/jasmine.HeadlessReporter.ConsoleBase_spec.coffee +35 -0
- data/spec/javascripts/jasmine.HeadlessReporter.Console_spec.coffee +3 -0
- data/spec/javascripts/jasmine.HeadlessReporter.Tap_spec.coffee +19 -0
- data/spec/javascripts/jasmine.HeadlessReporter_spec.coffee +27 -0
- data/spec/javascripts/support/jasmine.yml +9 -0
- data/spec/lib/jasmine/headless/cacheable_action_spec.rb +122 -0
- data/spec/lib/jasmine/headless/coffee_script_cache_spec.rb +21 -0
- data/spec/lib/jasmine/headless/coffee_template_spec.rb +55 -0
- data/spec/lib/jasmine/headless/css_template_spec.rb +25 -0
- data/spec/lib/jasmine/headless/file_checker_spec.rb +41 -0
- data/spec/lib/jasmine/headless/files_list_spec.rb +194 -0
- data/spec/lib/jasmine/headless/js_template_spec.rb +31 -0
- data/spec/lib/jasmine/headless/jst_template_spec.rb +21 -0
- data/spec/lib/jasmine/headless/nil_template_spec.rb +31 -0
- data/spec/lib/jasmine/headless/options_spec.rb +194 -0
- data/spec/lib/jasmine/headless/report_message/seed_spec.rb +18 -0
- data/spec/lib/jasmine/headless/report_message/spec_spec.rb +20 -0
- data/spec/lib/jasmine/headless/report_spec.rb +95 -0
- data/spec/lib/jasmine/headless/runner_spec.rb +247 -0
- data/spec/lib/jasmine/headless/spec_file_analyzer_spec.rb +68 -0
- data/spec/lib/jasmine/headless/task_spec.rb +92 -0
- data/spec/lib/jasmine/headless/template_writer_spec.rb +92 -0
- data/spec/lib/jasmine/headless/unique_asset_list_spec.rb +22 -0
- data/spec/lib/jasmine/headless_spec.rb +38 -0
- data/spec/lib/qt/qmake_spec.rb +142 -0
- data/spec/skel/template.html.erb_spec.rb +8 -0
- data/spec/spec_helper.rb +113 -0
- data/vendor/assets/coffeescripts/headless_reporter_result.coffee +49 -0
- data/vendor/assets/coffeescripts/prolog.coffee +100 -0
- data/vendor/assets/javascripts/beautify-html.js +463 -0
- data/vendor/assets/javascripts/headless_reporter_result.js +79 -0
- data/vendor/assets/javascripts/intense.coffee +28 -0
- data/vendor/assets/javascripts/jasmine-extensions.coffee +97 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.Console.coffee +8 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.ConsoleBase.coffee +92 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.File.coffee +24 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.Tap.coffee +28 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.Verbose.coffee +64 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.coffee +58 -0
- data/vendor/assets/javascripts/jsDump.js +209 -0
- data/vendor/assets/javascripts/prolog.js +108 -0
- metadata +347 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'tilt/template'
|
2
|
+
|
3
|
+
module Jasmine::Headless
|
4
|
+
class JSTemplate < Tilt::Template
|
5
|
+
include Jasmine::Headless::FileChecker
|
6
|
+
self.default_mime_type = 'application/javascript'
|
7
|
+
|
8
|
+
def prepare ; end
|
9
|
+
|
10
|
+
def evaluate(scope, locals, &block)
|
11
|
+
if bad_format?(file)
|
12
|
+
alert_bad_format(file)
|
13
|
+
return ''
|
14
|
+
end
|
15
|
+
if data[%r{^<script type="text/javascript"}]
|
16
|
+
data
|
17
|
+
else
|
18
|
+
file ? %{<script type="text/javascript" src="#{file}"></script>} : data
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'sprockets/jst_processor'
|
2
|
+
|
3
|
+
module Jasmine::Headless
|
4
|
+
class JSTTemplate < Sprockets::JstProcessor
|
5
|
+
include Jasmine::Headless::FileChecker
|
6
|
+
def evaluate(*args)
|
7
|
+
if bad_format?(file)
|
8
|
+
alert_bad_format(file)
|
9
|
+
return ''
|
10
|
+
end
|
11
|
+
%{<script type="text/javascript">#{super}</script>}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,206 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
require 'getoptlong'
|
3
|
+
|
4
|
+
module Jasmine
|
5
|
+
module Headless
|
6
|
+
class Options
|
7
|
+
extend Forwardable
|
8
|
+
|
9
|
+
def_delegators :@options, :[], :[]=
|
10
|
+
|
11
|
+
DEFAULT_OPTIONS = {
|
12
|
+
:colors => false,
|
13
|
+
:remove_html_file => true,
|
14
|
+
:runner_output_filename => false,
|
15
|
+
:jasmine_config => 'spec/javascripts/support/jasmine.yml',
|
16
|
+
:do_list => false,
|
17
|
+
:full_run => true,
|
18
|
+
:enable_cache => true,
|
19
|
+
:files => [],
|
20
|
+
:reporters => [ [ 'Console' ] ],
|
21
|
+
:quiet => false,
|
22
|
+
:use_server => false,
|
23
|
+
:server_port => nil
|
24
|
+
}
|
25
|
+
|
26
|
+
DEFAULTS_FILE = File.join(Dir.pwd, '.jasmine-headless-webkit')
|
27
|
+
GLOBAL_DEFAULTS_FILE = File.expand_path('~/.jasmine-headless-webkit')
|
28
|
+
|
29
|
+
REPORT_DEPRECATED_MESSAGE = "--report is deprecated. Use --format HeadlessFileReporter --out <filename>"
|
30
|
+
|
31
|
+
def self.from_command_line
|
32
|
+
options = new
|
33
|
+
options.process_command_line_args
|
34
|
+
options[:files] = ARGV
|
35
|
+
options
|
36
|
+
end
|
37
|
+
|
38
|
+
def initialize(opts = {})
|
39
|
+
@options = DEFAULT_OPTIONS.dup
|
40
|
+
srand
|
41
|
+
@options[:seed] = rand(10000)
|
42
|
+
read_defaults_files
|
43
|
+
|
44
|
+
opts.each { |k, v| @options[k] = v if v }
|
45
|
+
end
|
46
|
+
|
47
|
+
def process_option(*args)
|
48
|
+
opt, arg = args.flatten[0..1]
|
49
|
+
|
50
|
+
case opt
|
51
|
+
when '--colors', '-c'
|
52
|
+
@options[:colors] = true
|
53
|
+
when '--no-colors', '-nc'
|
54
|
+
@options[:colors] = false
|
55
|
+
when '--cache'
|
56
|
+
@options[:enable_cache] = true
|
57
|
+
when '--no-cache'
|
58
|
+
@options[:enable_cache] = false
|
59
|
+
when '--keep'
|
60
|
+
@options[:remove_html_file] = false
|
61
|
+
when '--report'
|
62
|
+
warn REPORT_DEPRECATED_MESSAGE
|
63
|
+
|
64
|
+
add_reporter('File', arg)
|
65
|
+
add_reporter('Console')
|
66
|
+
when '--runner-out'
|
67
|
+
@options[:runner_output_filename] = arg
|
68
|
+
when '--jasmine-config', '-j'
|
69
|
+
@options[:jasmine_config] = arg
|
70
|
+
when '--no-full-run'
|
71
|
+
@options[:full_run] = false
|
72
|
+
when '--list', '-l'
|
73
|
+
@options[:do_list] = true
|
74
|
+
when '--quiet', '-q'
|
75
|
+
@options[:quiet] = true
|
76
|
+
when '--seed'
|
77
|
+
@options[:seed] = arg.to_i
|
78
|
+
when '--format', '-f'
|
79
|
+
add_reporter(arg)
|
80
|
+
when '--use-server'
|
81
|
+
@options[:use_server] = true
|
82
|
+
when '--server-port'
|
83
|
+
@options[:server_port] = arg.to_i
|
84
|
+
when '--out'
|
85
|
+
add_reporter_file(arg)
|
86
|
+
when '-h', '--help'
|
87
|
+
print_help
|
88
|
+
|
89
|
+
exit
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def read_defaults_files
|
94
|
+
[ GLOBAL_DEFAULTS_FILE, DEFAULTS_FILE ].each do |file|
|
95
|
+
if File.file?(file)
|
96
|
+
File.readlines(file).collect { |line| line.strip.split(' ', 2) }.each { |*args| process_option(*args) }
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def process_command_line_args
|
102
|
+
command_line_args = GetoptLong.new(
|
103
|
+
[ '--colors', '-c', GetoptLong::NO_ARGUMENT ],
|
104
|
+
[ '--no-colors', GetoptLong::NO_ARGUMENT ],
|
105
|
+
[ '--cache', GetoptLong::NO_ARGUMENT ],
|
106
|
+
[ '--no-cache', GetoptLong::NO_ARGUMENT ],
|
107
|
+
[ '--keep', GetoptLong::NO_ARGUMENT ],
|
108
|
+
[ '--runner-out', GetoptLong::REQUIRED_ARGUMENT ],
|
109
|
+
[ '--report', GetoptLong::REQUIRED_ARGUMENT ],
|
110
|
+
[ '--jasmine-config', '-j', GetoptLong::REQUIRED_ARGUMENT ],
|
111
|
+
[ '--no-full-run', GetoptLong::NO_ARGUMENT ],
|
112
|
+
[ '--list', '-l', GetoptLong::NO_ARGUMENT ],
|
113
|
+
[ '--seed', GetoptLong::REQUIRED_ARGUMENT ],
|
114
|
+
[ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ],
|
115
|
+
[ '--out', GetoptLong::REQUIRED_ARGUMENT ],
|
116
|
+
[ '--use-server', GetoptLong::NO_ARGUMENT ],
|
117
|
+
[ '--server-port', GetoptLong::REQUIRED_ARGUMENT ],
|
118
|
+
[ '-h', '--help', GetoptLong::NO_ARGUMENT ],
|
119
|
+
[ '-q', '--quiet', GetoptLong::NO_ARGUMENT ]
|
120
|
+
)
|
121
|
+
|
122
|
+
command_line_args.each { |*args| process_option(*args) }
|
123
|
+
end
|
124
|
+
|
125
|
+
def reporters
|
126
|
+
file_index = 0
|
127
|
+
|
128
|
+
@options[:reporters].collect do |reporter, file|
|
129
|
+
output = [ reporter ]
|
130
|
+
if file
|
131
|
+
output << "report:#{file_index}"
|
132
|
+
output << file
|
133
|
+
file_index += 1
|
134
|
+
else
|
135
|
+
output << "stdout"
|
136
|
+
end
|
137
|
+
|
138
|
+
output
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def file_reporters
|
143
|
+
reporters.find_all { |reporter| reporter[1]["report:"] }
|
144
|
+
end
|
145
|
+
|
146
|
+
private
|
147
|
+
def add_reporter(name, file = nil)
|
148
|
+
if !@added_reporter
|
149
|
+
@options[:reporters] = []
|
150
|
+
@added_reporter = true
|
151
|
+
end
|
152
|
+
|
153
|
+
if (parts = name.split(':')).length == 2
|
154
|
+
name, file = parts
|
155
|
+
end
|
156
|
+
|
157
|
+
@options[:reporters] << [ name ]
|
158
|
+
|
159
|
+
add_reporter_file(file) if file
|
160
|
+
end
|
161
|
+
|
162
|
+
def add_reporter_file(file)
|
163
|
+
@options[:reporters].last << file
|
164
|
+
end
|
165
|
+
|
166
|
+
def print_help
|
167
|
+
options = [
|
168
|
+
[ '-c, --colors', 'Enable colors (default: disabled)' ],
|
169
|
+
[ '-nc, --no-colors', 'Disable colors' ],
|
170
|
+
[ '--cache', 'Enable cache (default: enabled)' ],
|
171
|
+
[ '--no-cache', 'Disable cache' ],
|
172
|
+
[ '--keep', 'Keep runner files on failure' ],
|
173
|
+
[ '--runner-out <filename>', 'Write runner to specified filename' ],
|
174
|
+
[ '-j, --jasmine-config <config file>', 'Jasmine Yaml config to use' ],
|
175
|
+
[ '--no-full-run', 'Do not perform a full spec run after a successful targeted spec run' ],
|
176
|
+
[ '--use-server', 'Load tests from an HTTP server instead of from filesystem' ],
|
177
|
+
[ '-l, --list', 'List files in the order they will be required' ],
|
178
|
+
[ '--seed <seed>', 'Random order seed for spec file ordering' ],
|
179
|
+
[ '-f, --format <reporter<:filename>>', 'Specify an output reporter and possibly output filename' ],
|
180
|
+
[ '--out <filename>', 'Specify output filename for last defined reporter' ],
|
181
|
+
[ '-q, --quiet', "Silence most non-test related warnings" ],
|
182
|
+
[ '-h, --help', "You're looking at it" ]
|
183
|
+
]
|
184
|
+
|
185
|
+
longest_length = options.collect(&:first).collect(&:length).max
|
186
|
+
|
187
|
+
puts <<-HELP
|
188
|
+
Usage: #{$0} [ options ] [ spec files ]
|
189
|
+
|
190
|
+
Options:
|
191
|
+
#{options.collect { |option, description| " #{option.ljust(longest_length)} #{description}" }.join("\n")}
|
192
|
+
|
193
|
+
Available reporters:
|
194
|
+
Console Write out spec results to the console in a progress format (default)
|
195
|
+
Verbose Write out spec results to the console in a verbose format
|
196
|
+
File Write spec results in jasmine-headless-webkit ReportFile format
|
197
|
+
Tap Write spec results in TAP format
|
198
|
+
|
199
|
+
Add reporters to the jasmine.HeadlessReporter object to access them
|
200
|
+
(ex: jasmine.HeadlessReporter.Teamcity for the Teamcity reporter)
|
201
|
+
HELP
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
module Jasmine::Headless
|
4
|
+
class Report
|
5
|
+
extend Forwardable
|
6
|
+
|
7
|
+
def_delegators :report, :length, :[]
|
8
|
+
def_delegators :last_total, :total, :failed, :time
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def load(file)
|
12
|
+
new(file).process
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :file, :report
|
17
|
+
|
18
|
+
def initialize(file)
|
19
|
+
@file = file
|
20
|
+
end
|
21
|
+
|
22
|
+
def process
|
23
|
+
last_message = nil
|
24
|
+
@report = File.readlines(file).collect do |line|
|
25
|
+
type, *parts = line.split('||', -1)
|
26
|
+
|
27
|
+
if !(report_klass = report_class_for(type))
|
28
|
+
if last_message.kind_of?(Jasmine::Headless::ReportMessage::Console)
|
29
|
+
last_message.message << "\n"
|
30
|
+
last_message.message << line.strip
|
31
|
+
end
|
32
|
+
else
|
33
|
+
parts.last.strip!
|
34
|
+
|
35
|
+
last_message = report_klass.new_from_parts(parts)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
self
|
39
|
+
end
|
40
|
+
|
41
|
+
def has_used_console?
|
42
|
+
@report.any? { |entry| entry.kind_of?(Jasmine::Headless::ReportMessage::Console) }
|
43
|
+
end
|
44
|
+
|
45
|
+
def has_failed_on?(statement)
|
46
|
+
@report.any? { |entry|
|
47
|
+
if entry.kind_of?(Jasmine::Headless::ReportMessage::Fail)
|
48
|
+
entry.statement == statement
|
49
|
+
end
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
def valid?
|
54
|
+
last_total != nil
|
55
|
+
end
|
56
|
+
|
57
|
+
def failed_files
|
58
|
+
@report.find_all { |entry|
|
59
|
+
entry.kind_of?(Jasmine::Headless::ReportMessage::Fail)
|
60
|
+
}.collect(&:filename).uniq.compact
|
61
|
+
end
|
62
|
+
|
63
|
+
def seed
|
64
|
+
if seed = report.find { |entry| entry.respond_to?(:seed) }
|
65
|
+
seed.seed
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
def last_total
|
71
|
+
@report.reverse.find { |entry| entry.respond_to?(:total) }
|
72
|
+
end
|
73
|
+
|
74
|
+
def report_class_for(type)
|
75
|
+
if constant = ReportMessage.constants.find { |k| k.to_s.downcase == type.downcase }
|
76
|
+
ReportMessage.const_get(constant)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Jasmine::Headless
|
2
|
+
module ReportMessage
|
3
|
+
autoload :Spec, 'jasmine/headless/report_message/spec'
|
4
|
+
autoload :Pass, 'jasmine/headless/report_message/pass'
|
5
|
+
autoload :Fail, 'jasmine/headless/report_message/fail'
|
6
|
+
autoload :Console, 'jasmine/headless/report_message/console'
|
7
|
+
autoload :Error, 'jasmine/headless/report_message/error'
|
8
|
+
autoload :Total, 'jasmine/headless/report_message/total'
|
9
|
+
autoload :Seed, 'jasmine/headless/report_message/seed'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Jasmine::Headless::ReportMessage
|
2
|
+
class Console
|
3
|
+
def self.new_from_parts(parts)
|
4
|
+
new(parts.first)
|
5
|
+
end
|
6
|
+
|
7
|
+
attr_reader :message
|
8
|
+
|
9
|
+
def initialize(message)
|
10
|
+
@message = message
|
11
|
+
end
|
12
|
+
|
13
|
+
def ==(other)
|
14
|
+
self.message == other.message
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Jasmine::Headless::ReportMessage
|
2
|
+
class Error
|
3
|
+
class << self
|
4
|
+
def new_from_parts(parts)
|
5
|
+
new(*parts)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
attr_reader :message, :file_info
|
10
|
+
|
11
|
+
def initialize(message, file_info)
|
12
|
+
@message, @file_info = message, file_info
|
13
|
+
end
|
14
|
+
|
15
|
+
def ==(other)
|
16
|
+
self.message == other.message && self.file_info == other.file_info
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Jasmine::Headless::ReportMessage
|
2
|
+
class Spec
|
3
|
+
def self.new_from_parts(parts)
|
4
|
+
file_info = parts.pop
|
5
|
+
|
6
|
+
new(parts.join(' '), file_info)
|
7
|
+
end
|
8
|
+
|
9
|
+
attr_reader :statement, :file_info
|
10
|
+
|
11
|
+
def initialize(statement, file_info)
|
12
|
+
@statement, @file_info = statement, file_info
|
13
|
+
end
|
14
|
+
|
15
|
+
def ==(other)
|
16
|
+
self.statement == other.statement && self.file_info == other.file_info
|
17
|
+
end
|
18
|
+
|
19
|
+
def filename
|
20
|
+
if name = file_info.split(":").first
|
21
|
+
name
|
22
|
+
else
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|