yggdrasil 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/yggdrasil.rb +12 -15
- data/lib/yggdrasil/version.rb +1 -1
- data/lib/yggdrasil_server/results.rb +4 -0
- data/spec/check_spec.rb +69 -0
- data/spec/server_results_spec.rb +13 -0
- metadata +23 -11
- checksums.yaml +0 -7
data/lib/yggdrasil.rb
CHANGED
@@ -253,31 +253,28 @@ class Yggdrasil
|
|
253
253
|
|
254
254
|
def exec_checker
|
255
255
|
# execute checker
|
256
|
+
add_files = Array.new
|
256
257
|
`rm -rf #{@checker_result_dir}`
|
257
|
-
|
258
|
+
FileUtils.mkdir_p @checker_result_dir
|
258
259
|
if File.exist?(@checker_dir)
|
259
260
|
Find.find(@checker_dir) do |file|
|
260
261
|
if File.file?(file) && File.executable?(file)
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
262
|
+
next unless file =~ %r{^#{@checker_dir}(.*)$}
|
263
|
+
target = $1
|
264
|
+
next if target =~ %r{/\.} # except dot file
|
265
|
+
|
266
|
+
FileUtils.mkdir_p File.dirname("#{@checker_result_dir}#{target}")
|
267
|
+
system3("#{file} > #{@checker_result_dir}#{target}", false)
|
268
|
+
add_files << file
|
269
|
+
add_files << "#{@checker_result_dir}#{target}"
|
265
270
|
end
|
266
271
|
end
|
267
272
|
end
|
268
273
|
|
269
|
-
|
270
|
-
result_files = Array.new
|
271
|
-
Find.find(@checker_dir) do |f|
|
272
|
-
result_files << f if File.file?(f) && File.executable?(f)
|
273
|
-
end
|
274
|
-
Find.find(@checker_result_dir) do |f|
|
275
|
-
result_files << f if File.file?(f)
|
276
|
-
end
|
277
|
-
if result_files.size != 0
|
274
|
+
if add_files.size != 0
|
278
275
|
stdout = $stdout
|
279
276
|
$stdout = StringIO.new
|
280
|
-
self.class.new.add
|
277
|
+
self.class.new.add add_files
|
281
278
|
$stdout = stdout
|
282
279
|
end
|
283
280
|
end
|
data/lib/yggdrasil/version.rb
CHANGED
@@ -26,6 +26,10 @@ class YggdrasilServer
|
|
26
26
|
end
|
27
27
|
|
28
28
|
files = Dir.entries(@results_dir)
|
29
|
+
files.sort! do |a, b|
|
30
|
+
File.stat("#{@results_dir}/#{b}").mtime.strftime('%Y%m%d%H%M%S') <=>
|
31
|
+
File.stat("#{@results_dir}/#{a}").mtime.strftime('%Y%m%d%H%M%S')
|
32
|
+
end
|
29
33
|
alert = false
|
30
34
|
files.each do |file|
|
31
35
|
next if /^\./ =~ file
|
data/spec/check_spec.rb
CHANGED
@@ -130,6 +130,50 @@ Index: tmp/yggdrasil-test/.yggdrasil/checker_result/hoge
|
|
130
130
|
@@ -0,0 +1 @@
|
131
131
|
+hoge
|
132
132
|
|
133
|
+
Yggdrasil check: NG!!!
|
134
|
+
EOS
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'should not fail yggdrasil by checker failure' do
|
138
|
+
puts "\n---- should not fail yggdrasil by checker failure"
|
139
|
+
`echo 'hoge hoge' > /tmp/yggdrasil-test/.yggdrasil/checker/hoge`
|
140
|
+
`chmod +x /tmp/yggdrasil-test/.yggdrasil/checker/hoge`
|
141
|
+
|
142
|
+
cmd = %w{check --username hoge --password foo --non-interactive}
|
143
|
+
out = catch_out {Yggdrasil.command(cmd, "Y\n")}
|
144
|
+
|
145
|
+
`echo 'echo hoge' > /tmp/yggdrasil-test/.yggdrasil/checker/hoge`
|
146
|
+
`chmod +x /tmp/yggdrasil-test/.yggdrasil/checker/hoge`
|
147
|
+
|
148
|
+
out.gsub! /[ ]+/, ' '
|
149
|
+
out.should == <<"EOS"
|
150
|
+
9 files checked.
|
151
|
+
A 0 tmp/yggdrasil-test/.yggdrasil
|
152
|
+
A 0 tmp/yggdrasil-test/.yggdrasil/checker
|
153
|
+
A 0 tmp/yggdrasil-test/.yggdrasil/checker/hoge
|
154
|
+
A 0 tmp/yggdrasil-test/.yggdrasil/checker_result
|
155
|
+
A 0 tmp/yggdrasil-test/.yggdrasil/checker_result/hoge
|
156
|
+
|
157
|
+
Index: tmp/yggdrasil-test/.yggdrasil/checker/hoge
|
158
|
+
===================================================================
|
159
|
+
--- tmp/yggdrasil-test/.yggdrasil/checker/hoge (revision 0)
|
160
|
+
+++ tmp/yggdrasil-test/.yggdrasil/checker/hoge (revision 0)
|
161
|
+
@@ -0,0 +1 @@
|
162
|
+
+hoge hoge
|
163
|
+
|
164
|
+
Property changes on: tmp/yggdrasil-test/.yggdrasil/checker/hoge
|
165
|
+
___________________________________________________________________
|
166
|
+
Added: svn:executable
|
167
|
+
+ *
|
168
|
+
|
169
|
+
|
170
|
+
Index: tmp/yggdrasil-test/.yggdrasil/checker_result/hoge
|
171
|
+
===================================================================
|
172
|
+
--- tmp/yggdrasil-test/.yggdrasil/checker_result/hoge (revision 0)
|
173
|
+
+++ tmp/yggdrasil-test/.yggdrasil/checker_result/hoge (revision 0)
|
174
|
+
@@ -0,0 +1 @@
|
175
|
+
+/tmp/yggdrasil-test/.yggdrasil/checker/hoge: line 1: hoge: command not found
|
176
|
+
|
133
177
|
Yggdrasil check: NG!!!
|
134
178
|
EOS
|
135
179
|
end
|
@@ -298,6 +342,8 @@ config: hoge.hoge.com
|
|
298
342
|
server: svn://localhost/tmp/yggdrasil-test/svn-repo/servers/yggdrasil-dev.kusu.myhome.cx
|
299
343
|
|
300
344
|
EOS
|
345
|
+
`grep -v repo=hoge.hoge.com < /tmp/yggdrasil-test/.yggdrasil/config > /tmp/yggdrasil-test/.yggdrasil/config_`
|
346
|
+
`mv /tmp/yggdrasil-test/.yggdrasil/config_ /tmp/yggdrasil-test/.yggdrasil/config`
|
301
347
|
end
|
302
348
|
|
303
349
|
it 'should recover delete flag' do
|
@@ -326,6 +372,29 @@ EOS
|
|
326
372
|
out = catch_out {Yggdrasil.command(cmd, "q\n")}
|
327
373
|
out.should == <<"EOS"
|
328
374
|
|
375
|
+
EOS
|
376
|
+
end
|
377
|
+
|
378
|
+
it 'should ignore .(dot) files' do
|
379
|
+
puts "\n---- should ignore .(dot) files"
|
380
|
+
|
381
|
+
`echo 'echo hoge' > /tmp/yggdrasil-test/.yggdrasil/checker/.aaa`
|
382
|
+
`chmod +x /tmp/yggdrasil-test/.yggdrasil/checker/.aaa`
|
383
|
+
|
384
|
+
`mkdir -p /tmp/yggdrasil-test/.yggdrasil/checker/.bbb`
|
385
|
+
`echo 'echo hoge' > /tmp/yggdrasil-test/.yggdrasil/checker/.bbb/hoge`
|
386
|
+
`chmod +x /tmp/yggdrasil-test/.yggdrasil/checker/.bbb/hoge`
|
387
|
+
|
388
|
+
`mkdir -p /tmp/yggdrasil-test/.yggdrasil/checker/ccc`
|
389
|
+
`echo 'echo ccc' > /tmp/yggdrasil-test/.yggdrasil/checker/ccc/.ccc`
|
390
|
+
`chmod +x /tmp/yggdrasil-test/.yggdrasil/checker/ccc/.ccc`
|
391
|
+
|
392
|
+
cmd = %w{check --username hoge --password foo --non-interactive}
|
393
|
+
out = catch_out {Yggdrasil.command cmd}
|
394
|
+
|
395
|
+
out.should == <<"EOS"
|
396
|
+
3 files checked.
|
397
|
+
Yggdrasil check: OK.
|
329
398
|
EOS
|
330
399
|
end
|
331
400
|
|
data/spec/server_results_spec.rb
CHANGED
@@ -135,6 +135,19 @@ EOS
|
|
135
135
|
EOS
|
136
136
|
end
|
137
137
|
|
138
|
+
it 'should delete older result file' do
|
139
|
+
puts '---- should delete older result file'
|
140
|
+
|
141
|
+
`echo '' > /tmp/yggdrasil-test/.yggdrasil/results/#{Socket.gethostname}_192.168.1.1`
|
142
|
+
sleep 1
|
143
|
+
`echo '' > /tmp/yggdrasil-test/.yggdrasil/results/#{Socket.gethostname}_127.0.0.1`
|
144
|
+
sleep 1
|
145
|
+
|
146
|
+
out = catch_out do
|
147
|
+
YggdrasilServer.command %w{results --expire 30 --debug}
|
148
|
+
end
|
149
|
+
out.should == "Notice: delete result file (#{Socket.gethostname}_192.168.1.1)\n\n"
|
150
|
+
end
|
138
151
|
|
139
152
|
after(:all) do
|
140
153
|
sleep 1
|
metadata
CHANGED
@@ -1,41 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yggdrasil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Tomohisa Kusukawa
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2014-09-23 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rspec
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0'
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: simplecov
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- - '>='
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '0'
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- - '>='
|
43
|
+
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '0'
|
41
46
|
description: Yggdrasil is a subversion wrapper to manage configuration files.
|
@@ -97,26 +102,33 @@ files:
|
|
97
102
|
- yggdrasil.gemspec
|
98
103
|
homepage: https://github.com/tkusukawa/yggdrasil
|
99
104
|
licenses: []
|
100
|
-
metadata: {}
|
101
105
|
post_install_message:
|
102
106
|
rdoc_options: []
|
103
107
|
require_paths:
|
104
108
|
- lib
|
105
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
106
111
|
requirements:
|
107
|
-
- - '>='
|
112
|
+
- - ! '>='
|
108
113
|
- !ruby/object:Gem::Version
|
109
114
|
version: '0'
|
115
|
+
segments:
|
116
|
+
- 0
|
117
|
+
hash: -3000571352953116803
|
110
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
111
120
|
requirements:
|
112
|
-
- - '>='
|
121
|
+
- - ! '>='
|
113
122
|
- !ruby/object:Gem::Version
|
114
123
|
version: '0'
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
hash: -3000571352953116803
|
115
127
|
requirements: []
|
116
128
|
rubyforge_project:
|
117
|
-
rubygems_version:
|
129
|
+
rubygems_version: 1.8.25
|
118
130
|
signing_key:
|
119
|
-
specification_version:
|
131
|
+
specification_version: 3
|
120
132
|
summary: Type "ygg help" for usage.
|
121
133
|
test_files:
|
122
134
|
- spec/add_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: d0a852b76b256c47b03cb8831f46f042455143ff
|
4
|
-
data.tar.gz: 2e7a725be79c156d187a5a691c17bdbcc6eafd8c
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 7b1b14ec6ca4298b9d9abe9cc6983b0be6fd5f012dc233c9ee76f8a1dcedad91956676a91af60e82323cf5fbf3db308545fc43e5772e977e6d3cbba7fe6d7fae
|
7
|
-
data.tar.gz: 06a39e94184bd6d53513e6897ae45ab05b2111c3c97057d244ebdeac27e18d3d3088c7d9230903f73217618e56f07cc3ad500448afa1776b939cfbef1acb1a9e
|