yggdrasil 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- Dir.mkdir @checker_result_dir, 0755
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
- if file =~ %r{^#{@checker_dir}(.*)$}
262
- file_body = $1
263
- system3("#{file} > #{@checker_result_dir}#{file_body}")
264
- end
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
- # add checker script and checker result
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 result_files
277
+ self.class.new.add add_files
281
278
  $stdout = stdout
282
279
  end
283
280
  end
@@ -1,5 +1,5 @@
1
1
  class Yggdrasil
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
 
4
4
 
5
5
  def version
@@ -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
@@ -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
 
@@ -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.0
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: 2013-12-07 00:00:00.000000000 Z
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: 2.1.11
129
+ rubygems_version: 1.8.25
118
130
  signing_key:
119
- specification_version: 4
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