Skip to content

Commit 1c2072f

Browse files
authored
Merge pull request #55 from github/kpaulisse-diff-api-use-internally
Use diff object from API internally
2 parents 2eae673 + 173c356 commit 1c2072f

10 files changed

Lines changed: 213 additions & 198 deletions

File tree

lib/octocatalog-diff/catalog/computed.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,15 @@ def environment
8989
def cleanup_checkout_dir(checkout_dir, logger)
9090
return unless File.directory?(checkout_dir)
9191
logger.debug("Cleaning up temporary directory #{checkout_dir}")
92-
FileUtils.remove_entry_secure checkout_dir
92+
# Sometimes this seems to break when handling the recursive removal when running under
93+
# a parallel environment. Trap and ignore the errors here if we don't care about them.
94+
begin
95+
FileUtils.remove_entry_secure checkout_dir
96+
rescue Errno::ENOTEMPTY, Errno::ENOENT => exc
97+
# :nocov:
98+
logger.debug "cleanup_checkout_dir(#{checkout_dir}) logged #{exc.class} - this can be ignored"
99+
# :nocov:
100+
end
93101
end
94102

95103
# Private method: Bootstrap a directory

lib/octocatalog-diff/cli.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ def self.cli(argv = ARGV, logger = Logger.new(STDERR), opts = {})
110110
end
111111

112112
# Compile catalogs and do catalog-diff
113-
catalog_diff = OctocatalogDiff::API::V1::CatalogDiff.catalog_diff(options.merge(logger: logger))
114-
diffs = catalog_diff.diffs.map(&:raw)
113+
catalog_diff = OctocatalogDiff::API::V1.catalog_diff(options.merge(logger: logger))
114+
diffs = catalog_diff.diffs
115115

116116
# Display diffs
117117
printer_obj = OctocatalogDiff::Cli::Printer.new(options, logger)

spec/octocatalog-diff/integration/arbitrary_command_line_spec.rb

Lines changed: 30 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -24,31 +24,23 @@
2424
end
2525

2626
it 'should contain resource from environments/foo site.pp' do
27-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
28-
@result.diffs,
29-
['+', "File\f/tmp/environment-foo-site"]
30-
)).to eq(true)
27+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-foo-site' }
28+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
3129
end
3230

3331
it 'should contain resource from environments/foo modules/foo' do
34-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
35-
@result.diffs,
36-
['+', "File\f/tmp/environment-foo-module"]
37-
)).to eq(true)
32+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-foo-module' }
33+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
3834
end
3935

4036
it 'should not contain resource from environments/production' do
41-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
42-
@result.diffs,
43-
['+', "File\f/tmp/environment-production-site"]
44-
)).to eq(false)
37+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-production-site' }
38+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(false)
4539
end
4640

4741
it 'should not contain resource from main modules/foo' do
48-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
49-
@result.diffs,
50-
['+', "File\f/tmp/foo-module"]
51-
)).to eq(false)
42+
resource = { diff_type: '+', type: 'File', title: '/tmp/foo-module' }
43+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(false)
5244
end
5345
end
5446

@@ -71,24 +63,18 @@
7163
end
7264

7365
it 'should contain resource from environments/foo site.pp only in to catalog' do
74-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
75-
@result.diffs,
76-
['+', "File\f/tmp/environment-foo-site"]
77-
)).to eq(true)
66+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-foo-site' }
67+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
7868
end
7969

8070
it 'should contain resource from environments/foo modules/foo only in to catalog' do
81-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
82-
@result.diffs,
83-
['+', "File\f/tmp/environment-foo-module"]
84-
)).to eq(true)
71+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-foo-module' }
72+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
8573
end
8674

8775
it 'should contain resource from environments/production only in from catalog' do
88-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
89-
@result.diffs,
90-
['-', "File\f/tmp/environment-production-site"]
91-
)).to eq(true)
76+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-production-site' }
77+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(false)
9278
end
9379
end
9480

@@ -112,31 +98,23 @@
11298
end
11399

114100
it 'should contain resource from environments/foo site.pp' do
115-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
116-
@result.diffs,
117-
['+', "File\f/tmp/environment-foo-site"]
118-
)).to eq(true)
101+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-foo-site' }
102+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
119103
end
120104

121105
it 'should contain resource from environments/foo modules/foo' do
122-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
123-
@result.diffs,
124-
['+', "File\f/tmp/environment-foo-module"]
125-
)).to eq(true)
106+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-foo-module' }
107+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
126108
end
127109

128110
it 'should not contain resource from environments/production' do
129-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
130-
@result.diffs,
131-
['+', "File\f/tmp/environment-production-site"]
132-
)).to eq(false)
111+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-production-site' }
112+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(false)
133113
end
134114

135115
it 'should not contain resource from main modules/foo' do
136-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
137-
@result.diffs,
138-
['+', "File\f/tmp/foo-module"]
139-
)).to eq(false)
116+
resource = { diff_type: '+', type: 'File', title: '/tmp/foo-module' }
117+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(false)
140118
end
141119
end
142120

@@ -160,31 +138,23 @@
160138
end
161139

162140
it 'should contain resource from environments/foo site.pp' do
163-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
164-
@result.diffs,
165-
['+', "File\f/tmp/environment-foo-site"]
166-
)).to eq(true)
141+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-foo-site' }
142+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
167143
end
168144

169145
it 'should not contain resource from environments/foo modules/foo' do
170-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
171-
@result.diffs,
172-
['+', "File\f/tmp/environment-foo-module"]
173-
)).to eq(false)
146+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-foo-module' }
147+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(false)
174148
end
175149

176150
it 'should not contain resource from environments/production' do
177-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
178-
@result.diffs,
179-
['+', "File\f/tmp/environment-production-site"]
180-
)).to eq(false)
151+
resource = { diff_type: '+', type: 'File', title: '/tmp/environment-production-site' }
152+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(false)
181153
end
182154

183155
it 'should contain resource from main modules/foo' do
184-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(
185-
@result.diffs,
186-
['+', "File\f/tmp/foo-module"]
187-
)).to eq(true)
156+
resource = { diff_type: '+', type: 'File', title: '/tmp/foo-module' }
157+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
188158
end
189159
end
190160
end

spec/octocatalog-diff/integration/bootstrap_script_spec.rb

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -92,18 +92,8 @@
9292
end
9393

9494
it 'should contain the added resource' do
95-
answer = [
96-
'+',
97-
"File\f/tmp/foo",
98-
{
99-
'type' => 'File',
100-
'title' => '/tmp/foo',
101-
'tags' => %w(class file test),
102-
'exported' => false,
103-
'parameters' => { 'content' => "Test 123\n" }
104-
}
105-
]
106-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
95+
resource = { diff_type: '+', type: 'File', title: '/tmp/foo' }
96+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
10797
end
10898

10999
it 'should print debugging output from bootstrap script' do
@@ -139,18 +129,8 @@
139129
end
140130

141131
it 'should contain the added resource' do
142-
answer = [
143-
'+',
144-
"File\f/tmp/foo",
145-
{
146-
'type' => 'File',
147-
'title' => '/tmp/foo',
148-
'tags' => %w(class file test),
149-
'exported' => false,
150-
'parameters' => { 'content' => "Test 123\n" }
151-
}
152-
]
153-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
132+
resource = { diff_type: '+', type: 'File', title: '/tmp/foo' }
133+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
154134
end
155135

156136
it 'should not print debugging output from bootstrap script' do

spec/octocatalog-diff/integration/convert_file_resources_spec.rb

Lines changed: 72 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,39 @@
2727
end
2828

2929
it 'should contain /tmp/foo1' do
30-
answer = ['~', "File\f/tmp/foo1\fparameters\fcontent", "content of foo-old\n", "content of foo-new\n"]
31-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
30+
resource = {
31+
diff_type: '~',
32+
type: 'File',
33+
title: '/tmp/foo1',
34+
structure: %w(parameters content),
35+
old_value: "content of foo-old\n",
36+
new_value: "content of foo-new\n"
37+
}
38+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
3239
end
3340

3441
it 'should contain /tmp/binary1' do
35-
answer = [
36-
'~',
37-
"File\f/tmp/binary1\fparameters\fcontent",
38-
'{md5}e0897d525d5d600a037622b62fc99a4c',
39-
'{md5}97918b387001eb04ae7cb20b13e07f43'
40-
]
41-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
42+
resource = {
43+
diff_type: '~',
44+
type: 'File',
45+
title: '/tmp/binary1',
46+
structure: %w(parameters content),
47+
old_value: '{md5}e0897d525d5d600a037622b62fc99a4c',
48+
new_value: '{md5}97918b387001eb04ae7cb20b13e07f43'
49+
}
50+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
4251
end
4352

4453
it 'should contain /tmp/bar2' do
45-
answer = ['~', "File\f/tmp/bar2\fparameters\fcontent", "content of bar\n", "content of new-bar\n"]
46-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
54+
resource = {
55+
diff_type: '~',
56+
type: 'File',
57+
title: '/tmp/bar2',
58+
structure: %w(parameters content),
59+
old_value: "content of bar\n",
60+
new_value: "content of new-bar\n"
61+
}
62+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
4763
end
4864
end
4965

@@ -71,38 +87,63 @@
7187
end
7288

7389
it 'should contain /tmp/binary1' do
74-
answer = [
75-
'~',
76-
"File\f/tmp/binary1\fparameters\fsource",
77-
'puppet:///modules/test/binary-old',
78-
'puppet:///modules/test/binary-new'
79-
]
80-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
90+
resource = {
91+
diff_type: '~',
92+
type: 'File',
93+
title: '/tmp/binary1',
94+
structure: %w(parameters source),
95+
old_value: 'puppet:///modules/test/binary-old',
96+
new_value: 'puppet:///modules/test/binary-new'
97+
}
98+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
8199
end
82100

83101
it 'should contain /tmp/binary3' do
84-
answer = [
85-
'~',
86-
"File\f/tmp/binary3\fparameters\fsource",
87-
'puppet:///modules/test/binary-old',
88-
'puppet:///modules/test/binary-old2'
89-
]
90-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
102+
resource = {
103+
diff_type: '~',
104+
type: 'File',
105+
title: '/tmp/binary3',
106+
structure: %w(parameters source),
107+
old_value: 'puppet:///modules/test/binary-old',
108+
new_value: 'puppet:///modules/test/binary-old2'
109+
}
110+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
91111
end
92112

93113
it 'should contain /tmp/foo1' do
94-
answer = ['~', "File\f/tmp/foo1\fparameters\fsource", 'puppet:///modules/test/foo-old', 'puppet:///modules/test/foo-new']
95-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
114+
resource = {
115+
diff_type: '~',
116+
type: 'File',
117+
title: '/tmp/foo1',
118+
structure: %w(parameters source),
119+
old_value: 'puppet:///modules/test/foo-old',
120+
new_value: 'puppet:///modules/test/foo-new'
121+
}
122+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
96123
end
97124

98125
it 'should contain /tmp/bar content' do
99-
answer = ['!', "File\f/tmp/bar\fparameters\fcontent", nil, "content of bar\n"]
100-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
126+
resource = {
127+
diff_type: '!',
128+
type: 'File',
129+
title: '/tmp/bar',
130+
structure: %w(parameters content),
131+
old_value: nil,
132+
new_value: "content of bar\n"
133+
}
134+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
101135
end
102136

103137
it 'should contain /tmp/bar source' do
104-
answer = ['!', "File\f/tmp/bar\fparameters\fsource", 'puppet:///modules/test/bar-old', nil]
105-
expect(OctocatalogDiff::Spec.array_contains_partial_array?(@result[:diffs], answer)).to eq(true)
138+
resource = {
139+
diff_type: '!',
140+
type: 'File',
141+
title: '/tmp/bar',
142+
structure: %w(parameters source),
143+
old_value: 'puppet:///modules/test/bar-old',
144+
new_value: nil
145+
}
146+
expect(OctocatalogDiff::Spec.diff_match?(@result[:diffs], resource)).to eq(true)
106147
end
107148
end
108149

0 commit comments

Comments
 (0)