ghostbuster 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +16 -2
- data/ghost/test_ghostmore.coffee +5 -1
- data/lib/ghostbuster/config.rb +2 -2
- data/lib/ghostbuster/version.rb +1 -1
- data/lib/ghostbuster.coffee +18 -0
- data/lib/ghostbuster.rb +2 -2
- data/test/output +3 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -10,7 +10,7 @@ To install first `gem install ghostbuster`. Once you've done that, you can run `
|
|
10
10
|
|
11
11
|
Once installed, you can simply use `ghostbuster [path/to/Ghostfile]` to run your tests.
|
12
12
|
|
13
|
-
##
|
13
|
+
## Ghostfile
|
14
14
|
|
15
15
|
Your `Ghostfile` handles your configuration. To set the pattern use:
|
16
16
|
|
@@ -21,7 +21,7 @@ Your `Ghostfile` handles your configuration. To set the pattern use:
|
|
21
21
|
To enable (or disable) screenshots use:
|
22
22
|
|
23
23
|
~~~~
|
24
|
-
|
24
|
+
ghost.take_screenshots! # or #do_not_takescreenshots! defaults to take_screenshots!
|
25
25
|
~~~~
|
26
26
|
|
27
27
|
To set the directory your screenshots will save to use:
|
@@ -36,6 +36,20 @@ To set the dimensions for the screenshots use:
|
|
36
36
|
ghost.screenshot_dimensions 800, 2000 # x, y
|
37
37
|
~~~~
|
38
38
|
|
39
|
+
To set the command for starting your server use:
|
40
|
+
|
41
|
+
~~~~
|
42
|
+
ghost.start_command "./start.sh"
|
43
|
+
~~~~
|
44
|
+
|
45
|
+
To set the command for stopping your server use:
|
46
|
+
|
47
|
+
~~~~
|
48
|
+
ghost.stop_command "./stop.sh"
|
49
|
+
~~~~
|
50
|
+
|
51
|
+
|
52
|
+
|
39
53
|
If no Ghostfile is found, it will simply use the defaults.
|
40
54
|
|
41
55
|
You should get some output that looks something like this.
|
data/ghost/test_ghostmore.coffee
CHANGED
data/lib/ghostbuster/config.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
class Ghostbuster
|
2
2
|
class Config
|
3
|
-
|
4
|
-
attr_accessor :pattern, :screenshot_dir
|
3
|
+
attr_accessor :pattern, :screenshot_dir, :start_command, :stop_command
|
5
4
|
attr_reader :screenshot_x, :screenshot_y
|
6
5
|
def initialize(path_to_file = nil)
|
7
6
|
@config_file = path_to_file || './Ghostfile'
|
@@ -9,6 +8,7 @@ class Ghostbuster
|
|
9
8
|
@pattern = "./test_*.coffee"
|
10
9
|
@screenshot_dir = "."
|
11
10
|
@screenshots = true
|
11
|
+
@start_command, @stop_command = "./start.sh", "./stop.sh"
|
12
12
|
if File.exist?(@config_file)
|
13
13
|
instance_eval File.read(@config_file), @config_file, 1
|
14
14
|
end
|
data/lib/ghostbuster/version.rb
CHANGED
data/lib/ghostbuster.coffee
CHANGED
@@ -16,7 +16,9 @@ class Test
|
|
16
16
|
setLastError: (error) ->
|
17
17
|
@runner.lastErrors[@name] = error
|
18
18
|
waitForAssertions: (whenDone) ->
|
19
|
+
@stopTestTimer()
|
19
20
|
if @assertions.length == 0
|
21
|
+
@startTestTimer()
|
20
22
|
whenDone.call(this)
|
21
23
|
else
|
22
24
|
test = this
|
@@ -25,7 +27,18 @@ class Test
|
|
25
27
|
setTimeout waiting, 10
|
26
28
|
actuallyRun: -> true
|
27
29
|
run: (callback) ->
|
30
|
+
@startTestTimer()
|
28
31
|
@runWithFunction(@testBody, callback)
|
32
|
+
stopTestTimer: ->
|
33
|
+
if @testTimer?
|
34
|
+
clearTimeout @testTimer
|
35
|
+
@testTimer = null
|
36
|
+
startTestTimer: ->
|
37
|
+
test = this
|
38
|
+
@testTimer ||= setTimeout (->
|
39
|
+
test.setLastError("This test took too long")
|
40
|
+
test.fail()
|
41
|
+
), 5000
|
29
42
|
runWithFunction: (fn, @callback) ->
|
30
43
|
fn.call(this)
|
31
44
|
get: (path, getCallback) ->
|
@@ -43,8 +56,10 @@ class Test
|
|
43
56
|
@page.open @runner.normalizePath(path), loadedCallback
|
44
57
|
succeed: ->
|
45
58
|
@waitForAssertions ->
|
59
|
+
@stopTestTimer()
|
46
60
|
@callback(true)
|
47
61
|
fail: (msg) ->
|
62
|
+
@stopTestTimer()
|
48
63
|
@callback(false, msg)
|
49
64
|
assert: (opts, valueFetcher) ->
|
50
65
|
@assertions.push(new Assertion(this, ++@assertionIndex, opts, valueFetcher))
|
@@ -65,6 +80,7 @@ class Assertion
|
|
65
80
|
failedCallback = ->
|
66
81
|
assertion.start()
|
67
82
|
if @count == 0
|
83
|
+
test.stopTestTimer()
|
68
84
|
fatalCallback = ->
|
69
85
|
test.fail(test.getLastError() || "This assertion failed to complete.")
|
70
86
|
@fatal = setTimeout(fatalCallback, assertion.totalTime)
|
@@ -72,6 +88,7 @@ class Assertion
|
|
72
88
|
assertion.count++
|
73
89
|
if val == true
|
74
90
|
test.resetLastError()
|
91
|
+
test.startTestTimer()
|
75
92
|
test.assertions.splice(test.assertions.indexOf(assertion), 1)
|
76
93
|
clearTimeout assertion.fatal
|
77
94
|
if test.runner.useScreenshots()
|
@@ -229,6 +246,7 @@ class TestFile
|
|
229
246
|
testStates[test.name] = state
|
230
247
|
nextTest(count + 1)
|
231
248
|
catch e
|
249
|
+
test.stopTestTimer()
|
232
250
|
testFile.lastErrors[test.name] = e.toString()
|
233
251
|
testStates[test.name] = false
|
234
252
|
nextTest(count + 1)
|
data/lib/ghostbuster.rb
CHANGED
@@ -21,14 +21,14 @@ class Ghostbuster
|
|
21
21
|
status = 1
|
22
22
|
Dir.chdir(@dir) do
|
23
23
|
spinner "Starting server" do
|
24
|
-
sh
|
24
|
+
sh @config.start_command
|
25
25
|
sleep 2
|
26
26
|
end
|
27
27
|
begin
|
28
28
|
_, status = Process.waitpid2 fork { exec("#{@phantom_bin} #{@ghost_lib} #{@config.screenshots?} #{@config.screenshot_x} #{@config.screenshot_y} #{File.expand_path(@config.screenshot_dir)} #{Dir[@config.pattern].to_a.join(' ')}") }
|
29
29
|
ensure
|
30
30
|
spinner "Stopping server" do
|
31
|
-
sh
|
31
|
+
sh @config.stop_command
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
data/test/output
CHANGED
@@ -18,6 +18,8 @@ For [1mtest_ghostmore.coffee[0m
|
|
18
18
|
[32m✓[0m Before block var
|
19
19
|
[31m✗[0m This test will explode!
|
20
20
|
I hate you!
|
21
|
+
[31m✗[0m This test has no succeed
|
22
|
+
This test took too long
|
21
23
|
|
22
|
-
7 success,
|
24
|
+
7 success, 4 failure, 1 pending
|
23
25
|
Stopping server
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghostbuster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Josh Hull
|