lackie 0.1.1 → 0.1.2

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/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lackie (0.1.0)
4
+ lackie (0.1.1)
5
+ json (~> 1.4.6)
5
6
  rack (~> 1.2.1)
6
7
  rest-client (~> 1.4.2)
7
8
 
@@ -10,6 +11,8 @@ GEM
10
11
  specs:
11
12
  builder (2.1.2)
12
13
  cgi_multipart_eof_fix (2.5.0)
14
+ childprocess (0.1.6)
15
+ ffi (~> 0.6.3)
13
16
  cucumber (0.10.0)
14
17
  builder (>= 2.1.2)
15
18
  diff-lcs (~> 1.1.2)
@@ -19,10 +22,13 @@ GEM
19
22
  daemons (1.0.10)
20
23
  diff-lcs (1.1.2)
21
24
  fastthread (1.0.1)
25
+ ffi (0.6.3)
26
+ rake (>= 0.8.7)
22
27
  gem_plugin (0.2.3)
23
28
  gherkin (2.3.3)
24
29
  json (~> 1.4.6)
25
30
  json (1.4.6)
31
+ json_pure (1.4.6)
26
32
  mime-types (1.16)
27
33
  mongrel (1.1.5)
28
34
  cgi_multipart_eof_fix (>= 2.4)
@@ -30,7 +36,7 @@ GEM
30
36
  fastthread (>= 1.0.1)
31
37
  gem_plugin (>= 0.2.3)
32
38
  rack (1.2.1)
33
- relevance-rcov (0.9.2.1)
39
+ rake (0.8.7)
34
40
  rest-client (1.4.2)
35
41
  mime-types (>= 1.16)
36
42
  rspec (2.2.0)
@@ -41,6 +47,12 @@ GEM
41
47
  rspec-expectations (2.3.0)
42
48
  diff-lcs (~> 1.1.2)
43
49
  rspec-mocks (2.3.0)
50
+ rubyzip (0.9.4)
51
+ selenium-webdriver (0.1.2)
52
+ childprocess (~> 0.1.5)
53
+ ffi (~> 0.6.3)
54
+ json_pure
55
+ rubyzip
44
56
  term-ansicolor (1.0.5)
45
57
 
46
58
  PLATFORMS
@@ -49,9 +61,10 @@ PLATFORMS
49
61
  DEPENDENCIES
50
62
  bundler (~> 1.0.7)
51
63
  cucumber (~> 0.10.0)
64
+ json (~> 1.4.6)
52
65
  lackie!
53
66
  mongrel (~> 1.1.5)
54
67
  rack (~> 1.2.1)
55
- relevance-rcov (~> 0.9.2.1)
56
68
  rest-client (~> 1.4.2)
57
69
  rspec (~> 2.2.0)
70
+ selenium-webdriver (~> 0.1.2)
data/lackie.gemspec CHANGED
@@ -11,13 +11,14 @@ Gem::Specification.new do |s|
11
11
  s.email = 'joshuachisholm@gmail.com'
12
12
  s.homepage = 'http://github.com/joshski/lackie'
13
13
 
14
+ s.add_dependency 'json', '~> 1.4.6'
14
15
  s.add_dependency 'rack', '~> 1.2.1'
15
16
  s.add_dependency 'rest-client', '~> 1.4.2'
16
17
 
17
18
  s.add_development_dependency 'rspec', '~> 2.2.0'
18
19
  s.add_development_dependency 'cucumber', '~> 0.10.0'
19
20
  s.add_development_dependency 'mongrel', '~> 1.1.5'
20
- s.add_development_dependency 'relevance-rcov', '~> 0.9.2.1'
21
+ #s.add_development_dependency 'relevance-rcov', '~> 0.9.2.1'
21
22
  s.add_development_dependency 'selenium-webdriver', '~> 0.1.2'
22
23
 
23
24
  s.rubygems_version = "1.3.7"
@@ -1,6 +1,7 @@
1
1
  Lackie = {
2
2
  wip: false,
3
3
  enabled: true,
4
+ baseUrl: "/lackie",
4
5
 
5
6
  createXMLHttpRequest: function() {
6
7
  try { return new XMLHttpRequest(); } catch(e) {}
@@ -26,7 +27,7 @@ Lackie = {
26
27
  } catch(e) {}
27
28
  }
28
29
  }
29
- xhReq.open("GET", "/lackie/yield", true);
30
+ xhReq.open("GET", Lackie.baseUrl + "/yield", true);
30
31
  xhReq.onreadystatechange = readyStateChange;
31
32
  xhReq.send(null);
32
33
  },
@@ -34,7 +35,7 @@ Lackie = {
34
35
  result: function(value) {
35
36
  var xhReq = Lackie.createXMLHttpRequest();
36
37
  var params = JSON.stringify(value);
37
- xhReq.open("POST", "/lackie/result", true);
38
+ xhReq.open("POST", Lackie.baseUrl + "/result", true);
38
39
  xhReq.setRequestHeader("Content-type", "application/json");
39
40
  xhReq.setRequestHeader("Content-length", params.length);
40
41
  xhReq.setRequestHeader("Connection", "close");
data/lib/lackie/poller.rb CHANGED
@@ -6,9 +6,10 @@ module Lackie
6
6
  @sleeper = options.delete(:sleeper) || Kernel
7
7
  end
8
8
 
9
- def await(outcome)
9
+ def await(outcome, options={})
10
10
  seconds_waited = 0
11
- while seconds_waited <= @timeout_seconds
11
+ timeout_seconds = options[:timeout_seconds] || @timeout_seconds
12
+ while seconds_waited <= timeout_seconds
12
13
  return if yield
13
14
  @sleeper.sleep @interval_seconds
14
15
  seconds_waited += @interval_seconds
@@ -4,7 +4,6 @@ module Lackie
4
4
  module Rack
5
5
  class Middleware
6
6
  def initialize(app)
7
- #puts "MIDDLEWARE CREATED"
8
7
  @app = app
9
8
  @command = nil
10
9
  @result = nil
@@ -12,9 +12,9 @@ module Lackie
12
12
  exec("Lackie.log(#{message.to_json})")
13
13
  end
14
14
 
15
- def exec(command)
15
+ def exec(command, options={})
16
16
  send_command(command)
17
- poll_for_result(command)
17
+ poll_for_result(command, options)
18
18
  end
19
19
 
20
20
  private
@@ -28,9 +28,9 @@ module Lackie
28
28
  end
29
29
  end
30
30
 
31
- def poll_for_result(command)
31
+ def poll_for_result(command, options={})
32
32
  body = nil
33
- @poller.await("result of command:\n#{command}") do
33
+ @poller.await("result of command:\n#{command}", options) do
34
34
  body = retrieve_result_body
35
35
  !body.nil?
36
36
  end
data/lib/lackie.rb CHANGED
@@ -2,7 +2,7 @@ lib = File.dirname(__FILE__)
2
2
  $:.unshift(lib) unless $:.include?(lib) || $:.include?(File.expand_path(lib))
3
3
 
4
4
  module Lackie
5
- VERSION = '0.1.1'
5
+ VERSION = '0.1.2'
6
6
  end
7
7
 
8
8
  require 'lackie/remote_control'
@@ -3,7 +3,7 @@ require 'lackie/poller'
3
3
 
4
4
  module Lackie
5
5
  describe Poller do
6
- it "sleeps for a sepecified number of seconds between yields, until the block returns true" do
6
+ it "sleeps for a default number of seconds between yields, until the block returns true" do
7
7
  Kernel.should_receive(:sleep).with(0.666).exactly(:twice)
8
8
  return_values = [false, false, true]
9
9
  Poller.new(:interval_seconds => 0.666).await("foo") do
@@ -12,7 +12,7 @@ module Lackie
12
12
  return_values.should be_empty
13
13
  end
14
14
 
15
- it "gives up after a specified number of seconds" do
15
+ it "gives up after a default number of seconds" do
16
16
  Kernel.stub!(:sleep)
17
17
  poller = Poller.new(:timeout_seconds => 2.5)
18
18
  lambda {
@@ -22,6 +22,17 @@ module Lackie
22
22
  }.should raise_error("Timed out after 2.5 seconds awaiting foo")
23
23
  end
24
24
 
25
+ it "accepts an optional, ad-hoc timeout" do
26
+ poller = Poller.new(:interval_seconds => 1.1, :timeout_seconds => 100)
27
+ Kernel.should_receive(:sleep).with(1.1).exactly(:twice)
28
+ begin
29
+ poller.await("something", :timeout_seconds => 2) {
30
+ false
31
+ }
32
+ rescue
33
+ end
34
+ end
35
+
25
36
  it "uses a different sleeper when Kernel is not convenient" do
26
37
  sleeper = mock("sleeper")
27
38
  sleeper.should_receive(:sleep).with(0.999).exactly(:twice)
@@ -33,6 +33,16 @@ module Lackie
33
33
  responses.should be_empty
34
34
  end
35
35
 
36
+ it "waits for a default number of seconds" do
37
+ @poller.should_receive(:await).with("result of command:\nfoo", {}).and_yield
38
+ @rc.exec("foo")
39
+ end
40
+
41
+ it "waits for an ad-hoc number of seconds" do
42
+ @poller.should_receive(:await).with("result of command:\nbar", :timeout_seconds => 666).and_yield
43
+ @rc.exec("bar", :timeout_seconds => 666)
44
+ end
45
+
36
46
  it "deserializes json results" do
37
47
  RestClient.should_receive(:get).and_return(mock("response", :body => '{"value":666}'))
38
48
  @rc.log("oops").should == 666
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lackie
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
4
+ hash: 31
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Josh Chisholm
@@ -15,13 +15,29 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-02 00:00:00 +00:00
18
+ date: 2011-01-06 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rack
22
+ name: json
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 11
30
+ segments:
31
+ - 1
32
+ - 4
33
+ - 6
34
+ version: 1.4.6
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rack
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
25
41
  none: false
26
42
  requirements:
27
43
  - - ~>
@@ -33,11 +49,11 @@ dependencies:
33
49
  - 1
34
50
  version: 1.2.1
35
51
  type: :runtime
36
- version_requirements: *id001
52
+ version_requirements: *id002
37
53
  - !ruby/object:Gem::Dependency
38
54
  name: rest-client
39
55
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
41
57
  none: false
42
58
  requirements:
43
59
  - - ~>
@@ -49,11 +65,11 @@ dependencies:
49
65
  - 2
50
66
  version: 1.4.2
51
67
  type: :runtime
52
- version_requirements: *id002
68
+ version_requirements: *id003
53
69
  - !ruby/object:Gem::Dependency
54
70
  name: rspec
55
71
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
72
+ requirement: &id004 !ruby/object:Gem::Requirement
57
73
  none: false
58
74
  requirements:
59
75
  - - ~>
@@ -65,11 +81,11 @@ dependencies:
65
81
  - 0
66
82
  version: 2.2.0
67
83
  type: :development
68
- version_requirements: *id003
84
+ version_requirements: *id004
69
85
  - !ruby/object:Gem::Dependency
70
86
  name: cucumber
71
87
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
88
+ requirement: &id005 !ruby/object:Gem::Requirement
73
89
  none: false
74
90
  requirements:
75
91
  - - ~>
@@ -81,11 +97,11 @@ dependencies:
81
97
  - 0
82
98
  version: 0.10.0
83
99
  type: :development
84
- version_requirements: *id004
100
+ version_requirements: *id005
85
101
  - !ruby/object:Gem::Dependency
86
102
  name: mongrel
87
103
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
104
+ requirement: &id006 !ruby/object:Gem::Requirement
89
105
  none: false
90
106
  requirements:
91
107
  - - ~>
@@ -97,23 +113,6 @@ dependencies:
97
113
  - 5
98
114
  version: 1.1.5
99
115
  type: :development
100
- version_requirements: *id005
101
- - !ruby/object:Gem::Dependency
102
- name: relevance-rcov
103
- prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- hash: 13
110
- segments:
111
- - 0
112
- - 9
113
- - 2
114
- - 1
115
- version: 0.9.2.1
116
- type: :development
117
116
  version_requirements: *id006
118
117
  - !ruby/object:Gem::Dependency
119
118
  name: selenium-webdriver
@@ -195,10 +194,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
194
  requirements: []
196
195
 
197
196
  rubyforge_project:
198
- rubygems_version: 1.3.7
197
+ rubygems_version: 1.4.1
199
198
  signing_key:
200
199
  specification_version: 3
201
- summary: lackie-0.1.1
200
+ summary: lackie-0.1.2
202
201
  test_files:
203
202
  - features/remote_control.feature
204
203
  - features/step_definitions/lackie_steps.rb