belly 0.5.5 → 0.5.7

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/.belly CHANGED
@@ -1,2 +1,5 @@
1
1
  hub: belly.heroku.com:80
2
- project: belly-gem
2
+ project: belly-gem
3
+ user:
4
+ name: Matt Wynne
5
+ email: matt@mattwynne.net
@@ -0,0 +1,32 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ aruba (0.2.1)
5
+ diff-lcs (1.1.2)
6
+ json (1.4.6)
7
+ mime-types (1.16)
8
+ rack (1.2.1)
9
+ rest-client (1.6.1)
10
+ mime-types (>= 1.16)
11
+ rspec (2.0.0.beta.22)
12
+ rspec-core (= 2.0.0.beta.22)
13
+ rspec-expectations (= 2.0.0.beta.22)
14
+ rspec-mocks (= 2.0.0.beta.22)
15
+ rspec-core (2.0.0.beta.22)
16
+ rspec-expectations (2.0.0.beta.22)
17
+ diff-lcs (>= 1.1.2)
18
+ rspec-mocks (2.0.0.beta.22)
19
+ rspec-core (= 2.0.0.beta.22)
20
+ rspec-expectations (= 2.0.0.beta.22)
21
+ sinatra (1.0)
22
+ rack (>= 1.0)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ aruba
29
+ json
30
+ rest-client
31
+ rspec (>= 2.0.0.beta.19)
32
+ sinatra
data/Rakefile CHANGED
@@ -10,6 +10,8 @@ begin
10
10
  gem.email = "matt@mattwynne.net"
11
11
  gem.homepage = "http://belly.heroku.com"
12
12
  gem.authors = ["Matt Wynne"]
13
+ gem.add_dependency "trollop"
14
+ gem.add_dependency "rest-client"
13
15
  gem.add_development_dependency "rspec"
14
16
  gem.add_development_dependency "cucumber"
15
17
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.1
1
+ 0.5.6
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{belly}
8
- s.version = "0.5.5"
8
+ s.version = "0.5.7"
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{2010-08-22}
12
+ s.date = %q{2010-09-27}
13
13
  s.default_executable = %q{belly}
14
14
  s.description = %q{Client app for the incredible new belly web service, coming soon.}
15
15
  s.email = %q{matt@mattwynne.net}
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  ".document",
25
25
  ".gitignore",
26
26
  "Gemfile",
27
+ "Gemfile.lock",
27
28
  "LICENSE",
28
29
  "README.rdoc",
29
30
  "Rakefile",
@@ -44,6 +45,7 @@ Gem::Specification.new do |s|
44
45
  "lib/belly/cli.rb",
45
46
  "lib/belly/cli/init.rb",
46
47
  "lib/belly/cli/rerun.rb",
48
+ "lib/belly/cli/steps.rb",
47
49
  "lib/belly/client.rb",
48
50
  "lib/belly/client/config.rb",
49
51
  "lib/belly/client/default_config.rb",
@@ -51,14 +53,14 @@ Gem::Specification.new do |s|
51
53
  "lib/belly/client/hub_proxy.rb",
52
54
  "lib/belly/for/cucumber.rb",
53
55
  "lib/belly/messages/cucumber_scenario_result_message.rb",
54
- "lib/belly/rerun.rb",
56
+ "lib/belly/steps_command.rb",
55
57
  "spec/belly/project_initializer_spec.rb",
56
58
  "spec/spec_helper.rb"
57
59
  ]
58
60
  s.homepage = %q{http://belly.heroku.com}
59
61
  s.rdoc_options = ["--charset=UTF-8"]
60
62
  s.require_paths = ["lib"]
61
- s.rubygems_version = %q{1.3.6}
63
+ s.rubygems_version = %q{1.3.7}
62
64
  s.summary = %q{Client app for the incredible new belly web service, coming soon.}
63
65
  s.test_files = [
64
66
  "spec/belly/project_initializer_spec.rb",
@@ -69,14 +71,20 @@ Gem::Specification.new do |s|
69
71
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
70
72
  s.specification_version = 3
71
73
 
72
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
74
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
75
+ s.add_runtime_dependency(%q<trollop>, [">= 0"])
76
+ s.add_runtime_dependency(%q<rest-client>, [">= 0"])
73
77
  s.add_development_dependency(%q<rspec>, [">= 0"])
74
78
  s.add_development_dependency(%q<cucumber>, [">= 0"])
75
79
  else
80
+ s.add_dependency(%q<trollop>, [">= 0"])
81
+ s.add_dependency(%q<rest-client>, [">= 0"])
76
82
  s.add_dependency(%q<rspec>, [">= 0"])
77
83
  s.add_dependency(%q<cucumber>, [">= 0"])
78
84
  end
79
85
  else
86
+ s.add_dependency(%q<trollop>, [">= 0"])
87
+ s.add_dependency(%q<rest-client>, [">= 0"])
80
88
  s.add_dependency(%q<rspec>, [">= 0"])
81
89
  s.add_dependency(%q<cucumber>, [">= 0"])
82
90
  end
@@ -1 +1 @@
1
- require File.dirname(__FILE__) + '/../../lib/belly/for/cucumber'
1
+ require 'belly/for/cucumber'
@@ -14,5 +14,3 @@ module Belly
14
14
  end
15
15
 
16
16
  Belly.log "Belly version #{Belly.version} starting in #{File.expand_path(File.dirname(__FILE__))}"
17
-
18
- require 'belly/client'
@@ -1,35 +1,68 @@
1
1
  options = Trollop::options do
2
2
  banner <<-EOF
3
- This is the help for the init command. To see all commands availlable, type belly --help
3
+ This is the help for the init command. To see all commands available, type belly --help
4
4
 
5
5
  Usage: belly init
6
6
 
7
7
  Initialize your project for use with the belly service
8
8
 
9
9
  EOF
10
+ opt :force, 'Overwite files even if they already exist', :default => false
10
11
  end
11
12
 
12
- if File.exists?('features/support')
13
- target = 'features/support/belly.rb'
14
- if File.exists?(target)
15
- Trollop.die("There's already a #{target} which I was going to create. Not much for me to do")
16
- end
17
- File.open(target, 'w') do |f|
18
- f.puts "require 'belly/for/cucumber'"
19
- end
20
- puts "Created #{target}"
21
- puts <<-EOF
22
-
23
- Your project is now initialized for working with Belly.
24
-
25
- You can configure Belly's settings by creating a .belly file in root of your project.
26
- If you don't create one, I'll just use some defaults.
13
+ require 'belly/client/default_config'
14
+ require 'fileutils'
27
15
 
28
- Here's an example:
16
+ module Belly
17
+ class Init
18
+
19
+ def initialize(options)
20
+ @options = options
21
+ end
22
+
23
+ def run(ui)
24
+ unless File.exists?('features/support')
25
+ ui.die("It doesn't look like you are in a project with Cucumber features")
26
+ end
29
27
 
30
- project: #{Belly.config.project}
28
+ create_file('features/support/belly.rb') do
29
+ <<-EOF
30
+ require 'belly/for/cucumber'
31
+ EOF
32
+ end
33
+
34
+ create_file('.belly') do
35
+ <<-EOF
36
+ hub: #{default_config.host}:#{default_config.port}
37
+ project: #{default_config.project}
31
38
  user:
32
- name: #{Belly.config.user[:name]}
33
- email: #{Belly.config.user[:email]}
39
+ name: #{default_config.user[:name]}
40
+ email: #{default_config.user[:email]}
34
41
  EOF
35
- end
42
+ end
43
+
44
+ puts
45
+ puts "Lovely. Your project is now initialized for use with Belly."
46
+ puts "You can edit your project's settings by editing the .belly file in this folder."
47
+ end
48
+
49
+ private
50
+
51
+ def default_config
52
+ @default_config ||= Belly::Client::DefaultConfig.new
53
+ end
54
+
55
+ def create_file(target)
56
+ FileUtils.rm_rf(target) if @options[:force]
57
+ if File.exists?(target)
58
+ Trollop.die("#{target} already exists. Use --force to make me overwrite it")
59
+ end
60
+ File.open(target, 'w') do |f|
61
+ f.puts yield
62
+ end
63
+ puts "Created #{target}"
64
+ end
65
+ end
66
+ end
67
+
68
+ Belly::Init.new(options).run(Trollop)
@@ -1,8 +1,8 @@
1
- require 'belly/rerun'
1
+ require 'belly/client'
2
2
 
3
3
  options = Trollop::options do
4
4
  banner <<-EOF
5
- This is the help for the rerun command. To see all commands availlable, type belly --help
5
+ This is the help for the rerun command. To see all commands available, type belly --help
6
6
 
7
7
  Usage: belly rerun
8
8
 
@@ -12,4 +12,21 @@ EOF
12
12
  opt :name, "Name of the project", :default => File.basename(Dir.pwd)
13
13
  end
14
14
 
15
+ module Belly
16
+ class Rerun
17
+ def initialize(options)
18
+
19
+ end
20
+
21
+ def run(ui)
22
+ scenarios = Belly.hub.get_failing_scenarios_for_project_named(Belly.config.project)
23
+ todos = scenarios.map { |scenario| "#{scenario["file_name"]}:#{scenario["line_number"]}" }
24
+ todos.sort.each { |todo| puts todo }
25
+
26
+ rescue Client::NoSuchProjectError
27
+ ui.die("Belly doesn't know enough about this project yet. Please run some tests, then try again.")
28
+ end
29
+ end
30
+ end
31
+
15
32
  Belly::Rerun.new(options).run(Trollop)
@@ -0,0 +1,14 @@
1
+ require 'belly/steps_command'
2
+
3
+ options = Trollop::options do
4
+ banner <<-EOF
5
+ This is the help for the steps command. To see all commands availlable, type belly --help
6
+
7
+ Usage: belly steps
8
+
9
+ Format your Cucumber step definitions as JSON
10
+
11
+ EOF
12
+ end
13
+
14
+ Belly::StepsCommand.new(options).run(Trollop)
@@ -1,5 +1,4 @@
1
1
  require 'belly/client/default_config'
2
- require 'belly/credentials'
3
2
  require 'yaml'
4
3
 
5
4
  module Belly::Client
@@ -34,21 +33,8 @@ module Belly::Client
34
33
  config_file['user'] || @default.user
35
34
  end
36
35
 
37
- def username
38
- credentials.username
39
- end
40
-
41
- def password
42
- credentials.password
43
- end
44
-
45
36
  private
46
37
 
47
- def credentials
48
- return @credenitals if @credenitals
49
- @credenitals = Belly::Credentials.new
50
- end
51
-
52
38
  def config_file
53
39
  return @file if @file
54
40
  Belly.log("pwd is #{`pwd`}")
@@ -1,11 +1,11 @@
1
1
  require 'rest_client'
2
2
 
3
3
  module Belly::Client
4
+ class NoSuchProjectError < StandardError; end
4
5
  class HubProxy
6
+
5
7
  def initialize(config)
6
8
  @config = config
7
- @username = @config.username
8
- @password = @config.password
9
9
  end
10
10
 
11
11
  def post_test_result(json_data)
@@ -14,14 +14,16 @@ module Belly::Client
14
14
 
15
15
  def get_failing_scenarios_for_project_named(project_name)
16
16
  project_id = get_project_id_by_name(project_name)
17
- response = request(:get, "/projects/#{project_id}/cucumber_scenarios.json?status=todo")
17
+ rerun_statuses = [:pending, :undefined, :failed]
18
+ status_querystring = rerun_statuses.map { |s| "status[]=#{s}"}.join("&")
19
+ response = request(:get, "/projects/#{project_id}/cucumber_scenarios.json?#{status_querystring}")
18
20
  JSON.parse(response)["cucumber_scenarios"]
19
21
  end
20
22
 
21
23
  def get_project_id_by_name(project_name)
22
24
  response = request(:get, "/projects.json?name=#{project_name}")
23
25
  projects = JSON.parse(response)["projects"]
24
- raise("Couldn't find a project named #{project_name}") unless projects.any?
26
+ raise NoSuchProjectError unless projects.any?
25
27
  projects.first["id"].to_i
26
28
  end
27
29
 
@@ -33,12 +35,11 @@ module Belly::Client
33
35
 
34
36
  def request(method, path, data = nil, options = nil)
35
37
  url = @config.url + path
36
- args = [method]
38
+ args = [url]
37
39
  args << data if data
38
40
  args << options if options
39
41
  Belly.log("Sending #{method} request to #{url}")
40
- p @username, @password
41
- request_block = lambda { RestClient::Resource.new(url, @username, @password).send(*args) }
42
+ request_block = lambda { RestClient.send(method, *args) }
42
43
 
43
44
  response = if @around_request_block
44
45
  @around_request_block.call(request_block)
@@ -1,4 +1,5 @@
1
1
  require 'belly'
2
+ require 'belly/client'
2
3
 
3
4
  Before do |scenario|
4
5
  Belly.log %{about to run scenario "#{scenario.name}"}
@@ -0,0 +1,12 @@
1
+ require 'cucumber'
2
+
3
+ module Belly
4
+ class StepsCommand
5
+ def initialize(options)
6
+ end
7
+
8
+ def run(ui)
9
+ puts Cucumber::StepDefinitions.new.to_json
10
+ end
11
+ end
12
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: belly
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 5
10
- version: 0.5.5
9
+ - 7
10
+ version: 0.5.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matt Wynne
@@ -15,11 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-22 00:00:00 +01:00
18
+ date: 2010-09-27 00:00:00 +01:00
19
19
  default_executable: belly
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rspec
22
+ name: trollop
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
@@ -30,10 +30,10 @@ dependencies:
30
30
  segments:
31
31
  - 0
32
32
  version: "0"
33
- type: :development
33
+ type: :runtime
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- name: cucumber
36
+ name: rest-client
37
37
  prerelease: false
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
@@ -44,8 +44,36 @@ dependencies:
44
44
  segments:
45
45
  - 0
46
46
  version: "0"
47
- type: :development
47
+ type: :runtime
48
48
  version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: rspec
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: cucumber
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :development
76
+ version_requirements: *id004
49
77
  description: Client app for the incredible new belly web service, coming soon.
50
78
  email: matt@mattwynne.net
51
79
  executables:
@@ -61,6 +89,7 @@ files:
61
89
  - .document
62
90
  - .gitignore
63
91
  - Gemfile
92
+ - Gemfile.lock
64
93
  - LICENSE
65
94
  - README.rdoc
66
95
  - Rakefile
@@ -81,6 +110,7 @@ files:
81
110
  - lib/belly/cli.rb
82
111
  - lib/belly/cli/init.rb
83
112
  - lib/belly/cli/rerun.rb
113
+ - lib/belly/cli/steps.rb
84
114
  - lib/belly/client.rb
85
115
  - lib/belly/client/config.rb
86
116
  - lib/belly/client/default_config.rb
@@ -88,7 +118,7 @@ files:
88
118
  - lib/belly/client/hub_proxy.rb
89
119
  - lib/belly/for/cucumber.rb
90
120
  - lib/belly/messages/cucumber_scenario_result_message.rb
91
- - lib/belly/rerun.rb
121
+ - lib/belly/steps_command.rb
92
122
  - spec/belly/project_initializer_spec.rb
93
123
  - spec/spec_helper.rb
94
124
  has_rdoc: true
@@ -1,13 +0,0 @@
1
- module Belly
2
- class Rerun
3
- def initialize(options)
4
-
5
- end
6
-
7
- def run(ui)
8
- Belly.hub.get_failing_scenarios_for_project_named(Belly.config.project).each do |scenario|
9
- puts "#{scenario["file_name"]}:#{scenario["line_number"]}"
10
- end
11
- end
12
- end
13
- end