belly 0.0.0 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.rdoc +1 -1
- data/Rakefile +2 -2
- data/TODO +4 -0
- data/VERSION +1 -1
- data/belly.gemspec +28 -10
- data/bin/belly +28 -0
- data/features/publish_scenario_results.feature +59 -0
- data/features/step_definitions/belly_steps.rb +19 -0
- data/features/step_definitions/cucumber_steps.rb +12 -0
- data/features/support/env.rb +9 -1
- data/features/support/fake_hub.rb +65 -0
- data/lib/belly.rb +43 -0
- data/lib/belly/cli.rb +5 -0
- data/lib/belly/cli/init.rb +15 -0
- data/lib/belly/client.rb +23 -0
- data/lib/belly/client/config.rb +40 -0
- data/lib/belly/for/cucumber.rb +12 -0
- data/lib/belly/project_initializer.rb +30 -0
- data/lib/belly/user_credentials.rb +7 -0
- data/spec/belly/project_initializer_spec.rb +47 -0
- metadata +53 -18
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
data/Rakefile
CHANGED
@@ -5,8 +5,8 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "belly"
|
8
|
-
gem.summary = %Q{Client app for the belly web service}
|
9
|
-
gem.description = %Q{Client app for the belly web service}
|
8
|
+
gem.summary = %Q{Client app for the incredible new belly web service, coming soon.}
|
9
|
+
gem.description = %Q{Client app for the incredible new belly web service, coming soon.}
|
10
10
|
gem.email = "matt@mattwynne.net"
|
11
11
|
gem.homepage = "http://github.com/mattwynne/belly-mouth"
|
12
12
|
gem.authors = ["Matt Wynne"]
|
data/TODO
ADDED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/belly.gemspec
CHANGED
@@ -1,20 +1,23 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{belly}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matt Wynne"]
|
12
|
-
s.date = %q{
|
13
|
-
s.
|
12
|
+
s.date = %q{2010-07-19}
|
13
|
+
s.default_executable = %q{belly}
|
14
|
+
s.description = %q{Client app for the incredible new belly web service, coming soon.}
|
14
15
|
s.email = %q{matt@mattwynne.net}
|
16
|
+
s.executables = ["belly"]
|
15
17
|
s.extra_rdoc_files = [
|
16
18
|
"LICENSE",
|
17
|
-
"README.rdoc"
|
19
|
+
"README.rdoc",
|
20
|
+
"TODO"
|
18
21
|
]
|
19
22
|
s.files = [
|
20
23
|
".document",
|
@@ -22,27 +25,41 @@ Gem::Specification.new do |s|
|
|
22
25
|
"LICENSE",
|
23
26
|
"README.rdoc",
|
24
27
|
"Rakefile",
|
28
|
+
"TODO",
|
25
29
|
"VERSION",
|
26
30
|
"belly.gemspec",
|
31
|
+
"bin/belly",
|
32
|
+
"features/publish_scenario_results.feature",
|
33
|
+
"features/step_definitions/belly_steps.rb",
|
34
|
+
"features/step_definitions/cucumber_steps.rb",
|
27
35
|
"features/support/env.rb",
|
36
|
+
"features/support/fake_hub.rb",
|
28
37
|
"lib/belly.rb",
|
38
|
+
"lib/belly/cli.rb",
|
39
|
+
"lib/belly/cli/init.rb",
|
29
40
|
"lib/belly/client.rb",
|
41
|
+
"lib/belly/client/config.rb",
|
42
|
+
"lib/belly/for/cucumber.rb",
|
43
|
+
"lib/belly/project_initializer.rb",
|
44
|
+
"lib/belly/user_credentials.rb",
|
45
|
+
"spec/belly/project_initializer_spec.rb",
|
30
46
|
"spec/spec_helper.rb"
|
31
47
|
]
|
32
48
|
s.homepage = %q{http://github.com/mattwynne/belly-mouth}
|
33
49
|
s.rdoc_options = ["--charset=UTF-8"]
|
34
50
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = %q{1.3.
|
36
|
-
s.summary = %q{Client app for the belly web service}
|
51
|
+
s.rubygems_version = %q{1.3.7}
|
52
|
+
s.summary = %q{Client app for the incredible new belly web service, coming soon.}
|
37
53
|
s.test_files = [
|
38
|
-
"spec/
|
54
|
+
"spec/belly/project_initializer_spec.rb",
|
55
|
+
"spec/spec_helper.rb"
|
39
56
|
]
|
40
57
|
|
41
58
|
if s.respond_to? :specification_version then
|
42
59
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
43
60
|
s.specification_version = 3
|
44
61
|
|
45
|
-
if Gem::Version.new(Gem::
|
62
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
63
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
47
64
|
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
48
65
|
else
|
@@ -54,3 +71,4 @@ Gem::Specification.new do |s|
|
|
54
71
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
55
72
|
end
|
56
73
|
end
|
74
|
+
|
data/bin/belly
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "rubygems"
|
3
|
+
require "trollop"
|
4
|
+
|
5
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
6
|
+
require 'belly'
|
7
|
+
require 'belly/cli'
|
8
|
+
|
9
|
+
Trollop::options do
|
10
|
+
banner <<-EOS
|
11
|
+
=== Commands
|
12
|
+
|
13
|
+
init Create a new project for the current folder
|
14
|
+
help <command> Get some help on a particular command
|
15
|
+
|
16
|
+
EOS
|
17
|
+
stop_on Belly::Cli::COMMANDS
|
18
|
+
end
|
19
|
+
|
20
|
+
command = ARGV.shift
|
21
|
+
|
22
|
+
Trollop.die("You need to tell me what to do") unless command
|
23
|
+
|
24
|
+
unless Belly::Cli::COMMANDS.include?(command)
|
25
|
+
Trollop.die("Don't know that command, sorry")
|
26
|
+
end
|
27
|
+
|
28
|
+
require "belly/cli/#{command}"
|
@@ -0,0 +1,59 @@
|
|
1
|
+
Feature: Publish scenario results
|
2
|
+
In order to allow users to see the history of a particular scenario
|
3
|
+
As a developer
|
4
|
+
I want the belly gem to publish the results of each scenario to the belly service
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/support/belly.rb" with:
|
9
|
+
"""
|
10
|
+
require 'belly' rescue puts("Could not load belly - do you need to install the gem?")
|
11
|
+
|
12
|
+
"""
|
13
|
+
|
14
|
+
And a file named "features/step_definitions/foo_steps.rb" with:
|
15
|
+
"""
|
16
|
+
Given /^I am a rock$/ do
|
17
|
+
end
|
18
|
+
|
19
|
+
Given /^I am thin ice$/ do
|
20
|
+
raise("yikes")
|
21
|
+
end
|
22
|
+
|
23
|
+
"""
|
24
|
+
And a file named ".belly" with:
|
25
|
+
"""
|
26
|
+
hub: localhost:12345
|
27
|
+
|
28
|
+
"""
|
29
|
+
And there is a belly-hub running on localhost:12345
|
30
|
+
|
31
|
+
Scenario: Run a test with a scenario that passes
|
32
|
+
Given a file named "features/foo.feature" with:
|
33
|
+
"""
|
34
|
+
Feature: Test
|
35
|
+
Scenario: Solid
|
36
|
+
Given I am a rock
|
37
|
+
|
38
|
+
"""
|
39
|
+
When I run cucumber -r belly -r features -v
|
40
|
+
And the belly-hub should have received the following requests:
|
41
|
+
| type | path | data |
|
42
|
+
| POST | /scenarios | {"status":"passed","id":{"scenario":"Solid","feature":"Test"}} |
|
43
|
+
|
44
|
+
Scenario: Run a test with a scenario that fails
|
45
|
+
And a file named "features/foo.feature" with:
|
46
|
+
"""
|
47
|
+
Feature: Test
|
48
|
+
Scenario: Solid
|
49
|
+
Given I am a rock
|
50
|
+
|
51
|
+
Scenario: Shaky
|
52
|
+
Given I am thin ice
|
53
|
+
|
54
|
+
"""
|
55
|
+
When I run cucumber -r belly -r features -v
|
56
|
+
And the belly-hub should have received the following requests:
|
57
|
+
| type | path | data |
|
58
|
+
| POST | /scenarios | {"status":"passed","id":{"scenario":"Solid","feature":"Test"}} |
|
59
|
+
| POST | /scenarios | {"status":"failed","id":{"scenario":"Shaky","feature":"Test"}} |
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'aruba'
|
2
|
+
|
3
|
+
Given /^there is a belly\-hub running on localhost:12345$/ do
|
4
|
+
@hub = Belly::FakeHub.run(12345)
|
5
|
+
end
|
6
|
+
|
7
|
+
Then /^the belly\-hub should have received the following requests:$/ do |table|
|
8
|
+
requests = @hub.requests.map do |r|
|
9
|
+
result = r.dup
|
10
|
+
result["data"] = JSON.parse(r["data"])
|
11
|
+
result
|
12
|
+
end
|
13
|
+
|
14
|
+
table.map_column!('data') do |raw_data|
|
15
|
+
JSON.parse(raw_data)
|
16
|
+
end
|
17
|
+
|
18
|
+
table.diff! requests
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Given /^a standard Cucumber project directory structure$/ do
|
2
|
+
in_current_dir do
|
3
|
+
FileUtils.rm_rf 'features' if File.directory?('features')
|
4
|
+
FileUtils.mkdir_p 'features/support'
|
5
|
+
FileUtils.mkdir 'features/step_definitions'
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I run cucumber (.*)$/ do |cucumber_opts|
|
10
|
+
cmd = "#{Cucumber::RUBY_BINARY} -I#{belly_lib_path} #{Cucumber::BINARY} --no-color #{cucumber_opts}"
|
11
|
+
run(cmd, false)
|
12
|
+
end
|
data/features/support/env.rb
CHANGED
@@ -1,4 +1,12 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
|
2
|
-
require '
|
2
|
+
require 'aruba'
|
3
3
|
|
4
4
|
require 'spec/expectations'
|
5
|
+
|
6
|
+
module BellyWorld
|
7
|
+
def belly_lib_path
|
8
|
+
File.expand_path(File.dirname(__FILE__) + '/../../lib')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
World(BellyWorld)
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'sinatra/base'
|
2
|
+
require 'json'
|
3
|
+
require 'open-uri'
|
4
|
+
|
5
|
+
module Belly
|
6
|
+
class FakeHub
|
7
|
+
class << self
|
8
|
+
def run(port)
|
9
|
+
return @instance if @instance
|
10
|
+
@instance = new(port)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class App < Sinatra::Base
|
15
|
+
module Requests
|
16
|
+
class << self
|
17
|
+
def all
|
18
|
+
@requests ||= []
|
19
|
+
end
|
20
|
+
|
21
|
+
def add(data)
|
22
|
+
all << data
|
23
|
+
end
|
24
|
+
|
25
|
+
def clear!
|
26
|
+
@requests = []
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
get '/requests' do
|
32
|
+
Requests.clear! if params['delete']
|
33
|
+
Requests.all.to_json
|
34
|
+
end
|
35
|
+
|
36
|
+
post '*' do
|
37
|
+
Requests.add({
|
38
|
+
'type' => request.env['REQUEST_METHOD'],
|
39
|
+
'path' => '/scenarios',
|
40
|
+
'data' => request.body.read }
|
41
|
+
)
|
42
|
+
''
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def initialize(port)
|
47
|
+
@port = port
|
48
|
+
@runner = Thread.new do
|
49
|
+
App.run! :host => 'localhost', :port => port
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def requests
|
54
|
+
JSON.parse(open("http://localhost:#{@port}/requests").read)
|
55
|
+
end
|
56
|
+
|
57
|
+
def clear_requests!
|
58
|
+
open("http://localhost:#{@port}/requests?delete=yeah")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
After do
|
64
|
+
@hub.clear_requests!
|
65
|
+
end
|
data/lib/belly.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
$:.push(File.expand_path(File.dirname(__FILE__)))
|
2
|
+
|
3
|
+
require 'belly/client'
|
4
|
+
require 'belly/client/config'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
module Belly
|
8
|
+
class << self
|
9
|
+
def log(message)
|
10
|
+
return unless ENV['BELLY_LOG']
|
11
|
+
puts "* [Belly] #{message}"
|
12
|
+
end
|
13
|
+
|
14
|
+
def publish(scenario)
|
15
|
+
feature_name = scenario.feature.name.split("\n").first # TODO: only needed for older cucumbers
|
16
|
+
data = {
|
17
|
+
:id => { :feature => feature_name, :scenario => scenario.name },
|
18
|
+
:status => scenario.status,
|
19
|
+
:project => config.project
|
20
|
+
}.to_json
|
21
|
+
|
22
|
+
Belly.log("publishing #{data}")
|
23
|
+
|
24
|
+
# Break out a thread so we don't slow down the tests
|
25
|
+
thread = Thread.new { hub.post_test_result(data) }
|
26
|
+
|
27
|
+
# Make sure the thread gets a chance to finish before the process exits
|
28
|
+
at_exit { thread.join }
|
29
|
+
end
|
30
|
+
|
31
|
+
def config
|
32
|
+
@config ||= Config.new
|
33
|
+
end
|
34
|
+
|
35
|
+
def user_credentials
|
36
|
+
@user_credentials ||= UserCredentials.new(config)
|
37
|
+
end
|
38
|
+
|
39
|
+
def hub
|
40
|
+
@hub ||= Belly::Client.new(config)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/belly/cli.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'belly/project_initializer'
|
2
|
+
|
3
|
+
options = Trollop::options do
|
4
|
+
banner <<-EOF
|
5
|
+
This is the help for the init command. To see all commands availlable, type belly --help
|
6
|
+
|
7
|
+
Usage: belly init <args>
|
8
|
+
|
9
|
+
Initialize your project for use with the belly web service
|
10
|
+
|
11
|
+
EOF
|
12
|
+
opt :name, "Name of the project", :default => File.basename(Dir.pwd)
|
13
|
+
end
|
14
|
+
|
15
|
+
Belly::ProjectInitializer.new(options).run(Trollop)
|
data/lib/belly/client.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module Belly
|
5
|
+
class Client
|
6
|
+
def initialize(config)
|
7
|
+
@config = config
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(uri)
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def post_test_result(data)
|
15
|
+
request = Net::HTTP::Post.new(@config.url + '/test_results', {'Content-Type' =>'application/json'})
|
16
|
+
request.body = data
|
17
|
+
response = Net::HTTP.new(@config.host, @config.port).start {|http| http.request(request) }
|
18
|
+
unless response.code == "200"
|
19
|
+
raise("Failed to talk to belly hub: Response #{response.code} #{response.message}: #{response.body}")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Belly
|
2
|
+
class Config
|
3
|
+
class NoConfig
|
4
|
+
end
|
5
|
+
|
6
|
+
attr_reader :host, :port
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def new(*args)
|
10
|
+
return NoConfig.new unless File.exists?(path)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def path
|
15
|
+
File.expand_path('.belly')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@host, @port = config_file['hub'].split(':')
|
21
|
+
end
|
22
|
+
|
23
|
+
def url
|
24
|
+
"http://#{@host}:#{@port}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def project
|
28
|
+
config_file['project']
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def config_file
|
34
|
+
return @file if @file
|
35
|
+
Belly.log("pwd is #{`pwd`}")
|
36
|
+
Belly.log("Looking for config in #{Config.path}")
|
37
|
+
@file = YAML.load_file(Config.path)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'belly/user_credentials'
|
2
|
+
require 'belly/client'
|
3
|
+
|
4
|
+
module Belly
|
5
|
+
class ProjectInitializer
|
6
|
+
def initialize(options, ui)
|
7
|
+
project_name = options[:name] or raise("Need a :name in the options")
|
8
|
+
@uri = "/projects/#{project_name}"
|
9
|
+
@ui = ui
|
10
|
+
end
|
11
|
+
|
12
|
+
def run
|
13
|
+
client.get(@uri, self)
|
14
|
+
end
|
15
|
+
|
16
|
+
def not_found
|
17
|
+
client.put(@uri)
|
18
|
+
end
|
19
|
+
|
20
|
+
def not_authorized
|
21
|
+
@ui.die("You don't have access to this project. You'll need to contact one of the project's collaborators and ask them to give you access.")
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def client
|
27
|
+
@client ||= Client.new(Belly.user_credentials)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'belly/project_initializer'
|
3
|
+
|
4
|
+
module Belly
|
5
|
+
describe ProjectInitializer do
|
6
|
+
subject { ProjectInitializer.new(:name => 'foo') }
|
7
|
+
let(:ui) { double(:die => nil) }
|
8
|
+
|
9
|
+
context "when user credentials exist" do
|
10
|
+
let(:credentials) do
|
11
|
+
double(UserCredentials,
|
12
|
+
:username => "matt",
|
13
|
+
:password => "foo")
|
14
|
+
end
|
15
|
+
|
16
|
+
class Thing
|
17
|
+
attr_reader :string
|
18
|
+
def get(string)
|
19
|
+
@string = string
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:client) { double.as_null_object }
|
24
|
+
|
25
|
+
before(:each) do
|
26
|
+
Belly.stub(:user_credentials).and_return(credentials)
|
27
|
+
Belly::Client.stub(:new => client)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "creates the client with the right credentials" do
|
31
|
+
Belly::Client.should_receive(:new).with(Belly.user_credentials).and_return(client)
|
32
|
+
subject.run(ui)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "calls the projects web service" do
|
36
|
+
client.should_receive(:get).with("/projects/foo")
|
37
|
+
subject.run(ui)
|
38
|
+
end
|
39
|
+
|
40
|
+
context "if the web service gives an access denied error" do
|
41
|
+
it "tells the UI that the user doesn't have access to the project" do
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: belly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Matt Wynne
|
@@ -9,49 +15,71 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
13
|
-
default_executable:
|
18
|
+
date: 2010-07-19 00:00:00 +01:00
|
19
|
+
default_executable: belly
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: rspec
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
23
32
|
version: "0"
|
24
|
-
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: cucumber
|
27
|
-
|
28
|
-
|
29
|
-
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
30
40
|
requirements:
|
31
41
|
- - ">="
|
32
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
33
46
|
version: "0"
|
34
|
-
|
35
|
-
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
description: Client app for the incredible new belly web service, coming soon.
|
36
50
|
email: matt@mattwynne.net
|
37
|
-
executables:
|
38
|
-
|
51
|
+
executables:
|
52
|
+
- belly
|
39
53
|
extensions: []
|
40
54
|
|
41
55
|
extra_rdoc_files:
|
42
56
|
- LICENSE
|
43
57
|
- README.rdoc
|
58
|
+
- TODO
|
44
59
|
files:
|
45
60
|
- .document
|
46
61
|
- .gitignore
|
47
62
|
- LICENSE
|
48
63
|
- README.rdoc
|
49
64
|
- Rakefile
|
65
|
+
- TODO
|
50
66
|
- VERSION
|
51
67
|
- belly.gemspec
|
68
|
+
- bin/belly
|
69
|
+
- features/publish_scenario_results.feature
|
70
|
+
- features/step_definitions/belly_steps.rb
|
71
|
+
- features/step_definitions/cucumber_steps.rb
|
52
72
|
- features/support/env.rb
|
73
|
+
- features/support/fake_hub.rb
|
53
74
|
- lib/belly.rb
|
75
|
+
- lib/belly/cli.rb
|
76
|
+
- lib/belly/cli/init.rb
|
54
77
|
- lib/belly/client.rb
|
78
|
+
- lib/belly/client/config.rb
|
79
|
+
- lib/belly/for/cucumber.rb
|
80
|
+
- lib/belly/project_initializer.rb
|
81
|
+
- lib/belly/user_credentials.rb
|
82
|
+
- spec/belly/project_initializer_spec.rb
|
55
83
|
- spec/spec_helper.rb
|
56
84
|
has_rdoc: true
|
57
85
|
homepage: http://github.com/mattwynne/belly-mouth
|
@@ -63,23 +91,30 @@ rdoc_options:
|
|
63
91
|
require_paths:
|
64
92
|
- lib
|
65
93
|
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
66
95
|
requirements:
|
67
96
|
- - ">="
|
68
97
|
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
69
101
|
version: "0"
|
70
|
-
version:
|
71
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
72
104
|
requirements:
|
73
105
|
- - ">="
|
74
106
|
- !ruby/object:Gem::Version
|
107
|
+
hash: 3
|
108
|
+
segments:
|
109
|
+
- 0
|
75
110
|
version: "0"
|
76
|
-
version:
|
77
111
|
requirements: []
|
78
112
|
|
79
113
|
rubyforge_project:
|
80
|
-
rubygems_version: 1.3.
|
114
|
+
rubygems_version: 1.3.7
|
81
115
|
signing_key:
|
82
116
|
specification_version: 3
|
83
|
-
summary: Client app for the belly web service
|
117
|
+
summary: Client app for the incredible new belly web service, coming soon.
|
84
118
|
test_files:
|
119
|
+
- spec/belly/project_initializer_spec.rb
|
85
120
|
- spec/spec_helper.rb
|