yggdrasil 0.1.0 → 0.1.1
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.
- 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
|