cuukie 0.2.2 → 0.3.0

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.
@@ -8,15 +8,23 @@ Install Cuukie via Bundler, or directly with:
8
8
 
9
9
  gem install cuukie
10
10
 
11
- Go to your Cucumber folder and add this line to any file in _features/support_:
11
+ Go to a folder where you would normally run _cucumber_, and run _cuukie_ instead:
12
12
 
13
- require 'cuukie'
13
+ cuukie --showpage
14
14
 
15
- Run Cuukie:
15
+ That's basically it.
16
16
 
17
- cuukie --showpage
17
+ # Command-line Arguments
18
+
19
+ Cuukie passes arguments that it doesn't recognize to Cucumber, so feel free to mix Cuukie arguments and Cucumber arguments:
18
20
 
19
- Cuukie passes any command-line argument that it doesn't recognize to Cucumber, so just use _cuukie_ instead of _cucumber_ when you want to see your features in the browser.
21
+ cuukie --showpage --dry-run --format pretty --out out.txt
22
+
23
+ Only thing to notice: Cuukie uses its own Cucumber formatter, so remember to use --out if you want to use additional formatters.
24
+
25
+ For more options:
26
+
27
+ cuukie --help
20
28
 
21
29
  ## Advanced Cuuking
22
30
 
@@ -24,13 +32,17 @@ Cuukie is actually two things: a server that displays running features on a web
24
32
 
25
33
  cuukie --server
26
34
 
35
+ You can visit the server on port 4569 by default.
36
+
37
+ Now you need to tell Cucumber about the Cuukie formatter. Go to your Cucumber folder and add this line to any file in _features/support_:
38
+
39
+ require 'cuukie'
40
+
27
41
  When you run Cucumber, ask it to use the _cuukie_ formatter to send data to the server:
28
42
 
29
43
  cucumber --format cuukie
30
44
 
31
- To look at the results, visit:
32
-
33
- http://localhost:4569
45
+ ## Even More Advanced Cuuking
34
46
 
35
47
  You can pick a port when you start the cuukie server...
36
48
 
@@ -40,9 +52,7 @@ You can pick a port when you start the cuukie server...
40
52
 
41
53
  cucumber --format cuukie CUUKIE_SERVER=http://my.server:4570
42
54
 
43
- This stuff is useful if you want to put the Cuukie server on your build machine. For more options:
44
-
45
- cuukie --help
55
+ This stuff is useful if you want to put the Cuukie server on your build machine.
46
56
 
47
57
  Enjoy!
48
58
 
data/Rakefile CHANGED
@@ -1,18 +1,10 @@
1
1
  require 'bundler/setup'
2
2
 
3
- task :default => 'test:specs'
3
+ task :default => :test
4
4
 
5
- namespace :test do
6
- require 'rspec/core/rake_task'
7
- desc "Run all specs"
8
- RSpec::Core::RakeTask.new(:specs)
9
-
10
- desc "Run Cuukie on the test project (needs a cuukie server on localhost, default port)"
11
- task :manual do
12
- system "cd spec/test_project && \
13
- cucumber --format cuukie"
14
- end
15
- end
5
+ require 'rspec/core/rake_task'
6
+ desc "Run all specs"
7
+ RSpec::Core::RakeTask.new(:test)
16
8
 
17
9
  require 'jeweler'
18
10
  Jeweler::Tasks.new do |gem|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.3.0
data/bin/cuukie CHANGED
@@ -1,14 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  lib = File.dirname(__FILE__) + '/../lib'
3
3
  $:.unshift lib unless $:.include? lib
4
+ require 'cuukie'
4
5
 
5
- require 'cuukie/cli'
6
6
  include Cuukie::Cli
7
7
  options = parse_options ARGV
8
+ exit if options[:help]
8
9
 
9
- exit if options.empty?
10
+ port = options[:cuukieport]
10
11
 
11
- server_command = "ruby #{File.dirname(__FILE__)}/../lib/cuukie/server.rb #{options[:cuukieport]}"
12
+ server_command = "ruby #{File.dirname(__FILE__)}/../lib/cuukie/server/server.rb #{port}"
12
13
  if options[:server]
13
14
  system server_command
14
15
  exit
@@ -16,31 +17,24 @@ else
16
17
  Process.detach(fork { system "#{server_command} >/dev/null 2>&1" })
17
18
  end
18
19
 
19
- require 'cuukie/client'
20
20
  include Cuukie::Client
21
- wait_for_server_on_port options[:cuukieport]
22
-
23
- unless options[:keepserver]
24
- at_exit do
25
- require 'rest-client'
26
- begin
27
- RestClient.delete "http://localhost:#{options[:cuukieport]}"
28
- rescue; end
29
- end
30
- end
21
+ wait_for_server_at port
22
+
23
+ at_exit { stop_server_at port } unless options[:keepserver]
31
24
 
32
25
  if options[:showpage]
33
26
  require 'launchy'
34
- Launchy.open("http://localhost:#{options[:cuukieport]}")
27
+ Launchy.open "http://localhost:#{port}"
35
28
  else
36
- puts "View your features at http://localhost:#{options[:cuukieport]}"
29
+ puts "View your features at http://localhost:#{port}"
37
30
  end
38
31
 
39
- # TODO: auto-require formatter (warning: if you tell Cucumber to --require
40
- # something, it will want to --require everything!)
41
- system "cucumber #{ARGV.join(' ')} --format cuukie"
32
+ require 'cucumber'
33
+ runtime = Cucumber::Runtime.new
34
+ runtime.load_programming_language('rb')
35
+ Cucumber::Cli::Main.new(ARGV + ['--format', 'cuukie']).execute!(runtime)
42
36
 
43
37
  unless options[:nowait]
44
- puts 'Press a key to exit'
45
- gets
38
+ puts 'RETURN to exit'
39
+ STDIN.getc
46
40
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "cuukie"
8
- s.version = "0.2.2"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Paolo \"Nusco\" Perrotta"]
12
- s.date = "2011-12-15"
12
+ s.date = "2011-12-16"
13
13
  s.description = "A drop-in replacement for the \"cucumber\" command. It shows running features on a web page."
14
14
  s.email = "paolo.nusco.perrotta@gmail.com"
15
15
  s.executables = ["cuukie"]
@@ -34,11 +34,11 @@ Gem::Specification.new do |s|
34
34
  "lib/cuukie/client.rb",
35
35
  "lib/cuukie/code_snippets.rb",
36
36
  "lib/cuukie/formatter.rb",
37
- "lib/cuukie/public/cucumber.css",
38
- "lib/cuukie/public/cuukie.js",
39
- "lib/cuukie/public/jquery-1.7.min.js",
40
- "lib/cuukie/server.rb",
41
- "lib/cuukie/views/index.erb",
37
+ "lib/cuukie/server/public/cucumber.css",
38
+ "lib/cuukie/server/public/cuukie.js",
39
+ "lib/cuukie/server/public/jquery-1.7.min.js",
40
+ "lib/cuukie/server/server.rb",
41
+ "lib/cuukie/server/views/index.erb",
42
42
  "spec/cli_spec.rb",
43
43
  "spec/code_snippets_spec.rb",
44
44
  "spec/commands_spec.rb",
@@ -49,8 +49,7 @@ Gem::Specification.new do |s|
49
49
  "spec/test_project/features/3_failed_background.feature",
50
50
  "spec/test_project/features/4_exception_with_no_source.feature",
51
51
  "spec/test_project/features/step_definitions/exception_steps.rb",
52
- "spec/test_project/features/step_definitions/main_steps.rb",
53
- "spec/test_project/features/support/formatters.rb"
52
+ "spec/test_project/features/step_definitions/main_steps.rb"
54
53
  ]
55
54
  s.homepage = "http://github.com/nusco/cuukie"
56
55
  s.licenses = ["MIT"]
@@ -1,15 +1,11 @@
1
- MMF 0.2.1
2
- - "ruby bug" fixed
3
1
  - better error messages
4
- - work on any cucumber project out of the box (no need to add require())
5
- MMF 0.2.2
6
2
  - don't launch server if it's already up
7
3
  - give detailed instructions if the port is unavailable
8
- MMF 0.2.3
4
+ MMF
9
5
  - deal with Scenario Examples
10
- MMF 0.2.4
6
+ MMF
11
7
  - show incomplete wrap-up for steps/scenarios
12
- MMF 0.2.5
8
+ MMF
13
9
  - open/close steps
14
10
  MMF 1.0.0
15
11
  - nice graphics
@@ -57,5 +53,8 @@ Then...
57
53
  numbers from tests b/c of this, and b/c they made the
58
54
  tests fragile. Try to put back the line numbers,
59
55
  and test under rbx)
56
+
57
+ - windows compatibility
60
58
 
61
59
  - test against rbx
60
+
@@ -1,6 +1,13 @@
1
1
  I use this file to track my own work on the project. Each line is a pomodoro (a 25' slot).
2
2
  Latest pomodoro comes first:
3
3
 
4
+ - autorequire formatter
5
+ - refactoring
6
+ - debugging
7
+ - debugging
8
+ - multiple formatters
9
+ - debugging
10
+ - fix race condition, debugging
4
11
  - testing/debugging
5
12
  - testing
6
13
  - release
@@ -1,2 +1,3 @@
1
+ require File.dirname(__FILE__) + '/cuukie/cli'
1
2
  require File.dirname(__FILE__) + '/cuukie/formatter'
2
3
  require File.dirname(__FILE__) + '/cuukie/client'
@@ -24,7 +24,7 @@ module Cuukie
24
24
 
25
25
  def to_options_hash(options)
26
26
  result = { :cuukieport => 4569 }
27
- [:server, :showpage, :nowait, :keepserver].each do |opt|
27
+ [:server, :showpage, :nowait, :keepserver, :help].each do |opt|
28
28
  result[opt] = false
29
29
  end
30
30
 
@@ -34,12 +34,12 @@ module Cuukie
34
34
  opts.on("--cuukieport PORT", Integer, "Start the server on PORT") {|port| result[:cuukieport] = port }
35
35
  opts.on("--server", "Run as a server") { result[:server] = true }
36
36
  opts.on("--showpage", "Open the features in the default browser") { result[:showpage] = true }
37
- opts.on("--nowait", "Don't wait for keypress on exit") { result[:nowait] = true }
37
+ opts.on("--nowait", "Don't wait for ENTER on exit") { result[:nowait] = true }
38
38
  opts.on("--keepserver", "Leave the server running on exit") { result[:keepserver] = true }
39
39
 
40
40
  opts.on_tail("-h", "--help", "You're looking at it") do
41
41
  puts opts.help
42
- return {}
42
+ result[:help] = true
43
43
  end
44
44
  end.parse! options
45
45
  result
@@ -2,20 +2,20 @@ require 'rest-client'
2
2
 
3
3
  module Cuukie
4
4
  module Client
5
- def ping_on_port(port)
5
+ def ping_at(port)
6
6
  RestClient.get "http://localhost:#{port}/ping"
7
7
  end
8
8
 
9
- def wait_for_server_on_port(port)
9
+ def wait_for_server_at(port)
10
10
  loop do
11
11
  begin
12
- ping_on_port port
12
+ ping_at port
13
13
  return
14
14
  rescue; end
15
15
  end
16
16
  end
17
17
 
18
- def stop_server_on_port(port)
18
+ def stop_server_at(port)
19
19
  # the server dies without replying, so we expect an error here
20
20
  RestClient.delete "http://localhost:#{port}/"
21
21
  rescue
@@ -1,3 +1,4 @@
1
+ require 'rubygems'
1
2
  require 'sinatra/base'
2
3
  require 'json'
3
4
  require 'syntax/convertors/html'
@@ -74,8 +74,8 @@ describe "The parse_options method" do
74
74
  @out.should match /cuukie \d+\.\d+\.\d+/
75
75
  end
76
76
 
77
- it "returns no result after showing help" do
78
- parse_options(['-h']).should be_empty
77
+ it "leaves behind a help option after showing help" do
78
+ parse_options(['-h'])[:help].should be_true
79
79
  end
80
80
 
81
81
  it "consumes recognized options" do
@@ -13,29 +13,35 @@ describe "The cuukie formatter" do
13
13
  it "expects a server on localhost:4569 by default" do
14
14
  begin
15
15
  start_process "ruby bin/cuukie --server >/dev/null 2>&1"
16
- wait_for_server_on_port 4569
16
+ wait_for_server_at 4569
17
17
  cmd = "cd spec/test_project && \
18
18
  cucumber features/1_show_scenarios.feature:9 \
19
- --format cuukie >#{@out.path}"
19
+ --require ../../lib/cuukie \
20
+ --require features \
21
+ --format Cuukie::Formatter \
22
+ >#{@out.path}"
20
23
  system(cmd).should be_true
21
24
  @out.read.should == ''
22
25
  ensure
23
- stop_server_on_port 4569
26
+ stop_server_at 4569
24
27
  end
25
28
  end
26
29
 
27
30
  it "can point to a different server" do
28
31
  start_process "ruby bin/cuukie --server --cuukieport 4570 >/dev/null 2>&1"
29
32
  begin
30
- wait_for_server_on_port 4570
33
+ wait_for_server_at 4570
31
34
  cmd = "cd spec/test_project && \
32
35
  cucumber features/1_show_scenarios.feature:9 \
33
36
  CUUKIE_SERVER=http://localhost:4570 \
34
- --format cuukie >#{@out.path}"
37
+ --require ../../lib/cuukie \
38
+ --require features \
39
+ --format Cuukie::Formatter \
40
+ >#{@out.path}"
35
41
  system(cmd).should be_true
36
42
  @out.read.should == ''
37
43
  ensure
38
- stop_server_on_port 4570
44
+ stop_server_at 4570
39
45
  end
40
46
  end
41
47
 
@@ -43,7 +49,10 @@ describe "The cuukie formatter" do
43
49
  cmd = "cd spec/test_project && \
44
50
  cucumber features/1_show_scenarios.feature:9 \
45
51
  CUUKIE_SERVER=http://some.server:4570 \
46
- --format cuukie >#{@out.path}"
52
+ --require ../../lib/cuukie \
53
+ --require features \
54
+ --format Cuukie::Formatter \
55
+ >#{@out.path}"
47
56
  system(cmd).should be_true
48
57
  @out.read.should match 'I cannot find the cuukie server on http://some.server:4570'
49
58
  end
@@ -67,7 +76,7 @@ describe "The cuukie command" do
67
76
  >/dev/null 2>&1"
68
77
 
69
78
  html.should match "Passing Scenario"
70
- stop_server_on_port 4569
79
+ stop_server_at 4569
71
80
  end
72
81
 
73
82
  it "gives instructions to access the page if --showpage is not enabled" do
@@ -89,28 +98,28 @@ describe "The cuukie command" do
89
98
  --cuukieport 4570 \
90
99
  >/dev/null 2>&1"
91
100
 
92
- lambda { ping_on_port 4570 }.should raise_error
101
+ lambda { ping_at 4570 }.should raise_error
93
102
  end
94
103
 
95
104
  describe "when used with the --server switch" do
96
- it "starts the Cuukie server on port 4569 by default" do
105
+ it "starts the server on port 4569 by default" do
97
106
  start_process "ruby bin/cuukie --server >/dev/null 2>&1"
98
- wait_for_server_on_port 4569
99
- stop_server_on_port 4569
107
+ wait_for_server_at 4569
108
+ stop_server_at 4569
100
109
  end
101
110
 
102
- it "starts the Cuukie server on any given port" do
111
+ it "starts the server on any given port" do
103
112
  start_process "ruby bin/cuukie --server --cuukieport 4570 >/dev/null 2>&1"
104
- wait_for_server_on_port 4570
105
- stop_server_on_port 4570
113
+ wait_for_server_at 4570
114
+ stop_server_at 4570
106
115
  end
107
116
 
108
117
  it "exits immediately after starting the server" do
109
118
  start_process "ruby bin/cuukie --server >/dev/null 2>&1"
110
- wait_for_server_on_port 4569
119
+ wait_for_server_at 4569
111
120
  html.should match /Cuukie/
112
121
  html.should_not match /Feature:/
113
- stop_server_on_port 4569
122
+ stop_server_at 4569
114
123
  end
115
124
  end
116
125
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe 'Cuukie' do
4
4
  describe "before Cucumber has run" do
5
5
  before(:all) { start_server }
6
- after(:all) { stop_server_on_port 4569 }
6
+ after(:all) { stop_server_at 4569 }
7
7
 
8
8
  it "shows a grey status bar" do
9
9
  html.should match /undefinedColors\('cucumber-header'\)/
@@ -26,7 +26,7 @@ describe 'Cuukie' do
26
26
  shared_examples_for "while Cucumber is running" do
27
27
  require 'ostruct'
28
28
 
29
- after(:all) { stop_server_on_port 4569 }
29
+ after(:all) { stop_server_at 4569 }
30
30
 
31
31
  it "shows a grey status bar" do
32
32
  html.should match /undefinedColors\('cucumber-header'\)/
@@ -96,7 +96,7 @@ describe 'Cuukie' do
96
96
  run_cucumber
97
97
  end
98
98
 
99
- after(:all) { stop_server_on_port 4569 }
99
+ after(:all) { stop_server_at 4569 }
100
100
 
101
101
  it "cleans up previous data at the beginning of a run" do
102
102
  run_cucumber
@@ -10,7 +10,10 @@ end
10
10
 
11
11
  def run_cucumber(feature = '')
12
12
  system "cd spec/test_project &&
13
- cucumber features/#{feature} --format cuukie"
13
+ cucumber features/#{feature} \
14
+ --require ../../lib/cuukie \
15
+ --require features \
16
+ --format Cuukie::Formatter"
14
17
  end
15
18
 
16
19
  require 'rest-client'
@@ -28,5 +31,5 @@ end
28
31
 
29
32
  def start_server
30
33
  start_process "ruby bin/cuukie --server >/dev/null 2>&1"
31
- wait_for_server_on_port 4569
34
+ wait_for_server_at 4569
32
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuukie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-15 00:00:00.000000000 Z
12
+ date: 2011-12-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70200450735700 !ruby/object:Gem::Requirement
16
+ requirement: &70137970663940 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.3'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70200450735700
24
+ version_requirements: *70137970663940
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: cucumber
27
- requirement: &70200450735220 !ruby/object:Gem::Requirement
27
+ requirement: &70137976108560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.1'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70200450735220
35
+ version_requirements: *70137976108560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rest-client
38
- requirement: &70200450734740 !ruby/object:Gem::Requirement
38
+ requirement: &70137976108080 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.6'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70200450734740
46
+ version_requirements: *70137976108080
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: launchy
49
- requirement: &70200450734260 !ruby/object:Gem::Requirement
49
+ requirement: &70137976107600 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70200450734260
57
+ version_requirements: *70137976107600
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: syntax
60
- requirement: &70200450733780 !ruby/object:Gem::Requirement
60
+ requirement: &70137976107120 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70200450733780
68
+ version_requirements: *70137976107120
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
- requirement: &70200450733300 !ruby/object:Gem::Requirement
71
+ requirement: &70137976106640 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70200450733300
79
+ version_requirements: *70137976106640
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: jeweler
82
- requirement: &70200450732820 !ruby/object:Gem::Requirement
82
+ requirement: &70137976106160 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70200450732820
90
+ version_requirements: *70137976106160
91
91
  description: A drop-in replacement for the "cucumber" command. It shows running features
92
92
  on a web page.
93
93
  email: paolo.nusco.perrotta@gmail.com
@@ -114,11 +114,11 @@ files:
114
114
  - lib/cuukie/client.rb
115
115
  - lib/cuukie/code_snippets.rb
116
116
  - lib/cuukie/formatter.rb
117
- - lib/cuukie/public/cucumber.css
118
- - lib/cuukie/public/cuukie.js
119
- - lib/cuukie/public/jquery-1.7.min.js
120
- - lib/cuukie/server.rb
121
- - lib/cuukie/views/index.erb
117
+ - lib/cuukie/server/public/cucumber.css
118
+ - lib/cuukie/server/public/cuukie.js
119
+ - lib/cuukie/server/public/jquery-1.7.min.js
120
+ - lib/cuukie/server/server.rb
121
+ - lib/cuukie/server/views/index.erb
122
122
  - spec/cli_spec.rb
123
123
  - spec/code_snippets_spec.rb
124
124
  - spec/commands_spec.rb
@@ -130,7 +130,6 @@ files:
130
130
  - spec/test_project/features/4_exception_with_no_source.feature
131
131
  - spec/test_project/features/step_definitions/exception_steps.rb
132
132
  - spec/test_project/features/step_definitions/main_steps.rb
133
- - spec/test_project/features/support/formatters.rb
134
133
  homepage: http://github.com/nusco/cuukie
135
134
  licenses:
136
135
  - MIT
@@ -146,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
145
  version: '0'
147
146
  segments:
148
147
  - 0
149
- hash: -2139021619406699883
148
+ hash: 787056299110256408
150
149
  required_rubygems_version: !ruby/object:Gem::Requirement
151
150
  none: false
152
151
  requirements:
@@ -1 +0,0 @@
1
- require '../../lib/cuukie'