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