safe_yaml 1.0.3 → 1.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fac2ccd0e0ff144a5b72c1597d16206e9c401753
4
- data.tar.gz: c13a8b54286042faf6c3c2caa9fd2ec6d436fe1e
3
+ metadata.gz: dbb2ac04a98ae5516c34c7dc2baf6348304c6e17
4
+ data.tar.gz: 097dd3a02c37a63f7a899b8897839b3c60a82117
5
5
  SHA512:
6
- metadata.gz: f5bedc29148ac5d69c163793ef490ad22261c63ca7b390e80f4a405d62a7ccef5d91520344b6901ca785db584bbf197b0ec4a2c55170fa6b6adce6b077151f41
7
- data.tar.gz: 77a93e398b12f8661b8fc9ab672b4d5278e5c4e2e6a7c615ee162934ad5b0c23867a94e3d2425f543563e5e04890fc76f96e7e25c99ccc8c94740c1e948212ae
6
+ metadata.gz: 93c0fd49c34c71dfcb0cb76d127aa52e9178a6cf6d9b8a6a94728b1ea336c956c228cc71bbefa4790fe31d35229b0e9783e930f7a97ec69053dcfdd4441571cb
7
+ data.tar.gz: 5d068fabdc5b89a544958e0a139a82bcc40c38828840f6a9d02baca82e3b574868397fa45b74042320ea403f13388ebd2db32164eef4df97f261475049f4f86f
data/Rakefile CHANGED
@@ -6,18 +6,21 @@ task :spec => ['spec:app', 'spec:lib']
6
6
  namespace :spec do
7
7
  desc "Run only specs tagged 'solo'"
8
8
  RSpec::Core::RakeTask.new(:solo) do |t|
9
+ t.verbose = false
9
10
  t.rspec_opts = %w(--color --tag solo)
10
11
  end
11
12
 
12
13
  desc "Run only specs tagged NOT tagged 'libraries' (for applications)"
13
14
  RSpec::Core::RakeTask.new(:app) do |t|
14
- puts "Running specs w/ monkeypatch"
15
+ t.verbose = false
16
+ ENV["MONKEYPATCH_YAML"] = "true"
15
17
  t.rspec_opts = %w(--color --tag ~libraries)
16
18
  end
17
19
 
18
20
  desc "Run only specs tagged 'libraries'"
19
21
  RSpec::Core::RakeTask.new(:lib) do |t|
20
- puts "Running specs w/o monkeypatch"
22
+ t.verbose = false
23
+ ENV["MONKEYPATCH_YAML"] = "false"
21
24
  t.rspec_opts = %w(--color --tag libraries)
22
25
  end
23
26
  end
@@ -2,20 +2,10 @@
2
2
 
3
3
  [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
4
4
 
5
- rvm use 1.8.7
6
- bundle install
5
+ declare -a versions=("1.8.7" "1.9.2" "1.9.3" "2.0.0" "2.1.0" "2.1.1" "2.1.2" "ruby-head" "jruby")
7
6
 
8
- rvm use 1.9.2
9
- bundle install
10
-
11
- rvm use 1.9.3
12
- bundle install
13
-
14
- rvm use 2.0.0
15
- bundle install
16
-
17
- rvm use ruby-head
18
- bundle install
19
-
20
- rvm use jruby
21
- bundle install
7
+ for i in "${versions[@]}"
8
+ do
9
+ rvm use $i
10
+ bundle install
11
+ done
@@ -4,7 +4,7 @@ require "yaml"
4
4
  # This needs to be defined up front in case any internal classes need to base
5
5
  # their behavior off of this.
6
6
  module SafeYAML
7
- YAML_ENGINE = defined?(YAML::ENGINE) ? YAML::ENGINE.yamler : "syck"
7
+ YAML_ENGINE = defined?(YAML::ENGINE) ? YAML::ENGINE.yamler : (defined?(Psych) && YAML == Psych ? "psych" : "syck")
8
8
  end
9
9
 
10
10
  require "safe_yaml/libyaml_checker"
@@ -52,7 +52,7 @@ module SafeYAML
52
52
  tag = get_and_check_node_tag(node)
53
53
  arr = @initializers.include?(tag) ? @initializers[tag].call : []
54
54
 
55
- seq.inject(arr) { |array, node| array << resolve_node(node) }
55
+ seq.inject(arr) { |array, n| array << resolve_node(n) }
56
56
  end
57
57
 
58
58
  def resolve_scalar(node)
@@ -1,3 +1,3 @@
1
1
  module SafeYAML
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.4"
3
3
  end
@@ -18,6 +18,15 @@ YAMLER=psych bundle exec rake spec
18
18
  rvm use 2.0.0
19
19
  bundle exec rake spec
20
20
 
21
+ rvm use 2.1.0
22
+ bundle exec rake spec
23
+
24
+ rvm use 2.1.1
25
+ bundle exec rake spec
26
+
27
+ rvm use 2.1.2
28
+ bundle exec rake spec
29
+
21
30
  rvm use ruby-head
22
31
  bundle exec rake spec
23
32
 
@@ -8,7 +8,7 @@ describe SafeYAML::LibyamlChecker do
8
8
  let(:libyaml_patched) { false }
9
9
 
10
10
  before :each do
11
- SafeYAML::LibyamlChecker.stub(:libyaml_patched?).and_return(libyaml_patched)
11
+ allow(SafeYAML::LibyamlChecker).to receive(:libyaml_patched?).and_return(libyaml_patched)
12
12
  end
13
13
 
14
14
  after :each do
@@ -22,7 +22,7 @@ describe SafeYAML::LibyamlChecker do
22
22
  silence_warnings do
23
23
  SafeYAML.const_set("YAML_ENGINE", yaml_engine)
24
24
  SafeYAML::LibyamlChecker.const_set("LIBYAML_VERSION", libyaml_version)
25
- SafeYAML::LibyamlChecker.libyaml_version_ok?.should == expected_result
25
+ expect(SafeYAML::LibyamlChecker.libyaml_version_ok?).to eq(expected_result)
26
26
  end
27
27
  end
28
28
 
@@ -39,7 +39,7 @@ module ResolverSpecs
39
39
  Kernel.warn "#{exception_thrown.inspect}\n"
40
40
 
41
41
  else
42
- safe_result.should == unsafe_result
42
+ expect(safe_result).to eq(unsafe_result)
43
43
  end
44
44
  end
45
45
 
@@ -50,10 +50,10 @@ module ResolverSpecs
50
50
  tomayto: tomahto
51
51
  YAML
52
52
 
53
- result.should == {
53
+ expect(result).to eq({
54
54
  "potayto" => "potahto",
55
55
  "tomayto" => "tomahto"
56
- }
56
+ })
57
57
  end
58
58
 
59
59
  it "translates sequences to arrays" do
@@ -63,32 +63,32 @@ module ResolverSpecs
63
63
  - baz
64
64
  YAML
65
65
 
66
- result.should == ["foo", "bar", "baz"]
66
+ expect(result).to eq(["foo", "bar", "baz"])
67
67
  end
68
68
 
69
69
  it "translates most values to strings" do
70
70
  parse "string: value"
71
- result.should == { "string" => "value" }
71
+ expect(result).to eq({ "string" => "value" })
72
72
  end
73
73
 
74
74
  it "does not deserialize symbols" do
75
75
  parse ":symbol: value"
76
- result.should == { ":symbol" => "value" }
76
+ expect(result).to eq({ ":symbol" => "value" })
77
77
  end
78
78
 
79
79
  it "translates valid integral numbers to integers" do
80
80
  parse "integer: 1"
81
- result.should == { "integer" => 1 }
81
+ expect(result).to eq({ "integer" => 1 })
82
82
  end
83
83
 
84
84
  it "translates valid decimal numbers to floats" do
85
85
  parse "float: 3.14"
86
- result.should == { "float" => 3.14 }
86
+ expect(result).to eq({ "float" => 3.14 })
87
87
  end
88
88
 
89
89
  it "translates valid dates" do
90
90
  parse "date: 2013-01-24"
91
- result.should == { "date" => Date.parse("2013-01-24") }
91
+ expect(result).to eq({ "date" => Date.parse("2013-01-24") })
92
92
  end
93
93
 
94
94
  it "translates valid true/false values to booleans" do
@@ -99,7 +99,7 @@ module ResolverSpecs
99
99
  - false
100
100
  YAML
101
101
 
102
- result.should == [true, true, false, false]
102
+ expect(result).to eq([true, true, false, false])
103
103
  end
104
104
 
105
105
  it "translates valid nulls to nil" do
@@ -109,7 +109,7 @@ module ResolverSpecs
109
109
  - null
110
110
  YAML
111
111
 
112
- result.should == [nil] * 3
112
+ expect(result).to eq([nil] * 3)
113
113
  end
114
114
 
115
115
  it "matches the behavior of the underlying YAML engine w/ respect to capitalization of boolean values" do
@@ -143,12 +143,12 @@ module ResolverSpecs
143
143
 
144
144
  it "translates quoted empty strings to strings (not nil)" do
145
145
  parse "foo: ''"
146
- result.should == { "foo" => "" }
146
+ expect(result).to eq({ "foo" => "" })
147
147
  end
148
148
 
149
149
  it "correctly reverse-translates strings encoded via #to_yaml" do
150
150
  parse "5.10".to_yaml
151
- result.should == "5.10"
151
+ expect(result).to eq("5.10")
152
152
  end
153
153
 
154
154
  it "does not specially parse any double-quoted strings" do
@@ -161,7 +161,7 @@ module ResolverSpecs
161
161
  - "2013-02-03 16:27:00 -0600"
162
162
  YAML
163
163
 
164
- result.should == ["1", "3.14", "true", "false", "2013-02-03", "2013-02-03 16:27:00 -0600"]
164
+ expect(result).to eq(["1", "3.14", "true", "false", "2013-02-03", "2013-02-03 16:27:00 -0600"])
165
165
  end
166
166
 
167
167
  it "does not specially parse any single-quoted strings" do
@@ -174,7 +174,7 @@ module ResolverSpecs
174
174
  - '2013-02-03 16:27:00 -0600'
175
175
  YAML
176
176
 
177
- result.should == ["1", "3.14", "true", "false", "2013-02-03", "2013-02-03 16:27:00 -0600"]
177
+ expect(result).to eq(["1", "3.14", "true", "false", "2013-02-03", "2013-02-03 16:27:00 -0600"])
178
178
  end
179
179
 
180
180
  it "deals just fine with nested maps" do
@@ -184,7 +184,7 @@ module ResolverSpecs
184
184
  marco: polo
185
185
  YAML
186
186
 
187
- result.should == { "foo" => { "bar" => { "marco" => "polo" } } }
187
+ expect(result).to eq({ "foo" => { "bar" => { "marco" => "polo" } } })
188
188
  end
189
189
 
190
190
  it "deals just fine with nested sequences" do
@@ -198,7 +198,7 @@ module ResolverSpecs
198
198
  - baz2
199
199
  YAML
200
200
 
201
- result.should == ["foo", ["bar1", "bar2", ["baz1", "baz2"]]]
201
+ expect(result).to eq(["foo", ["bar1", "bar2", ["baz1", "baz2"]]])
202
202
  end
203
203
 
204
204
  it "applies the same transformations to keys as to values" do
@@ -210,13 +210,13 @@ module ResolverSpecs
210
210
  2013-01-24: date
211
211
  YAML
212
212
 
213
- result.should == {
213
+ expect(result).to eq({
214
214
  "foo" => "string",
215
215
  ":bar" => "symbol",
216
216
  1 => "integer",
217
217
  3.14 => "float",
218
218
  Date.parse("2013-01-24") => "date",
219
- }
219
+ })
220
220
  end
221
221
 
222
222
  it "applies the same transformations to elements in sequences as to all values" do
@@ -228,24 +228,24 @@ module ResolverSpecs
228
228
  - 2013-01-24
229
229
  YAML
230
230
 
231
- result.should == ["foo", ":bar", 1, 3.14, Date.parse("2013-01-24")]
231
+ expect(result).to eq(["foo", ":bar", 1, 3.14, Date.parse("2013-01-24")])
232
232
  end
233
233
  end
234
234
 
235
235
  context "for Ruby version #{RUBY_VERSION}" do
236
236
  it "translates valid time values" do
237
237
  parse "time: 2013-01-29 05:58:00 -0800"
238
- result.should == { "time" => Time.utc(2013, 1, 29, 13, 58, 0) }
238
+ expect(result).to eq({ "time" => Time.utc(2013, 1, 29, 13, 58, 0) })
239
239
  end
240
240
 
241
241
  it "applies the same transformation to elements in sequences" do
242
242
  parse "- 2013-01-29 05:58:00 -0800"
243
- result.should == [Time.utc(2013, 1, 29, 13, 58, 0)]
243
+ expect(result).to eq([Time.utc(2013, 1, 29, 13, 58, 0)])
244
244
  end
245
245
 
246
246
  it "applies the same transformation to keys" do
247
247
  parse "2013-01-29 05:58:00 -0800: time"
248
- result.should == { Time.utc(2013, 1, 29, 13, 58, 0) => "time" }
248
+ expect(result).to eq({ Time.utc(2013, 1, 29, 13, 58, 0) => "time" })
249
249
  end
250
250
  end
251
251
 
@@ -260,17 +260,17 @@ module ResolverSpecs
260
260
 
261
261
  it "translates values starting with ':' to symbols" do
262
262
  parse "symbol: :value"
263
- result.should == { "symbol" => :value }
263
+ expect(result).to eq({ "symbol" => :value })
264
264
  end
265
265
 
266
266
  it "applies the same transformation to keys" do
267
267
  parse ":bar: symbol"
268
- result.should == { :bar => "symbol" }
268
+ expect(result).to eq({ :bar => "symbol" })
269
269
  end
270
270
 
271
271
  it "applies the same transformation to elements in sequences" do
272
272
  parse "- :bar"
273
- result.should == [:bar]
273
+ expect(result).to eq([:bar])
274
274
  end
275
275
  end
276
276
  end
@@ -28,18 +28,18 @@ describe YAML do
28
28
  if SafeYAML::YAML_ENGINE == "psych" && RUBY_VERSION >= "1.9.3"
29
29
  it "allows exploits through objects defined in YAML w/ !ruby/hash via custom :[]= methods" do
30
30
  backdoor = YAML.unsafe_load("--- !ruby/hash:ExploitableBackDoor\nfoo: bar\n")
31
- backdoor.should be_exploited_through_setter
31
+ expect(backdoor).to be_exploited_through_setter
32
32
  end
33
33
 
34
34
  it "allows exploits through objects defined in YAML w/ !ruby/object via the :init_with method" do
35
35
  backdoor = YAML.unsafe_load("--- !ruby/object:ExploitableBackDoor\nfoo: bar\n")
36
- backdoor.should be_exploited_through_init_with
36
+ expect(backdoor).to be_exploited_through_init_with
37
37
  end
38
38
  end
39
39
 
40
40
  it "allows exploits through objects w/ sensitive instance variables defined in YAML w/ !ruby/object" do
41
41
  backdoor = YAML.unsafe_load("--- !ruby/object:ExploitableBackDoor\nfoo: bar\n")
42
- backdoor.should be_exploited_through_ivars
42
+ expect(backdoor).to be_exploited_through_ivars
43
43
  end
44
44
 
45
45
  context "with special whitelisted tags defined" do
@@ -55,8 +55,8 @@ describe YAML do
55
55
  foo: bar
56
56
  YAML
57
57
 
58
- result.should be_a(OpenStruct)
59
- result.backdoor.should be_exploited_through_ivars
58
+ expect(result).to be_a(OpenStruct)
59
+ expect(result.backdoor).to be_exploited_through_ivars
60
60
  end
61
61
  end
62
62
  end
@@ -64,12 +64,12 @@ describe YAML do
64
64
  describe "safe_load" do
65
65
  it "does NOT allow exploits through objects defined in YAML w/ !ruby/hash" do
66
66
  object = YAML.safe_load("--- !ruby/hash:ExploitableBackDoor\nfoo: bar\n")
67
- object.should_not be_a(ExploitableBackDoor)
67
+ expect(object).not_to be_a(ExploitableBackDoor)
68
68
  end
69
69
 
70
70
  it "does NOT allow exploits through objects defined in YAML w/ !ruby/object" do
71
71
  object = YAML.safe_load("--- !ruby/object:ExploitableBackDoor\nfoo: bar\n")
72
- object.should_not be_a(ExploitableBackDoor)
72
+ expect(object).not_to be_a(ExploitableBackDoor)
73
73
  end
74
74
 
75
75
  context "for YAML engine #{SafeYAML::YAML_ENGINE}" do
@@ -79,7 +79,7 @@ describe YAML do
79
79
 
80
80
  context "when no tags are whitelisted" do
81
81
  it "constructs a SafeYAML::PsychHandler to resolve nodes as they're parsed, for optimal performance" do
82
- Psych::Parser.should_receive(:new).with an_instance_of(SafeYAML::PsychHandler)
82
+ expect(Psych::Parser).to receive(:new).with an_instance_of(SafeYAML::PsychHandler)
83
83
  # This won't work now; we just want to ensure Psych::Parser#parse was in fact called.
84
84
  YAML.safe_load(*arguments) rescue nil
85
85
  end
@@ -91,7 +91,7 @@ describe YAML do
91
91
  }
92
92
 
93
93
  it "instead uses Psych to construct a full tree before examining the nodes" do
94
- Psych.should_receive(:parse)
94
+ expect(Psych).to receive(:parse)
95
95
  # This won't work now; we just want to ensure Psych::Parser#parse was in fact called.
96
96
  YAML.safe_load(*arguments) rescue nil
97
97
  end
@@ -100,7 +100,7 @@ describe YAML do
100
100
 
101
101
  if SafeYAML::YAML_ENGINE == "syck"
102
102
  it "uses Syck internally to parse YAML" do
103
- YAML.should_receive(:parse).with("foo: bar")
103
+ expect(YAML).to receive(:parse).with("foo: bar")
104
104
  # This won't work now; we just want to ensure YAML::parse was in fact called.
105
105
  YAML.safe_load("foo: bar") rescue nil
106
106
  end
@@ -120,7 +120,7 @@ describe YAML do
120
120
  - bye
121
121
  YAML
122
122
 
123
- result.should == {
123
+ expect(result).to eq({
124
124
  "foo" => {
125
125
  "number" => 1,
126
126
  "boolean" => true,
@@ -129,7 +129,7 @@ describe YAML do
129
129
  "symbol" => ":blah",
130
130
  "sequence" => ["hi", "bye"]
131
131
  }
132
- }
132
+ })
133
133
  end
134
134
 
135
135
  it "works for YAML documents with anchors and aliases" do
@@ -139,7 +139,7 @@ describe YAML do
139
139
  - *id001
140
140
  YAML
141
141
 
142
- result.should == [{}, {}, {}]
142
+ expect(result).to eq([{}, {}, {}])
143
143
  end
144
144
 
145
145
  it "works for YAML documents with binary tagged keys" do
@@ -152,7 +152,7 @@ describe YAML do
152
152
  : "baz"
153
153
  YAML
154
154
 
155
- result.should == {"foo" => "bar", "bar" => "baz"}
155
+ expect(result).to eq({"foo" => "bar", "bar" => "baz"})
156
156
  end
157
157
 
158
158
  it "works for YAML documents with binary tagged values" do
@@ -163,7 +163,7 @@ describe YAML do
163
163
  YmF6
164
164
  YAML
165
165
 
166
- result.should == {"foo" => "bar", "bar" => "baz"}
166
+ expect(result).to eq({"foo" => "bar", "bar" => "baz"})
167
167
  end
168
168
 
169
169
  it "works for YAML documents with binary tagged array values" do
@@ -174,7 +174,7 @@ describe YAML do
174
174
  YmFy
175
175
  YAML
176
176
 
177
- result.should == ["foo", "bar"]
177
+ expect(result).to eq(["foo", "bar"])
178
178
  end
179
179
 
180
180
  it "works for YAML documents with sections" do
@@ -191,7 +191,7 @@ describe YAML do
191
191
  host: localhost
192
192
  YAML
193
193
 
194
- result.should == {
194
+ expect(result).to eq({
195
195
  "mysql" => {
196
196
  "adapter" => "mysql",
197
197
  "pool" => 30
@@ -207,7 +207,7 @@ describe YAML do
207
207
  "password" => "password123",
208
208
  "host" => "localhost"
209
209
  }
210
- }
210
+ })
211
211
  end
212
212
 
213
213
  it "correctly prefers explicitly defined values over default values from included sections" do
@@ -225,11 +225,11 @@ describe YAML do
225
225
  baz: custom_baz
226
226
  YAML
227
227
 
228
- result["custom"].should == {
228
+ expect(result["custom"]).to eq({
229
229
  "foo" => "foo",
230
230
  "bar" => "custom_bar",
231
231
  "baz" => "custom_baz"
232
- }
232
+ })
233
233
  end
234
234
  end
235
235
 
@@ -247,26 +247,26 @@ describe YAML do
247
247
  <<: *custom
248
248
  YAML
249
249
 
250
- result.should == {
250
+ expect(result).to eq({
251
251
  "defaults" => { "foo" => "foo", "bar" => "bar", "baz" => "baz" },
252
252
  "custom" => { "foo" => "foo", "bar" => "custom_bar", "baz" => "custom_baz" },
253
253
  "grandcustom" => { "foo" => "foo", "bar" => "custom_bar", "baz" => "custom_baz" }
254
- }
254
+ })
255
255
  end
256
256
 
257
257
  it "returns false when parsing an empty document" do
258
- [
258
+ expect([
259
259
  YAML.safe_load(""),
260
260
  YAML.safe_load(" "),
261
261
  YAML.safe_load("\n")
262
- ].should == [false, false, false]
262
+ ]).to eq([false, false, false])
263
263
  end
264
264
 
265
265
  it "returns nil when parsing a single value representing nil" do
266
- [
266
+ expect([
267
267
  YAML.safe_load("~"),
268
268
  YAML.safe_load("null")
269
- ].should == [nil, nil]
269
+ ]).to eq([nil, nil])
270
270
  end
271
271
 
272
272
  context "with custom initializers defined" do
@@ -292,8 +292,8 @@ describe YAML do
292
292
  - 3
293
293
  YAML
294
294
 
295
- result.should be_a(Set)
296
- result.to_a.should =~ [1, 2, 3]
295
+ expect(result).to be_a(Set)
296
+ expect(result.to_a).to match_array([1, 2, 3])
297
297
  end
298
298
 
299
299
  it "will use a custom initializer to instantiate a hash-like class upon deserialization" do
@@ -302,8 +302,8 @@ describe YAML do
302
302
  foo: bar
303
303
  YAML
304
304
 
305
- result.should be_a(Hashie::Mash)
306
- result.to_hash.should == { "foo" => "bar" }
305
+ expect(result).to be_a(Hashie::Mash)
306
+ expect(result.to_hash).to eq({ "foo" => "bar" })
307
307
  end
308
308
  end
309
309
 
@@ -317,14 +317,14 @@ describe YAML do
317
317
 
318
318
  it "will allow objects to be deserialized for whitelisted tags" do
319
319
  result = YAML.safe_load("--- !ruby/object:OpenStruct\ntable:\n foo: bar\n")
320
- result.should be_a(OpenStruct)
321
- result.instance_variable_get(:@table).should == { "foo" => "bar" }
320
+ expect(result).to be_a(OpenStruct)
321
+ expect(result.instance_variable_get(:@table)).to eq({ "foo" => "bar" })
322
322
  end
323
323
 
324
324
  it "will not deserialize objects without whitelisted tags" do
325
325
  result = YAML.safe_load("--- !ruby/hash:ExploitableBackDoor\nfoo: bar\n")
326
- result.should_not be_a(ExploitableBackDoor)
327
- result.should == { "foo" => "bar" }
326
+ expect(result).not_to be_a(ExploitableBackDoor)
327
+ expect(result).to eq({ "foo" => "bar" })
328
328
  end
329
329
 
330
330
  it "will not allow non-whitelisted objects to be embedded within objects with whitelisted tags" do
@@ -335,9 +335,9 @@ describe YAML do
335
335
  foo: bar
336
336
  YAML
337
337
 
338
- result.should be_a(OpenStruct)
339
- result.backdoor.should_not be_a(ExploitableBackDoor)
340
- result.backdoor.should == { "foo" => "bar" }
338
+ expect(result).to be_a(OpenStruct)
339
+ expect(result.backdoor).not_to be_a(ExploitableBackDoor)
340
+ expect(result.backdoor).to eq({ "foo" => "bar" })
341
341
  end
342
342
 
343
343
  context "with the :raise_on_unknown_tag option enabled" do
@@ -350,23 +350,23 @@ describe YAML do
350
350
  end
351
351
 
352
352
  it "raises an exception if a non-nil, non-whitelisted tag is encountered" do
353
- lambda {
353
+ expect {
354
354
  YAML.safe_load <<-YAML.unindent
355
355
  --- !ruby/object:Unknown
356
356
  foo: bar
357
357
  YAML
358
- }.should raise_error
358
+ }.to raise_error
359
359
  end
360
360
 
361
361
  it "checks all tags, even those within objects with trusted tags" do
362
- lambda {
362
+ expect {
363
363
  YAML.safe_load <<-YAML.unindent
364
364
  --- !ruby/object:OpenStruct
365
365
  table:
366
366
  :backdoor: !ruby/object:Unknown
367
367
  foo: bar
368
368
  YAML
369
- }.should raise_error
369
+ }.to raise_error
370
370
  end
371
371
 
372
372
  it "does not raise an exception as long as all tags are whitelisted" do
@@ -383,8 +383,8 @@ describe YAML do
383
383
  hash: {}
384
384
  YAML
385
385
 
386
- result.should be_a(OpenStruct)
387
- result.backdoor.should == {
386
+ expect(result).to be_a(OpenStruct)
387
+ expect(result.backdoor).to eq({
388
388
  "string" => "foo",
389
389
  "integer" => 1,
390
390
  "float" => 3.14,
@@ -392,13 +392,13 @@ describe YAML do
392
392
  "date" => Date.parse("2013-02-20"),
393
393
  "array" => [],
394
394
  "hash" => {}
395
- }
395
+ })
396
396
  end
397
397
 
398
398
  it "does not raise an exception on the non-specific '!' tag" do
399
399
  result = nil
400
400
  expect { result = YAML.safe_load "--- ! 'foo'" }.to_not raise_error
401
- result.should == "foo"
401
+ expect(result).to eq("foo")
402
402
  end
403
403
 
404
404
  context "with whitelisted custom class" do
@@ -415,7 +415,7 @@ describe YAML do
415
415
  it "does not raise an exception on the non-specific '!' tag" do
416
416
  result = nil
417
417
  expect { result = YAML.safe_load(instance.to_yaml) }.to_not raise_error
418
- result.foo.should == 'with trailing whitespace: '
418
+ expect(result.foo).to eq('with trailing whitespace: ')
419
419
  end
420
420
  end
421
421
  end
@@ -433,14 +433,14 @@ describe YAML do
433
433
 
434
434
  it "goes with the default option when it is not overridden" do
435
435
  silence_warnings do
436
- YAML.load(":foo: bar").should == { :foo => "bar" }
436
+ expect(YAML.load(":foo: bar")).to eq({ :foo => "bar" })
437
437
  end
438
438
  end
439
439
 
440
440
  it "allows the default option to be overridden on a per-call basis" do
441
441
  silence_warnings do
442
- YAML.load(":foo: bar", :deserialize_symbols => false).should == { ":foo" => "bar" }
443
- YAML.load(":foo: bar", :deserialize_symbols => true).should == { :foo => "bar" }
442
+ expect(YAML.load(":foo: bar", :deserialize_symbols => false)).to eq({ ":foo" => "bar" })
443
+ expect(YAML.load(":foo: bar", :deserialize_symbols => true)).to eq({ :foo => "bar" })
444
444
  end
445
445
  end
446
446
  end
@@ -457,16 +457,16 @@ describe YAML do
457
457
 
458
458
  it "goes with the default option when it is not overridden" do
459
459
  result = safe_load_round_trip(OpenStruct.new(:foo => "bar"))
460
- result.should be_a(OpenStruct)
461
- result.foo.should == "bar"
460
+ expect(result).to be_a(OpenStruct)
461
+ expect(result.foo).to eq("bar")
462
462
  end
463
463
 
464
464
  it "allows the default option to be overridden on a per-call basis" do
465
465
  result = safe_load_round_trip(OpenStruct.new(:foo => "bar"), :whitelisted_tags => [])
466
- result.should == { "table" => { :foo => "bar" } }
466
+ expect(result).to eq({ "table" => { :foo => "bar" } })
467
467
 
468
468
  result = safe_load_round_trip(OpenStruct.new(:foo => "bar"), :deserialize_symbols => false, :whitelisted_tags => [])
469
- result.should == { "table" => { ":foo" => "bar" } }
469
+ expect(result).to eq({ "table" => { ":foo" => "bar" } })
470
470
  end
471
471
  end
472
472
  end
@@ -476,36 +476,36 @@ describe YAML do
476
476
  if SafeYAML::YAML_ENGINE == "psych" && RUBY_VERSION >= "1.9.3"
477
477
  it "allows exploits through objects defined in YAML w/ !ruby/hash via custom :[]= methods" do
478
478
  backdoor = YAML.unsafe_load_file "spec/exploit.1.9.3.yaml"
479
- backdoor.should be_exploited_through_setter
479
+ expect(backdoor).to be_exploited_through_setter
480
480
  end
481
481
  end
482
482
 
483
483
  if SafeYAML::YAML_ENGINE == "psych" && RUBY_VERSION >= "1.9.2"
484
484
  it "allows exploits through objects defined in YAML w/ !ruby/object via the :init_with method" do
485
485
  backdoor = YAML.unsafe_load_file "spec/exploit.1.9.2.yaml"
486
- backdoor.should be_exploited_through_init_with
486
+ expect(backdoor).to be_exploited_through_init_with
487
487
  end
488
488
  end
489
489
 
490
490
  it "allows exploits through objects w/ sensitive instance variables defined in YAML w/ !ruby/object" do
491
491
  backdoor = YAML.unsafe_load_file "spec/exploit.1.9.2.yaml"
492
- backdoor.should be_exploited_through_ivars
492
+ expect(backdoor).to be_exploited_through_ivars
493
493
  end
494
494
  end
495
495
 
496
496
  describe "safe_load_file" do
497
497
  it "does NOT allow exploits through objects defined in YAML w/ !ruby/hash" do
498
498
  object = YAML.safe_load_file "spec/exploit.1.9.3.yaml"
499
- object.should_not be_a(ExploitableBackDoor)
499
+ expect(object).not_to be_a(ExploitableBackDoor)
500
500
  end
501
501
 
502
502
  it "does NOT allow exploits through objects defined in YAML w/ !ruby/object" do
503
503
  object = YAML.safe_load_file "spec/exploit.1.9.2.yaml"
504
- object.should_not be_a(ExploitableBackDoor)
504
+ expect(object).not_to be_a(ExploitableBackDoor)
505
505
  end
506
506
 
507
507
  it "returns false when parsing an empty file" do
508
- YAML.safe_load_file("spec/issue49.yml").should == false
508
+ expect(YAML.safe_load_file("spec/issue49.yml")).to eq(false)
509
509
  end
510
510
  end
511
511
 
@@ -523,13 +523,13 @@ describe YAML do
523
523
  context "as long as a :default_mode has been specified" do
524
524
  it "doesn't issue a warning for safe mode, since an explicit mode has been set" do
525
525
  SafeYAML::OPTIONS[:default_mode] = :safe
526
- Kernel.should_not_receive(:warn)
526
+ expect(Kernel).not_to receive(:warn)
527
527
  YAML.load(*arguments)
528
528
  end
529
529
 
530
530
  it "doesn't issue a warning for unsafe mode, since an explicit mode has been set" do
531
531
  SafeYAML::OPTIONS[:default_mode] = :unsafe
532
- Kernel.should_not_receive(:warn)
532
+ expect(Kernel).not_to receive(:warn)
533
533
  YAML.load(*arguments)
534
534
  end
535
535
  end
@@ -539,12 +539,12 @@ describe YAML do
539
539
  let(:options) { { :safe => safe_mode } }
540
540
 
541
541
  it "doesn't issue a warning" do
542
- Kernel.should_not_receive(:warn)
542
+ expect(Kernel).not_to receive(:warn)
543
543
  YAML.load(*arguments)
544
544
  end
545
545
 
546
546
  it "calls #safe_load if the :safe option is set to true" do
547
- YAML.should_receive(:safe_load)
547
+ expect(YAML).to receive(:safe_load)
548
548
  YAML.load(*arguments)
549
549
  end
550
550
 
@@ -552,7 +552,7 @@ describe YAML do
552
552
  let(:safe_mode) { false }
553
553
 
554
554
  it "calls #unsafe_load if the :safe option is set to false" do
555
- YAML.should_receive(:unsafe_load)
555
+ expect(YAML).to receive(:unsafe_load)
556
556
  YAML.load(*arguments)
557
557
  end
558
558
  end
@@ -560,21 +560,21 @@ describe YAML do
560
560
 
561
561
  it "issues a warning when the :safe option is omitted" do
562
562
  silence_warnings do
563
- Kernel.should_receive(:warn)
563
+ expect(Kernel).to receive(:warn)
564
564
  YAML.load(*arguments)
565
565
  end
566
566
  end
567
567
 
568
568
  it "only issues a warning once (to avoid spamming an app's output)" do
569
569
  silence_warnings do
570
- Kernel.should_receive(:warn).once
570
+ expect(Kernel).to receive(:warn).once
571
571
  2.times { YAML.load(*arguments) }
572
572
  end
573
573
  end
574
574
 
575
575
  it "defaults to safe mode if the :safe option is omitted" do
576
576
  silence_warnings do
577
- YAML.should_receive(:safe_load)
577
+ expect(YAML).to receive(:safe_load)
578
578
  YAML.load(*arguments)
579
579
  end
580
580
  end
@@ -586,13 +586,13 @@ describe YAML do
586
586
 
587
587
  it "defaults to unsafe mode if the :safe option is omitted" do
588
588
  silence_warnings do
589
- YAML.should_receive(:unsafe_load)
589
+ expect(YAML).to receive(:unsafe_load)
590
590
  YAML.load(*arguments)
591
591
  end
592
592
  end
593
593
 
594
594
  it "calls #safe_load if the :safe option is set to true" do
595
- YAML.should_receive(:safe_load)
595
+ expect(YAML).to receive(:safe_load)
596
596
  YAML.load(*(arguments + [{ :safe => true }]))
597
597
  end
598
598
  end
@@ -603,30 +603,30 @@ describe YAML do
603
603
 
604
604
  it "issues a warning if the :safe option is omitted" do
605
605
  silence_warnings do
606
- Kernel.should_receive(:warn)
606
+ expect(Kernel).to receive(:warn)
607
607
  YAML.load_file(filename)
608
608
  end
609
609
  end
610
610
 
611
611
  it "doesn't issue a warning as long as the :safe option is specified" do
612
- Kernel.should_not_receive(:warn)
612
+ expect(Kernel).not_to receive(:warn)
613
613
  YAML.load_file(filename, :safe => true)
614
614
  end
615
615
 
616
616
  it "defaults to safe mode if the :safe option is omitted" do
617
617
  silence_warnings do
618
- YAML.should_receive(:safe_load_file)
618
+ expect(YAML).to receive(:safe_load_file)
619
619
  YAML.load_file(filename)
620
620
  end
621
621
  end
622
622
 
623
623
  it "calls #safe_load_file if the :safe option is set to true" do
624
- YAML.should_receive(:safe_load_file)
624
+ expect(YAML).to receive(:safe_load_file)
625
625
  YAML.load_file(filename, :safe => true)
626
626
  end
627
627
 
628
628
  it "calls #unsafe_load_file if the :safe option is set to false" do
629
- YAML.should_receive(:unsafe_load_file)
629
+ expect(YAML).to receive(:unsafe_load_file)
630
630
  YAML.load_file(filename, :safe => false)
631
631
  end
632
632
 
@@ -637,30 +637,30 @@ describe YAML do
637
637
 
638
638
  it "defaults to unsafe mode if the :safe option is omitted" do
639
639
  silence_warnings do
640
- YAML.should_receive(:unsafe_load_file)
640
+ expect(YAML).to receive(:unsafe_load_file)
641
641
  YAML.load_file(filename)
642
642
  end
643
643
  end
644
644
 
645
645
  it "calls #safe_load if the :safe option is set to true" do
646
- YAML.should_receive(:safe_load_file)
646
+ expect(YAML).to receive(:safe_load_file)
647
647
  YAML.load_file(filename, :safe => true)
648
648
  end
649
649
  end
650
650
 
651
651
  it "handles files starting with --- (see issue #48)" do
652
- YAML.load_file("spec/issue48.txt", :safe => true).should == {
652
+ expect(YAML.load_file("spec/issue48.txt", :safe => true)).to eq({
653
653
  "title" => "Blah",
654
654
  "key" => "value"
655
- }
655
+ })
656
656
  end
657
657
 
658
658
  it "handles content starting with --- (see issue #48)" do
659
659
  yaml = File.read("spec/issue48.txt")
660
- YAML.load(yaml, :safe => true).should == {
660
+ expect(YAML.load(yaml, :safe => true)).to eq({
661
661
  "title" => "Blah",
662
662
  "key" => "value"
663
- }
663
+ })
664
664
  end
665
665
  end
666
666
 
@@ -668,21 +668,21 @@ describe YAML do
668
668
  context "not a class" do
669
669
  it "should raise" do
670
670
  expect { SafeYAML::whitelist! :foo }.to raise_error(/not a Class/)
671
- SafeYAML::OPTIONS[:whitelisted_tags].should be_empty
671
+ expect(SafeYAML::OPTIONS[:whitelisted_tags]).to be_empty
672
672
  end
673
673
  end
674
674
 
675
675
  context "anonymous class" do
676
676
  it "should raise" do
677
677
  expect { SafeYAML::whitelist! Class.new }.to raise_error(/cannot be anonymous/)
678
- SafeYAML::OPTIONS[:whitelisted_tags].should be_empty
678
+ expect(SafeYAML::OPTIONS[:whitelisted_tags]).to be_empty
679
679
  end
680
680
  end
681
681
 
682
682
  context "with a Class as its argument" do
683
683
  it "should configure correctly" do
684
684
  expect { SafeYAML::whitelist! OpenStruct }.to_not raise_error
685
- SafeYAML::OPTIONS[:whitelisted_tags].grep(/OpenStruct\Z/).should_not be_empty
685
+ expect(SafeYAML::OPTIONS[:whitelisted_tags].grep(/OpenStruct\Z/)).not_to be_empty
686
686
  end
687
687
 
688
688
  it "successfully deserializes the specified class" do
@@ -692,23 +692,23 @@ describe YAML do
692
692
  SafeYAML::OPTIONS[:deserialize_symbols] = true
693
693
 
694
694
  result = safe_load_round_trip(OpenStruct.new(:foo => "bar"))
695
- result.should be_a(OpenStruct)
696
- result.foo.should == "bar"
695
+ expect(result).to be_a(OpenStruct)
696
+ expect(result.foo).to eq("bar")
697
697
  end
698
698
 
699
699
  it "works for ranges" do
700
700
  SafeYAML.whitelist!(Range)
701
- safe_load_round_trip(1..10).should == (1..10)
701
+ expect(safe_load_round_trip(1..10)).to eq(1..10)
702
702
  end
703
703
 
704
704
  it "works for regular expressions" do
705
705
  SafeYAML.whitelist!(Regexp)
706
- safe_load_round_trip(/foo/).should == /foo/
706
+ expect(safe_load_round_trip(/foo/)).to eq(/foo/)
707
707
  end
708
708
 
709
709
  it "works for multiple classes" do
710
710
  SafeYAML.whitelist!(Range, Regexp)
711
- safe_load_round_trip([(1..10), /bar/]).should == [(1..10), /bar/]
711
+ expect(safe_load_round_trip([(1..10), /bar/])).to eq([(1..10), /bar/])
712
712
  end
713
713
 
714
714
  it "works for arbitrary Exception subclasses" do
@@ -723,8 +723,8 @@ describe YAML do
723
723
  SafeYAML.whitelist!(CustomException)
724
724
 
725
725
  ex = safe_load_round_trip(CustomException.new("blah"))
726
- ex.should be_a(CustomException)
727
- ex.custom_message.should == "blah"
726
+ expect(ex).to be_a(CustomException)
727
+ expect(ex.custom_message).to eq("blah")
728
728
  end
729
729
  end
730
730
  end
@@ -13,13 +13,13 @@ ruby_version = defined?(JRUBY_VERSION) ? "JRuby #{JRUBY_VERSION} in #{RUBY_VERSI
13
13
  yaml_engine = defined?(YAML::ENGINE) ? YAML::ENGINE.yamler : "syck"
14
14
  libyaml_version = yaml_engine == "psych" && Psych.const_defined?("LIBYAML_VERSION", false) ? Psych::LIBYAML_VERSION : "N/A"
15
15
 
16
- puts <<-EOM
16
+ env_info = [
17
+ ruby_version,
18
+ "YAML: #{yaml_engine} (#{YAML::VERSION}) (libyaml: #{libyaml_version})",
19
+ "Monkeypatch: #{ENV['MONKEYPATCH_YAML']}"
20
+ ]
17
21
 
18
- Running #{ruby_version} with '#{yaml_engine}' YAML engine.
19
- YAML engine version: #{YAML::VERSION}
20
- libyaml version: #{libyaml_version}
21
-
22
- EOM
22
+ puts env_info.join(", ")
23
23
 
24
24
  # Caching references to these methods before loading safe_yaml in order to test
25
25
  # that they aren't touched unless you actually require safe_yaml (see yaml_spec.rb).
@@ -5,7 +5,7 @@ describe SafeYAML::Transform do
5
5
  value = "c3VyZS4="
6
6
  decoded = SafeYAML::Transform.to_proper_type(value, false, "!binary")
7
7
 
8
- decoded.should == "sure."
9
- decoded.encoding.should == value.encoding if decoded.respond_to?(:encoding)
8
+ expect(decoded).to eq("sure.")
9
+ expect(decoded.encoding).to eq(value.encoding) if decoded.respond_to?(:encoding)
10
10
  end
11
11
  end
@@ -2,19 +2,19 @@ require "spec_helper"
2
2
 
3
3
  describe SafeYAML::Transform::ToDate do
4
4
  it "returns true when the value matches a valid Date" do
5
- subject.transform?("2013-01-01").should == [true, Date.parse("2013-01-01")]
5
+ expect(subject.transform?("2013-01-01")).to eq([true, Date.parse("2013-01-01")])
6
6
  end
7
7
 
8
8
  it "returns false when the value does not match a valid Date" do
9
- subject.transform?("foobar").should be_false
9
+ expect(subject.transform?("foobar")).to be_falsey
10
10
  end
11
11
 
12
12
  it "returns false when the value does not end with a Date" do
13
- subject.transform?("2013-01-01\nNOT A DATE").should be_false
13
+ expect(subject.transform?("2013-01-01\nNOT A DATE")).to be_falsey
14
14
  end
15
15
 
16
16
  it "returns false when the value does not begin with a Date" do
17
- subject.transform?("NOT A DATE\n2013-01-01").should be_false
17
+ expect(subject.transform?("NOT A DATE\n2013-01-01")).to be_falsey
18
18
  end
19
19
 
20
20
  it "correctly parses the remaining formats of the YAML spec" do
@@ -27,30 +27,30 @@ describe SafeYAML::Transform::ToDate do
27
27
 
28
28
  equivalent_values.each do |value|
29
29
  success, result = subject.transform?(value)
30
- success.should be_true
31
- result.should == Time.utc(2001, 12, 15, 2, 59, 43, 100000)
30
+ expect(success).to be_truthy
31
+ expect(result).to eq(Time.utc(2001, 12, 15, 2, 59, 43, 100000))
32
32
  end
33
33
  end
34
34
 
35
35
  it "converts times to the local timezone" do
36
36
  success, result = subject.transform?("2012-12-01 10:33:45 +11:00")
37
- success.should be_true
38
- result.should == Time.utc(2012, 11, 30, 23, 33, 45)
39
- result.gmt_offset.should == Time.local(2012, 11, 30).gmt_offset
37
+ expect(success).to be_truthy
38
+ expect(result).to eq(Time.utc(2012, 11, 30, 23, 33, 45))
39
+ expect(result.gmt_offset).to eq(Time.local(2012, 11, 30).gmt_offset)
40
40
  end
41
41
 
42
42
  it "returns strings for invalid dates" do
43
- subject.transform?("0000-00-00").should == [true, "0000-00-00"]
44
- subject.transform?("2013-13-01").should == [true, "2013-13-01"]
45
- subject.transform?("2014-01-32").should == [true, "2014-01-32"]
43
+ expect(subject.transform?("0000-00-00")).to eq([true, "0000-00-00"])
44
+ expect(subject.transform?("2013-13-01")).to eq([true, "2013-13-01"])
45
+ expect(subject.transform?("2014-01-32")).to eq([true, "2014-01-32"])
46
46
  end
47
47
 
48
48
  it "returns strings for invalid date/times" do
49
- subject.transform?("0000-00-00 00:00:00 -0000").should == [true, "0000-00-00 00:00:00 -0000"]
50
- subject.transform?("2013-13-01 21:59:43 -05:00").should == [true, "2013-13-01 21:59:43 -05:00"]
51
- subject.transform?("2013-01-32 21:59:43 -05:00").should == [true, "2013-01-32 21:59:43 -05:00"]
52
- subject.transform?("2013-01-30 25:59:43 -05:00").should == [true, "2013-01-30 25:59:43 -05:00"]
53
- subject.transform?("2013-01-30 21:69:43 -05:00").should == [true, "2013-01-30 21:69:43 -05:00"]
49
+ expect(subject.transform?("0000-00-00 00:00:00 -0000")).to eq([true, "0000-00-00 00:00:00 -0000"])
50
+ expect(subject.transform?("2013-13-01 21:59:43 -05:00")).to eq([true, "2013-13-01 21:59:43 -05:00"])
51
+ expect(subject.transform?("2013-01-32 21:59:43 -05:00")).to eq([true, "2013-01-32 21:59:43 -05:00"])
52
+ expect(subject.transform?("2013-01-30 25:59:43 -05:00")).to eq([true, "2013-01-30 25:59:43 -05:00"])
53
+ expect(subject.transform?("2013-01-30 21:69:43 -05:00")).to eq([true, "2013-01-30 21:69:43 -05:00"])
54
54
 
55
55
  # Interesting. It seems that in some older Ruby versions, the below actually parses successfully
56
56
  # w/ DateTime.parse; but it fails w/ YAML.load. Whom to follow???
@@ -2,41 +2,41 @@ require "spec_helper"
2
2
 
3
3
  describe SafeYAML::Transform::ToFloat do
4
4
  it "returns true when the value matches a valid Float" do
5
- subject.transform?("20.00").should == [true, 20.0]
5
+ expect(subject.transform?("20.00")).to eq([true, 20.0])
6
6
  end
7
7
 
8
8
  it "returns false when the value does not match a valid Float" do
9
- subject.transform?("foobar").should be_false
9
+ expect(subject.transform?("foobar")).to be_falsey
10
10
  end
11
11
 
12
12
  it "returns false when the value spans multiple lines" do
13
- subject.transform?("20.00\nNOT A FLOAT").should be_false
13
+ expect(subject.transform?("20.00\nNOT A FLOAT")).to be_falsey
14
14
  end
15
15
 
16
16
  it "correctly parses all formats in the YAML spec" do
17
17
  # canonical
18
- subject.transform?("6.8523015e+5").should == [true, 685230.15]
18
+ expect(subject.transform?("6.8523015e+5")).to eq([true, 685230.15])
19
19
 
20
20
  # exponentioal
21
- subject.transform?("685.230_15e+03").should == [true, 685230.15]
21
+ expect(subject.transform?("685.230_15e+03")).to eq([true, 685230.15])
22
22
 
23
23
  # fixed
24
- subject.transform?("685_230.15").should == [true, 685230.15]
24
+ expect(subject.transform?("685_230.15")).to eq([true, 685230.15])
25
25
 
26
26
  # sexagesimal
27
- subject.transform?("190:20:30.15").should == [true, 685230.15]
27
+ expect(subject.transform?("190:20:30.15")).to eq([true, 685230.15])
28
28
 
29
29
  # infinity
30
- subject.transform?("-.inf").should == [true, (-1.0 / 0.0)]
30
+ expect(subject.transform?("-.inf")).to eq([true, (-1.0 / 0.0)])
31
31
 
32
32
  # not a number
33
33
  # NOTE: can't use == here since NaN != NaN
34
34
  success, result = subject.transform?(".NaN")
35
- success.should be_true; result.should be_nan
35
+ expect(success).to be_truthy; expect(result).to be_nan
36
36
  end
37
37
 
38
38
  # issue 29
39
39
  it "returns false for the string '.'" do
40
- subject.transform?(".").should be_false
40
+ expect(subject.transform?(".")).to be_falsey
41
41
  end
42
42
  end
@@ -2,63 +2,63 @@ require "spec_helper"
2
2
 
3
3
  describe SafeYAML::Transform::ToInteger do
4
4
  it "returns true when the value matches a valid Integer" do
5
- subject.transform?("10").should == [true, 10]
5
+ expect(subject.transform?("10")).to eq([true, 10])
6
6
  end
7
7
 
8
8
  it "returns false when the value does not match a valid Integer" do
9
- subject.transform?("foobar").should be_false
9
+ expect(subject.transform?("foobar")).to be_falsey
10
10
  end
11
11
 
12
12
  it "returns false when the value spans multiple lines" do
13
- subject.transform?("10\nNOT AN INTEGER").should be_false
13
+ expect(subject.transform?("10\nNOT AN INTEGER")).to be_falsey
14
14
  end
15
15
 
16
16
  it "allows commas in the number" do
17
- subject.transform?("1,000").should == [true, 1000]
17
+ expect(subject.transform?("1,000")).to eq([true, 1000])
18
18
  end
19
19
 
20
20
  it "correctly parses numbers in octal format" do
21
- subject.transform?("010").should == [true, 8]
21
+ expect(subject.transform?("010")).to eq([true, 8])
22
22
  end
23
23
 
24
24
  it "correctly parses numbers in hexadecimal format" do
25
- subject.transform?("0x1FF").should == [true, 511]
25
+ expect(subject.transform?("0x1FF")).to eq([true, 511])
26
26
  end
27
27
 
28
28
  it "defaults to a string for a number that resembles octal format but is not" do
29
- subject.transform?("09").should be_false
29
+ expect(subject.transform?("09")).to be_falsey
30
30
  end
31
31
 
32
32
  it "correctly parses 0 in decimal" do
33
- subject.transform?("0").should == [true, 0]
33
+ expect(subject.transform?("0")).to eq([true, 0])
34
34
  end
35
35
 
36
36
  it "defaults to a string for a number that resembles hexadecimal format but is not" do
37
- subject.transform?("0x1G").should be_false
37
+ expect(subject.transform?("0x1G")).to be_falsey
38
38
  end
39
39
 
40
40
  it "correctly parses all formats in the YAML spec" do
41
41
  # canonical
42
- subject.transform?("685230").should == [true, 685230]
42
+ expect(subject.transform?("685230")).to eq([true, 685230])
43
43
 
44
44
  # decimal
45
- subject.transform?("+685_230").should == [true, 685230]
45
+ expect(subject.transform?("+685_230")).to eq([true, 685230])
46
46
 
47
47
  # octal
48
- subject.transform?("02472256").should == [true, 685230]
48
+ expect(subject.transform?("02472256")).to eq([true, 685230])
49
49
 
50
50
  # hexadecimal:
51
- subject.transform?("0x_0A_74_AE").should == [true, 685230]
51
+ expect(subject.transform?("0x_0A_74_AE")).to eq([true, 685230])
52
52
 
53
53
  # binary
54
- subject.transform?("0b1010_0111_0100_1010_1110").should == [true, 685230]
54
+ expect(subject.transform?("0b1010_0111_0100_1010_1110")).to eq([true, 685230])
55
55
 
56
56
  # sexagesimal
57
- subject.transform?("190:20:30").should == [true, 685230]
57
+ expect(subject.transform?("190:20:30")).to eq([true, 685230])
58
58
  end
59
59
 
60
60
  # see https://github.com/dtao/safe_yaml/pull/51
61
61
  it "strips out underscores before parsing decimal values" do
62
- subject.transform?("_850_").should == [true, 850]
62
+ expect(subject.transform?("_850_")).to eq([true, 850])
63
63
  end
64
64
  end
@@ -20,32 +20,32 @@ describe SafeYAML::Transform::ToSymbol do
20
20
  end
21
21
 
22
22
  it "returns true when the value matches a valid Symbol" do
23
- with_symbol_deserialization { subject.transform?(":foo")[0].should be_true }
23
+ with_symbol_deserialization { expect(subject.transform?(":foo")[0]).to be_truthy }
24
24
  end
25
25
 
26
26
  it "returns true when the value matches a valid String+Symbol" do
27
- with_symbol_deserialization { subject.transform?(':"foo"')[0].should be_true }
27
+ with_symbol_deserialization { expect(subject.transform?(':"foo"')[0]).to be_truthy }
28
28
  end
29
29
 
30
30
  it "returns true when the value matches a valid String+Symbol with 's" do
31
- with_symbol_deserialization { subject.transform?(":'foo'")[0].should be_true }
31
+ with_symbol_deserialization { expect(subject.transform?(":'foo'")[0]).to be_truthy }
32
32
  end
33
33
 
34
34
  it "returns true when the value has special characters and is wrapped in a String" do
35
- with_symbol_deserialization { subject.transform?(':"foo.bar"')[0].should be_true }
35
+ with_symbol_deserialization { expect(subject.transform?(':"foo.bar"')[0]).to be_truthy }
36
36
  end
37
37
 
38
38
  it "returns false when symbol deserialization is disabled" do
39
- without_symbol_deserialization { subject.transform?(":foo").should be_false }
39
+ without_symbol_deserialization { expect(subject.transform?(":foo")).to be_falsey }
40
40
  end
41
41
 
42
42
  it "returns false when the value does not match a valid Symbol" do
43
- with_symbol_deserialization { subject.transform?("foo").should be_false }
43
+ with_symbol_deserialization { expect(subject.transform?("foo")).to be_falsey }
44
44
  end
45
45
 
46
46
  it "returns false when the symbol does not begin the line" do
47
47
  with_symbol_deserialization do
48
- subject.transform?("NOT A SYMBOL\n:foo").should be_false
48
+ expect(subject.transform?("NOT A SYMBOL\n:foo")).to be_falsey
49
49
  end
50
50
  end
51
51
  end
@@ -5,11 +5,11 @@ require "spec_helper"
5
5
  describe YAML do
6
6
  context "when you've only required safe_yaml/load", :libraries => true do
7
7
  it "YAML.load doesn't get monkey patched" do
8
- YAML.method(:load).should == ORIGINAL_YAML_LOAD
8
+ expect(YAML.method(:load)).to eq(ORIGINAL_YAML_LOAD)
9
9
  end
10
10
 
11
11
  it "YAML.load_file doesn't get monkey patched" do
12
- YAML.method(:load_file).should == ORIGINAL_YAML_LOAD_FILE
12
+ expect(YAML.method(:load_file)).to eq(ORIGINAL_YAML_LOAD_FILE)
13
13
  end
14
14
  end
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe_yaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Tao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-22 00:00:00.000000000 Z
11
+ date: 2014-09-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Parse YAML safely
14
14
  email: daniel.tao@gmail.com
@@ -17,8 +17,8 @@ executables:
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - .gitignore
21
- - .travis.yml
20
+ - ".gitignore"
21
+ - ".travis.yml"
22
22
  - CHANGES.md
23
23
  - Gemfile
24
24
  - LICENSE.txt
@@ -78,17 +78,17 @@ require_paths:
78
78
  - lib
79
79
  required_ruby_version: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: 1.8.7
84
84
  required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - '>='
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  requirements: []
90
90
  rubyforge_project:
91
- rubygems_version: 2.2.2
91
+ rubygems_version: 2.1.11
92
92
  signing_key:
93
93
  specification_version: 4
94
94
  summary: SameYAML provides an alternative implementation of YAML.load suitable for