jasmine-headless-webkit 0.6.3 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Gemfile +3 -1
- data/Guardfile +7 -2
- data/Rakefile +1 -0
- data/bin/jasmine-headless-webkit +15 -2
- data/ext/jasmine-webkit-specrunner/ConsoleOutput.cpp +140 -0
- data/ext/jasmine-webkit-specrunner/ConsoleOutput.h +38 -0
- data/ext/jasmine-webkit-specrunner/ConsoleOutput_test.cpp +129 -0
- data/ext/jasmine-webkit-specrunner/ConsoleOutput_test.h +32 -0
- data/ext/jasmine-webkit-specrunner/ConsoleOutput_test.pro +7 -0
- data/ext/jasmine-webkit-specrunner/Makefile.dummy +5 -0
- data/ext/jasmine-webkit-specrunner/{HeadlessSpecRunner/Page.cpp → Page.cpp} +3 -4
- data/ext/jasmine-webkit-specrunner/{HeadlessSpecRunner/Page.h → Page.h} +0 -2
- data/ext/jasmine-webkit-specrunner/Page_test.cpp +43 -0
- data/ext/jasmine-webkit-specrunner/Page_test.h +27 -0
- data/ext/jasmine-webkit-specrunner/Page_test.pro +6 -0
- data/ext/jasmine-webkit-specrunner/ReportFileOutput.cpp +54 -0
- data/ext/jasmine-webkit-specrunner/ReportFileOutput.h +37 -0
- data/ext/jasmine-webkit-specrunner/ReportFileOutput_test.cpp +88 -0
- data/ext/jasmine-webkit-specrunner/ReportFileOutput_test.h +26 -0
- data/ext/jasmine-webkit-specrunner/ReportFileOutput_test.pro +7 -0
- data/ext/jasmine-webkit-specrunner/Runner.cpp +211 -0
- data/ext/jasmine-webkit-specrunner/Runner.h +66 -0
- data/ext/jasmine-webkit-specrunner/common.pri +9 -0
- data/ext/jasmine-webkit-specrunner/extconf.rb +3 -1
- data/ext/jasmine-webkit-specrunner/jasmine-webkit-specrunner.pro +19 -0
- data/ext/jasmine-webkit-specrunner/specrunner.cpp +5 -3
- data/ext/jasmine-webkit-specrunner/specrunner.pro +3 -7
- data/ext/jasmine-webkit-specrunner/test.pri +3 -0
- data/ext/jasmine-webkit-specrunner/test.rb +24 -0
- data/jasmine/jasmine.headless-reporter.coffee +47 -15
- data/jasmine/jasmine.headless-reporter.js +42 -17
- data/jasmine-headless-webkit.gemspec +2 -2
- data/js-lib/beautify-html.js +463 -0
- data/js-lib/jsDump.js +209 -0
- data/lib/jasmine/files_list.rb +35 -64
- data/lib/jasmine/headless/cacheable_action.rb +77 -0
- data/lib/jasmine/headless/coffee_script_cache.rb +20 -0
- data/lib/jasmine/headless/errors.rb +1 -0
- data/lib/jasmine/headless/options.rb +14 -2
- data/lib/jasmine/headless/railtie.rb +0 -2
- data/lib/jasmine/headless/report.rb +76 -0
- data/lib/jasmine/headless/report_message/console.rb +20 -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/spec.rb +30 -0
- data/lib/jasmine/headless/report_message/total.rb +31 -0
- data/lib/jasmine/headless/report_message.rb +11 -0
- data/lib/jasmine/headless/runner.rb +2 -6
- data/lib/jasmine/headless/spec_file_analyzer.rb +37 -0
- data/lib/jasmine/headless/task.rb +0 -2
- data/lib/jasmine/headless/version.rb +5 -0
- data/lib/jasmine/template_writer.rb +17 -2
- data/lib/jasmine-headless-webkit.rb +15 -2
- data/lib/qt/qmake.rb +61 -30
- data/script/gemfile +11 -0
- data/script/hooks/pre-commit +15 -0
- data/script/initialize-environment +35 -0
- data/script/install-git-hooks +6 -0
- data/spec/bin/jasmine-headless-webkit_spec.rb +10 -0
- data/spec/javascripts/jasmine.headless-reporter_spec.coffee +63 -5
- data/spec/lib/jasmine/files_list_spec.rb +37 -116
- data/spec/lib/jasmine/headless/cacheable_action_spec.rb +89 -0
- data/spec/lib/jasmine/headless/coffee_script_cache_spec.rb +21 -0
- data/spec/lib/jasmine/headless/options_spec.rb +3 -5
- data/spec/lib/jasmine/headless/report_message/spec_spec.rb +20 -0
- data/spec/lib/jasmine/headless/report_spec.rb +79 -0
- data/spec/lib/jasmine/headless/runner_spec.rb +5 -1
- data/spec/lib/jasmine/headless/spec_file_analyzer_spec.rb +57 -0
- data/spec/lib/qt/qmake_spec.rb +15 -2
- data/spec/spec_helper.rb +35 -22
- metadata +109 -19
- data/ext/jasmine-webkit-specrunner/HeadlessSpecRunner/ConsoleOutput.cpp +0 -0
- data/ext/jasmine-webkit-specrunner/HeadlessSpecRunner/ConsoleOutput.h +0 -0
- data/ext/jasmine-webkit-specrunner/HeadlessSpecRunner/Runner.cpp +0 -270
- data/ext/jasmine-webkit-specrunner/HeadlessSpecRunner/Runner.h +0 -61
- data/lib/jasmine-headless-webkit/version.rb +0 -7
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasmine-headless-webkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,12 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-09-12 00:00:00.000000000 -04:00
|
15
|
+
default_executable:
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: jasmine-core
|
18
|
-
requirement: &
|
19
|
+
requirement: &2158532740 !ruby/object:Gem::Requirement
|
19
20
|
none: false
|
20
21
|
requirements:
|
21
22
|
- - ~>
|
@@ -23,10 +24,10 @@ dependencies:
|
|
23
24
|
version: 1.1.beta
|
24
25
|
type: :runtime
|
25
26
|
prerelease: false
|
26
|
-
version_requirements: *
|
27
|
+
version_requirements: *2158532740
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: coffee-script
|
29
|
-
requirement: &
|
30
|
+
requirement: &2158532200 !ruby/object:Gem::Requirement
|
30
31
|
none: false
|
31
32
|
requirements:
|
32
33
|
- - ! '>='
|
@@ -34,10 +35,10 @@ dependencies:
|
|
34
35
|
version: '2.2'
|
35
36
|
type: :runtime
|
36
37
|
prerelease: false
|
37
|
-
version_requirements: *
|
38
|
+
version_requirements: *2158532200
|
38
39
|
- !ruby/object:Gem::Dependency
|
39
40
|
name: rainbow
|
40
|
-
requirement: &
|
41
|
+
requirement: &2158531820 !ruby/object:Gem::Requirement
|
41
42
|
none: false
|
42
43
|
requirements:
|
43
44
|
- - ! '>='
|
@@ -45,10 +46,10 @@ dependencies:
|
|
45
46
|
version: '0'
|
46
47
|
type: :runtime
|
47
48
|
prerelease: false
|
48
|
-
version_requirements: *
|
49
|
+
version_requirements: *2158531820
|
49
50
|
- !ruby/object:Gem::Dependency
|
50
51
|
name: multi_json
|
51
|
-
requirement: &
|
52
|
+
requirement: &2158523100 !ruby/object:Gem::Requirement
|
52
53
|
none: false
|
53
54
|
requirements:
|
54
55
|
- - ! '>='
|
@@ -56,7 +57,7 @@ dependencies:
|
|
56
57
|
version: '0'
|
57
58
|
type: :runtime
|
58
59
|
prerelease: false
|
59
|
-
version_requirements: *
|
60
|
+
version_requirements: *2158523100
|
60
61
|
description: Run Jasmine specs headlessly
|
61
62
|
email:
|
62
63
|
- john@coswellproductions.com
|
@@ -76,33 +77,66 @@ files:
|
|
76
77
|
- bin/jasmine-headless-webkit
|
77
78
|
- dev-bin/hooks/pre-commit
|
78
79
|
- dev-bin/install-hooks
|
79
|
-
- ext/jasmine-webkit-specrunner/
|
80
|
-
- ext/jasmine-webkit-specrunner/
|
81
|
-
- ext/jasmine-webkit-specrunner/
|
82
|
-
- ext/jasmine-webkit-specrunner/
|
83
|
-
- ext/jasmine-webkit-specrunner/
|
84
|
-
- ext/jasmine-webkit-specrunner/HeadlessSpecRunner/Runner.h
|
80
|
+
- ext/jasmine-webkit-specrunner/ConsoleOutput.cpp
|
81
|
+
- ext/jasmine-webkit-specrunner/ConsoleOutput.h
|
82
|
+
- ext/jasmine-webkit-specrunner/ConsoleOutput_test.cpp
|
83
|
+
- ext/jasmine-webkit-specrunner/ConsoleOutput_test.h
|
84
|
+
- ext/jasmine-webkit-specrunner/ConsoleOutput_test.pro
|
85
85
|
- ext/jasmine-webkit-specrunner/Info.plist
|
86
|
+
- ext/jasmine-webkit-specrunner/Makefile.dummy
|
87
|
+
- ext/jasmine-webkit-specrunner/Page.cpp
|
88
|
+
- ext/jasmine-webkit-specrunner/Page.h
|
89
|
+
- ext/jasmine-webkit-specrunner/Page_test.cpp
|
90
|
+
- ext/jasmine-webkit-specrunner/Page_test.h
|
91
|
+
- ext/jasmine-webkit-specrunner/Page_test.pro
|
92
|
+
- ext/jasmine-webkit-specrunner/ReportFileOutput.cpp
|
93
|
+
- ext/jasmine-webkit-specrunner/ReportFileOutput.h
|
94
|
+
- ext/jasmine-webkit-specrunner/ReportFileOutput_test.cpp
|
95
|
+
- ext/jasmine-webkit-specrunner/ReportFileOutput_test.h
|
96
|
+
- ext/jasmine-webkit-specrunner/ReportFileOutput_test.pro
|
97
|
+
- ext/jasmine-webkit-specrunner/Runner.cpp
|
98
|
+
- ext/jasmine-webkit-specrunner/Runner.h
|
99
|
+
- ext/jasmine-webkit-specrunner/common.pri
|
86
100
|
- ext/jasmine-webkit-specrunner/extconf.rb
|
101
|
+
- ext/jasmine-webkit-specrunner/jasmine-webkit-specrunner.pro
|
87
102
|
- ext/jasmine-webkit-specrunner/specrunner.cpp
|
88
103
|
- ext/jasmine-webkit-specrunner/specrunner.pro
|
104
|
+
- ext/jasmine-webkit-specrunner/test.pri
|
105
|
+
- ext/jasmine-webkit-specrunner/test.rb
|
89
106
|
- jasmine-headless-webkit.gemspec
|
90
107
|
- jasmine/jasmine.headless-reporter.coffee
|
91
108
|
- jasmine/jasmine.headless-reporter.js
|
109
|
+
- js-lib/beautify-html.js
|
110
|
+
- js-lib/jsDump.js
|
92
111
|
- lib/autotest/discover.rb
|
93
112
|
- lib/autotest/jasmine.rb
|
94
113
|
- lib/autotest/jasmine_mixin.rb
|
95
114
|
- lib/autotest/jasmine_rspec2.rb
|
96
115
|
- lib/jasmine-headless-webkit.rb
|
97
|
-
- lib/jasmine-headless-webkit/version.rb
|
98
116
|
- lib/jasmine/files_list.rb
|
117
|
+
- lib/jasmine/headless/cacheable_action.rb
|
118
|
+
- lib/jasmine/headless/coffee_script_cache.rb
|
99
119
|
- lib/jasmine/headless/errors.rb
|
100
120
|
- lib/jasmine/headless/options.rb
|
101
121
|
- lib/jasmine/headless/railtie.rb
|
122
|
+
- lib/jasmine/headless/report.rb
|
123
|
+
- lib/jasmine/headless/report_message.rb
|
124
|
+
- lib/jasmine/headless/report_message/console.rb
|
125
|
+
- lib/jasmine/headless/report_message/error.rb
|
126
|
+
- lib/jasmine/headless/report_message/fail.rb
|
127
|
+
- lib/jasmine/headless/report_message/pass.rb
|
128
|
+
- lib/jasmine/headless/report_message/spec.rb
|
129
|
+
- lib/jasmine/headless/report_message/total.rb
|
102
130
|
- lib/jasmine/headless/runner.rb
|
131
|
+
- lib/jasmine/headless/spec_file_analyzer.rb
|
103
132
|
- lib/jasmine/headless/task.rb
|
133
|
+
- lib/jasmine/headless/version.rb
|
104
134
|
- lib/jasmine/template_writer.rb
|
105
135
|
- lib/qt/qmake.rb
|
136
|
+
- script/gemfile
|
137
|
+
- script/hooks/pre-commit
|
138
|
+
- script/initialize-environment
|
139
|
+
- script/install-git-hooks
|
106
140
|
- spec/bin/jasmine-headless-webkit_spec.rb
|
107
141
|
- spec/jasmine/click_button/click_button.js
|
108
142
|
- spec/jasmine/click_button/click_button.yml
|
@@ -142,12 +176,18 @@ files:
|
|
142
176
|
- spec/javascripts/support/jasmine.yml
|
143
177
|
- spec/javascripts/support/jquery-1.6.2.min.js
|
144
178
|
- spec/lib/jasmine/files_list_spec.rb
|
179
|
+
- spec/lib/jasmine/headless/cacheable_action_spec.rb
|
180
|
+
- spec/lib/jasmine/headless/coffee_script_cache_spec.rb
|
145
181
|
- spec/lib/jasmine/headless/options_spec.rb
|
182
|
+
- spec/lib/jasmine/headless/report_message/spec_spec.rb
|
183
|
+
- spec/lib/jasmine/headless/report_spec.rb
|
146
184
|
- spec/lib/jasmine/headless/runner_spec.rb
|
185
|
+
- spec/lib/jasmine/headless/spec_file_analyzer_spec.rb
|
147
186
|
- spec/lib/jasmine/headless/task_spec.rb
|
148
187
|
- spec/lib/jasmine/template_writer_spec.rb
|
149
188
|
- spec/lib/qt/qmake_spec.rb
|
150
189
|
- spec/spec_helper.rb
|
190
|
+
has_rdoc: true
|
151
191
|
homepage: ''
|
152
192
|
licenses: []
|
153
193
|
post_install_message:
|
@@ -168,8 +208,58 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
208
|
version: '0'
|
169
209
|
requirements: []
|
170
210
|
rubyforge_project: jasmine-headless-webkit
|
171
|
-
rubygems_version: 1.
|
211
|
+
rubygems_version: 1.6.2
|
172
212
|
signing_key:
|
173
213
|
specification_version: 3
|
174
214
|
summary: Run Jasmine specs headlessly in a WebKit browser
|
175
|
-
test_files:
|
215
|
+
test_files:
|
216
|
+
- spec/bin/jasmine-headless-webkit_spec.rb
|
217
|
+
- spec/jasmine/click_button/click_button.js
|
218
|
+
- spec/jasmine/click_button/click_button.yml
|
219
|
+
- spec/jasmine/click_button/click_button_spec.js
|
220
|
+
- spec/jasmine/coffeescript_error/coffeescript_error.yml
|
221
|
+
- spec/jasmine/coffeescript_error/spec.coffee
|
222
|
+
- spec/jasmine/coffeescript_error/src.coffee
|
223
|
+
- spec/jasmine/console_log/console_log.js
|
224
|
+
- spec/jasmine/console_log/console_log.yml
|
225
|
+
- spec/jasmine/console_log/console_log_spec.js
|
226
|
+
- spec/jasmine/failure/failure.js
|
227
|
+
- spec/jasmine/failure/failure.yml
|
228
|
+
- spec/jasmine/failure/failure_spec.js
|
229
|
+
- spec/jasmine/filtered_failure/failure_spec.js
|
230
|
+
- spec/jasmine/filtered_failure/filtered_failure.yml
|
231
|
+
- spec/jasmine/filtered_failure/src.js
|
232
|
+
- spec/jasmine/filtered_failure/success_spec.js
|
233
|
+
- spec/jasmine/filtered_success/filtered_success.yml
|
234
|
+
- spec/jasmine/filtered_success/src.js
|
235
|
+
- spec/jasmine/filtered_success/success_one_spec.js
|
236
|
+
- spec/jasmine/filtered_success/success_other_file.js
|
237
|
+
- spec/jasmine/filtered_success/success_two_spec.js
|
238
|
+
- spec/jasmine/filtered_success_with_console/filtered_success.yml
|
239
|
+
- spec/jasmine/filtered_success_with_console/src.js
|
240
|
+
- spec/jasmine/filtered_success_with_console/success_one_spec.js
|
241
|
+
- spec/jasmine/filtered_success_with_console/success_two_spec.js
|
242
|
+
- spec/jasmine/leave_page/leave_page.js
|
243
|
+
- spec/jasmine/leave_page/leave_page.yml
|
244
|
+
- spec/jasmine/leave_page/leave_page_spec.js
|
245
|
+
- spec/jasmine/success/success.js
|
246
|
+
- spec/jasmine/success/success.yml
|
247
|
+
- spec/jasmine/success/success_spec.js
|
248
|
+
- spec/jasmine/success_with_error/success_with_error.js
|
249
|
+
- spec/jasmine/success_with_error/success_with_error.yml
|
250
|
+
- spec/jasmine/success_with_error/success_with_error_spec.js
|
251
|
+
- spec/javascripts/jasmine.headless-reporter_spec.coffee
|
252
|
+
- spec/javascripts/support/jasmine.yml
|
253
|
+
- spec/javascripts/support/jquery-1.6.2.min.js
|
254
|
+
- spec/lib/jasmine/files_list_spec.rb
|
255
|
+
- spec/lib/jasmine/headless/cacheable_action_spec.rb
|
256
|
+
- spec/lib/jasmine/headless/coffee_script_cache_spec.rb
|
257
|
+
- spec/lib/jasmine/headless/options_spec.rb
|
258
|
+
- spec/lib/jasmine/headless/report_message/spec_spec.rb
|
259
|
+
- spec/lib/jasmine/headless/report_spec.rb
|
260
|
+
- spec/lib/jasmine/headless/runner_spec.rb
|
261
|
+
- spec/lib/jasmine/headless/spec_file_analyzer_spec.rb
|
262
|
+
- spec/lib/jasmine/headless/task_spec.rb
|
263
|
+
- spec/lib/jasmine/template_writer_spec.rb
|
264
|
+
- spec/lib/qt/qmake_spec.rb
|
265
|
+
- spec/spec_helper.rb
|
File without changes
|
File without changes
|
@@ -1,270 +0,0 @@
|
|
1
|
-
#include <QtGui>
|
2
|
-
#include <QtWebKit>
|
3
|
-
#include <QFile>
|
4
|
-
#include <QTextStream>
|
5
|
-
#include <iostream>
|
6
|
-
#include <QQueue>
|
7
|
-
|
8
|
-
#include "Runner.h"
|
9
|
-
|
10
|
-
namespace HeadlessSpecRunner {
|
11
|
-
Runner::Runner() : QObject()
|
12
|
-
, m_runs(0)
|
13
|
-
, hasErrors(false)
|
14
|
-
, usedConsole(false)
|
15
|
-
, showColors(false)
|
16
|
-
, isFinished(false)
|
17
|
-
, didFail(false)
|
18
|
-
, consoleNotUsedThisRun(false) {
|
19
|
-
m_page.settings()->enablePersistentStorage();
|
20
|
-
connect(&m_page, SIGNAL(loadFinished(bool)), this, SLOT(watch(bool)));
|
21
|
-
connect(&m_page, SIGNAL(consoleLog(QString, int, QString)), this, SLOT(errorLog(QString, int, QString)));
|
22
|
-
connect(&m_page, SIGNAL(internalLog(QString, QString)), this, SLOT(internalLog(QString, QString)));
|
23
|
-
connect(m_page.mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(addJHW()));
|
24
|
-
}
|
25
|
-
|
26
|
-
void Runner::addFile(const QString &spec) {
|
27
|
-
runnerFiles.enqueue(spec);
|
28
|
-
}
|
29
|
-
|
30
|
-
void Runner::go()
|
31
|
-
{
|
32
|
-
m_ticker.stop();
|
33
|
-
m_page.setPreferredContentsSize(QSize(1024, 600));
|
34
|
-
addJHW();
|
35
|
-
loadSpec();
|
36
|
-
}
|
37
|
-
void Runner::addJHW()
|
38
|
-
{
|
39
|
-
m_page.mainFrame()->addToJavaScriptWindowObject("JHW", this);
|
40
|
-
}
|
41
|
-
|
42
|
-
void Runner::loadSpec()
|
43
|
-
{
|
44
|
-
m_page.mainFrame()->load(runnerFiles.dequeue());
|
45
|
-
m_ticker.start(200, this);
|
46
|
-
}
|
47
|
-
|
48
|
-
void Runner::watch(bool ok)
|
49
|
-
{
|
50
|
-
if (!ok) {
|
51
|
-
std::cerr << "Can't load " << qPrintable(m_page.mainFrame()->url().toString()) << ", the file may be broken." << std::endl;
|
52
|
-
std::cerr << "Out of curiosity, did your tests try to submit a form and you haven't prevented that?" << std::endl;
|
53
|
-
std::cerr << "Try running your tests in your browser with the Jasmine server and see what happens." << std::endl;
|
54
|
-
QApplication::instance()->exit(1);
|
55
|
-
return;
|
56
|
-
}
|
57
|
-
|
58
|
-
m_ticker.start(200, this);
|
59
|
-
}
|
60
|
-
|
61
|
-
bool Runner::hasElement(const char *select)
|
62
|
-
{
|
63
|
-
return !m_page.mainFrame()->findFirstElement(select).isNull();
|
64
|
-
}
|
65
|
-
|
66
|
-
void Runner::setColors(bool colors)
|
67
|
-
{
|
68
|
-
showColors = colors;
|
69
|
-
}
|
70
|
-
|
71
|
-
void Runner::reportFile(const QString &file)
|
72
|
-
{
|
73
|
-
reportFilename = file;
|
74
|
-
}
|
75
|
-
|
76
|
-
void Runner::red()
|
77
|
-
{
|
78
|
-
if (showColors) std::cout << "\033[0;31m";
|
79
|
-
}
|
80
|
-
|
81
|
-
void Runner::green()
|
82
|
-
{
|
83
|
-
if (showColors) std::cout << "\033[0;32m";
|
84
|
-
}
|
85
|
-
|
86
|
-
bool Runner::hasError() {
|
87
|
-
return hasErrors;
|
88
|
-
}
|
89
|
-
|
90
|
-
void Runner::yellow()
|
91
|
-
{
|
92
|
-
if (showColors) std::cout << "\033[0;33m";
|
93
|
-
}
|
94
|
-
|
95
|
-
void Runner::clear()
|
96
|
-
{
|
97
|
-
if (showColors) std::cout << "\033[m";
|
98
|
-
}
|
99
|
-
|
100
|
-
void Runner::specPassed()
|
101
|
-
{
|
102
|
-
consoleNotUsedThisRun = true;
|
103
|
-
green();
|
104
|
-
std::cout << '.';
|
105
|
-
clear();
|
106
|
-
fflush(stdout);
|
107
|
-
}
|
108
|
-
|
109
|
-
void Runner::specFailed(const QString &specDetail)
|
110
|
-
{
|
111
|
-
consoleNotUsedThisRun = true;
|
112
|
-
didFail = true;
|
113
|
-
red();
|
114
|
-
std::cout << 'F';
|
115
|
-
failedSpecs.push(specDetail);
|
116
|
-
clear();
|
117
|
-
fflush(stdout);
|
118
|
-
}
|
119
|
-
|
120
|
-
void Runner::errorLog(const QString &msg, int lineNumber, const QString &sourceID)
|
121
|
-
{
|
122
|
-
red();
|
123
|
-
std::cout << "[error] ";
|
124
|
-
clear();
|
125
|
-
std::cout << qPrintable(sourceID) << ":" << lineNumber << " : " << qPrintable(msg);
|
126
|
-
std::cout << std::endl;
|
127
|
-
|
128
|
-
hasErrors = true;
|
129
|
-
m_runs = 0;
|
130
|
-
m_ticker.start(200, this);
|
131
|
-
}
|
132
|
-
|
133
|
-
void Runner::internalLog(const QString ¬e, const QString &msg) {
|
134
|
-
red();
|
135
|
-
std::cout << "[" << qPrintable(note) << "] ";
|
136
|
-
clear();
|
137
|
-
std::cout << qPrintable(msg);
|
138
|
-
std::cout << std::endl;
|
139
|
-
}
|
140
|
-
|
141
|
-
void Runner::log(const QString &msg)
|
142
|
-
{
|
143
|
-
usedConsole = true;
|
144
|
-
green();
|
145
|
-
if (consoleNotUsedThisRun) {
|
146
|
-
std::cout << std::endl;
|
147
|
-
consoleNotUsedThisRun = false;
|
148
|
-
}
|
149
|
-
std::cout << "[console] ";
|
150
|
-
clear();
|
151
|
-
if (msg.contains("\n"))
|
152
|
-
std::cout << std::endl;
|
153
|
-
std::cout << qPrintable(msg);
|
154
|
-
std::cout << std::endl;
|
155
|
-
}
|
156
|
-
|
157
|
-
void Runner::leavePageAttempt(const QString &msg)
|
158
|
-
{
|
159
|
-
red();
|
160
|
-
std::cout << "[error] ";
|
161
|
-
clear();
|
162
|
-
std::cout << qPrintable(msg) << std::endl;
|
163
|
-
m_page.oneFalseConfirm();
|
164
|
-
hasErrors = true;
|
165
|
-
}
|
166
|
-
|
167
|
-
void Runner::printName(const QString &name)
|
168
|
-
{
|
169
|
-
std::cout << std::endl << std::endl;
|
170
|
-
red();
|
171
|
-
std::cout << qPrintable(name) << std::endl;
|
172
|
-
clear();
|
173
|
-
}
|
174
|
-
|
175
|
-
void Runner::printResult(const QString &result)
|
176
|
-
{
|
177
|
-
red();
|
178
|
-
std::cout << " " << qPrintable(result) << std::endl;
|
179
|
-
clear();
|
180
|
-
}
|
181
|
-
|
182
|
-
void Runner::finishSuite(const QString &duration, const QString &total, const QString& failed)
|
183
|
-
{
|
184
|
-
std::cout << std::endl;
|
185
|
-
if (didFail) {
|
186
|
-
red();
|
187
|
-
std::cout << "FAIL: ";
|
188
|
-
} else {
|
189
|
-
green();
|
190
|
-
std::cout << "PASS";
|
191
|
-
|
192
|
-
if (hasErrors) {
|
193
|
-
std::cout << " with JS errors";
|
194
|
-
}
|
195
|
-
|
196
|
-
std::cout << ": ";
|
197
|
-
}
|
198
|
-
|
199
|
-
std::cout << qPrintable(total) << " tests, " << qPrintable(failed) << " failures, " << qPrintable(duration) << " secs.";
|
200
|
-
clear();
|
201
|
-
std::cout << std::endl;
|
202
|
-
|
203
|
-
if (!reportFilename.isEmpty()) {
|
204
|
-
QFile reportFH(reportFilename);
|
205
|
-
|
206
|
-
if (reportFH.open(QFile::WriteOnly)) {
|
207
|
-
QTextStream report(&reportFH);
|
208
|
-
report << qPrintable(total) << "/" << qPrintable(failed) << "/";
|
209
|
-
report << (usedConsole ? "T" : "F");
|
210
|
-
report << "/" << qPrintable(duration) << "\n";
|
211
|
-
|
212
|
-
QString failedSpec;
|
213
|
-
|
214
|
-
while (!failedSpecs.isEmpty()) {
|
215
|
-
failedSpec = failedSpecs.pop();
|
216
|
-
report << qPrintable(failedSpec) << "\n";
|
217
|
-
}
|
218
|
-
|
219
|
-
reportFH.close();
|
220
|
-
}
|
221
|
-
}
|
222
|
-
|
223
|
-
isFinished = true;
|
224
|
-
}
|
225
|
-
|
226
|
-
void Runner::timerEvent(QTimerEvent *event)
|
227
|
-
{
|
228
|
-
++m_runs;
|
229
|
-
|
230
|
-
if (event->timerId() != m_ticker.timerId())
|
231
|
-
return;
|
232
|
-
|
233
|
-
if (hasErrors && m_runs > 2)
|
234
|
-
QApplication::instance()->exit(1);
|
235
|
-
|
236
|
-
if (isFinished) {
|
237
|
-
int exitCode = 0;
|
238
|
-
if (didFail || hasErrors) {
|
239
|
-
exitCode = 1;
|
240
|
-
} else {
|
241
|
-
if (usedConsole) {
|
242
|
-
exitCode = 2;
|
243
|
-
}
|
244
|
-
}
|
245
|
-
|
246
|
-
bool runAgain = true;
|
247
|
-
|
248
|
-
if (runnerFiles.count() == 0) {
|
249
|
-
runAgain = false;
|
250
|
-
} else {
|
251
|
-
if (exitCode == 1) {
|
252
|
-
runAgain = false;
|
253
|
-
}
|
254
|
-
}
|
255
|
-
|
256
|
-
if (runAgain) {
|
257
|
-
isFinished = false;
|
258
|
-
loadSpec();
|
259
|
-
} else {
|
260
|
-
QApplication::instance()->exit(exitCode);
|
261
|
-
}
|
262
|
-
}
|
263
|
-
|
264
|
-
if (m_runs > 30) {
|
265
|
-
std::cout << "WARNING: too many runs and the test is still not finished!" << std::endl;
|
266
|
-
QApplication::instance()->exit(1);
|
267
|
-
}
|
268
|
-
}
|
269
|
-
}
|
270
|
-
|
@@ -1,61 +0,0 @@
|
|
1
|
-
#ifndef JHW_RUNNER
|
2
|
-
#define JHW_RUNNER
|
3
|
-
|
4
|
-
#include <QtGui>
|
5
|
-
#include <QtWebKit>
|
6
|
-
#include <QFile>
|
7
|
-
#include <QTextStream>
|
8
|
-
#include <iostream>
|
9
|
-
#include <QQueue>
|
10
|
-
|
11
|
-
#include "Page.h"
|
12
|
-
|
13
|
-
namespace HeadlessSpecRunner {
|
14
|
-
class Runner: public QObject {
|
15
|
-
Q_OBJECT
|
16
|
-
public:
|
17
|
-
Runner();
|
18
|
-
void setColors(bool colors);
|
19
|
-
void reportFile(const QString &file);
|
20
|
-
void addFile(const QString &spec);
|
21
|
-
void go();
|
22
|
-
public slots:
|
23
|
-
void log(const QString &msg);
|
24
|
-
bool hasError();
|
25
|
-
void leavePageAttempt(const QString &msg);
|
26
|
-
void specPassed();
|
27
|
-
void specFailed(const QString &specDetail);
|
28
|
-
void printName(const QString &name);
|
29
|
-
void printResult(const QString &result);
|
30
|
-
void finishSuite(const QString &duration, const QString &total, const QString& failed);
|
31
|
-
private slots:
|
32
|
-
void watch(bool ok);
|
33
|
-
void errorLog(const QString &msg, int lineNumber, const QString &sourceID);
|
34
|
-
void internalLog(const QString ¬e, const QString &msg);
|
35
|
-
void addJHW();
|
36
|
-
protected:
|
37
|
-
bool hasElement(const char *select);
|
38
|
-
void timerEvent(QTimerEvent *event);
|
39
|
-
private:
|
40
|
-
HeadlessSpecRunner::Page m_page;
|
41
|
-
QBasicTimer m_ticker;
|
42
|
-
int m_runs;
|
43
|
-
bool hasErrors;
|
44
|
-
bool usedConsole;
|
45
|
-
bool showColors;
|
46
|
-
bool isFinished;
|
47
|
-
bool didFail;
|
48
|
-
bool consoleNotUsedThisRun;
|
49
|
-
QQueue<QString> runnerFiles;
|
50
|
-
QString reportFilename;
|
51
|
-
QStack<QString> failedSpecs;
|
52
|
-
|
53
|
-
void red();
|
54
|
-
void green();
|
55
|
-
void yellow();
|
56
|
-
void clear();
|
57
|
-
void loadSpec();
|
58
|
-
};
|
59
|
-
}
|
60
|
-
|
61
|
-
#endif
|