rspec-support 3.8.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.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +1 -0
  3. data.tar.gz.sig +0 -0
  4. data/Changelog.md +269 -0
  5. data/LICENSE.md +23 -0
  6. data/README.md +40 -0
  7. data/lib/rspec/support.rb +149 -0
  8. data/lib/rspec/support/caller_filter.rb +83 -0
  9. data/lib/rspec/support/comparable_version.rb +46 -0
  10. data/lib/rspec/support/differ.rb +215 -0
  11. data/lib/rspec/support/directory_maker.rb +63 -0
  12. data/lib/rspec/support/encoded_string.rb +165 -0
  13. data/lib/rspec/support/fuzzy_matcher.rb +48 -0
  14. data/lib/rspec/support/hunk_generator.rb +47 -0
  15. data/lib/rspec/support/matcher_definition.rb +42 -0
  16. data/lib/rspec/support/method_signature_verifier.rb +438 -0
  17. data/lib/rspec/support/mutex.rb +73 -0
  18. data/lib/rspec/support/object_formatter.rb +275 -0
  19. data/lib/rspec/support/recursive_const_methods.rb +76 -0
  20. data/lib/rspec/support/reentrant_mutex.rb +53 -0
  21. data/lib/rspec/support/ruby_features.rb +176 -0
  22. data/lib/rspec/support/source.rb +75 -0
  23. data/lib/rspec/support/source/location.rb +21 -0
  24. data/lib/rspec/support/source/node.rb +110 -0
  25. data/lib/rspec/support/source/token.rb +87 -0
  26. data/lib/rspec/support/spec.rb +81 -0
  27. data/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  28. data/lib/rspec/support/spec/formatting_support.rb +9 -0
  29. data/lib/rspec/support/spec/in_sub_process.rb +69 -0
  30. data/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  31. data/lib/rspec/support/spec/shell_out.rb +89 -0
  32. data/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  33. data/lib/rspec/support/spec/string_matcher.rb +46 -0
  34. data/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  35. data/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  36. data/lib/rspec/support/version.rb +7 -0
  37. data/lib/rspec/support/warnings.rb +39 -0
  38. metadata +150 -0
  39. metadata.gz.sig +0 -0
@@ -0,0 +1,63 @@
1
+ require 'stringio'
2
+
3
+ module RSpec
4
+ module Support
5
+ class StdErrSplitter
6
+ def initialize(original)
7
+ @orig_stderr = original
8
+ @output_tracker = ::StringIO.new
9
+ end
10
+
11
+ respond_to_name = (::RUBY_VERSION.to_f < 1.9) ? :respond_to? : :respond_to_missing?
12
+ define_method respond_to_name do |*args|
13
+ @orig_stderr.respond_to?(*args) || super(*args)
14
+ end
15
+
16
+ def method_missing(name, *args, &block)
17
+ @output_tracker.__send__(name, *args, &block) if @output_tracker.respond_to?(name)
18
+ @orig_stderr.__send__(name, *args, &block)
19
+ end
20
+
21
+ def ==(other)
22
+ @orig_stderr == other
23
+ end
24
+
25
+ def reopen(*args)
26
+ reset!
27
+ @orig_stderr.reopen(*args)
28
+ end
29
+
30
+ # To work around JRuby error:
31
+ # can't convert RSpec::Support::StdErrSplitter into String
32
+ def to_io
33
+ @orig_stderr.to_io
34
+ end
35
+
36
+ # To work around JRuby error:
37
+ # TypeError: $stderr must have write method, RSpec::StdErrSplitter given
38
+ def write(line)
39
+ return if line =~ %r{^\S+/gems/\S+:\d+: warning:} # http://rubular.com/r/kqeUIZOfPG
40
+
41
+ @orig_stderr.write(line)
42
+ @output_tracker.write(line)
43
+ end
44
+
45
+ def has_output?
46
+ !output.empty?
47
+ end
48
+
49
+ def reset!
50
+ @output_tracker = ::StringIO.new
51
+ end
52
+
53
+ def verify_no_warnings!
54
+ raise "Warnings were generated: #{output}" if has_output?
55
+ reset!
56
+ end
57
+
58
+ def output
59
+ @output_tracker.string
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,46 @@
1
+ require 'rspec/matchers'
2
+ # Special matcher for comparing encoded strings so that
3
+ # we don't run any expectation failures through the Differ,
4
+ # which also relies on EncodedString. Instead, confirm the
5
+ # strings have the same bytes.
6
+ RSpec::Matchers.define :be_identical_string do |expected|
7
+
8
+ if String.method_defined?(:encoding)
9
+ match do
10
+ expected_encoding? &&
11
+ actual.bytes.to_a == expected.bytes.to_a
12
+ end
13
+
14
+ failure_message do
15
+ "expected\n#{actual.inspect} (#{actual.encoding.name}) to be identical to\n"\
16
+ "#{expected.inspect} (#{expected.encoding.name})\n"\
17
+ "The exact bytes are printed below for more detail:\n"\
18
+ "#{actual.bytes.to_a}\n"\
19
+ "#{expected.bytes.to_a}\n"\
20
+ end
21
+
22
+ # Depends on chaining :with_same_encoding for it to
23
+ # check for string encoding.
24
+ def expected_encoding?
25
+ if defined?(@expect_same_encoding) && @expect_same_encoding
26
+ actual.encoding == expected.encoding
27
+ else
28
+ true
29
+ end
30
+ end
31
+ else
32
+ match do
33
+ actual.split(//) == expected.split(//)
34
+ end
35
+
36
+ failure_message do
37
+ "expected\n#{actual.inspect} to be identical to\n#{expected.inspect}\n"
38
+ end
39
+ end
40
+
41
+ chain :with_same_encoding do
42
+ @expect_same_encoding ||= true
43
+ end
44
+ end
45
+ RSpec::Matchers.alias_matcher :a_string_identical_to, :be_identical_string
46
+ RSpec::Matchers.alias_matcher :be_diffed_as, :be_identical_string
@@ -0,0 +1,13 @@
1
+ require 'tmpdir'
2
+
3
+ RSpec.shared_context "isolated directory" do
4
+ around do |ex|
5
+ Dir.mktmpdir do |tmp_dir|
6
+ Dir.chdir(tmp_dir, &ex)
7
+ end
8
+ end
9
+ end
10
+
11
+ RSpec.configure do |c|
12
+ c.include_context "isolated directory", :isolated_directory => true
13
+ end
@@ -0,0 +1,13 @@
1
+ module RSpec
2
+ module Support
3
+ module WithIsolatedStdErr
4
+ def with_isolated_stderr
5
+ original = $stderr
6
+ $stderr = StringIO.new
7
+ yield
8
+ ensure
9
+ $stderr = original
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module RSpec
2
+ module Support
3
+ module Version
4
+ STRING = '3.8.3'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,39 @@
1
+ require 'rspec/support'
2
+ RSpec::Support.require_rspec_support "caller_filter"
3
+
4
+ module RSpec
5
+ module Support
6
+ module Warnings
7
+ def deprecate(deprecated, options={})
8
+ warn_with "DEPRECATION: #{deprecated} is deprecated.", options
9
+ end
10
+
11
+ # @private
12
+ #
13
+ # Used internally to print deprecation warnings
14
+ # when rspec-core isn't loaded
15
+ def warn_deprecation(message, options={})
16
+ warn_with "DEPRECATION: \n #{message}", options
17
+ end
18
+
19
+ # @private
20
+ #
21
+ # Used internally to print warnings
22
+ def warning(text, options={})
23
+ warn_with "WARNING: #{text}.", options
24
+ end
25
+
26
+ # @private
27
+ #
28
+ # Used internally to print longer warnings
29
+ def warn_with(message, options={})
30
+ call_site = options.fetch(:call_site) { CallerFilter.first_non_rspec_line }
31
+ message += " Use #{options[:replacement]} instead." if options[:replacement]
32
+ message += " Called from #{call_site}." if call_site
33
+ Support.warning_notifier.call message
34
+ end
35
+ end
36
+ end
37
+
38
+ extend RSpec::Support::Warnings
39
+ end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rspec-support
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.8.3
5
+ platform: ruby
6
+ authors:
7
+ - David Chelimsky
8
+ - Myron Marson
9
+ - Jon Rowe
10
+ - Sam Phippen
11
+ - Xaviery Shay
12
+ - Bradley Schaefer
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain:
16
+ - |
17
+ -----BEGIN CERTIFICATE-----
18
+ MIIF1TCCA72gAwIBAgIJAPXjfUbCjdXUMA0GCSqGSIb3DQEBBQUAMIGAMQswCQYD
19
+ VQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEO
20
+ MAwGA1UECgwFUlNwZWMxEzARBgNVBAMMCnJzcGVjLmluZm8xJTAjBgkqhkiG9w0B
21
+ CQEWFnJzcGVjQGdvb2dsZWdyb3Vwcy5jb20wHhcNMTQxMjIzMDkzNTIyWhcNMjQx
22
+ MjIyMDkzNTIyWjCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24x
23
+ EDAOBgNVBAcMB1NlYXR0bGUxDjAMBgNVBAoMBVJTcGVjMRMwEQYDVQQDDApyc3Bl
24
+ Yy5pbmZvMSUwIwYJKoZIhvcNAQkBFhZyc3BlY0Bnb29nbGVncm91cHMuY29tMIIC
25
+ IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsSmjgcHaKlD0jizRJowi2bGI
26
+ KMOHnJoExxRNHHxH+3w9kkl95YldvDRVX495b13ZCzwRe0AyqX24wq04tp0G5Z5C
27
+ e/w2pnNK4ol1eECPwQu+YGpepeODlZICL5gwQspe0cDifbBnHx5QySMiPpvx6bC0
28
+ tQTox0ppDIaMhch8IPCwyoE4DQK5bpsdwnLSHTsQjUIb7IM8tUMpd/iKrJgNffwc
29
+ 6gC1TmhIlzQoB26nCNh9uK7xZjUM+sGECzvcYuImchUaIgJA/ybrlZS+m/hxzvBo
30
+ mLnn/xNEC6Vz5HG+3TR0Gb0cSUf6XUu2s51Jk/SJi3MhCZp2gs9OUg4EVZNzQVkZ
31
+ efLBjAZG2Mxk14JyB4/Omc+Jk0ajprINCBbUNnxzCJrYDM3J9TVWIwyUGNX/U3MO
32
+ s3tMAT+EVgx/mZMPnBO8EULlyF51MRUp3Wy9Mnw8AYLk30UnMG5AjqgO5JNyFlA7
33
+ Xeh3EVdWY3vMB1pkhPwlsenpcmj5gOzrd54lELOVbCGHCf48iSqeflY2Lhe0pvzK
34
+ blXCJBDmtrebvus291rM/dHcbEfK1SVd5Wut/n131iouf6dnNCFskFygDcgBbthC
35
+ gpEMqf80lEmhX59VUsm0Pv6OEo+ZPHBvXPiJA6DShQh9t3YtpwyA8uVDMbT/i32u
36
+ 2FUsqZbbJcCmkBrGposCAwEAAaNQME4wHQYDVR0OBBYEFPPvQ5XT0Nvuhi6k+hrW
37
+ Vv35J+TeMB8GA1UdIwQYMBaAFPPvQ5XT0Nvuhi6k+hrWVv35J+TeMAwGA1UdEwQF
38
+ MAMBAf8wDQYJKoZIhvcNAQEFBQADggIBAIqbQSWH2aAF537DKwAMB8nMFsoe24MD
39
+ gtuQAyjTtbH+QBE4N2RdQF/sU7Y3PYR7nqdrCsYc3RxyqM5XXi7I3IYdpfe1RuxY
40
+ +pyPzVQsPPDhMlJlCrwJsADnxlpxZlAgxYSLKOan55ihscaAWA90wqRUrf/ZJM36
41
+ 8LWCPVn5teIt5aaxZWX68RMxa+AXvpbtJOBwXLkIFk3apD8CX4DhelIdw67DbkUe
42
+ ghUd/u62qrnqBTVgditt7OoWIZjzh24/Fda5d0MxZyvLILGOrf5bN4cTbe/q9Cid
43
+ Xrik7Upm+mu3y3yQIfrw85xybHq6iNXyYHvCdSrFfCIKrGpd/0CAdmYnJlx59Fk/
44
+ UbD3Eyx4psBSkU+WKO0Uf+3zNI7N/nVeNIwU/Ft+l8l7/K+427656c+ZGWDO0Gt/
45
+ BeEOSTDKP7qQ1T+JvMrBcBQo+i0cnRT10J1aoV90BhxsvWTRizIbugbaqR6Tq3bj
46
+ Akt00cIlNSplL6DenIAKSh5kF7s0tRD0tC3bNkZmNjNGkdoGEcUODEpTB3RHKKiu
47
+ e6k2Jg6m00z5vGFQhOnROG/QaUzMA3A3mFBe1RHFo07xd0pFeoeWL3vF69Gx9Jwp
48
+ ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
49
+ F3MdtaDehhjC
50
+ -----END CERTIFICATE-----
51
+ date: 2019-10-02 00:00:00.000000000 Z
52
+ dependencies:
53
+ - !ruby/object:Gem::Dependency
54
+ name: rake
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 10.0.0
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: 10.0.0
67
+ - !ruby/object:Gem::Dependency
68
+ name: thread_order
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: 1.1.0
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 1.1.0
81
+ description: Support utilities for RSpec gems
82
+ email: rspec-users@rubyforge.org
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - Changelog.md
88
+ - LICENSE.md
89
+ - README.md
90
+ - lib/rspec/support.rb
91
+ - lib/rspec/support/caller_filter.rb
92
+ - lib/rspec/support/comparable_version.rb
93
+ - lib/rspec/support/differ.rb
94
+ - lib/rspec/support/directory_maker.rb
95
+ - lib/rspec/support/encoded_string.rb
96
+ - lib/rspec/support/fuzzy_matcher.rb
97
+ - lib/rspec/support/hunk_generator.rb
98
+ - lib/rspec/support/matcher_definition.rb
99
+ - lib/rspec/support/method_signature_verifier.rb
100
+ - lib/rspec/support/mutex.rb
101
+ - lib/rspec/support/object_formatter.rb
102
+ - lib/rspec/support/recursive_const_methods.rb
103
+ - lib/rspec/support/reentrant_mutex.rb
104
+ - lib/rspec/support/ruby_features.rb
105
+ - lib/rspec/support/source.rb
106
+ - lib/rspec/support/source/location.rb
107
+ - lib/rspec/support/source/node.rb
108
+ - lib/rspec/support/source/token.rb
109
+ - lib/rspec/support/spec.rb
110
+ - lib/rspec/support/spec/deprecation_helpers.rb
111
+ - lib/rspec/support/spec/formatting_support.rb
112
+ - lib/rspec/support/spec/in_sub_process.rb
113
+ - lib/rspec/support/spec/library_wide_checks.rb
114
+ - lib/rspec/support/spec/shell_out.rb
115
+ - lib/rspec/support/spec/stderr_splitter.rb
116
+ - lib/rspec/support/spec/string_matcher.rb
117
+ - lib/rspec/support/spec/with_isolated_directory.rb
118
+ - lib/rspec/support/spec/with_isolated_stderr.rb
119
+ - lib/rspec/support/version.rb
120
+ - lib/rspec/support/warnings.rb
121
+ homepage: https://github.com/rspec/rspec-support
122
+ licenses:
123
+ - MIT
124
+ metadata:
125
+ bug_tracker_uri: https://github.com/rspec/rspec-support/issues
126
+ changelog_uri: https://github.com/rspec/rspec-support/blob/v3.8.3/Changelog.md
127
+ documentation_uri: https://rspec.info/documentation/
128
+ mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
129
+ source_code_uri: https://github.com/rspec/rspec-support
130
+ post_install_message:
131
+ rdoc_options:
132
+ - "--charset=UTF-8"
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: 1.8.7
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubygems_version: 3.0.6
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: rspec-support-3.8.3
150
+ test_files: []
Binary file