yamldiff 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 27d91d4a12050a4e55e9ad4ea4da5c11dfb03822
4
+ data.tar.gz: 36e04acd943bb9203850964de70d3ce89c2bd6b6
5
+ SHA512:
6
+ metadata.gz: 78d02396e4d39a5392b94ea79314c83f8a3f8a99e3c595234a808154b3e404e6a9f90a7b038f1f711c72aef5aba93ee9a97b3cf6fa3e71cf4de513b60be1eda7
7
+ data.tar.gz: eee3454912b71aed4e277e9fc18b346a787da143f670c3f5ea23635feb38896103fa2a938b1a2cd1b8c3afc784e33814deab23f15a03ad9b5a4413c2a3c58421
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ *.yml
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # Yamldiff
2
+ [![Build Status](https://travis-ci.org/wallace/yamldiff.png)](https://travis-ci.org/wallace/yamldiff)
2
3
 
3
4
  Given two yaml files, Yamldiff tells you which keys present in the first file
4
5
  are not present in the second.
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
4
+ require 'yamldiff'
5
+
6
+ if ARGV.size != 2
7
+ $stderr.puts "USAGE: yamldiff file1 file2"
8
+ exit 1
9
+ end
10
+
11
+ errors = Yamldiff.diff_yaml(ARGV[0], ARGV[1])
12
+ puts errors[ARGV[1]]
@@ -1,4 +1,5 @@
1
1
  require 'yaml'
2
+ require 'diffy'
2
3
  require "yamldiff/version"
3
4
  require "yamldiff/yamldiff_error"
4
5
  require "yamldiff/yamldiff"
@@ -1,3 +1,3 @@
1
1
  class Yamldiff
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -2,8 +2,8 @@ class Yamldiff
2
2
  class << self
3
3
  # Compare the two yaml files
4
4
  def diff_yaml(first, second, errors_for = {})
5
- primary = YAML.load(File.open(first))
6
- secondary = YAML.load(File.open(second))
5
+ primary = YAML.load(ERB.new(File.read(first)).result)
6
+ secondary = YAML.load(ERB.new(File.read(second)).result)
7
7
  errors_for[second] = compare_hashes(primary, secondary)
8
8
  errors_for
9
9
  end
@@ -20,13 +20,13 @@ class Yamldiff
20
20
 
21
21
  first.each do |key, value|
22
22
  unless second.key?(key)
23
- errors << YamldiffKeyError.new(key, context) # "Missing key : #{key} in path #{context.join(".")}"
23
+ errors << YamldiffKeyError.new(key, context)
24
24
  next
25
25
  end
26
26
 
27
27
  value2 = second[key]
28
28
  if (value.class != value2.class)
29
- errors << YamldiffKeyValueTypeError.new(key, context) # "Key value type mismatch : #{key} in path #{context.join(".")}"
29
+ errors << YamldiffKeyValueTypeError.new(key, context)
30
30
  next
31
31
  end
32
32
 
@@ -36,7 +36,7 @@ class Yamldiff
36
36
  end
37
37
 
38
38
  if (value != value2)
39
- errors << YamldiffKeyValueError.new(key, context) # "Key value mismatch : #{key} in path #{context.join(".")}"
39
+ errors << YamldiffKeyValueError.new(key, context, Diffy::Diff.new(value.to_s + "\n", value2.to_s + "\n"))
40
40
  end
41
41
  end
42
42
 
@@ -6,6 +6,31 @@ class YamldiffError
6
6
  end
7
7
  end
8
8
 
9
- class YamldiffKeyError < YamldiffError; end
10
- class YamldiffKeyValueTypeError < YamldiffError; end
11
- class YamldiffKeyValueError < YamldiffError; end
9
+ class YamldiffKeyError < YamldiffError
10
+ def to_s
11
+ "Missing key: #{@context.join(".")}.#{@key}"
12
+ end
13
+ end
14
+
15
+ class YamldiffKeyValueTypeError < YamldiffError
16
+ def to_s
17
+ "Key value type mismatch: #{@context.join(".")}.#{@key}"
18
+ end
19
+ end
20
+
21
+ class YamldiffKeyValueError < YamldiffError
22
+ def initialize(key, context, diff = nil)
23
+ super key, context
24
+ @diff = diff
25
+ end
26
+
27
+ def to_s
28
+ output = []
29
+ output << "Key content differs: #{@context.join(".")}.#{@key}"
30
+ if @diff
31
+ output << "Diff:"
32
+ output << @diff
33
+ end
34
+ output.join("\n")
35
+ end
36
+ end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe YamldiffKeyError, "#to_s" do
4
+ it "outputs human readable text" do
5
+ YamldiffKeyError.new('key', ['root', 'namespace']).to_s.should == "Missing key: root.namespace.key"
6
+ end
7
+ end
8
+
9
+ describe YamldiffKeyValueTypeError, "#to_s" do
10
+ it "outputs human readable text" do
11
+ YamldiffKeyValueTypeError.new('key', ['root', 'namespace']).to_s.should == "Key value type mismatch: root.namespace.key"
12
+ end
13
+ end
14
+
15
+ describe YamldiffKeyValueError, "#to_s" do
16
+ it "outputs human readable text" do
17
+ YamldiffKeyValueError.new('key', ['root', 'namespace']).to_s.should == "Key content differs: root.namespace.key"
18
+ end
19
+
20
+ it "outputs diff if given" do
21
+ str1 = "foo\n"
22
+ str2 = "bar\n"
23
+ diff = Diffy::Diff.new(str1, str2)
24
+ YamldiffKeyValueError.new('key', ['root', 'namespace'], diff).to_s.should == <<-OUTPUT
25
+ Key content differs: root.namespace.key
26
+ Diff:
27
+ -foo
28
+ +bar
29
+ OUTPUT
30
+ end
31
+ end
@@ -117,5 +117,21 @@ describe Yamldiff do
117
117
  result[second].first.key.should eql("bar")
118
118
  result[second].first.context.should eql(["en", "baz"])
119
119
  end
120
+
121
+ it "diffs the output when the values are different and passes diff to error" do
122
+ first = "./en.yml"
123
+ second = "./es.yml"
124
+ File.open(first, "w") do |f|
125
+ f.puts("en: ")
126
+ f.puts(" app_name: 'Verbosefish'")
127
+ end
128
+ File.open(second, "w") do |f|
129
+ f.puts("en: ")
130
+ f.puts(" app_name: 'Verboszefish'")
131
+ end
132
+ Diffy::Diff.expects(:new).with("Verbosefish\n", "Verboszefish\n").returns("DIFF")
133
+ YamldiffKeyValueError.expects(:new).with('app_name', ['en'], 'DIFF')
134
+ result = subject.diff_yaml(first, second)
135
+ end
120
136
  end
121
137
  end
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
14
14
  gem.name = "yamldiff"
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Yamldiff::VERSION
17
+ gem.add_dependency 'diffy'
17
18
  gem.add_development_dependency 'fakefs'
18
19
  gem.add_development_dependency 'rake'
19
20
  gem.add_development_dependency 'rspec'
metadata CHANGED
@@ -1,93 +1,119 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yamldiff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
5
- prerelease:
4
+ version: 0.0.9
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jonathan R. Wallace
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-03-23 00:00:00.000000000 Z
11
+ date: 2014-04-25 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: diffy
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: fakefs
16
- requirement: &70324675319160 !ruby/object:Gem::Requirement
17
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
18
30
  requirements:
19
- - - ! '>='
31
+ - - ">="
20
32
  - !ruby/object:Gem::Version
21
33
  version: '0'
22
34
  type: :development
23
35
  prerelease: false
24
- version_requirements: *70324675319160
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
25
41
  - !ruby/object:Gem::Dependency
26
42
  name: rake
27
- requirement: &70324675327180 !ruby/object:Gem::Requirement
28
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
29
44
  requirements:
30
- - - ! '>='
45
+ - - ">="
31
46
  - !ruby/object:Gem::Version
32
47
  version: '0'
33
48
  type: :development
34
49
  prerelease: false
35
- version_requirements: *70324675327180
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
36
55
  - !ruby/object:Gem::Dependency
37
56
  name: rspec
38
- requirement: &70324675324520 !ruby/object:Gem::Requirement
39
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
40
58
  requirements:
41
- - - ! '>='
59
+ - - ">="
42
60
  - !ruby/object:Gem::Version
43
61
  version: '0'
44
62
  type: :development
45
63
  prerelease: false
46
- version_requirements: *70324675324520
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
47
69
  description: Shows the difference yaml keys
48
70
  email:
49
71
  - jonathan.wallace@gmail.com
50
- executables: []
72
+ executables:
73
+ - yamldiff
51
74
  extensions: []
52
75
  extra_rdoc_files: []
53
76
  files:
54
- - .gitignore
77
+ - ".gitignore"
78
+ - ".travis.yml"
55
79
  - Gemfile
56
80
  - LICENSE
57
81
  - README.md
58
82
  - Rakefile
83
+ - bin/yamldiff
59
84
  - lib/yamldiff.rb
60
85
  - lib/yamldiff/version.rb
61
86
  - lib/yamldiff/yamldiff.rb
62
87
  - lib/yamldiff/yamldiff_error.rb
88
+ - spec/lib/yamldiff_error_spec.rb
63
89
  - spec/lib/yamldiff_spec.rb
64
90
  - spec/spec_helper.rb
65
91
  - yamldiff.gemspec
66
92
  homepage: ''
67
93
  licenses: []
94
+ metadata: {}
68
95
  post_install_message:
69
96
  rdoc_options: []
70
97
  require_paths:
71
98
  - lib
72
99
  required_ruby_version: !ruby/object:Gem::Requirement
73
- none: false
74
100
  requirements:
75
- - - ! '>='
101
+ - - ">="
76
102
  - !ruby/object:Gem::Version
77
103
  version: '0'
78
104
  required_rubygems_version: !ruby/object:Gem::Requirement
79
- none: false
80
105
  requirements:
81
- - - ! '>='
106
+ - - ">="
82
107
  - !ruby/object:Gem::Version
83
108
  version: '0'
84
109
  requirements: []
85
110
  rubyforge_project:
86
- rubygems_version: 1.8.17
111
+ rubygems_version: 2.2.2
87
112
  signing_key:
88
- specification_version: 3
113
+ specification_version: 4
89
114
  summary: Yamldiff will tell you when and where you have differences between two yaml
90
115
  files. It prints out a list of missing keys for the second file.
91
116
  test_files:
117
+ - spec/lib/yamldiff_error_spec.rb
92
118
  - spec/lib/yamldiff_spec.rb
93
119
  - spec/spec_helper.rb