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.
@@ -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