spassky 0.1.34 → 0.1.35

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.
@@ -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