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 +16 -3
- data/lackie.gemspec +2 -1
- data/lib/lackie/javascript/surrender.js +3 -2
- data/lib/lackie/poller.rb +3 -2
- data/lib/lackie/rack/middleware.rb +0 -1
- data/lib/lackie/remote_control.rb +4 -4
- data/lib/lackie.rb +1 -1
- data/spec/lackie/poller_spec.rb +13 -2
- data/spec/lackie/remote_control_spec.rb +10 -0
- metadata +32 -33
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
lackie (0.1.
|
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
|
-
|
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", "/
|
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", "/
|
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
|
-
|
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
|
@@ -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
data/spec/lackie/poller_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'lackie/poller'
|
|
3
3
|
|
4
4
|
module Lackie
|
5
5
|
describe Poller do
|
6
|
-
it "sleeps for a
|
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
|
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.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-
|
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:
|
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: *
|
52
|
+
version_requirements: *id002
|
37
53
|
- !ruby/object:Gem::Dependency
|
38
54
|
name: rest-client
|
39
55
|
prerelease: false
|
40
|
-
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: *
|
68
|
+
version_requirements: *id003
|
53
69
|
- !ruby/object:Gem::Dependency
|
54
70
|
name: rspec
|
55
71
|
prerelease: false
|
56
|
-
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: *
|
84
|
+
version_requirements: *id004
|
69
85
|
- !ruby/object:Gem::Dependency
|
70
86
|
name: cucumber
|
71
87
|
prerelease: false
|
72
|
-
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: *
|
100
|
+
version_requirements: *id005
|
85
101
|
- !ruby/object:Gem::Dependency
|
86
102
|
name: mongrel
|
87
103
|
prerelease: false
|
88
|
-
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.
|
197
|
+
rubygems_version: 1.4.1
|
199
198
|
signing_key:
|
200
199
|
specification_version: 3
|
201
|
-
summary: lackie-0.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
|