gusto 1.0.0.beta8 → 1.0.0.beta9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/HtmlReport.coffee +1 -5
- data/lib/Spec/RootSuite.coffee +8 -0
- data/lib/Spec.coffee +1 -0
- data/lib/gusto/cli_renderer.rb +74 -0
- data/lib/gusto/server.rb +1 -0
- data/lib/gusto/version.rb +1 -1
- data/lib/gusto.rb +23 -17
- data/views/index.slim +6 -5
- metadata +4 -17
- data/public/jquery-1.10.2.js +0 -9789
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4401a2967b016a74b76bc70b3c81e299f04436a
|
4
|
+
data.tar.gz: a266269b65fdbd960acd872992133bcdb65c135d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bb1ec2b810205bbd1fb371d137ccae69951315a66b6260fa5f33ada1cdadaa3539f0ca9f763d3ed2d75910dc44ddb5ad0fe292a1854887d2c96355731a866ee
|
7
|
+
data.tar.gz: 59a1f8d9caa50163d5bd8925217feffe97b6055fcfe2e221d247eb58b0deab0d13cc376c871591cd1828775a66e8bf2cddc407de33b35c3ac27f6ea0085c80d7
|
data/lib/HtmlReport.coffee
CHANGED
data/lib/Spec.coffee
CHANGED
@@ -0,0 +1,74 @@
|
|
1
|
+
module Gusto
|
2
|
+
class CliRenderer
|
3
|
+
PASSED = 0
|
4
|
+
PENDING = 1
|
5
|
+
FAILED = 2
|
6
|
+
|
7
|
+
attr :root_report
|
8
|
+
|
9
|
+
def initialize(root_report)
|
10
|
+
@root_report = root_report
|
11
|
+
end
|
12
|
+
|
13
|
+
def render
|
14
|
+
[body, footer].compact.reject(&:empty?).join("\n\n")
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def body
|
20
|
+
root_report['subreports'].map do |subreport|
|
21
|
+
report_and_subreport_results subreport
|
22
|
+
end.flatten.join "\n"
|
23
|
+
end
|
24
|
+
|
25
|
+
def report_and_subreport_results(report)
|
26
|
+
[report_result(report)] + report['subreports'].map do |subreport|
|
27
|
+
indented_report_and_subreport_results(subreport)
|
28
|
+
end.flatten
|
29
|
+
end
|
30
|
+
|
31
|
+
def indented_report_and_subreport_results(report)
|
32
|
+
report_and_subreport_results(report).map do |result|
|
33
|
+
" #{result}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def report_result(report)
|
38
|
+
result_color report['status'], report['title']
|
39
|
+
end
|
40
|
+
|
41
|
+
def footer
|
42
|
+
result_color root_report['status'], "#{total} total, #{passed} passed, #{pending} pending, #{failed} failed"
|
43
|
+
end
|
44
|
+
|
45
|
+
def total
|
46
|
+
root_report['counts'].inject(0, &:+)
|
47
|
+
end
|
48
|
+
|
49
|
+
def passed
|
50
|
+
root_report['counts'][PASSED]
|
51
|
+
end
|
52
|
+
|
53
|
+
def pending
|
54
|
+
root_report['counts'][PENDING]
|
55
|
+
end
|
56
|
+
|
57
|
+
def failed
|
58
|
+
root_report['counts'][FAILED]
|
59
|
+
end
|
60
|
+
|
61
|
+
def result_color(result, string)
|
62
|
+
case result
|
63
|
+
when PASSED
|
64
|
+
"\e[32m#{string}\e[0m"
|
65
|
+
when PENDING
|
66
|
+
"\e[33m#{string}\e[0m"
|
67
|
+
when FAILED
|
68
|
+
"\e[31m#{string}\e[0m"
|
69
|
+
else
|
70
|
+
string
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/lib/gusto/server.rb
CHANGED
data/lib/gusto/version.rb
CHANGED
data/lib/gusto.rb
CHANGED
@@ -7,10 +7,15 @@ require 'rack'
|
|
7
7
|
require 'json'
|
8
8
|
require File.join(File.dirname(__FILE__), 'gusto', 'version')
|
9
9
|
|
10
|
+
|
10
11
|
module Gusto
|
11
12
|
autoload :Configuration, File.join(File.dirname(__FILE__), 'gusto', 'configuration')
|
12
13
|
autoload :Server, File.join(File.dirname(__FILE__), 'gusto', 'server')
|
13
14
|
autoload :Sprockets, File.join(File.dirname(__FILE__), 'gusto', 'sprockets')
|
15
|
+
autoload :CliRenderer, File.join(File.dirname(__FILE__), 'gusto', 'cli_renderer')
|
16
|
+
|
17
|
+
HEADLESS_RUNNER_PATH = File.realpath(
|
18
|
+
File.join(File.dirname(__FILE__), '..', 'phantom', 'headless_runner.js'))
|
14
19
|
|
15
20
|
class << self
|
16
21
|
def root
|
@@ -33,35 +38,36 @@ module Gusto
|
|
33
38
|
|
34
39
|
def cli
|
35
40
|
trap_sigint
|
36
|
-
spawn_server
|
37
|
-
result = run_suite
|
41
|
+
spawn_server(quiet: true)
|
42
|
+
result = run_suite?
|
38
43
|
shut_down(result ? 0 : 1)
|
39
44
|
end
|
40
45
|
|
41
46
|
def autotest
|
42
47
|
trap_sigint
|
43
48
|
spawn_server
|
44
|
-
run_suite
|
49
|
+
run_suite?
|
45
50
|
watch_for_changes
|
46
51
|
Process.waitall
|
47
52
|
end
|
48
53
|
|
49
|
-
def spawn_server
|
50
|
-
@server = Process.fork
|
54
|
+
def spawn_server(options={})
|
55
|
+
@server = Process.fork do
|
56
|
+
if options[:quiet]
|
57
|
+
$stdout.reopen "/dev/null", "w"
|
58
|
+
$stderr.reopen "/dev/null", "w"
|
59
|
+
end
|
60
|
+
$0 = 'gusto server'
|
61
|
+
Server.start
|
62
|
+
end
|
51
63
|
wait_for_server_at(root_url)
|
52
64
|
end
|
53
65
|
|
54
|
-
def run_suite
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
@browser = Selenium::WebDriver.for :firefox, profile: Selenium::WebDriver::Firefox::Profile.new
|
60
|
-
@browser.get "#{root_url}#terminal"
|
61
|
-
end
|
62
|
-
result = @browser[css: '.results'].text
|
63
|
-
puts result
|
64
|
-
!!result.match('passed, 0 failed')
|
66
|
+
def run_suite?
|
67
|
+
json = `phantomjs #{Shellwords.escape HEADLESS_RUNNER_PATH} #{Configuration.port}`
|
68
|
+
report = JSON.parse json
|
69
|
+
puts CliRenderer.new(report).render
|
70
|
+
report['status'] != 2
|
65
71
|
end
|
66
72
|
|
67
73
|
def watch_for_changes
|
@@ -93,7 +99,7 @@ module Gusto
|
|
93
99
|
private
|
94
100
|
|
95
101
|
def wait_for_server_at(url)
|
96
|
-
|
102
|
+
Net::HTTP.get URI.parse(url)
|
97
103
|
rescue Errno::ECONNREFUSED
|
98
104
|
sleep 1
|
99
105
|
retry
|
data/views/index.slim
CHANGED
@@ -11,8 +11,9 @@ head
|
|
11
11
|
== javascript_tag(script) + "\n"
|
12
12
|
|
13
13
|
body
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
- unless @headless
|
15
|
+
javascript:
|
16
|
+
$(function() {
|
17
|
+
window.report = new HtmlReport(document.body);
|
18
|
+
report.run();
|
19
|
+
});
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gusto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Cohen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coffee-script
|
@@ -108,20 +108,6 @@ dependencies:
|
|
108
108
|
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: selenium-webdriver
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :runtime
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '>='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: listen
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,6 +142,7 @@ files:
|
|
156
142
|
- lib/gusto/configuration.rb
|
157
143
|
- lib/gusto/version.rb
|
158
144
|
- lib/gusto/server.rb
|
145
|
+
- lib/gusto/cli_renderer.rb
|
159
146
|
- lib/gusto/runner.rb
|
160
147
|
- lib/Spec/Matchers.coffee
|
161
148
|
- lib/Spec/Mock.coffee
|
@@ -165,12 +152,12 @@ files:
|
|
165
152
|
- lib/Spec/DSL.coffee
|
166
153
|
- lib/Spec/Report.coffee
|
167
154
|
- lib/Spec/Test.coffee
|
155
|
+
- lib/Spec/RootSuite.coffee
|
168
156
|
- lib/Spec/Util.coffee
|
169
157
|
- lib/Spec/Suite.coffee
|
170
158
|
- lib/Spec/DelayedExpectation.coffee
|
171
159
|
- public/jsdiff.js
|
172
160
|
- public/ie.js
|
173
|
-
- public/jquery-1.10.2.js
|
174
161
|
- public/jquery-1.5.2.js
|
175
162
|
- public/stacktrace.js
|
176
163
|
- views/index.slim
|