spassky 0.1.34 → 0.1.35

Sign up to get free protection for your applications and to get access to all the features.
@@ -81,3 +81,13 @@ Feature: Run HTML Tests
81
81
  FAIL failing.html on blackberry
82
82
  """
83
83
  And the exit status should be 1
84
+
85
+ Scenario: Failing Test with Message
86
+ Given a connected mobile device "blackberry"
87
+ When I run "spassky run failing.html <host>" with the server host
88
+ Then the output should contain:
89
+ """
90
+ FAIL failing.html on blackberry
91
+ this test should fail
92
+ """
93
+ And the exit status should be 1
@@ -31,10 +31,15 @@ module Spassky::Client
31
31
 
32
32
  def write_in_progress_status test_result
33
33
  test_result.completed_since(@previous_test_result).each do |device_test_status|
34
- write(device_test_status.status, "#{device_test_status.status.upcase} #{device_test_status.test_name} on #{device_test_status.device_id}")
34
+ write_completed_test_status device_test_status
35
35
  end
36
36
  end
37
37
 
38
+ def write_completed_test_status device_test_status
39
+ write(device_test_status.status, "#{device_test_status.status.upcase} #{device_test_status.test_name} on #{device_test_status.device_id}")
40
+ write(device_test_status.status, device_test_status.message)
41
+ end
42
+
38
43
  def write status, message
39
44
  method = status == 'pass' ? :write_passing : :write_failing
40
45
  @writer.send(method, message)
@@ -0,0 +1,20 @@
1
+ module Spassky
2
+ class DeviceTestStatus
3
+ attr_accessor :device_id, :test_name, :status, :message
4
+
5
+ def initialize(options = {})
6
+ @device_id = options[:device_id]
7
+ @test_name = options[:test_name]
8
+ @status = options[:status]
9
+ @message = options[:message]
10
+ end
11
+
12
+ def in_progress?
13
+ @status == "in progress"
14
+ end
15
+
16
+ def completed?
17
+ @status != "in progress"
18
+ end
19
+ end
20
+ end
@@ -64,7 +64,8 @@ module Spassky::Server
64
64
  get '/test_runs/:id/run/:random/assert' do
65
65
  TestRun.find(params[:id]).save_result_for_device(
66
66
  :device_identifier => get_device_identifier,
67
- :status => params[:status]
67
+ :status => params[:status],
68
+ :message => params[:message]
68
69
  )
69
70
  end
70
71
 
@@ -90,8 +91,8 @@ module Spassky::Server
90
91
 
91
92
  def idle_page
92
93
  "<html><head><meta http-equiv=\"refresh\" content=\"1; url='#{idle_url}'\"></head>" +
93
- "<body>Idle #{RandomStringGenerator.random_string}</body>" +
94
- "</html>"
94
+ "<body>Idle #{RandomStringGenerator.random_string}</body>" +
95
+ "</html>"
95
96
  end
96
97
  end
97
98
  end
@@ -28,9 +28,17 @@ module Spassky::Server
28
28
  end
29
29
 
30
30
  def device_identifier user_agent
31
- device = @wurfl[user_agent]
32
- return user_agent if device.nil?
33
- "#{device.model_name} (id = #{device.id}, mobile_browser = #{device.mobile_browser}, device_os_version = #{device.device_os_version})"
31
+ @stored_device_identifiers ||= {}
32
+
33
+ unless @stored_device_identifiers[user_agent]
34
+ device = @wurfl[user_agent]
35
+ if device.nil?
36
+ @stored_device_identifiers[user_agent] = user_agent
37
+ else
38
+ @stored_device_identifiers[user_agent] = "#{device.model_name} (id = #{device.id}, mobile_browser = #{device.mobile_browser}, device_os_version = #{device.device_os_version})"
39
+ end
40
+ end
41
+ @stored_device_identifiers[user_agent]
34
42
  end
35
43
 
36
44
  def device user_agent
@@ -2,26 +2,36 @@ module Spassky::Server
2
2
  class HtmlTest
3
3
  def initialize(contents, url, seconds)
4
4
  @contents = contents
5
- @meta_refresh_tag = "<meta http-equiv=\"refresh\" content=\"#{seconds}; url='#{url}'\">"
5
+ @url = url
6
+ @seconds = seconds
6
7
  end
7
8
 
8
9
  def get_file(name)
9
10
  file_contents = @contents[name]
10
- unless file_contents
11
- html_file = @contents.keys.find {|key| key.end_with?(".html")}
12
- file_contents = @contents[html_file]
11
+ if file_contents.nil?
12
+ file_contents = get_test_file_contents
13
13
  end
14
- file_contents.gsub('</head>', assert_js_script_tag + @meta_refresh_tag + '</head>')
14
+ add_helpers_to_html file_contents
15
15
  end
16
16
 
17
17
  private
18
18
 
19
- def assert_js_script_tag
20
- "<script type=\"text/javascript\">#{assert_js_script}</script>"
19
+ def get_test_file_contents
20
+ html_file = @contents.keys.find {|key| key.end_with?(".html")}
21
+ file_contents = @contents[html_file]
22
+ end
23
+
24
+ def add_helpers_to_html html
25
+ html.gsub('</head>', assert_js_script + meta_refresh_tag + '</head>')
21
26
  end
22
27
 
23
28
  def assert_js_script
24
- File.read(File.join(File.dirname(__FILE__), 'assert.js'))
29
+ assert_js = File.read(File.join(File.dirname(__FILE__), 'assert.js'))
30
+ "<script type=\"text/javascript\">#{assert_js}</script>"
31
+ end
32
+
33
+ def meta_refresh_tag
34
+ "<meta http-equiv=\"refresh\" content=\"#{@seconds}; url='#{@url}'\">"
25
35
  end
26
36
  end
27
37
  end
@@ -8,6 +8,7 @@ module Spassky::Server
8
8
  @name = options[:name]
9
9
  @contents = options[:contents]
10
10
  @status_by_device_id = {}
11
+ @message_by_device_id = {}
11
12
  (options[:devices] || []).each do |device|
12
13
  @status_by_device_id[device] = "in progress"
13
14
  end
@@ -22,6 +23,7 @@ module Spassky::Server
22
23
  raise "#{options[:status]} is not a valid status"
23
24
  end
24
25
  @status_by_device_id[options[:device_identifier]] = options[:status]
26
+ @message_by_device_id[options[:device_identifier]] = options[:message]
25
27
  end
26
28
 
27
29
  def update_connected_devices(device_ids)
@@ -34,7 +36,7 @@ module Spassky::Server
34
36
 
35
37
  def result
36
38
  Spassky::TestResult.new(@status_by_device_id.map { |device_id, status|
37
- Spassky::DeviceTestStatus.new(device_id, status, name)
39
+ Spassky::DeviceTestStatus.new(:device_id => device_id, :status => status, :message => @message_by_device_id[device_id], :test_name => @name)
38
40
  })
39
41
  end
40
42
 
@@ -1,4 +1,5 @@
1
1
  require 'spassky/test_result_summariser'
2
+ require 'spassky/device_test_status'
2
3
  require 'json'
3
4
 
4
5
  module Spassky
@@ -24,7 +25,6 @@ module Spassky
24
25
  end
25
26
  end
26
27
 
27
-
28
28
  def summary
29
29
  TestResultSummariser.new(@device_statuses).summary
30
30
  end
@@ -35,20 +35,24 @@ module Spassky
35
35
  :device_statuses => @device_statuses.map do |status|
36
36
  {
37
37
  :device_id => status.device_id,
38
+ :test_name => status.test_name,
38
39
  :status => status.status,
39
- :test_name => status.test_name
40
+ :message => status.message
40
41
  }
41
42
  end
42
43
  }.to_json
43
44
  end
44
45
 
45
46
  def self.from_json json
46
- parsed = JSON.parse(json)
47
- test_result = TestResult.new(
48
- parsed['device_statuses'].map do |t|
49
- DeviceTestStatus.new(t["device_id"], t["status"], t["test_name"])
50
- end
51
- )
47
+ device_test_statuses = JSON.parse(json)['device_statuses'].map do |device_test_status|
48
+ DeviceTestStatus.new({
49
+ :device_id => device_test_status["device_id"],
50
+ :test_name => device_test_status["test_name"],
51
+ :status => device_test_status["status"],
52
+ :message => device_test_status["message"]}
53
+ )
54
+ end
55
+ test_result = TestResult.new(device_test_statuses)
52
56
  end
53
57
 
54
58
  private
@@ -69,22 +73,4 @@ module Spassky
69
73
  end
70
74
  end
71
75
  end
72
-
73
- class DeviceTestStatus
74
- attr_reader :device_id, :status, :test_name
75
-
76
- def initialize(device_id, status, test_name)
77
- @device_id = device_id
78
- @status = status
79
- @test_name = test_name
80
- end
81
-
82
- def in_progress?
83
- @status == "in progress"
84
- end
85
-
86
- def completed?
87
- @status != "in progress"
88
- end
89
- end
90
76
  end
@@ -1,3 +1,3 @@
1
1
  module Spassky
2
- VERSION = '0.1.34'
2
+ VERSION = '0.1.35'
3
3
  end
data/spassky.gemspec CHANGED
@@ -32,4 +32,5 @@ Gem::Specification.new do |s|
32
32
  s.add_development_dependency 'aruba'
33
33
  s.add_development_dependency 'fakefs'
34
34
  s.add_development_dependency 'ruby-debug19'
35
+ s.add_development_dependency 'factory_girl'
35
36
  end
data/spec/factories.rb ADDED
@@ -0,0 +1,12 @@
1
+ require "spassky/device_test_status"
2
+
3
+ FactoryGirl.define do
4
+ factory :device_test_status, :class => Spassky::DeviceTestStatus do
5
+ sequence :device_id do |number|
6
+ "agent#{number}"
7
+ end
8
+ test_name "test"
9
+ status "pass"
10
+ message "test message"
11
+ end
12
+ end
@@ -15,15 +15,15 @@ module Spassky::Client
15
15
  end
16
16
 
17
17
  def in_progress_status
18
- Spassky::TestResult.new([Spassky::DeviceTestStatus.new('agent', 'in progress', 'test')]).to_json
18
+ Spassky::TestResult.new([FactoryGirl.build(:device_test_status, :status => 'in progress')]).to_json
19
19
  end
20
20
 
21
21
  def passed_status
22
- Spassky::TestResult.new([Spassky::DeviceTestStatus.new('agent', 'pass', 'test')]).to_json
22
+ Spassky::TestResult.new([FactoryGirl.build(:device_test_status)]).to_json
23
23
  end
24
24
 
25
25
  def failed_status
26
- Spassky::TestResult.new([Spassky::DeviceTestStatus.new('agent', 'fail', 'test')]).to_json
26
+ Spassky::TestResult.new([FactoryGirl.build(:device_test_status, :status => 'fail')]).to_json
27
27
  end
28
28
 
29
29
  it "pushes a test to the server" do
@@ -65,12 +65,15 @@ module Spassky::Client
65
65
  end
66
66
 
67
67
  it "yields the outcome of the test to the block" do
68
- RestClient.stub!(:get).and_return(in_progress_status, in_progress_status, passed_status)
68
+ in_progress_status1 = in_progress_status
69
+ in_progress_status2 = in_progress_status
70
+ passed_status1 = passed_status
71
+ RestClient.stub!(:get).and_return(in_progress_status1, in_progress_status2, passed_status1)
69
72
  yielded_results = []
70
73
  @pusher.push("test contents") do |result|
71
74
  yielded_results << result.to_json
72
75
  end
73
- yielded_results.should == [in_progress_status, in_progress_status, passed_status]
76
+ yielded_results.should == [in_progress_status1, in_progress_status2, passed_status1]
74
77
  end
75
78
 
76
79
  it "sleeps while looping during get requests" do
@@ -124,8 +124,8 @@ module Spassky::Client
124
124
  @test_pusher.stub!(:push).and_yield(in_progress_one).and_yield(in_progress_two)
125
125
 
126
126
  in_progress_two.stub!(:completed_since).with(in_progress_one).and_return([
127
- mock(:status_one, :status => "pass", :device_id => "ipad", :test_name => "foo"),
128
- mock(:status_one, :status => "fail", :device_id => "iphone", :test_name => "bar")
127
+ mock(:status_one, :status => "pass", :device_id => "ipad", :test_name => "foo", :message => "test_result"),
128
+ mock(:status_one, :status => "fail", :device_id => "iphone", :test_name => "bar", :message => "test_result")
129
129
  ])
130
130
 
131
131
  @writer.should_receive(:write_passing).with("PASS foo on ipad").once
@@ -134,5 +134,21 @@ module Spassky::Client
134
134
  @test_runner.run_tests("foo bar")
135
135
  end
136
136
  end
137
+
138
+ context "failed result yielded" do
139
+ it "writes out the test message" do
140
+ in_progress_one = new_in_progress_test_result
141
+ in_progress_two = new_in_progress_test_result
142
+ @test_pusher.stub!(:push).and_yield(in_progress_one).and_yield(in_progress_two)
143
+
144
+ in_progress_two.stub!(:completed_since).with(in_progress_one).and_return([
145
+ mock(:status_one, :status => "fail", :device_id => "iphone", :test_name => "bar", :message => "test result message")
146
+ ])
147
+
148
+ @writer.should_receive(:write_failing).with("test result message").once
149
+
150
+ @test_runner.run_tests("foo bar")
151
+ end
152
+ end
137
153
  end
138
154
  end
@@ -83,8 +83,12 @@ module Spassky::Server
83
83
  SingletonDeviceDatabase.stub!(:instance).and_return(@device_database)
84
84
  test = mock(:test)
85
85
  TestRun.stub!(:find).with('123').and_return(test)
86
- test.should_receive(:save_result_for_device).with(:device_identifier => "the device identifier", :status => "pass")
87
- get "/test_runs/123/run/random/assert?status=pass"
86
+ test.should_receive(:save_result_for_device).with(
87
+ :device_identifier => "the device identifier",
88
+ :status => "pass",
89
+ :message => "the_test_result_message"
90
+ )
91
+ get "/test_runs/123/run/random/assert?status=pass&message=the_test_result_message"
88
92
  end
89
93
  end
90
94
 
@@ -20,6 +20,7 @@ module Spassky::Server
20
20
  FileUtils.should_receive(:mkdir_p).with(Spassky::Server::WURFL_DIRECTORY)
21
21
  DeviceDatabase.new
22
22
  end
23
+
23
24
  it "loads up the wurfl database" do
24
25
  wurfl = mock(:wurfl).as_null_object
25
26
  WURFL.should_receive(:new).with(Spassky::Server::WURFL_FILE).and_return(wurfl)
@@ -43,6 +44,14 @@ module Spassky::Server
43
44
  describe ".device_identifier" do
44
45
  subject { DeviceDatabase.new }
45
46
 
47
+ it "only requests the device identifier once" do
48
+ wurfl = mock(:wurfl)
49
+ wurfl.should_receive(:[]).once
50
+ WURFL.should_receive(:new).and_return(wurfl)
51
+ subject.device_identifier("apples")
52
+ subject.device_identifier("apples")
53
+ end
54
+
46
55
  context "existing device" do
47
56
  it "returns the device identifier" do
48
57
  device = mock(:device)
@@ -57,7 +66,7 @@ module Spassky::Server
57
66
  end
58
67
  end
59
68
 
60
- context "device deosn't exist in the database" do
69
+ context "device doesnt't exist in the database" do
61
70
  it "returns user-agent" do
62
71
  wurfl = mock(:wurfl)
63
72
  wurfl.should_receive(:[]).and_return(nil)
@@ -94,5 +94,19 @@ module Spassky::Server
94
94
  run.result.device_statuses.first.status.should == "pass"
95
95
  run.result.device_statuses.last.status.should == "fail"
96
96
  end
97
+
98
+ it "returns device test statuses" do
99
+ run = TestRun.create({:name => "test name"})
100
+ run.save_result_for_device(
101
+ :device_identifier => "device",
102
+ :status => "pass",
103
+ :message => "the status message"
104
+ )
105
+ device_status = run.result.device_statuses.first
106
+ device_status.device_id.should == "device"
107
+ device_status.test_name.should == "test name"
108
+ device_status.status.should == "pass"
109
+ device_status.message.should == "the status message"
110
+ end
97
111
  end
98
112
  end
@@ -20,8 +20,8 @@ module Spassky
20
20
  context "when all devices pass" do
21
21
  it "is a pass" do
22
22
  TestResult.new([
23
- Spassky::DeviceTestStatus.new('agent1', 'pass', 'test'),
24
- Spassky::DeviceTestStatus.new('agent2', 'pass', 'test')
23
+ FactoryGirl.build(:device_test_status),
24
+ FactoryGirl.build(:device_test_status)
25
25
  ]).status.should == "pass"
26
26
  end
27
27
  end
@@ -29,8 +29,8 @@ module Spassky
29
29
  context "when any device fails" do
30
30
  it "is a fail" do
31
31
  TestResult.new([
32
- Spassky::DeviceTestStatus.new('agent1', 'pass', 'test'),
33
- Spassky::DeviceTestStatus.new('agent2', 'fail', 'test')
32
+ FactoryGirl.build(:device_test_status),
33
+ FactoryGirl.build(:device_test_status, :status => 'fail')
34
34
  ]).status.should == "fail"
35
35
  end
36
36
  end
@@ -38,9 +38,9 @@ module Spassky
38
38
  context "when any test is still in progress" do
39
39
  it "is a fail" do
40
40
  TestResult.new([
41
- Spassky::DeviceTestStatus.new('agent1', 'pass', 'test'),
42
- Spassky::DeviceTestStatus.new('agent2', 'fail', 'test'),
43
- Spassky::DeviceTestStatus.new('agent3', 'in progress', 'test')
41
+ FactoryGirl.build(:device_test_status),
42
+ FactoryGirl.build(:device_test_status, :status => 'fail'),
43
+ FactoryGirl.build(:device_test_status, :status => 'in progress')
44
44
  ]).status.should == "in progress"
45
45
  end
46
46
  end
@@ -48,27 +48,29 @@ module Spassky
48
48
  context "when 1 test times out" do
49
49
  it "has the status 'timed out'" do
50
50
  test_result = TestResult.new([
51
- Spassky::DeviceTestStatus.new('agent1', 'timed out', 'test'),
52
- Spassky::DeviceTestStatus.new('agent2', 'pass', 'test')
51
+ FactoryGirl.build(:device_test_status, :status => 'timed out'),
52
+ FactoryGirl.build(:device_test_status)
53
53
  ])
54
54
  test_result.status.should == "timed out"
55
55
  end
56
56
  end
57
57
 
58
58
  it "can be serialized and deserialized" do
59
- test_result = TestResult.new([Spassky::DeviceTestStatus.new('agent', 'pass', 'test')])
59
+ device_test_statuses = [FactoryGirl.build(:device_test_status)]
60
+ test_result = TestResult.new(device_test_statuses)
60
61
  json = test_result.to_json
61
62
  deserialized = TestResult.from_json(json)
62
63
  deserialized.device_statuses.size.should == 1
63
- deserialized.device_statuses.first.device_id.should == 'agent'
64
- deserialized.device_statuses.first.status.should == 'pass'
64
+ deserialized.device_statuses.first.device_id.should == device_test_statuses.first.device_id
65
+ deserialized.device_statuses.first.status.should == device_test_statuses.first.status
66
+ deserialized.device_statuses.first.message.should == device_test_statuses.first.message
65
67
  end
66
68
 
67
69
  describe "#completed_since(nil)" do
68
70
  it "returns all device test results that are not in progress" do
69
- status_1 = Spassky::DeviceTestStatus.new('agent', 'pass', 'test1')
70
- status_2 = Spassky::DeviceTestStatus.new('agent', 'in progress', 'test2')
71
- status_3 = Spassky::DeviceTestStatus.new('agent', 'fail', 'test3')
71
+ status_1 = FactoryGirl.build(:device_test_status)
72
+ status_2 = FactoryGirl.build(:device_test_status, :status => 'in progress', :test_name => 'test2')
73
+ status_3 = FactoryGirl.build(:device_test_status, :status => 'fail', :test_name => 'test3')
72
74
  test_result = TestResult.new([status_1, status_2, status_3])
73
75
  test_result.completed_since(nil).should == [status_1, status_3]
74
76
  end
@@ -76,12 +78,12 @@ module Spassky
76
78
 
77
79
  describe "#completed_since(other_test_result)" do
78
80
  it "returns all device test results that are no longer in progress" do
79
- status_a1 = Spassky::DeviceTestStatus.new('agent', 'pass', 'test1')
80
- status_a2 = Spassky::DeviceTestStatus.new('agent', 'in progress', 'test2')
81
- status_a3 = Spassky::DeviceTestStatus.new('agent', 'in progress', 'test3')
82
- status_b1 = Spassky::DeviceTestStatus.new('agent', 'pass', 'test1')
83
- status_b2 = Spassky::DeviceTestStatus.new('agent', 'fail', 'test2')
84
- status_b3 = Spassky::DeviceTestStatus.new('agent', 'timed out', 'test3')
81
+ status_a1 = FactoryGirl.build(:device_test_status, :status => 'pass', :test_name => 'test1')
82
+ status_a2 = FactoryGirl.build(:device_test_status, :status => 'in progress', :test_name => 'test2')
83
+ status_a3 = FactoryGirl.build(:device_test_status, :status => 'in progress', :test_name => 'test3')
84
+ status_b1 = FactoryGirl.build(:device_test_status, :status => 'pass', :test_name => 'test1')
85
+ status_b2 = FactoryGirl.build(:device_test_status, :status => 'fail', :test_name => 'test2')
86
+ status_b3 = FactoryGirl.build(:device_test_status, :status => 'timed out', :test_name => 'test3')
85
87
 
86
88
  test_result_before = TestResult.new([status_a1, status_a2, status_a3])
87
89
  test_result_after = TestResult.new([status_b1, status_b2, status_b3])
@@ -4,36 +4,36 @@ module Spassky
4
4
  describe TestResultSummariser do
5
5
  it "shows passing tests" do
6
6
  device_statuses = [
7
- DeviceTestStatus.new('agent1', 'pass', 'test'),
8
- DeviceTestStatus.new('agent2', 'pass', 'test')
7
+ FactoryGirl.build(:device_test_status),
8
+ FactoryGirl.build(:device_test_status)
9
9
  ]
10
10
  TestResultSummariser.new(device_statuses).summary.should == "2 passed"
11
11
  end
12
12
 
13
13
  it "shows failing tests" do
14
14
  device_statuses = [
15
- DeviceTestStatus.new('agent1', 'fail', 'test'),
16
- DeviceTestStatus.new('agent2', 'fail', 'test')
15
+ FactoryGirl.build(:device_test_status, :status => 'fail'),
16
+ FactoryGirl.build(:device_test_status, :status => 'fail')
17
17
  ]
18
18
  TestResultSummariser.new(device_statuses).summary.should == "2 failed"
19
19
  end
20
20
 
21
21
  it "shows timed out tests" do
22
22
  device_statuses = [
23
- DeviceTestStatus.new('agent1', 'timed out', 'test'),
24
- DeviceTestStatus.new('agent2', 'timed out', 'test')
23
+ FactoryGirl.build(:device_test_status, :status => 'timed out'),
24
+ FactoryGirl.build(:device_test_status, :status => 'timed out')
25
25
  ]
26
26
  TestResultSummariser.new(device_statuses).summary.should == "2 timed out"
27
27
  end
28
28
 
29
29
  it "shows failed, passed and timed out tests" do
30
30
  device_statuses = [
31
- DeviceTestStatus.new('agent1', 'pass', 'test'),
32
- DeviceTestStatus.new('agent2', 'pass', 'test'),
33
- DeviceTestStatus.new('agent3', 'fail', 'test'),
34
- DeviceTestStatus.new('agent4', 'fail', 'test'),
35
- DeviceTestStatus.new('agent5', 'timed out', 'test'),
36
- DeviceTestStatus.new('agent6', 'timed out', 'test')
31
+ FactoryGirl.build(:device_test_status, :status => 'pass'),
32
+ FactoryGirl.build(:device_test_status, :status => 'pass'),
33
+ FactoryGirl.build(:device_test_status, :status => 'fail'),
34
+ FactoryGirl.build(:device_test_status, :status => 'fail'),
35
+ FactoryGirl.build(:device_test_status, :status => 'timed out'),
36
+ FactoryGirl.build(:device_test_status, :status => 'timed out')
37
37
  ]
38
38
  TestResultSummariser.new(device_statuses).summary.should == "2 passed, 2 failed, 2 timed out"
39
39
  end
data/spec/spec_helper.rb CHANGED
@@ -2,3 +2,5 @@ ENV['RACK_ENV'] = 'test'
2
2
  $:.unshift(File.dirname(__FILE__) + '/../lib')
3
3
  $:.unshift(File.dirname(__FILE__))
4
4
  require 'spassky'
5
+ require 'factory_girl'
6
+ require 'factories'
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.34
4
+ version: 0.1.35
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-09-08 00:00:00.000000000Z
14
+ date: 2011-09-09 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client
18
- requirement: &70225077309240 !ruby/object:Gem::Requirement
18
+ requirement: &70126581990920 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70225077309240
26
+ version_requirements: *70126581990920
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
- requirement: &70225077308820 !ruby/object:Gem::Requirement
29
+ requirement: &70126581989580 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70225077308820
37
+ version_requirements: *70126581989580
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: sinatra
40
- requirement: &70225077308400 !ruby/object:Gem::Requirement
40
+ requirement: &70126581988300 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *70225077308400
48
+ version_requirements: *70126581988300
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rainbow
51
- requirement: &70225077307920 !ruby/object:Gem::Requirement
51
+ requirement: &70126581986260 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :runtime
58
58
  prerelease: false
59
- version_requirements: *70225077307920
59
+ version_requirements: *70126581986260
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: wurfl-lite
62
- requirement: &70225077307440 !ruby/object:Gem::Requirement
62
+ requirement: &70126581984940 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: '0'
68
68
  type: :runtime
69
69
  prerelease: false
70
- version_requirements: *70225077307440
70
+ version_requirements: *70126581984940
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: commandable
73
- requirement: &70225077271520 !ruby/object:Gem::Requirement
73
+ requirement: &70126581983900 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: '0'
79
79
  type: :runtime
80
80
  prerelease: false
81
- version_requirements: *70225077271520
81
+ version_requirements: *70126581983900
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: rake
84
- requirement: &70225077270840 !ruby/object:Gem::Requirement
84
+ requirement: &70126581982900 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
- version_requirements: *70225077270840
92
+ version_requirements: *70126581982900
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rspec
95
- requirement: &70225077270240 !ruby/object:Gem::Requirement
95
+ requirement: &70126581981960 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: '0'
101
101
  type: :development
102
102
  prerelease: false
103
- version_requirements: *70225077270240
103
+ version_requirements: *70126581981960
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: cucumber
106
- requirement: &70225077269620 !ruby/object:Gem::Requirement
106
+ requirement: &70126581980780 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ! '>='
@@ -111,10 +111,10 @@ dependencies:
111
111
  version: '0'
112
112
  type: :development
113
113
  prerelease: false
114
- version_requirements: *70225077269620
114
+ version_requirements: *70126581980780
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: capybara
117
- requirement: &70225077269000 !ruby/object:Gem::Requirement
117
+ requirement: &70126581979720 !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
120
120
  - - ! '>='
@@ -122,10 +122,10 @@ dependencies:
122
122
  version: '0'
123
123
  type: :development
124
124
  prerelease: false
125
- version_requirements: *70225077269000
125
+ version_requirements: *70126581979720
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: aruba
128
- requirement: &70225077268580 !ruby/object:Gem::Requirement
128
+ requirement: &70126581978220 !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
131
  - - ! '>='
@@ -133,10 +133,10 @@ dependencies:
133
133
  version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
- version_requirements: *70225077268580
136
+ version_requirements: *70126581978220
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: fakefs
139
- requirement: &70225077268160 !ruby/object:Gem::Requirement
139
+ requirement: &70126581977420 !ruby/object:Gem::Requirement
140
140
  none: false
141
141
  requirements:
142
142
  - - ! '>='
@@ -144,10 +144,10 @@ dependencies:
144
144
  version: '0'
145
145
  type: :development
146
146
  prerelease: false
147
- version_requirements: *70225077268160
147
+ version_requirements: *70126581977420
148
148
  - !ruby/object:Gem::Dependency
149
149
  name: ruby-debug19
150
- requirement: &70225077267740 !ruby/object:Gem::Requirement
150
+ requirement: &70126581976620 !ruby/object:Gem::Requirement
151
151
  none: false
152
152
  requirements:
153
153
  - - ! '>='
@@ -155,7 +155,18 @@ dependencies:
155
155
  version: '0'
156
156
  type: :development
157
157
  prerelease: false
158
- version_requirements: *70225077267740
158
+ version_requirements: *70126581976620
159
+ - !ruby/object:Gem::Dependency
160
+ name: factory_girl
161
+ requirement: &70126581975680 !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: *70126581975680
159
170
  description: ''
160
171
  email:
161
172
  - andrew.vos@gmail.com
@@ -196,6 +207,7 @@ files:
196
207
  - lib/spassky/client/pusher.rb
197
208
  - lib/spassky/client/test_runner.rb
198
209
  - lib/spassky/client/writer.rb
210
+ - lib/spassky/device_test_status.rb
199
211
  - lib/spassky/server.rb
200
212
  - lib/spassky/server/app.rb
201
213
  - lib/spassky/server/assert.js
@@ -209,6 +221,7 @@ files:
209
221
  - lib/spassky/version.rb
210
222
  - spassky.gemspec
211
223
  - spassky.jpg
224
+ - spec/factories.rb
212
225
  - spec/spassky/client/cli_spec.rb
213
226
  - spec/spassky/client/device_list_retriever_spec.rb
214
227
  - spec/spassky/client/directory_reader_spec.rb
@@ -258,6 +271,7 @@ test_files:
258
271
  - features/summary.feature
259
272
  - features/support/env.rb
260
273
  - features/support/fixtures/qunit.js
274
+ - spec/factories.rb
261
275
  - spec/spassky/client/cli_spec.rb
262
276
  - spec/spassky/client/device_list_retriever_spec.rb
263
277
  - spec/spassky/client/directory_reader_spec.rb