rspec_fixtures 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5dcbd201cfc8ce961170eab0d1293f45442f0175ad029fb89272669438b347b
4
- data.tar.gz: d9f1bc75b1e82777eaa0b14c3e06d10bbe292a593210d0802d5302f53e5d8674
3
+ metadata.gz: 33762df05360b5ddd7eaa8e43e4447079d7835c54848678020971656d265d7b3
4
+ data.tar.gz: ae15eddc474dbe939e4c05093ebd386c0f0ec68ba5ce2b2b43b2e36ea9c46b68
5
5
  SHA512:
6
- metadata.gz: eedf09c7c9eae0382f4be79c1cc24ea6a2edce727bce2993ca02803d08463edc8c361abe100048cbb88bf72ca65b46d7060225a62fd055ddaf7546b848d4555b
7
- data.tar.gz: 34a7501c494aac09839a4025fe9a027a8347cc1f9ddd351bb81e72101731ca51c0f21ce73b5f2a1daf959b223f0a2ae2e981558bf1ca386c307e02288eebb924
6
+ metadata.gz: c4367dff06a97b7852e1e2a8e4d4f3eacecf620ecbba6e4c7422841442767719ea7130a3282cd94c9a6eb9b2748a3e11f6ad1800ada194db1f70b0337efbe0f9
7
+ data.tar.gz: 7998918e1c737a6d0777f334a8a358cf343e2473e23119465c380312bcaf8f80536fb46143bd446a3ad3b9be4c09886fa429d92ed26b74db52d6cdf91aeb20f6
data/README.md CHANGED
@@ -99,7 +99,7 @@ Modifiers
99
99
  Adding `diff(distance)` to either `match_fixture` or `output_fixture` will
100
100
  change the matching behavior. Instead of expecting the strings to be exactly
101
101
  the same, using `diff` compares the strings using the
102
- [Levenshtein distance][1] algorithm.
102
+ [Levenshtein distance][levenshtein] algorithm.
103
103
 
104
104
  In the below example, we allow up to 5 characters to be different.
105
105
 
@@ -209,4 +209,36 @@ end
209
209
  ```
210
210
 
211
211
 
212
- [1]: https://en.wikipedia.org/wiki/Levenshtein_distance
212
+ Advanced Usage Tips
213
+ --------------------------------------------------
214
+
215
+ In some cases, you might need to send output directly to the `RSpecFixture`
216
+ stream capturer.
217
+
218
+ An example use case, is when you are testing `Logger` output.
219
+
220
+ The `RSpecFixture#stdout` and `RSpecFixture#stderr` can be used as an
221
+ alternative to `$stdout` and `$stderr`. These methods both return the
222
+ `StringIO` object that is used by `RSpecFixtures` to capture the output.
223
+
224
+ For example, you can use this:
225
+
226
+ ```ruby
227
+ logger = Logger.new(RSpecFixtures.stdout)
228
+ ```
229
+
230
+ as an alternative to this:
231
+
232
+ ```
233
+ logger = Logger.new($stdout)
234
+ ```
235
+
236
+ Contributing / Support
237
+ --------------------------------------------------
238
+
239
+ If you experience any issue, have a question or a suggestion, or if you wish
240
+ to contribute, feel free to [open an issue][issues].
241
+
242
+
243
+ [levenshtein]: https://en.wikipedia.org/wiki/Levenshtein_distance
244
+ [issues]: https://github.com/DannyBen/rspec_fixtures/issues
@@ -6,6 +6,7 @@ module RSpecFixtures
6
6
  attr_reader :fixture_name, :actual, :distance, :actual_distance
7
7
 
8
8
  def initialize(fixture_name=nil)
9
+ @before = nil
9
10
  @fixture_name = fixture_name
10
11
  end
11
12
 
@@ -23,19 +23,19 @@ module RSpecFixtures
23
23
  # expect{ stream }.to output_fixture(file).to_stdout
24
24
  # This is the default, and only provided for completeness.
25
25
  def to_stdout
26
- @stream_capturer = CaptureStdout
26
+ @stream_capturer = Stream::Stdout
27
27
  self
28
28
  end
29
29
 
30
30
  # Adds chained matcher, to allow:
31
31
  # expect{ stream }.to output_fixture(file).to_stderr
32
32
  def to_stderr
33
- @stream_capturer = CaptureStderr
33
+ @stream_capturer = Stream::Stderr
34
34
  self
35
35
  end
36
36
 
37
37
  def stream_capturer
38
- @stream_capturer ||= CaptureStdout
38
+ @stream_capturer ||= Stream::Stdout
39
39
  end
40
40
 
41
41
  end
@@ -0,0 +1,11 @@
1
+ module RSpecFixtures
2
+ class << self
3
+ def stdout
4
+ @stdout ||= StringIO.new
5
+ end
6
+
7
+ def stderr
8
+ @stderr ||= StringIO.new
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,47 @@
1
+ require 'strings-ansi'
2
+
3
+ module RSpecFixtures
4
+ # Capture stdout and stderr
5
+ #
6
+ # These methods are borrowed from rspec's built in matchers
7
+ # https://github.com/rspec/rspec-expectations/blob/add9b271ecb1d65f7da5bc8a9dd8c64d81d92303/lib/rspec/matchers/built_in/output.rb
8
+ module Stream
9
+ module Stdout
10
+ def self.capture(block)
11
+ captured_stream = RSpecFixtures.stdout
12
+
13
+ original_stream = $stdout
14
+ $stdout = captured_stream
15
+
16
+ block.call
17
+
18
+ result = captured_stream.string.dup
19
+ captured_stream.truncate 0
20
+ captured_stream.rewind
21
+ result
22
+
23
+ ensure
24
+ $stdout = original_stream
25
+ end
26
+ end
27
+
28
+ module Stderr
29
+ def self.capture(block)
30
+ captured_stream = RSpecFixtures.stderr
31
+
32
+ original_stream = $stderr
33
+ $stderr = captured_stream
34
+
35
+ block.call
36
+
37
+ result = captured_stream.string.dup
38
+ captured_stream.truncate 0
39
+ captured_stream.rewind
40
+ result
41
+
42
+ ensure
43
+ $stderr = original_stream
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,3 +1,3 @@
1
1
  module RSpecFixtures
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.1"
3
3
  end
@@ -1,6 +1,7 @@
1
1
  require 'rspec_fixtures/extensions/file'
2
2
 
3
- require 'rspec_fixtures/stream_capturer'
3
+ require 'rspec_fixtures/module_functions'
4
+ require 'rspec_fixtures/stream'
4
5
  require 'rspec_fixtures/approval_handler'
5
6
  require 'rspec_fixtures/matchers/base'
6
7
  require 'rspec_fixtures/matchers/match_fixture'
@@ -8,3 +9,4 @@ require 'rspec_fixtures/matchers/output_fixture'
8
9
  require 'rspec_fixtures/matchers/raise_fixture'
9
10
 
10
11
  require 'rspec_fixtures/rspec_config'
12
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec_fixtures
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
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: 2020-01-11 00:00:00.000000000 Z
11
+ date: 2020-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
@@ -94,8 +94,9 @@ files:
94
94
  - lib/rspec_fixtures/matchers/match_fixture.rb
95
95
  - lib/rspec_fixtures/matchers/output_fixture.rb
96
96
  - lib/rspec_fixtures/matchers/raise_fixture.rb
97
+ - lib/rspec_fixtures/module_functions.rb
97
98
  - lib/rspec_fixtures/rspec_config.rb
98
- - lib/rspec_fixtures/stream_capturer.rb
99
+ - lib/rspec_fixtures/stream.rb
99
100
  - lib/rspec_fixtures/version.rb
100
101
  homepage: https://github.com/DannyBen/rspec_fixtures
101
102
  licenses:
@@ -1,39 +0,0 @@
1
- require 'strings-ansi'
2
-
3
- module RSpecFixtures
4
- # Capture stdout and stderr
5
- #
6
- # These methods are borrowed from rspec's built in matchers
7
- # https://github.com/rspec/rspec-expectations/blob/add9b271ecb1d65f7da5bc8a9dd8c64d81d92303/lib/rspec/matchers/built_in/output.rb
8
- module CaptureStdout
9
- def self.capture(block)
10
- captured_stream = StringIO.new
11
-
12
- original_stream = $stdout
13
- $stdout = captured_stream
14
-
15
- block.call
16
-
17
- captured_stream.string
18
-
19
- ensure
20
- $stdout = original_stream
21
- end
22
- end
23
-
24
- module CaptureStderr
25
- def self.capture(block)
26
- captured_stream = StringIO.new
27
-
28
- original_stream = $stderr
29
- $stderr = captured_stream
30
-
31
- block.call
32
-
33
- captured_stream.string
34
-
35
- ensure
36
- $stderr = original_stream
37
- end
38
- end
39
- end