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.
Files changed (78) hide show
  1. data/.gitignore +3 -0
  2. data/Gemfile +3 -1
  3. data/Guardfile +7 -2
  4. data/Rakefile +1 -0
  5. data/bin/jasmine-headless-webkit +15 -2
  6. data/ext/jasmine-webkit-specrunner/ConsoleOutput.cpp +140 -0
  7. data/ext/jasmine-webkit-specrunner/ConsoleOutput.h +38 -0
  8. data/ext/jasmine-webkit-specrunner/ConsoleOutput_test.cpp +129 -0
  9. data/ext/jasmine-webkit-specrunner/ConsoleOutput_test.h +32 -0
  10. data/ext/jasmine-webkit-specrunner/ConsoleOutput_test.pro +7 -0
  11. data/ext/jasmine-webkit-specrunner/Makefile.dummy +5 -0
  12. data/ext/jasmine-webkit-specrunner/{HeadlessSpecRunner/Page.cpp → Page.cpp} +3 -4
  13. data/ext/jasmine-webkit-specrunner/{HeadlessSpecRunner/Page.h → Page.h} +0 -2
  14. data/ext/jasmine-webkit-specrunner/Page_test.cpp +43 -0
  15. data/ext/jasmine-webkit-specrunner/Page_test.h +27 -0
  16. data/ext/jasmine-webkit-specrunner/Page_test.pro +6 -0
  17. data/ext/jasmine-webkit-specrunner/ReportFileOutput.cpp +54 -0
  18. data/ext/jasmine-webkit-specrunner/ReportFileOutput.h +37 -0
  19. data/ext/jasmine-webkit-specrunner/ReportFileOutput_test.cpp +88 -0
  20. data/ext/jasmine-webkit-specrunner/ReportFileOutput_test.h +26 -0
  21. data/ext/jasmine-webkit-specrunner/ReportFileOutput_test.pro +7 -0
  22. data/ext/jasmine-webkit-specrunner/Runner.cpp +211 -0
  23. data/ext/jasmine-webkit-specrunner/Runner.h +66 -0
  24. data/ext/jasmine-webkit-specrunner/common.pri +9 -0
  25. data/ext/jasmine-webkit-specrunner/extconf.rb +3 -1
  26. data/ext/jasmine-webkit-specrunner/jasmine-webkit-specrunner.pro +19 -0
  27. data/ext/jasmine-webkit-specrunner/specrunner.cpp +5 -3
  28. data/ext/jasmine-webkit-specrunner/specrunner.pro +3 -7
  29. data/ext/jasmine-webkit-specrunner/test.pri +3 -0
  30. data/ext/jasmine-webkit-specrunner/test.rb +24 -0
  31. data/jasmine/jasmine.headless-reporter.coffee +47 -15
  32. data/jasmine/jasmine.headless-reporter.js +42 -17
  33. data/jasmine-headless-webkit.gemspec +2 -2
  34. data/js-lib/beautify-html.js +463 -0
  35. data/js-lib/jsDump.js +209 -0
  36. data/lib/jasmine/files_list.rb +35 -64
  37. data/lib/jasmine/headless/cacheable_action.rb +77 -0
  38. data/lib/jasmine/headless/coffee_script_cache.rb +20 -0
  39. data/lib/jasmine/headless/errors.rb +1 -0
  40. data/lib/jasmine/headless/options.rb +14 -2
  41. data/lib/jasmine/headless/railtie.rb +0 -2
  42. data/lib/jasmine/headless/report.rb +76 -0
  43. data/lib/jasmine/headless/report_message/console.rb +20 -0
  44. data/lib/jasmine/headless/report_message/error.rb +20 -0
  45. data/lib/jasmine/headless/report_message/fail.rb +5 -0
  46. data/lib/jasmine/headless/report_message/pass.rb +5 -0
  47. data/lib/jasmine/headless/report_message/spec.rb +30 -0
  48. data/lib/jasmine/headless/report_message/total.rb +31 -0
  49. data/lib/jasmine/headless/report_message.rb +11 -0
  50. data/lib/jasmine/headless/runner.rb +2 -6
  51. data/lib/jasmine/headless/spec_file_analyzer.rb +37 -0
  52. data/lib/jasmine/headless/task.rb +0 -2
  53. data/lib/jasmine/headless/version.rb +5 -0
  54. data/lib/jasmine/template_writer.rb +17 -2
  55. data/lib/jasmine-headless-webkit.rb +15 -2
  56. data/lib/qt/qmake.rb +61 -30
  57. data/script/gemfile +11 -0
  58. data/script/hooks/pre-commit +15 -0
  59. data/script/initialize-environment +35 -0
  60. data/script/install-git-hooks +6 -0
  61. data/spec/bin/jasmine-headless-webkit_spec.rb +10 -0
  62. data/spec/javascripts/jasmine.headless-reporter_spec.coffee +63 -5
  63. data/spec/lib/jasmine/files_list_spec.rb +37 -116
  64. data/spec/lib/jasmine/headless/cacheable_action_spec.rb +89 -0
  65. data/spec/lib/jasmine/headless/coffee_script_cache_spec.rb +21 -0
  66. data/spec/lib/jasmine/headless/options_spec.rb +3 -5
  67. data/spec/lib/jasmine/headless/report_message/spec_spec.rb +20 -0
  68. data/spec/lib/jasmine/headless/report_spec.rb +79 -0
  69. data/spec/lib/jasmine/headless/runner_spec.rb +5 -1
  70. data/spec/lib/jasmine/headless/spec_file_analyzer_spec.rb +57 -0
  71. data/spec/lib/qt/qmake_spec.rb +15 -2
  72. data/spec/spec_helper.rb +35 -22
  73. metadata +109 -19
  74. data/ext/jasmine-webkit-specrunner/HeadlessSpecRunner/ConsoleOutput.cpp +0 -0
  75. data/ext/jasmine-webkit-specrunner/HeadlessSpecRunner/ConsoleOutput.h +0 -0
  76. data/ext/jasmine-webkit-specrunner/HeadlessSpecRunner/Runner.cpp +0 -270
  77. data/ext/jasmine-webkit-specrunner/HeadlessSpecRunner/Runner.h +0 -61
  78. 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.6.3
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-08-12 00:00:00.000000000Z
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: &72010180 !ruby/object:Gem::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: *72010180
27
+ version_requirements: *2158532740
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: coffee-script
29
- requirement: &72009930 !ruby/object:Gem::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: *72009930
38
+ version_requirements: *2158532200
38
39
  - !ruby/object:Gem::Dependency
39
40
  name: rainbow
40
- requirement: &72009740 !ruby/object:Gem::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: *72009740
49
+ version_requirements: *2158531820
49
50
  - !ruby/object:Gem::Dependency
50
51
  name: multi_json
51
- requirement: &72009510 !ruby/object:Gem::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: *72009510
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/HeadlessSpecRunner/ConsoleOutput.cpp
80
- - ext/jasmine-webkit-specrunner/HeadlessSpecRunner/ConsoleOutput.h
81
- - ext/jasmine-webkit-specrunner/HeadlessSpecRunner/Page.cpp
82
- - ext/jasmine-webkit-specrunner/HeadlessSpecRunner/Page.h
83
- - ext/jasmine-webkit-specrunner/HeadlessSpecRunner/Runner.cpp
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.8.6
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
@@ -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 &note, 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 &note, 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
@@ -1,7 +0,0 @@
1
- module Jasmine
2
- module Headless
3
- module Webkit
4
- VERSION = "0.6.3"
5
- end
6
- end
7
- end