crudecumber 0.1.3

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d4b2f150039642ac68d438ca544d69a5f40e6830
4
+ data.tar.gz: 291d9192107bb5786868669eb8577bc0edb10280
5
+ SHA512:
6
+ metadata.gz: c91452bf353ec656f5947f744090ab185b478a0c3c980cf99092fa77d16517d03420670911acf60639b79589bb4f4c6a3b175ebcefd52a7e11e7f1a1ad4b6bd2
7
+ data.tar.gz: a7435fd4f56e0d1605b2e9eecf817afe78d69147d5931d72ddbd619e3fd6e72cca899ec9a13f0041bf5d08b901d0550935bb60d07fe056ed52418833151d926f
data/bin/crudecumber ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'crudecumber'
@@ -0,0 +1,34 @@
1
+ # This simply requires the Crudecumber step definitions and runs Cucumber with
2
+ # a SlowHandCuke style formatter and an output HTML report.
3
+
4
+ trap('INT') do
5
+ system('stty -raw echo')
6
+ STDERR.puts "\n\n"
7
+ exit!(1)
8
+ end
9
+
10
+ def log(message)
11
+ return unless ARGV.include?('-v' || '--verbose')
12
+ $stdout.puts "#{Time.now.strftime('%Y-%m-%d %H:%M:%S')} - #{message}"
13
+ end
14
+
15
+ def steps
16
+ File.join(File.dirname(File.expand_path(__FILE__)),
17
+ 'crudecumber/crudecumber_steps.rb')
18
+ end
19
+
20
+ def support_files
21
+ File.join(File.dirname(File.expand_path(__FILE__)),
22
+ 'crudecumber/support/')
23
+ end
24
+
25
+ STDOUT.sync = true
26
+ arguments = ARGV
27
+ cmd = "cucumber #{arguments.join(' ')} -r #{steps} -r #{support_files} "\
28
+ '-f Crudecumber::Formatter -f Crudecumber::Report '\
29
+ '-o crudecumber_results.html'
30
+ log cmd
31
+ exit_code = system(cmd)
32
+
33
+ sleep(1)
34
+ exit_code
@@ -0,0 +1,18 @@
1
+ # Global step definition which matches with all steps in a feature.
2
+ # Essentially listens for the keys "return", "p", "f", "x" and "s" and then
3
+ # decides whether to pass, fail or skip the step being run.
4
+
5
+ Then(/^.*$/) do
6
+ Cucumber.trap_interrupt
7
+ key = capture_key
8
+ if skipped?(key)
9
+ puts ' Test skipped'
10
+ pending
11
+ else
12
+ unless pass?(key)
13
+ print "\n Describe the problem: "
14
+ puts ' Notes: ' + STDIN.gets.chomp
15
+ fail
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,37 @@
1
+ require 'rubygems'
2
+ require 'cucumber/formatter/pretty'
3
+ require 'cucumber/formatter/html'
4
+
5
+ module Crudecumber
6
+ # Custom formatter that inherits from the standard Cucumber 'Pretty'
7
+ # formatter used for terminal output.
8
+ #
9
+ # The formatter prints each scenario step before it is run (similar to the
10
+ # SlowHandCuke formatter) and stops irrelevant Ruby errors being displayed.
11
+ class Formatter < Cucumber::Formatter::Pretty
12
+ def before_step(step)
13
+ @io.printf "... #{step.name}"
14
+ @io.flush
15
+ end
16
+
17
+ def before_step_result(*args)
18
+ @io.printf "\r"
19
+ super
20
+ end
21
+
22
+ def exception(_arg_1, _arg_2)
23
+ # Do nothing
24
+ end
25
+ end
26
+
27
+ # Custom formatter that inherits from the standard Cucumber 'Html' formatter
28
+ # used for terminal output.
29
+ #
30
+ # The formatters sole purpose is to stop ruby errors being displayed in the
31
+ # output HTML report.
32
+ class Report < Cucumber::Formatter::Html
33
+ def exception(_arg_1, _arg_2)
34
+ # Do nothing
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,12 @@
1
+ require 'launchy'
2
+
3
+ require File.dirname(__FILE__) + '/pass_fail.rb'
4
+ require File.dirname(__FILE__) + '/crudecumber_formatter.rb'
5
+
6
+ # Automatically opens the HTML report unless Crudecumber is terminated early.
7
+ at_exit do
8
+ d = Dir.pwd
9
+ unless Cucumber.wants_to_quit
10
+ Launchy.open('file:///' + d + '/crudecumber_results.html')
11
+ end
12
+ end
@@ -0,0 +1,40 @@
1
+ require 'io/console'
2
+
3
+ # Listens for the keys "return", "p", "f", "x" and "s" and then decides whether
4
+ # to pass, fail, or skip the step being run.
5
+ module PassFail
6
+ def capture_key
7
+ str = ''
8
+ system('stty raw -echo isig')
9
+ str = STDIN.getc.chr until ['p', "\r", 'f', 'x', 's'].include? str.downcase
10
+ system('stty -raw echo')
11
+ str.downcase
12
+ end
13
+
14
+ def skipped?(a)
15
+ {
16
+ s: true,
17
+ p: false,
18
+ :"\r" => false,
19
+ x: false,
20
+ f: false
21
+ }[a.to_sym]
22
+ end
23
+
24
+ def pass?(a)
25
+ {
26
+ p: true,
27
+ :"\r" => true,
28
+ x: false,
29
+ f: false
30
+ }[a.to_sym]
31
+ end
32
+
33
+ def Cucumber.trap_interrupt
34
+ trap('INT') do
35
+ exit!(1)
36
+ end
37
+ end
38
+ end
39
+
40
+ World(PassFail)
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: crudecumber
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - Dan Buckland
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cucumber
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: launchy
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.0.4
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.0.4
53
+ description: |-
54
+ Manually run through your Cucumber scenarios.
55
+
56
+ Run exactly as you would run Cucumber but instead use "crudecumber" followed
57
+ by your usual arguments. May not work if you use profiles to manually require
58
+ automation step definitions.
59
+ email: danbucklan@gmail.com
60
+ executables:
61
+ - crudecumber
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - bin/crudecumber
66
+ - lib/crudecumber.rb
67
+ - lib/crudecumber/crudecumber_steps.rb
68
+ - lib/crudecumber/support/crudecumber_formatter.rb
69
+ - lib/crudecumber/support/env.rb
70
+ - lib/crudecumber/support/pass_fail.rb
71
+ homepage: https://github.com/danbuckland/crudecumber
72
+ licenses:
73
+ - MIT
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 1.9.3
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 2.2.2
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: Crudecumber 0.1.3
95
+ test_files: []