rspec_approvals 0.8.0 → 0.9.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.
- checksums.yaml +4 -4
- data/README.md +12 -1
- data/lib/rspec_approvals/approval_handler.rb +8 -16
- data/lib/rspec_approvals/extensions/stringio.rb +28 -0
- data/lib/rspec_approvals/prompt.rb +25 -0
- data/lib/rspec_approvals/stream.rb +17 -16
- data/lib/rspec_approvals/version.rb +1 -1
- data/lib/rspec_approvals.rb +2 -0
- metadata +5 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fb4bded8ab248d2bd2826a66f0bbac01188b92614bea48bfb0203f80f118934
|
4
|
+
data.tar.gz: cfaf0bea149ef3926d99f136f291b837756af97dda04d807ce47d55f57dc72a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 041c95b54d4a62f16f0de9fb0502eb482723caca78698e7d9c0d41e5ce42031acbb59ced32bf18524962044ef3baa2daf6db0e07d5802350d13d550bd3cf3d50
|
7
|
+
data.tar.gz: e77f8886c6a274455423a2ee584342a78d89a53536d75419d5965d4013d8f5166c96faadd4aec4e1980d4a0dc80c8a9cb0e1fc33d04048f62170841f911a8d26
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/rspec_approvals)
|
4
4
|
[](https://github.com/DannyBen/rspec_approvals/actions?query=workflow%3ATest)
|
5
|
-
[](https://codeclimate.com/github/DannyBen/rspec_approvals/maintainability)
|
6
6
|
|
7
7
|
---
|
8
8
|
|
@@ -237,6 +237,17 @@ ENV['COLUMNS'] = '80'
|
|
237
237
|
ENV['LINES'] = '24'
|
238
238
|
```
|
239
239
|
|
240
|
+
### Recommended rspec flags
|
241
|
+
|
242
|
+
For best results, it is recommended you configure rspec to use the
|
243
|
+
documentation format. Place the code below in a file named `.rspec`
|
244
|
+
in your project's directory:
|
245
|
+
|
246
|
+
```
|
247
|
+
--color
|
248
|
+
--format documentation
|
249
|
+
```
|
250
|
+
|
240
251
|
## Contributing / Support
|
241
252
|
|
242
253
|
If you experience any issue, have a question or a suggestion, or if you wish
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'io/console'
|
2
2
|
require 'colsole'
|
3
|
-
require 'tty-prompt'
|
4
3
|
require 'diffy'
|
5
4
|
|
6
5
|
module RSpecApprovals
|
@@ -20,7 +19,7 @@ module RSpecApprovals
|
|
20
19
|
prompt_user
|
21
20
|
end
|
22
21
|
|
23
|
-
|
22
|
+
private
|
24
23
|
|
25
24
|
def prompt_user
|
26
25
|
response = auto_approve? ? :approve : get_response
|
@@ -45,23 +44,19 @@ module RSpecApprovals
|
|
45
44
|
end
|
46
45
|
|
47
46
|
def get_response
|
48
|
-
|
49
|
-
rescue TTY::Reader::InputInterrupt
|
50
|
-
# :nocov:
|
51
|
-
return :reject
|
52
|
-
# :nocov:
|
47
|
+
Prompt.select "Please Choose:", 'r', menu_options
|
53
48
|
end
|
54
49
|
|
55
50
|
def menu_options
|
56
51
|
base = {
|
57
|
-
'
|
58
|
-
'
|
52
|
+
'a' => ['Approve (and save)', :approve],
|
53
|
+
'r' => ['Reject (and fail test)', :reject]
|
59
54
|
}
|
60
55
|
|
61
56
|
extra = {
|
62
|
-
'Show actual output'
|
63
|
-
'Show expected output'
|
64
|
-
'Show diff'
|
57
|
+
'1' => ['Show actual output', :actual],
|
58
|
+
'2' => ['Show expected output', :expected],
|
59
|
+
'3' => ['Show diff', :diff]
|
65
60
|
}
|
66
61
|
|
67
62
|
expected.empty? ? base : base.merge(extra)
|
@@ -87,13 +82,10 @@ module RSpecApprovals
|
|
87
82
|
end
|
88
83
|
|
89
84
|
def show(what)
|
85
|
+
say ""
|
90
86
|
say separator
|
91
87
|
say what
|
92
88
|
say separator
|
93
89
|
end
|
94
|
-
|
95
|
-
def prompt
|
96
|
-
@prompt ||= TTY::Prompt.new
|
97
|
-
end
|
98
90
|
end
|
99
91
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# This is a fix for a pesky issue with tty-screen, which is a sub-dependency
|
2
|
+
# of tty-* gems.
|
3
|
+
# Without this fix, gems that include rspec_approval and tty-* gems might
|
4
|
+
# cause an error in some cases.
|
5
|
+
#
|
6
|
+
# ref: https://github.com/piotrmurach/tty-screen/issues/11
|
7
|
+
require 'stringio'
|
8
|
+
|
9
|
+
unless StringIO.method_defined? :ioctl
|
10
|
+
class StringIO
|
11
|
+
def ioctl(*)
|
12
|
+
# :nocov:
|
13
|
+
80
|
14
|
+
# :nocov:
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
unless StringIO.method_defined? :wait_readable
|
20
|
+
class StringIO
|
21
|
+
def wait_readable(*)
|
22
|
+
# :nocov:
|
23
|
+
true
|
24
|
+
# :nocov:
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'io/console'
|
2
|
+
require 'colsole'
|
3
|
+
|
4
|
+
module RSpecApprovals
|
5
|
+
class Prompt
|
6
|
+
class << self
|
7
|
+
include Colsole
|
8
|
+
|
9
|
+
def select(prompt, default, options)
|
10
|
+
options.each do |key, config|
|
11
|
+
color = key == default ? 'txtred' : 'txtgrn'
|
12
|
+
say "!#{color}!#{key}!txtrst!) #{config.first}"
|
13
|
+
end
|
14
|
+
|
15
|
+
say "\n!txtblu!#{prompt}!txtrst! "
|
16
|
+
response = STDIN.getch.downcase
|
17
|
+
|
18
|
+
response = default unless options.has_key? response
|
19
|
+
|
20
|
+
resay "!txtpur!#{options[response].first}"
|
21
|
+
options[response].last
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -6,35 +6,36 @@ module RSpecApprovals
|
|
6
6
|
# These methods are borrowed from rspec's built in matchers
|
7
7
|
# https://github.com/rspec/rspec-expectations/blob/add9b271ecb1d65f7da5bc8a9dd8c64d81d92303/lib/rspec/matchers/built_in/output.rb
|
8
8
|
module Stream
|
9
|
-
module
|
10
|
-
def self.capture(block)
|
9
|
+
module Capture
|
10
|
+
def self.capture(stream, block)
|
11
11
|
RSpecApprovals.stdout.truncate 0
|
12
12
|
RSpecApprovals.stdout.rewind
|
13
|
+
RSpecApprovals.stderr.truncate 0
|
14
|
+
RSpecApprovals.stderr.rewind
|
13
15
|
|
14
|
-
|
16
|
+
stdout_original_stream = $stdout
|
17
|
+
stderr_original_stream = $stderr
|
15
18
|
$stdout = RSpecApprovals.stdout
|
19
|
+
$stderr = RSpecApprovals.stderr
|
16
20
|
block.call
|
17
|
-
RSpecApprovals.
|
21
|
+
RSpecApprovals.send(stream).string.dup
|
18
22
|
|
19
23
|
ensure
|
20
|
-
$stdout =
|
24
|
+
$stdout = stdout_original_stream
|
25
|
+
$stderr = stderr_original_stream
|
21
26
|
|
22
27
|
end
|
23
28
|
end
|
24
29
|
|
25
|
-
module
|
30
|
+
module Stdout
|
26
31
|
def self.capture(block)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
original_stream = $stderr
|
31
|
-
$stderr = RSpecApprovals.stderr
|
32
|
-
block.call
|
33
|
-
RSpecApprovals.stderr.string.dup
|
34
|
-
|
35
|
-
ensure
|
36
|
-
$stderr = original_stream
|
32
|
+
Capture.capture :stdout, block
|
33
|
+
end
|
34
|
+
end
|
37
35
|
|
36
|
+
module Stderr
|
37
|
+
def self.capture(block)
|
38
|
+
Capture.capture :stderr, block
|
38
39
|
end
|
39
40
|
end
|
40
41
|
end
|
data/lib/rspec_approvals.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rspec_approvals/extensions/file'
|
2
|
+
require 'rspec_approvals/extensions/stringio'
|
2
3
|
|
3
4
|
require 'rspec_approvals/module_functions'
|
5
|
+
require 'rspec_approvals/prompt'
|
4
6
|
require 'rspec_approvals/stream'
|
5
7
|
require 'rspec_approvals/approval_handler'
|
6
8
|
require 'rspec_approvals/matchers/base'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec_approvals
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danny Ben Shitrit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colsole
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.3'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: tty-prompt
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.19'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0.19'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: strings-ansi
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -90,11 +76,13 @@ files:
|
|
90
76
|
- lib/rspec_approvals.rb
|
91
77
|
- lib/rspec_approvals/approval_handler.rb
|
92
78
|
- lib/rspec_approvals/extensions/file.rb
|
79
|
+
- lib/rspec_approvals/extensions/stringio.rb
|
93
80
|
- lib/rspec_approvals/matchers/base.rb
|
94
81
|
- lib/rspec_approvals/matchers/match_approval.rb
|
95
82
|
- lib/rspec_approvals/matchers/output_approval.rb
|
96
83
|
- lib/rspec_approvals/matchers/raise_approval.rb
|
97
84
|
- lib/rspec_approvals/module_functions.rb
|
85
|
+
- lib/rspec_approvals/prompt.rb
|
98
86
|
- lib/rspec_approvals/rspec_config.rb
|
99
87
|
- lib/rspec_approvals/stream.rb
|
100
88
|
- lib/rspec_approvals/version.rb
|
@@ -117,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
105
|
- !ruby/object:Gem::Version
|
118
106
|
version: '0'
|
119
107
|
requirements: []
|
120
|
-
rubygems_version: 3.
|
108
|
+
rubygems_version: 3.2.25
|
121
109
|
signing_key:
|
122
110
|
specification_version: 4
|
123
111
|
summary: Interactive RSpec Approvals
|