rspec-support 3.4.1 → 3.5.0.beta1
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +15 -0
- data/README.md +2 -2
- data/lib/rspec/support/object_formatter.rb +51 -15
- data/lib/rspec/support/version.rb +1 -1
- metadata +6 -7
- metadata.gz.sig +0 -0
- data/lib/rspec/support/version_checker.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec9c4fd5101ce3289e09d787448cffbab08a563e
|
4
|
+
data.tar.gz: d2037dfbf1e7198702ea76a715322de33fc620c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 772ca53099ce0eadc50476aded4ae68c9485b15d1bdad55d2852dc463f3efcc1cb07a043b4bd1da755f28ffce8fe3693ae06b6691d5a2267cf155c2dd8a313be
|
7
|
+
data.tar.gz: 633fc69929b63caa86b8f29f06dad98ad0b3c74e205143225b910652388f36fa783b2b05cebdd884366b70b3fba2b0dad0960ca1318f12febb5ba6d7e9a9ada6
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Changelog.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
### Development
|
2
|
+
[Full Changelog](http://github.com/rspec/rspec-support/compare/v3.5.0.beta1...master)
|
3
|
+
|
4
|
+
### 3.5.0.beta1 / 2016-02-06
|
5
|
+
[Full Changelog](http://github.com/rspec/rspec-support/compare/v3.4.1...v3.5.0.beta1)
|
6
|
+
|
7
|
+
Enhancements:
|
8
|
+
|
9
|
+
* Improve formatting of objects by allowing truncation to a pre-configured length.
|
10
|
+
(Liam M, #256)
|
11
|
+
|
1
12
|
### 3.4.1 / 2015-11-20
|
2
13
|
[Full Changelog](http://github.com/rspec/rspec-support/compare/v3.4.0...v3.4.1)
|
3
14
|
|
@@ -8,6 +19,10 @@ Bug Fixes:
|
|
8
19
|
it. This prevents rspec-core from trying to load and use ripper to
|
9
20
|
extract failure snippets. (Aaron Stone, #251)
|
10
21
|
|
22
|
+
Changes:
|
23
|
+
|
24
|
+
* Remove `VersionChecker` in favor of `ComparableVersion`. (Yuji Nakayama, #266)
|
25
|
+
|
11
26
|
### 3.4.0 / 2015-11-11
|
12
27
|
[Full Changelog](http://github.com/rspec/rspec-support/compare/v3.3.0...v3.4.0)
|
13
28
|
|
data/README.md
CHANGED
@@ -33,8 +33,8 @@ can treat each RSpec repo as an independent project.
|
|
33
33
|
|
34
34
|
## Patches
|
35
35
|
|
36
|
-
Please submit a pull request or a github issue
|
37
|
-
|
36
|
+
Please submit a pull request or a github issue. If you submit an issue, please
|
37
|
+
include a link to either of:
|
38
38
|
|
39
39
|
* a gist (or equivalent) of the patch
|
40
40
|
* a branch or commit in your github fork of the repo
|
@@ -2,15 +2,41 @@ module RSpec
|
|
2
2
|
module Support
|
3
3
|
# Provide additional output details beyond what `inspect` provides when
|
4
4
|
# printing Time, DateTime, or BigDecimal
|
5
|
-
|
6
|
-
|
5
|
+
# @api private
|
6
|
+
class ObjectFormatter
|
7
|
+
attr_accessor :max_formatted_output_length
|
8
|
+
|
9
|
+
def initialize(max_formatted_output_length=200)
|
10
|
+
@max_formatted_output_length = max_formatted_output_length
|
11
|
+
end
|
12
|
+
|
13
|
+
# Methods are deferred to a default instance of the class to maintain the interface
|
14
|
+
# For example, calling ObjectFormatter.format is still possible
|
15
|
+
@default_instance = new(200)
|
16
|
+
|
17
|
+
ELLIPSIS = "..."
|
18
|
+
|
19
|
+
def format(object)
|
20
|
+
if max_formatted_output_length.nil?
|
21
|
+
return prepare_for_inspection(object).inspect
|
22
|
+
else
|
23
|
+
formatted_object = prepare_for_inspection(object).inspect
|
24
|
+
if formatted_object.length < max_formatted_output_length
|
25
|
+
return formatted_object
|
26
|
+
else
|
27
|
+
beginning = formatted_object[0 .. max_formatted_output_length / 2]
|
28
|
+
ending = formatted_object[-max_formatted_output_length / 2 ..-1]
|
29
|
+
return beginning + ELLIPSIS + ending
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
7
34
|
def self.format(object)
|
8
|
-
|
35
|
+
@default_instance.format(object)
|
9
36
|
end
|
10
37
|
|
11
38
|
# rubocop:disable MethodLength
|
12
39
|
|
13
|
-
# @private
|
14
40
|
# Prepares the provided object to be formatted by wrapping it as needed
|
15
41
|
# in something that, when `inspect` is called on it, will produce the
|
16
42
|
# desired output.
|
@@ -20,7 +46,7 @@ module RSpec
|
|
20
46
|
# with custom items that have `inspect` defined to return the desired output
|
21
47
|
# for that item. Then we can just use `Array#inspect` or `Hash#inspect` to
|
22
48
|
# format the entire thing.
|
23
|
-
def
|
49
|
+
def prepare_for_inspection(object)
|
24
50
|
case object
|
25
51
|
when Array
|
26
52
|
return object.map { |o| prepare_for_inspection(o) }
|
@@ -44,33 +70,41 @@ module RSpec
|
|
44
70
|
end
|
45
71
|
# rubocop:enable MethodLength
|
46
72
|
|
47
|
-
|
48
|
-
|
73
|
+
def self.prepare_for_inspection(object)
|
74
|
+
@default_instance.prepare_for_inspection(object)
|
75
|
+
end
|
76
|
+
|
77
|
+
def prepare_hash(input)
|
49
78
|
input.inject({}) do |hash, (k, v)|
|
50
79
|
hash[prepare_for_inspection(k)] = prepare_for_inspection(v)
|
51
80
|
hash
|
52
81
|
end
|
53
82
|
end
|
54
83
|
|
84
|
+
def self.prepare_hash(input)
|
85
|
+
@default_instance.prepare_hash(input)
|
86
|
+
end
|
87
|
+
|
55
88
|
TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
|
56
89
|
|
57
90
|
if Time.method_defined?(:nsec)
|
58
|
-
|
59
|
-
def self.format_time(time)
|
91
|
+
def format_time(time)
|
60
92
|
time.strftime("#{TIME_FORMAT}.#{"%09d" % time.nsec} %z")
|
61
93
|
end
|
62
94
|
else # for 1.8.7
|
63
|
-
|
64
|
-
def self.format_time(time)
|
95
|
+
def format_time(time)
|
65
96
|
time.strftime("#{TIME_FORMAT}.#{"%06d" % time.usec} %z")
|
66
97
|
end
|
67
98
|
end
|
68
99
|
|
100
|
+
def self.format_time(time)
|
101
|
+
@default_instance.format_time(time)
|
102
|
+
end
|
103
|
+
|
69
104
|
DATE_TIME_FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z"
|
70
105
|
# ActiveSupport sometimes overrides inspect. If `ActiveSupport` is
|
71
106
|
# defined use a custom format string that includes more time precision.
|
72
|
-
|
73
|
-
def self.format_date_time(date_time)
|
107
|
+
def format_date_time(date_time)
|
74
108
|
if defined?(ActiveSupport)
|
75
109
|
date_time.strftime(DATE_TIME_FORMAT)
|
76
110
|
else
|
@@ -78,7 +112,10 @@ module RSpec
|
|
78
112
|
end
|
79
113
|
end
|
80
114
|
|
81
|
-
|
115
|
+
def self.format_date_time(date_time)
|
116
|
+
@default_instance.format_date_time(date_time)
|
117
|
+
end
|
118
|
+
|
82
119
|
InspectableItem = Struct.new(:inspection) do
|
83
120
|
def inspect
|
84
121
|
inspection
|
@@ -89,7 +126,6 @@ module RSpec
|
|
89
126
|
end
|
90
127
|
end
|
91
128
|
|
92
|
-
# @private
|
93
129
|
DelegatingInspector = Struct.new(:object) do
|
94
130
|
def inspect
|
95
131
|
if defined?(::Delegator) && ::Delegator === object
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Chelimsky
|
@@ -48,7 +48,7 @@ cert_chain:
|
|
48
48
|
ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
|
49
49
|
F3MdtaDehhjC
|
50
50
|
-----END CERTIFICATE-----
|
51
|
-
date:
|
51
|
+
date: 2016-02-06 00:00:00.000000000 Z
|
52
52
|
dependencies:
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: bundler
|
@@ -127,7 +127,6 @@ files:
|
|
127
127
|
- lib/rspec/support/spec/with_isolated_directory.rb
|
128
128
|
- lib/rspec/support/spec/with_isolated_stderr.rb
|
129
129
|
- lib/rspec/support/version.rb
|
130
|
-
- lib/rspec/support/version_checker.rb
|
131
130
|
- lib/rspec/support/warnings.rb
|
132
131
|
homepage: https://github.com/rspec/rspec-support
|
133
132
|
licenses:
|
@@ -145,13 +144,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
144
|
version: 1.8.7
|
146
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
146
|
requirements:
|
148
|
-
- - "
|
147
|
+
- - ">"
|
149
148
|
- !ruby/object:Gem::Version
|
150
|
-
version:
|
149
|
+
version: 1.3.1
|
151
150
|
requirements: []
|
152
151
|
rubyforge_project:
|
153
|
-
rubygems_version: 2.
|
152
|
+
rubygems_version: 2.4.5.1
|
154
153
|
signing_key:
|
155
154
|
specification_version: 4
|
156
|
-
summary: rspec-support-3.
|
155
|
+
summary: rspec-support-3.5.0.beta1
|
157
156
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,53 +0,0 @@
|
|
1
|
-
module RSpec
|
2
|
-
module Support
|
3
|
-
LibraryVersionTooLowError = Class.new(StandardError)
|
4
|
-
|
5
|
-
# @private
|
6
|
-
class VersionChecker
|
7
|
-
def initialize(library_name, library_version, min_patch_level)
|
8
|
-
@library_name, @library_version = library_name, library_version
|
9
|
-
@min_patch_level = min_patch_level
|
10
|
-
|
11
|
-
@major, @minor, @patch = parse_version(library_version)
|
12
|
-
@min_major, @min_minor, @min_patch = parse_version(min_patch_level)
|
13
|
-
|
14
|
-
@comparison_result = compare_version
|
15
|
-
end
|
16
|
-
|
17
|
-
def check_version!
|
18
|
-
raise_too_low_error if too_low?
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def too_low?
|
24
|
-
@comparison_result == :too_low
|
25
|
-
end
|
26
|
-
|
27
|
-
def raise_too_low_error
|
28
|
-
raise LibraryVersionTooLowError,
|
29
|
-
"You are using #{@library_name} #{@library_version}. " \
|
30
|
-
"RSpec requires version #{version_requirement}."
|
31
|
-
end
|
32
|
-
|
33
|
-
def compare_version
|
34
|
-
case
|
35
|
-
when @major < @min_major then :too_low
|
36
|
-
when @major > @min_major then :ok
|
37
|
-
when @minor < @min_minor then :too_low
|
38
|
-
when @minor > @min_minor then :ok
|
39
|
-
when @patch < @min_patch then :too_low
|
40
|
-
else :ok
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def version_requirement
|
45
|
-
">= #{@min_patch_level}"
|
46
|
-
end
|
47
|
-
|
48
|
-
def parse_version(version)
|
49
|
-
version.split('.').map { |v| v.to_i }
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|