spassky 0.1.0 → 0.1.1
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.
- data/.gitignore +1 -0
- data/Gemfile.lock +10 -0
- data/examples/qunit-failing/main.js +11 -0
- data/examples/qunit-failing/qunit.js +1512 -0
- data/examples/qunit-failing/suite.html +9 -0
- data/examples/qunit-passing/main.js +11 -0
- data/examples/qunit-passing/qunit.js +1512 -0
- data/examples/qunit-passing/suite.html +9 -0
- data/features/connection.feature +2 -2
- data/features/device_timeout.feature +4 -4
- data/features/list_devices.feature +21 -0
- data/features/run_html_tests.feature +9 -0
- data/features/run_qunit_tests.feature +49 -19
- data/features/server.feature +2 -5
- data/features/step_definitions/steps.rb +13 -19
- data/lib/spassky/client/cli.rb +9 -2
- data/lib/spassky/client/device_list_retriever.rb +15 -0
- data/lib/spassky/client/pusher.rb +3 -0
- data/lib/spassky/server/app.rb +24 -8
- data/lib/spassky/server/device_database.rb +39 -0
- data/lib/spassky/server/device_list.rb +8 -5
- data/lib/spassky/test_result.rb +15 -15
- data/lib/spassky/version.rb +1 -1
- data/spassky.gemspec +2 -0
- data/spec/spassky/client/cli_spec.rb +26 -0
- data/spec/spassky/client/device_list_retriever_spec.rb +18 -0
- data/spec/spassky/client/pusher_spec.rb +10 -0
- data/spec/spassky/client/test_runner_spec.rb +11 -19
- data/spec/spassky/server/app_spec.rb +40 -10
- data/spec/spassky/server/device_database_spec.rb +76 -0
- data/spec/spassky/server/device_list_spec.rb +19 -16
- data/spec/spassky/test_result_spec.rb +14 -14
- metadata +56 -20
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
|
3
2
|
require 'capybara'
|
4
3
|
require 'capybara/dsl'
|
5
4
|
require 'rack/test'
|
@@ -14,6 +13,7 @@ module Spassky::Server
|
|
14
13
|
|
15
14
|
before do
|
16
15
|
RandomStringGenerator.stub!(:random_string).and_return("random-string")
|
16
|
+
header "User-Agent", "some user agent"
|
17
17
|
end
|
18
18
|
|
19
19
|
def app
|
@@ -33,11 +33,24 @@ module Spassky::Server
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
describe "GET /devices/list" do
|
37
|
+
it "returns a list of devices" do
|
38
|
+
devices = ["iphone", "nokia"]
|
39
|
+
device_list.should_receive(:recently_connected_devices).and_return(devices)
|
40
|
+
get "/devices/list"
|
41
|
+
last_response.body.should == devices.to_json
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
36
45
|
describe "GET /device/idle/123" do
|
46
|
+
before do
|
47
|
+
@device_database = mock :device_database
|
48
|
+
SingletonDeviceDatabase.stub!(:instance).and_return(@device_database)
|
49
|
+
@device_database.stub!(:device_identifier).and_return("anything")
|
50
|
+
end
|
37
51
|
|
38
|
-
it "tells the device list that the device connected" do
|
39
|
-
device_list.should_receive(:update_last_connected).with("
|
40
|
-
header "User-Agent", "some user agent"
|
52
|
+
it "tells the device list that the device connected using the device identifier" do
|
53
|
+
device_list.should_receive(:update_last_connected).with("anything")
|
41
54
|
get "/device/idle/123"
|
42
55
|
end
|
43
56
|
|
@@ -56,8 +69,7 @@ module Spassky::Server
|
|
56
69
|
test = mock(:test, :contents => "test contents")
|
57
70
|
test.stub!(:id).and_return("the-test-id")
|
58
71
|
test.stub!(:name).and_return("the-test-name")
|
59
|
-
TestRun.stub!(:find_next_to_run_for_user_agent).with("
|
60
|
-
header "User-Agent", "some user agent"
|
72
|
+
TestRun.stub!(:find_next_to_run_for_user_agent).with("anything").and_return(test)
|
61
73
|
get '/device/idle/123'
|
62
74
|
last_response.should be_redirect
|
63
75
|
last_response.location.should == 'http://example.org/test_runs/the-test-id/run/a-random-string/the-test-name'
|
@@ -69,8 +81,7 @@ module Spassky::Server
|
|
69
81
|
it "saves the test result" do
|
70
82
|
test = mock(:test)
|
71
83
|
TestRun.stub!(:find).with('123').and_return(test)
|
72
|
-
|
73
|
-
test.should_receive(:save_results_for_user_agent).with(:user_agent => "the user agent", :status => "pass")
|
84
|
+
test.should_receive(:save_results_for_user_agent).with(:user_agent => "some user agent", :status => "pass")
|
74
85
|
get "/test_runs/123/run/random/assert?status=pass"
|
75
86
|
end
|
76
87
|
end
|
@@ -88,7 +99,6 @@ module Spassky::Server
|
|
88
99
|
it "returns the specified file" do
|
89
100
|
test = mock(:test, :name => "fake_test.html.file", :contents => @test_contents)
|
90
101
|
TestRun.stub!(:find).with('123').and_return(test)
|
91
|
-
header "User-Agent", "some user agent"
|
92
102
|
get "/test_runs/123/run/random/fake_test.html.file"
|
93
103
|
last_response.body.should include("don't choose this one")
|
94
104
|
end
|
@@ -98,7 +108,6 @@ module Spassky::Server
|
|
98
108
|
it "returns the first file that ends with .html" do
|
99
109
|
test = mock(:test, :name => "directory/test_name.html", :contents => @test_contents)
|
100
110
|
TestRun.stub!(:find).with('123').and_return(test)
|
101
|
-
header "User-Agent", "some user agent"
|
102
111
|
get "/test_runs/123/run/random/not_a_file"
|
103
112
|
last_response.body.should include("actual test!")
|
104
113
|
end
|
@@ -136,6 +145,27 @@ module Spassky::Server
|
|
136
145
|
@test_contents = {"file1" => "file1 contents", "file2" => "file2 contents"}
|
137
146
|
end
|
138
147
|
|
148
|
+
context "no devices connected" do
|
149
|
+
before do
|
150
|
+
device_list.stub!(:recently_connected_devices).and_return([])
|
151
|
+
end
|
152
|
+
|
153
|
+
it "does not create a test run" do
|
154
|
+
TestRun.should_not_receive(:create)
|
155
|
+
post "/test_runs", { :name => "first-test", :contents => @test_contents.to_json }
|
156
|
+
end
|
157
|
+
|
158
|
+
it "halts with a 500" do
|
159
|
+
post "/test_runs", { :name => "first-test", :contents => @test_contents.to_json }
|
160
|
+
last_response.status.should == 500
|
161
|
+
end
|
162
|
+
|
163
|
+
it "displays the error" do
|
164
|
+
post "/test_runs", { :name => "first-test", :contents => @test_contents.to_json }
|
165
|
+
last_response.body.should == "There are no connected devices"
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
139
169
|
it "creates a test run" do
|
140
170
|
TestRun.should_receive(:create).with(:name => "first-test", :contents => @test_contents, :devices => ["foo", "bar"])
|
141
171
|
post "/test_runs", { :name => "first-test", :contents => @test_contents.to_json }
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require "spassky/server/device_database"
|
2
|
+
require "ostruct"
|
3
|
+
require "fakefs/safe"
|
4
|
+
|
5
|
+
module Spassky::Server
|
6
|
+
describe DeviceDatabase do
|
7
|
+
before do
|
8
|
+
WURFL.stub!(:new).and_return(nil)
|
9
|
+
RestClient.stub!(:get)
|
10
|
+
Kernel.stub!(:puts)
|
11
|
+
FakeFS.activate!
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
FakeFS.deactivate!
|
16
|
+
end
|
17
|
+
|
18
|
+
context ".new" do
|
19
|
+
it "loads up the wurfl database" do
|
20
|
+
wurfl = mock(:wurfl).as_null_object
|
21
|
+
WURFL.should_receive(:new).with("wurfl/wurfl-latest.xml.gz").and_return(wurfl)
|
22
|
+
DeviceDatabase.new
|
23
|
+
end
|
24
|
+
|
25
|
+
it "tells the user that it is going to download a new wurfl database" do
|
26
|
+
Kernel.should_receive(:puts).with("Downloading WURFL database")
|
27
|
+
File.delete(Spassky::Server::WURFL_FILE)
|
28
|
+
DeviceDatabase.new
|
29
|
+
end
|
30
|
+
|
31
|
+
it "downloads a new wurfl database if it doesn't exist" do
|
32
|
+
File.delete(Spassky::Server::WURFL_FILE)
|
33
|
+
RestClient.should_receive(:get).with(Spassky::Server::LATEST).and_return("file content")
|
34
|
+
DeviceDatabase.new
|
35
|
+
File.read(Spassky::Server::WURFL_FILE).should == "file content"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe ".device_identifier" do
|
40
|
+
subject { DeviceDatabase.new }
|
41
|
+
|
42
|
+
context "existing device" do
|
43
|
+
it "returns the device identifier" do
|
44
|
+
device = mock(:device)
|
45
|
+
device.stub!(:model_name).and_return "MODEL"
|
46
|
+
device.stub!(:id).and_return "ID"
|
47
|
+
device.stub!(:mobile_browser).and_return "BROWSER"
|
48
|
+
device.stub!(:device_os_version).and_return "OS_VERSION"
|
49
|
+
wurfl = mock(:wurfl)
|
50
|
+
wurfl.should_receive(:[]).and_return(device)
|
51
|
+
WURFL.should_receive(:new).and_return(wurfl)
|
52
|
+
subject.device_identifier("user agent").should == "MODEL (id = ID, mobile_browser = BROWSER, device_os_version = OS_VERSION)"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "device deosn't exist in the database" do
|
57
|
+
it "returns user-agent" do
|
58
|
+
wurfl = mock(:wurfl)
|
59
|
+
wurfl.should_receive(:[]).and_return(nil)
|
60
|
+
WURFL.stub!(:new).and_return(wurfl)
|
61
|
+
subject.device_identifier("user agent").should == "user agent"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context "request device that exists" do
|
67
|
+
it "returns a device" do
|
68
|
+
wurfl = mock :wurfl
|
69
|
+
device = mock :device
|
70
|
+
wurfl.stub!(:[]).and_return(device)
|
71
|
+
WURFL.stub!(:new).and_return(wurfl)
|
72
|
+
DeviceDatabase.new.device("user agent").should == (device)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -3,30 +3,33 @@ require 'spassky/server/device_list'
|
|
3
3
|
|
4
4
|
module Spassky::Server
|
5
5
|
describe DeviceList do
|
6
|
+
subject { DeviceList.new }
|
7
|
+
|
8
|
+
it "doesn't blow up when I get the recently connected devices" do
|
9
|
+
subject.recently_connected_devices.should == []
|
10
|
+
end
|
11
|
+
|
6
12
|
it "keeps track of when devices last connected" do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
list.recently_connected_devices.should == ["foo", "bar"]
|
13
|
+
subject.update_last_connected("foo")
|
14
|
+
subject.update_last_connected("bar")
|
15
|
+
subject.recently_connected_devices.should == ["foo", "bar"]
|
11
16
|
end
|
12
|
-
|
17
|
+
|
13
18
|
it "clears all devices" do
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
list.recently_connected_devices.size.should == 0
|
19
|
+
subject.update_last_connected("foo")
|
20
|
+
subject.update_last_connected("bar")
|
21
|
+
subject.clear
|
22
|
+
subject.recently_connected_devices.size.should == 0
|
19
23
|
end
|
20
|
-
|
24
|
+
|
21
25
|
it "ignores devices connected more than 3 seconds ago" do
|
22
|
-
list = DeviceList.new
|
23
26
|
now = Time.now
|
24
27
|
Time.stub!(:now).and_return(now - 3)
|
25
|
-
|
28
|
+
subject.update_last_connected("a")
|
26
29
|
Time.stub!(:now).and_return(now - 2)
|
27
|
-
|
30
|
+
subject.update_last_connected("b")
|
28
31
|
Time.stub!(:now).and_return(now)
|
29
|
-
|
32
|
+
subject.recently_connected_devices.should == ["b"]
|
30
33
|
end
|
31
34
|
end
|
32
|
-
end
|
35
|
+
end
|
@@ -8,7 +8,7 @@ module Spassky
|
|
8
8
|
TestResult.new([]).status.should == "in progress"
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
context "when one device passes" do
|
13
13
|
it "outputs a summary" do
|
14
14
|
test_result = TestResult.new([
|
@@ -25,7 +25,7 @@ module Spassky
|
|
25
25
|
Spassky::DeviceTestStatus.new('agent2', 'pass', 'test')
|
26
26
|
]).status.should == "pass"
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
it "outputs a pluralised summary" do
|
30
30
|
test_result = TestResult.new([
|
31
31
|
Spassky::DeviceTestStatus.new('agent1', 'pass', 'test'),
|
@@ -34,7 +34,7 @@ module Spassky
|
|
34
34
|
test_result.summary.should == "1 test passed on 2 devices"
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
context "when any device fails" do
|
39
39
|
it "is a fail" do
|
40
40
|
TestResult.new([
|
@@ -42,7 +42,7 @@ module Spassky
|
|
42
42
|
Spassky::DeviceTestStatus.new('agent2', 'fail', 'test')
|
43
43
|
]).status.should == "fail"
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
it "outputs a summary" do
|
47
47
|
test_result = TestResult.new([
|
48
48
|
Spassky::DeviceTestStatus.new('agent1', 'fail', 'test')
|
@@ -50,7 +50,7 @@ module Spassky
|
|
50
50
|
test_result.summary.should == "1 test failed on 1 device"
|
51
51
|
end
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
context "when any test is still in progress" do
|
55
55
|
it "is a fail" do
|
56
56
|
TestResult.new([
|
@@ -60,7 +60,7 @@ module Spassky
|
|
60
60
|
]).status.should == "in progress"
|
61
61
|
end
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
context "when 1 test times out" do
|
65
65
|
it "outputs the correct summary" do
|
66
66
|
test_result = TestResult.new([
|
@@ -68,7 +68,7 @@ module Spassky
|
|
68
68
|
])
|
69
69
|
test_result.summary.should == "1 test timed out on 1 device"
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
it "has the status 'timed out'" do
|
73
73
|
test_result = TestResult.new([
|
74
74
|
Spassky::DeviceTestStatus.new('agent1', 'timed out', 'test'),
|
@@ -77,7 +77,7 @@ module Spassky
|
|
77
77
|
test_result.status.should == "timed out"
|
78
78
|
end
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
it "can be serialized and deserialized" do
|
82
82
|
test_result = TestResult.new([Spassky::DeviceTestStatus.new('agent', 'pass', 'test')])
|
83
83
|
json = test_result.to_json
|
@@ -86,7 +86,7 @@ module Spassky
|
|
86
86
|
deserialized.device_statuses.first.user_agent.should == 'agent'
|
87
87
|
deserialized.device_statuses.first.status.should == 'pass'
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
describe "#completed_since(nil)" do
|
91
91
|
it "returns all device test results that are not in progress" do
|
92
92
|
status_1 = Spassky::DeviceTestStatus.new('agent', 'pass', 'test1')
|
@@ -96,7 +96,7 @@ module Spassky
|
|
96
96
|
test_result.completed_since(nil).should == [status_1, status_3]
|
97
97
|
end
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
describe "#completed_since(other_test_result)" do
|
101
101
|
it "returns all device test results that are no longer in progress" do
|
102
102
|
status_a1 = Spassky::DeviceTestStatus.new('agent', 'pass', 'test1')
|
@@ -105,12 +105,12 @@ module Spassky
|
|
105
105
|
status_b1 = Spassky::DeviceTestStatus.new('agent', 'pass', 'test1')
|
106
106
|
status_b2 = Spassky::DeviceTestStatus.new('agent', 'fail', 'test2')
|
107
107
|
status_b3 = Spassky::DeviceTestStatus.new('agent', 'timed out', 'test3')
|
108
|
-
|
108
|
+
|
109
109
|
test_result_before = TestResult.new([status_a1, status_a2, status_a3])
|
110
110
|
test_result_after = TestResult.new([status_b1, status_b2, status_b3])
|
111
|
-
|
111
|
+
|
112
112
|
test_result_after.completed_since(test_result_before).should == [status_b2, status_b3]
|
113
113
|
end
|
114
|
-
end
|
114
|
+
end
|
115
115
|
end
|
116
|
-
end
|
116
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spassky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,12 +11,12 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-08-
|
14
|
+
date: 2011-08-24 00:00:00.000000000 +01:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rest-client
|
19
|
-
requirement: &
|
19
|
+
requirement: &70336540979360 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: '0'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *70336540979360
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: json
|
30
|
-
requirement: &
|
30
|
+
requirement: &70336540978940 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ! '>='
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: '0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *70336540978940
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: sinatra
|
41
|
-
requirement: &
|
41
|
+
requirement: &70336540978520 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ! '>='
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
version: '0'
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *70336540978520
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: rainbow
|
52
|
-
requirement: &
|
52
|
+
requirement: &70336540978100 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
@@ -57,10 +57,21 @@ dependencies:
|
|
57
57
|
version: '0'
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *70336540978100
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: wurfl-lite
|
63
|
+
requirement: &70336540977680 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
type: :runtime
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: *70336540977680
|
61
72
|
- !ruby/object:Gem::Dependency
|
62
73
|
name: rake
|
63
|
-
requirement: &
|
74
|
+
requirement: &70336540977260 !ruby/object:Gem::Requirement
|
64
75
|
none: false
|
65
76
|
requirements:
|
66
77
|
- - ! '>='
|
@@ -68,10 +79,10 @@ dependencies:
|
|
68
79
|
version: '0'
|
69
80
|
type: :development
|
70
81
|
prerelease: false
|
71
|
-
version_requirements: *
|
82
|
+
version_requirements: *70336540977260
|
72
83
|
- !ruby/object:Gem::Dependency
|
73
84
|
name: rspec
|
74
|
-
requirement: &
|
85
|
+
requirement: &70336546051000 !ruby/object:Gem::Requirement
|
75
86
|
none: false
|
76
87
|
requirements:
|
77
88
|
- - ! '>='
|
@@ -79,10 +90,10 @@ dependencies:
|
|
79
90
|
version: '0'
|
80
91
|
type: :development
|
81
92
|
prerelease: false
|
82
|
-
version_requirements: *
|
93
|
+
version_requirements: *70336546051000
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: cucumber
|
85
|
-
requirement: &
|
96
|
+
requirement: &70336546050580 !ruby/object:Gem::Requirement
|
86
97
|
none: false
|
87
98
|
requirements:
|
88
99
|
- - ! '>='
|
@@ -90,10 +101,10 @@ dependencies:
|
|
90
101
|
version: '0'
|
91
102
|
type: :development
|
92
103
|
prerelease: false
|
93
|
-
version_requirements: *
|
104
|
+
version_requirements: *70336546050580
|
94
105
|
- !ruby/object:Gem::Dependency
|
95
106
|
name: capybara
|
96
|
-
requirement: &
|
107
|
+
requirement: &70336546050160 !ruby/object:Gem::Requirement
|
97
108
|
none: false
|
98
109
|
requirements:
|
99
110
|
- - ! '>='
|
@@ -101,10 +112,21 @@ dependencies:
|
|
101
112
|
version: '0'
|
102
113
|
type: :development
|
103
114
|
prerelease: false
|
104
|
-
version_requirements: *
|
115
|
+
version_requirements: *70336546050160
|
105
116
|
- !ruby/object:Gem::Dependency
|
106
117
|
name: aruba
|
107
|
-
requirement: &
|
118
|
+
requirement: &70336546049740 !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: *70336546049740
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: fakefs
|
129
|
+
requirement: &70336546049320 !ruby/object:Gem::Requirement
|
108
130
|
none: false
|
109
131
|
requirements:
|
110
132
|
- - ! '>='
|
@@ -112,7 +134,7 @@ dependencies:
|
|
112
134
|
version: '0'
|
113
135
|
type: :development
|
114
136
|
prerelease: false
|
115
|
-
version_requirements: *
|
137
|
+
version_requirements: *70336546049320
|
116
138
|
description: ''
|
117
139
|
email:
|
118
140
|
- andrew.vos@gmail.com
|
@@ -132,8 +154,15 @@ files:
|
|
132
154
|
- bin/spassky
|
133
155
|
- bin/spassky-server
|
134
156
|
- config.ru
|
157
|
+
- examples/qunit-failing/main.js
|
158
|
+
- examples/qunit-failing/qunit.js
|
159
|
+
- examples/qunit-failing/suite.html
|
160
|
+
- examples/qunit-passing/main.js
|
161
|
+
- examples/qunit-passing/qunit.js
|
162
|
+
- examples/qunit-passing/suite.html
|
135
163
|
- features/connection.feature
|
136
164
|
- features/device_timeout.feature
|
165
|
+
- features/list_devices.feature
|
137
166
|
- features/run_html_tests.feature
|
138
167
|
- features/run_qunit_tests.feature
|
139
168
|
- features/server.feature
|
@@ -143,6 +172,7 @@ files:
|
|
143
172
|
- lib/spassky.rb
|
144
173
|
- lib/spassky/client.rb
|
145
174
|
- lib/spassky/client/cli.rb
|
175
|
+
- lib/spassky/client/device_list_retriever.rb
|
146
176
|
- lib/spassky/client/directory_reader.rb
|
147
177
|
- lib/spassky/client/pusher.rb
|
148
178
|
- lib/spassky/client/test_runner.rb
|
@@ -150,6 +180,7 @@ files:
|
|
150
180
|
- lib/spassky/server.rb
|
151
181
|
- lib/spassky/server/app.rb
|
152
182
|
- lib/spassky/server/assert.js
|
183
|
+
- lib/spassky/server/device_database.rb
|
153
184
|
- lib/spassky/server/device_list.rb
|
154
185
|
- lib/spassky/server/html_test.rb
|
155
186
|
- lib/spassky/server/random_string_generator.rb
|
@@ -158,11 +189,13 @@ files:
|
|
158
189
|
- lib/spassky/version.rb
|
159
190
|
- spassky.gemspec
|
160
191
|
- spec/spassky/client/cli_spec.rb
|
192
|
+
- spec/spassky/client/device_list_retriever_spec.rb
|
161
193
|
- spec/spassky/client/directory_reader_spec.rb
|
162
194
|
- spec/spassky/client/pusher_spec.rb
|
163
195
|
- spec/spassky/client/test_runner_spec.rb
|
164
196
|
- spec/spassky/client/writer_spec.rb
|
165
197
|
- spec/spassky/server/app_spec.rb
|
198
|
+
- spec/spassky/server/device_database_spec.rb
|
166
199
|
- spec/spassky/server/device_list_spec.rb
|
167
200
|
- spec/spassky/server/random_string_generator_spec.rb
|
168
201
|
- spec/spassky/server/test_run_spec.rb
|
@@ -196,6 +229,7 @@ summary: ''
|
|
196
229
|
test_files:
|
197
230
|
- features/connection.feature
|
198
231
|
- features/device_timeout.feature
|
232
|
+
- features/list_devices.feature
|
199
233
|
- features/run_html_tests.feature
|
200
234
|
- features/run_qunit_tests.feature
|
201
235
|
- features/server.feature
|
@@ -203,11 +237,13 @@ test_files:
|
|
203
237
|
- features/support/env.rb
|
204
238
|
- features/support/fixtures/qunit.js
|
205
239
|
- spec/spassky/client/cli_spec.rb
|
240
|
+
- spec/spassky/client/device_list_retriever_spec.rb
|
206
241
|
- spec/spassky/client/directory_reader_spec.rb
|
207
242
|
- spec/spassky/client/pusher_spec.rb
|
208
243
|
- spec/spassky/client/test_runner_spec.rb
|
209
244
|
- spec/spassky/client/writer_spec.rb
|
210
245
|
- spec/spassky/server/app_spec.rb
|
246
|
+
- spec/spassky/server/device_database_spec.rb
|
211
247
|
- spec/spassky/server/device_list_spec.rb
|
212
248
|
- spec/spassky/server/random_string_generator_spec.rb
|
213
249
|
- spec/spassky/server/test_run_spec.rb
|