safe_yaml 1.0.4 → 1.0.5

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
  SHA1:
3
- metadata.gz: dbb2ac04a98ae5516c34c7dc2baf6348304c6e17
4
- data.tar.gz: 097dd3a02c37a63f7a899b8897839b3c60a82117
3
+ metadata.gz: b7f3a4c3a01072ac60acedf5e31aeaeb2bdd2351
4
+ data.tar.gz: 42d514af94d97f883fc45ac685cd763ee479a2a3
5
5
  SHA512:
6
- metadata.gz: 93c0fd49c34c71dfcb0cb76d127aa52e9178a6cf6d9b8a6a94728b1ea336c956c228cc71bbefa4790fe31d35229b0e9783e930f7a97ec69053dcfdd4441571cb
7
- data.tar.gz: 5d068fabdc5b89a544958e0a139a82bcc40c38828840f6a9d02baca82e3b574868397fa45b74042320ea403f13388ebd2db32164eef4df97f261475049f4f86f
6
+ metadata.gz: f96d1730de67f843d1f45ee0806007b9041351e739b6af14596b0e8df7387f6e74d8f6912162fc83cc5b959ac53ed02afd88c115c64d743274948dfcdbfa4550
7
+ data.tar.gz: 13db92095eee835579880064ee7c986f369a9a9b66225ff0e8d1054d5e2a35e04bb237a9c0f82e8406fe5a66a761af14e2ed61b214381559c1397d87e59fedc8
data/.gitignore CHANGED
@@ -1 +1,3 @@
1
+ *.gem
1
2
  Gemfile.lock
3
+ spec/store.yaml
data/CHANGES.md CHANGED
@@ -1,3 +1,8 @@
1
+ 1.0.5
2
+ -----
3
+
4
+ - fixed [#80](https://github.com/dtao/safe_yaml/issues/80): uninitialized constant DateTime
5
+
1
6
  1.0.2
2
7
  -----
3
8
 
@@ -1,3 +1,5 @@
1
+ require 'time'
2
+
1
3
  module SafeYAML
2
4
  class Parse
3
5
  class Date
@@ -0,0 +1,39 @@
1
+ require 'safe_yaml/load'
2
+ require 'yaml/store'
3
+
4
+ module SafeYAML
5
+
6
+ class Store < YAML::Store
7
+
8
+ # Override YAML::Store#initialize to accept additional option
9
+ # +safe_yaml_opts+.
10
+ def initialize(file_name, yaml_opts = {}, safe_yaml_opts = {})
11
+ @safe_yaml_opts = safe_yaml_opts
12
+ super(file_name, yaml_opts)
13
+ end
14
+
15
+ # Override YAML::Store#load to use SafeYAML.load instead of
16
+ # YAML.load (via #safe_yaml_load).
17
+ #--
18
+ # PStore#load is private, while YAML::Store#load is public.
19
+ #++
20
+ def load(content)
21
+ table = safe_yaml_load(content)
22
+ table == false ? {} : table
23
+ end
24
+
25
+ private
26
+
27
+ if SafeYAML::YAML_ENGINE == 'psych'
28
+ def safe_yaml_load(content)
29
+ SafeYAML.load(content, nil, @safe_yaml_opts)
30
+ end
31
+ else
32
+ def safe_yaml_load(content)
33
+ SafeYAML.load(content, @safe_yaml_opts)
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -1,3 +1,3 @@
1
1
  module SafeYAML
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.5"
3
3
  end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ require 'safe_yaml/store'
4
+
5
+ describe SafeYAML::Store do
6
+
7
+ let(:file) { 'spec/store.yaml' }
8
+ let(:content) { "--- \nfoo: 42\n:bar: \"party\"\n" }
9
+
10
+ before do
11
+ # Rewrite file on every test, as its contents are potentially modified by
12
+ # SafeYAML::Store#transaction
13
+ File.open(file, 'w') { |f| f.write(content) }
14
+ end
15
+
16
+ def expect_safe_load(options = {})
17
+ load_args = [content, options]
18
+ load_args.insert(1, nil) if SafeYAML::YAML_ENGINE == 'psych'
19
+
20
+ expect(SafeYAML).to receive(:load).with(*load_args).and_call_original
21
+ expect(YAML).not_to receive(:load)
22
+ end
23
+
24
+ let(:init_args) { [file] }
25
+ subject { described_class.new(*init_args) }
26
+
27
+ it 'should be a YAML::Store' do
28
+ expect(subject).to be_a(YAML::Store)
29
+ end
30
+
31
+ it 'should be a SafeYAML::Store' do
32
+ expect(subject).to be_a(SafeYAML::Store)
33
+ end
34
+
35
+ it 'should use SafeYAML.load instead of YAML.load' do
36
+ expect_safe_load
37
+ expect(subject.transaction { subject['foo'] }).to eq(42)
38
+ end
39
+
40
+ it 'preserves default SafeYAML behavior' do
41
+ expect(subject.transaction { subject[:bar] }).to eq(nil)
42
+ expect(subject.transaction { subject[':bar'] }).to eq('party')
43
+ end
44
+
45
+
46
+ describe 'with options' do
47
+
48
+ let(:init_args) { super().insert(2, :deserialize_symbols => true) }
49
+
50
+ it 'should accept options for SafeYAML.load' do
51
+ expect_safe_load(:deserialize_symbols => true)
52
+ expect(subject.transaction { subject[:bar] }).to eq('party')
53
+ end
54
+
55
+ end
56
+
57
+ 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.4
4
+ version: 1.0.5
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-09-28 00:00:00.000000000 Z
11
+ date: 2019-02-22 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
@@ -37,6 +37,7 @@ files:
37
37
  - lib/safe_yaml/psych_resolver.rb
38
38
  - lib/safe_yaml/resolver.rb
39
39
  - lib/safe_yaml/safe_to_ruby_visitor.rb
40
+ - lib/safe_yaml/store.rb
40
41
  - lib/safe_yaml/syck_hack.rb
41
42
  - lib/safe_yaml/syck_node_monkeypatch.rb
42
43
  - lib/safe_yaml/syck_resolver.rb
@@ -60,6 +61,7 @@ files:
60
61
  - spec/resolver_specs.rb
61
62
  - spec/safe_yaml_spec.rb
62
63
  - spec/spec_helper.rb
64
+ - spec/store_spec.rb
63
65
  - spec/support/exploitable_back_door.rb
64
66
  - spec/syck_resolver_spec.rb
65
67
  - spec/transform/base64_spec.rb
@@ -78,17 +80,17 @@ require_paths:
78
80
  - lib
79
81
  required_ruby_version: !ruby/object:Gem::Requirement
80
82
  requirements:
81
- - - ">="
83
+ - - '>='
82
84
  - !ruby/object:Gem::Version
83
85
  version: 1.8.7
84
86
  required_rubygems_version: !ruby/object:Gem::Requirement
85
87
  requirements:
86
- - - ">="
88
+ - - '>='
87
89
  - !ruby/object:Gem::Version
88
90
  version: '0'
89
91
  requirements: []
90
92
  rubyforge_project:
91
- rubygems_version: 2.1.11
93
+ rubygems_version: 2.6.14
92
94
  signing_key:
93
95
  specification_version: 4
94
96
  summary: SameYAML provides an alternative implementation of YAML.load suitable for
@@ -103,6 +105,7 @@ test_files:
103
105
  - spec/resolver_specs.rb
104
106
  - spec/safe_yaml_spec.rb
105
107
  - spec/spec_helper.rb
108
+ - spec/store_spec.rb
106
109
  - spec/support/exploitable_back_door.rb
107
110
  - spec/syck_resolver_spec.rb
108
111
  - spec/transform/base64_spec.rb