mhennemeyer-remote_feature 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/README +0 -0
- data/lib/remote_feature.rb +80 -0
- data/remote_feature.gemspec +17 -0
- data/spec/remote_feature_spec.rb +44 -0
- metadata +63 -0
data/README
ADDED
|
File without changes
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rwriteboard'
|
|
3
|
+
require 'stringio'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class RemoteFeature
|
|
7
|
+
attr_accessor :result,
|
|
8
|
+
:writeboard,
|
|
9
|
+
:name
|
|
10
|
+
|
|
11
|
+
@@remote_features ||= []
|
|
12
|
+
|
|
13
|
+
def @@remote_features.find(hash)
|
|
14
|
+
memo = self
|
|
15
|
+
hash.each do |k,v|
|
|
16
|
+
memo = [memo.detect {|wb| wb.send(k.to_sym) == v}]
|
|
17
|
+
end
|
|
18
|
+
memo.first
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def initialize(writeboard)
|
|
22
|
+
self.writeboard = writeboard
|
|
23
|
+
self.name = writeboard.name
|
|
24
|
+
@@remote_features << self
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def run(cucumber_obj)
|
|
28
|
+
wb_body = ""
|
|
29
|
+
|
|
30
|
+
self.writeboard.logged_in do |wb|
|
|
31
|
+
wb_body = wb.get.body
|
|
32
|
+
end
|
|
33
|
+
io = StringIO.new
|
|
34
|
+
|
|
35
|
+
feature_string = wb_body.cut_runner_output
|
|
36
|
+
|
|
37
|
+
cucumber_obj.instance_eval do
|
|
38
|
+
require 'rubygems'
|
|
39
|
+
require 'cucumber'
|
|
40
|
+
require 'cucumber/treetop_parser/feature_en.rb'
|
|
41
|
+
require 'cucumber/broadcaster.rb'
|
|
42
|
+
|
|
43
|
+
Cucumber.load_language('en')
|
|
44
|
+
# coloring stuff??
|
|
45
|
+
formatters = Cucumber::Broadcaster.new [Cucumber::Formatters::ProgressFormatter.new(io)]
|
|
46
|
+
parser = Cucumber::TreetopParser::FeatureParser.new
|
|
47
|
+
feature = parser.parse(feature_string).compile
|
|
48
|
+
features = Cucumber::Tree::Features.new
|
|
49
|
+
features << feature
|
|
50
|
+
original_formatters = @executor.formatters
|
|
51
|
+
@executor.formatters = formatters
|
|
52
|
+
@executor.visit_features(features)
|
|
53
|
+
@executor.formatters = original_formatters
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
runner_output = io.string
|
|
57
|
+
self.writeboard.logged_in do |wb|
|
|
58
|
+
wb.body = feature_string + "<br /> <br /> ### RUNNER OUTPUT ### \n" + runner_output
|
|
59
|
+
wb.post_without_revision
|
|
60
|
+
end
|
|
61
|
+
self.result = runner_output.compact
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def self.run(cucumber_obj, hash)
|
|
65
|
+
unless wb = Writeboard.writeboards.find(hash)
|
|
66
|
+
Writeboard.create(hash)
|
|
67
|
+
wb = Writeboard.writeboards.find(hash)
|
|
68
|
+
end
|
|
69
|
+
rf = self.new(wb)
|
|
70
|
+
rf.run(cucumber_obj)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def self.find(hash)
|
|
74
|
+
remote_features.find(hash)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def self.remote_features
|
|
78
|
+
@@remote_features
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Gem::Specification.new do |s|
|
|
2
|
+
s.name = "remote_feature"
|
|
3
|
+
s.version = "0.1.2"
|
|
4
|
+
s.date = "2008-11-15"
|
|
5
|
+
s.summary = "Run Cucumber Features that are defined in Writeboards"
|
|
6
|
+
s.email = "mhennemeyer@gmail.com"
|
|
7
|
+
s.homepage = "http://github.com/mhennemeyer/remote_feature"
|
|
8
|
+
s.description = "Run Cucumber Features that are defined in Writeboards"
|
|
9
|
+
s.has_rdoc = false
|
|
10
|
+
s.authors = ["Matthias Hennemeyer"]
|
|
11
|
+
s.files = [
|
|
12
|
+
"README",
|
|
13
|
+
"remote_feature.gemspec",
|
|
14
|
+
"lib/remote_feature.rb"]
|
|
15
|
+
s.test_files = ["spec/remote_feature_spec.rb"]
|
|
16
|
+
s.add_dependency("rwriteboard", ["> 0.1.1"])
|
|
17
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
def cucumber_object
|
|
4
|
+
eval("$cucumber_obj", $cucumber_context)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe RemoteFeature do
|
|
8
|
+
describe ".run" do
|
|
9
|
+
it "should run the feature defined in the writeboard" do
|
|
10
|
+
feature = "Feature: FeaturesTitle\nHeader\nScenario: ScenarioTitle\n Given pending step"
|
|
11
|
+
Writeboard.create({
|
|
12
|
+
:name => "Feature One",
|
|
13
|
+
:path => "/ef4c90d8796ee361e",
|
|
14
|
+
:password => "Ql5L47DZs9SPhYj"
|
|
15
|
+
}) do |wb|
|
|
16
|
+
wb.post_without_revision(:title => "First Feature", :body => feature)
|
|
17
|
+
end
|
|
18
|
+
RemoteFeature.run(cucumber_object, {
|
|
19
|
+
:name => "Feature One",
|
|
20
|
+
:path => "/ef4c90d8796ee361e",
|
|
21
|
+
:password => "Ql5L47DZs9SPhYj"
|
|
22
|
+
})
|
|
23
|
+
rf = RemoteFeature.find(:name => "Feature One")
|
|
24
|
+
Writeboard.find(:name => "Feature One") do |wb|
|
|
25
|
+
wb.get
|
|
26
|
+
wb.body.split("### RUNNER OUTPUT ###").last.gsub(%r(\A([^P])*),"").should eql(rf.result)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe ".find(hash)" do
|
|
32
|
+
it "should return a remote feature" do
|
|
33
|
+
RemoteFeature.find(:name => "Feature One").should be_an_instance_of(RemoteFeature)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# describe "#result" do
|
|
38
|
+
# it "should return the runner output" do
|
|
39
|
+
# writeboard = mock("Writeboard", :body => "dumdidum ### RUNNER OUTPUT ### this is the result")
|
|
40
|
+
# Writeboard.should_receive(:find).and_return(writeboard)
|
|
41
|
+
# RemoteFeature.find(:name => "Name").result.should eql("this is the result")
|
|
42
|
+
# end
|
|
43
|
+
# end
|
|
44
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: mhennemeyer-remote_feature
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.2
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Matthias Hennemeyer
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
|
|
12
|
+
date: 2008-11-15 00:00:00 -08:00
|
|
13
|
+
default_executable:
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: rwriteboard
|
|
17
|
+
version_requirement:
|
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
19
|
+
requirements:
|
|
20
|
+
- - ">"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: 0.1.1
|
|
23
|
+
version:
|
|
24
|
+
description: Run Cucumber Features that are defined in Writeboards
|
|
25
|
+
email: mhennemeyer@gmail.com
|
|
26
|
+
executables: []
|
|
27
|
+
|
|
28
|
+
extensions: []
|
|
29
|
+
|
|
30
|
+
extra_rdoc_files: []
|
|
31
|
+
|
|
32
|
+
files:
|
|
33
|
+
- README
|
|
34
|
+
- remote_feature.gemspec
|
|
35
|
+
- lib/remote_feature.rb
|
|
36
|
+
has_rdoc: false
|
|
37
|
+
homepage: http://github.com/mhennemeyer/remote_feature
|
|
38
|
+
post_install_message:
|
|
39
|
+
rdoc_options: []
|
|
40
|
+
|
|
41
|
+
require_paths:
|
|
42
|
+
- lib
|
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: "0"
|
|
48
|
+
version:
|
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: "0"
|
|
54
|
+
version:
|
|
55
|
+
requirements: []
|
|
56
|
+
|
|
57
|
+
rubyforge_project:
|
|
58
|
+
rubygems_version: 1.2.0
|
|
59
|
+
signing_key:
|
|
60
|
+
specification_version: 2
|
|
61
|
+
summary: Run Cucumber Features that are defined in Writeboards
|
|
62
|
+
test_files:
|
|
63
|
+
- spec/remote_feature_spec.rb
|