rbatch 1.13.0 → 1.13.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +0 -6
- data/lib/rbatch/cmd.rb +18 -18
- data/lib/rbatch/version.rb +1 -1
- data/lib/rbatch.rb +36 -54
- data/spec/cmd_test.spec +127 -0
- data/spec/config_test.spec +48 -0
- data/spec/log_test.spec +430 -0
- data/spec/rbatch_test.spec +25 -0
- data/test/cases/test_cmd.rb +2 -0
- data/test/cases/test_log.rb +13 -1
- metadata +10 -2
data/Rakefile
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
require 'rake/rdoctask'
|
3
2
|
|
4
3
|
desc "Test lib/ by using test/cases/test_*.rb"
|
5
4
|
task :test do
|
@@ -28,11 +27,6 @@ task :test do
|
|
28
27
|
end
|
29
28
|
end
|
30
29
|
|
31
|
-
Rake::RDocTask.new do |rd|
|
32
|
-
rd.rdoc_dir = 'rdocs'
|
33
|
-
rd.rdoc_files = FileList["lib/**/*.rb"]
|
34
|
-
rd.options << '-charset=UTF-8 '
|
35
|
-
end
|
36
30
|
|
37
31
|
desc "Test, Make RDoc, Release"
|
38
32
|
task :all => [:test, :rdoc, :release]
|
data/lib/rbatch/cmd.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'tempfile'
|
3
|
+
require 'tmpdir'
|
3
4
|
|
4
5
|
module RBatch
|
5
6
|
|
@@ -8,26 +9,25 @@ module RBatch
|
|
8
9
|
#This module is a wrapper of Kernel#spawn.
|
9
10
|
#
|
10
11
|
# * Arguments(cmd_params) are inputed to Kernel#spawn directly and run command.
|
11
|
-
# * Command's stdout and stderr is written to tmp file.
|
12
|
-
# * If Platform is "mswin" or "mingw" , then temp directory is ENV["TEMP"]
|
13
|
-
# * If Platform is "linux" or "cygwin" , then temp directory is "/tmp/"
|
14
12
|
# * Return an object of RBatch::CmdResult which includes stdout, stderr, and exit status.
|
15
13
|
#
|
16
14
|
# ==== Sample 1
|
17
15
|
# require 'rbatch'
|
18
|
-
#
|
19
|
-
#
|
20
|
-
# p r.stdout
|
16
|
+
# result = RBatch::cmd("ls")
|
17
|
+
# p result.stdout
|
21
18
|
# => "fileA\nfileB\n"
|
22
19
|
#
|
23
|
-
# ==== Sample 2 (
|
24
|
-
#
|
25
|
-
#
|
20
|
+
# ==== Sample 2 (use option)
|
21
|
+
# require 'rbatch'
|
22
|
+
# result = RBatch::cmd("ls",{:timeout => 1})
|
23
|
+
# p result.stdout
|
24
|
+
# => "fileA\nfileB\n"
|
26
25
|
#
|
27
|
-
# ==== Sample 3 (
|
26
|
+
# ==== Sample 3 (use instance)
|
28
27
|
# require 'rbatch'
|
29
|
-
#
|
30
|
-
#
|
28
|
+
# cmd = RBatch::Cmd.new("ls")
|
29
|
+
# result = cmd.run
|
30
|
+
# p result.stdout
|
31
31
|
# => "fileA\nfileB\n"
|
32
32
|
#
|
33
33
|
class Cmd
|
@@ -69,16 +69,16 @@ module RBatch
|
|
69
69
|
# ==== Return
|
70
70
|
# instance of RBatch::CmdResult
|
71
71
|
def run()
|
72
|
-
stdout_file = Tempfile::new("rbatch_tmpout",
|
73
|
-
stderr_file = Tempfile::new("rbatch_tmperr",
|
72
|
+
stdout_file = Tempfile::new("rbatch_tmpout",Dir.tmpdir)
|
73
|
+
stderr_file = Tempfile::new("rbatch_tmperr",Dir.tmpdir)
|
74
74
|
pid = spawn(@cmd_str,:out => [stdout_file,"w"],:err => [stderr_file,"w"])
|
75
75
|
if @opt[:timeout] != 0
|
76
|
-
|
77
|
-
|
76
|
+
begin
|
77
|
+
timeout(@opt[:timeout]) do
|
78
78
|
status = Process.waitpid2(pid)[1] >> 8
|
79
|
-
rescue Timeout::Error => e
|
80
|
-
raise(CmdException,"Command timeout (over " + @opt[:timeout] + " sec)" )
|
81
79
|
end
|
80
|
+
rescue Timeout::Error => e
|
81
|
+
raise(CmdException,"Command timeout. Runtime is over " + @opt[:timeout].to_s + " sec. Command is " + @cmd_str )
|
82
82
|
end
|
83
83
|
else
|
84
84
|
status = Process.waitpid2(pid)[1] >> 8
|
data/lib/rbatch/version.rb
CHANGED
data/lib/rbatch.rb
CHANGED
@@ -1,88 +1,70 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
|
2
2
|
require 'digest'
|
3
|
+
require 'yaml'
|
3
4
|
module RBatch
|
4
|
-
@@
|
5
|
-
@@
|
5
|
+
@@opt = {}
|
6
|
+
@@rbatch_config = nil
|
6
7
|
module_function
|
7
|
-
def program_name
|
8
|
-
def
|
9
|
-
def home_dir=(d)
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
-
def
|
8
|
+
def program_name ; @@opt[:program_name] ; end
|
9
|
+
def home_dir ; @@opt[:home_dir] ; end
|
10
|
+
def home_dir=(d) ; @@opt[:home_dir]=d ; end
|
11
|
+
def hostname ; @@opt[:hostname] ; end
|
12
|
+
def rbatch_config ; @@rbatch_config ; end
|
13
|
+
def opt ; @@opt ; end
|
14
|
+
def init
|
15
|
+
@@opt[:program_name] = $PROGRAM_NAME
|
16
|
+
@@opt[:home_dir] = ENV["RB_HOME"] ? ENV["RB_HOME"] : File.join(File.dirname(@@opt[:program_name]) , "..")
|
14
17
|
case RUBY_PLATFORM
|
15
18
|
when /mswin|mingw/
|
16
|
-
|
19
|
+
@@opt[:hostname] = ENV["COMPUTERNAME"] ? ENV["COMPUTERNAME"] : "unknownhost"
|
17
20
|
when /cygwin|linux/
|
18
|
-
|
21
|
+
@@opt[:hostname] = ENV["HOSTNAME"] ? ENV["HOSTNAME"] : "unknownhost"
|
19
22
|
else
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
# tmp dir
|
24
|
-
def tmp_dir
|
25
|
-
case RUBY_PLATFORM
|
26
|
-
when /mswin|mingw/
|
27
|
-
if ENV["TEMP"].nil?
|
28
|
-
raise "Cannot use temporary directory, because ENV[\"TEMP\"] is not defined"
|
29
|
-
else
|
30
|
-
return ENV["TEMP"]
|
31
|
-
end
|
32
|
-
when /cygwin|linux/
|
33
|
-
return ENV["TMPDIR"] ? ENV["TMPDIR"] : "/tmp"
|
34
|
-
else
|
35
|
-
if ENV["TMPDIR"].nil? && ENV["TEMP"].nil?
|
36
|
-
raise "Unknown RUBY_PRATFORM : " + RUBY_PLATFORM
|
37
|
-
else
|
38
|
-
return ENV["TMPDIR"] || ENV["TEMP"]
|
39
|
-
end
|
23
|
+
@@opt[:hostname] = "unknownhost"
|
40
24
|
end
|
25
|
+
load_rbatch_config
|
41
26
|
end
|
42
27
|
def rbatch_config_path
|
43
|
-
File.join(@@home_dir,"conf","rbatch.yaml")
|
28
|
+
File.join(@@opt[:home_dir],"conf","rbatch.yaml")
|
29
|
+
end
|
30
|
+
def config_dir
|
31
|
+
File.join(RBatch.home_dir,"conf")
|
44
32
|
end
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
33
|
+
def log_dir
|
34
|
+
File.join(RBatch.home_dir,"log")
|
35
|
+
end
|
36
|
+
def load_rbatch_config
|
37
|
+
if File.exist?(rbatch_config_path)
|
38
|
+
@@rbatch_config = YAML::load_file(rbatch_config_path)
|
39
|
+
if @@rbatch_config == false
|
40
|
+
@@rbatch_config = nil
|
53
41
|
end
|
54
42
|
else
|
55
|
-
|
43
|
+
@@rbatch_config = nil
|
56
44
|
end
|
57
45
|
end
|
58
46
|
def double_run_check
|
59
47
|
# double run check
|
60
|
-
if (
|
61
|
-
lock_file="rbatch_lock_" + Digest::MD5.hexdigest(@@program_name)
|
62
|
-
if Dir.exists?
|
63
|
-
Dir::foreach(
|
48
|
+
if ( @@rbatch_config != nil && @@rbatch_config["forbid_double_run"] )
|
49
|
+
lock_file="rbatch_lock_" + Digest::MD5.hexdigest(@@opt[:program_name])
|
50
|
+
if Dir.exists? @@opt[:tmp_dir]
|
51
|
+
Dir::foreach(@@opt[:tmp_dir]) do |f|
|
64
52
|
if (Regexp.new(lock_file) =~ f)
|
65
|
-
raise RBatchException, "Script double run is forbid about \"#{
|
53
|
+
raise RBatchException, "Script double run is forbid about \"#{@@opt[:program_name]}\""
|
66
54
|
end
|
67
55
|
end
|
68
56
|
end
|
69
57
|
# make lockfile
|
70
|
-
Tempfile::new(lock_file
|
58
|
+
Tempfile::new(lock_file,@@opt[:tmp_dir])
|
71
59
|
end
|
72
60
|
end
|
73
|
-
|
74
|
-
def double_run_lock_file ; ; end
|
75
61
|
end
|
76
62
|
|
77
63
|
# RBatch Exception
|
78
64
|
class RBatchException < Exception ; end
|
79
65
|
|
80
66
|
# main
|
81
|
-
|
82
|
-
RBatch::home_dir = ENV["RB_HOME"]
|
83
|
-
else
|
84
|
-
RBatch::home_dir = File.join(File.dirname(RBatch.program_name) , "..")
|
85
|
-
end
|
67
|
+
RBatch::init
|
86
68
|
|
87
69
|
require 'rbatch/log'
|
88
70
|
require 'rbatch/config'
|
data/spec/cmd_test.spec
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
ENV["RB_HOME"]=Dir.tmpdir
|
3
|
+
|
4
|
+
require 'rbatch'
|
5
|
+
|
6
|
+
describe RBatch::Cmd do
|
7
|
+
|
8
|
+
it "run command which status is 0" do
|
9
|
+
result = RBatch::cmd "ruby -e 'STDOUT.print 1; STDERR.print 2; exit 0;'"
|
10
|
+
expect(result.stdout.chomp).to eq "1"
|
11
|
+
expect(result.stderr.chomp).to eq "2"
|
12
|
+
expect(result.status).to eq 0
|
13
|
+
end
|
14
|
+
it "run command which status is 1" do
|
15
|
+
result = RBatch::cmd "ruby -e 'STDOUT.print 1; STDERR.print 2; exit 1;'"
|
16
|
+
expect(result.stdout.chomp).to eq "1"
|
17
|
+
expect(result.stderr.chomp).to eq "2"
|
18
|
+
expect(result.status).to eq 1
|
19
|
+
end
|
20
|
+
it "raise error when command does not exist" do
|
21
|
+
expect {
|
22
|
+
RBatch::cmd "not_exist_command"
|
23
|
+
}.to raise_error(Errno::ENOENT)
|
24
|
+
end
|
25
|
+
it "run command which stdout size is greater than 65534byte" do
|
26
|
+
result = RBatch::cmd "ruby -e '100000.times{print 0}'"
|
27
|
+
expect(result.stdout.chomp.size).to eq 100000
|
28
|
+
expect(result.stderr.chomp).to eq ""
|
29
|
+
expect(result.status).to eq 0
|
30
|
+
end
|
31
|
+
it "run command which stdout size is greater than 65534bytes with status 1" do
|
32
|
+
result = RBatch::cmd "ruby -e '100000.times{print 0}; exit 1'"
|
33
|
+
expect(result.stdout.chomp.size).to eq 100000
|
34
|
+
expect(result.stderr.chomp).to eq ""
|
35
|
+
expect(result.status).to eq 1
|
36
|
+
end
|
37
|
+
it "run command which status is grater than 256" do
|
38
|
+
result = RBatch::cmd "ruby -e 'STDOUT.print 1; STDERR.print 2; exit 300;'"
|
39
|
+
expect(result.stdout.chomp).to eq "1"
|
40
|
+
expect(result.stderr.chomp).to eq "2"
|
41
|
+
case RUBY_PLATFORM
|
42
|
+
when /mswin|mingw/
|
43
|
+
expect(result.status).to eq 300
|
44
|
+
when /cygwin|linux/
|
45
|
+
# windos platform can not handle result code as modular 256
|
46
|
+
expect(result.status).to eq 44
|
47
|
+
end
|
48
|
+
end
|
49
|
+
it "run to_h method" do
|
50
|
+
result = RBatch::cmd "ruby -e 'STDOUT.print 1; STDERR.print 2; exit 1;'"
|
51
|
+
expect(result.to_h[:stdout]).to eq "1"
|
52
|
+
expect(result.to_h[:stderr]).to eq "2"
|
53
|
+
expect(result.to_h[:status]).to eq 1
|
54
|
+
end
|
55
|
+
it "run to_s method" do
|
56
|
+
result = RBatch::cmd "ruby -e 'STDOUT.print 1; STDERR.print 2; exit 1;'"
|
57
|
+
expect(result.to_s).to eq "{:cmd_str=>\"ruby -e 'STDOUT.print 1; STDERR.print 2; exit 1;'\", :stdout=>\"1\", :stderr=>\"2\", :status=>1}"
|
58
|
+
end
|
59
|
+
it "raise error when command is nil" do
|
60
|
+
expect {
|
61
|
+
RBatch::Cmd.new(nil)
|
62
|
+
}.to raise_error(RBatch::CmdException)
|
63
|
+
end
|
64
|
+
it "run RBatch::Cmd.new method" do
|
65
|
+
result = RBatch::Cmd.new("ruby -e 'STDOUT.print 1; STDERR.print 2; exit 0;'").run
|
66
|
+
expect(result.stdout.chomp).to eq "1"
|
67
|
+
expect(result.stderr.chomp).to eq "2"
|
68
|
+
expect(result.status).to eq 0
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
describe "option by argument" do
|
73
|
+
describe "timeout" do
|
74
|
+
it "run successfuly when command is short time" do
|
75
|
+
opt = {:timeout => 2}
|
76
|
+
expect {
|
77
|
+
RBatch::cmd("ruby -e 'sleep 1'",opt)
|
78
|
+
}.to_not raise_error
|
79
|
+
end
|
80
|
+
it "raise timeout error when command is long time" do
|
81
|
+
opt = {:timeout => 1}
|
82
|
+
expect {
|
83
|
+
RBatch::cmd("ruby -e 'sleep 2'",opt)
|
84
|
+
}.to raise_error(RBatch::CmdException)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "option by argument" do
|
90
|
+
describe "timeout" do
|
91
|
+
it "run successfuly when command is short time" do
|
92
|
+
opt = {:timeout => 2}
|
93
|
+
expect {
|
94
|
+
RBatch::cmd("ruby -e 'sleep 1'",opt)
|
95
|
+
}.to_not raise_error
|
96
|
+
end
|
97
|
+
it "raise timeout error when command is long time" do
|
98
|
+
opt = {:timeout => 1}
|
99
|
+
expect {
|
100
|
+
RBatch::cmd("ruby -e 'sleep 2'",opt)
|
101
|
+
}.to raise_error(RBatch::CmdException)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "option by config" do
|
107
|
+
before :all do
|
108
|
+
@config_dir=File.join(RBatch.home_dir,"conf")
|
109
|
+
@config_file = File.join(@config_dir , "rbatch.yaml")
|
110
|
+
Dir::mkdir @config_dir if ! Dir.exists? @config_dir
|
111
|
+
end
|
112
|
+
describe "raise" do
|
113
|
+
before :all do
|
114
|
+
open( @config_file , "w" ){|f| f.write("cmd_raise: true")}
|
115
|
+
RBatch.load_rbatch_config
|
116
|
+
end
|
117
|
+
it "raise error when command status is not 0" do
|
118
|
+
expect {
|
119
|
+
RBatch::cmd "ruby -e 'exit 1;'"
|
120
|
+
}.to raise_error(RBatch::CmdException)
|
121
|
+
end
|
122
|
+
after :each do
|
123
|
+
FileUtils.rm @config_file
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
ENV["RB_HOME"]=Dir.tmpdir
|
3
|
+
|
4
|
+
require 'rbatch'
|
5
|
+
|
6
|
+
describe RBatch::Config do
|
7
|
+
before :all do
|
8
|
+
@config_dir=RBatch.config_dir
|
9
|
+
@config_file = File.join(@config_dir , "rspec.yaml")
|
10
|
+
Dir::mkdir @config_dir if ! Dir.exists? @config_dir
|
11
|
+
end
|
12
|
+
|
13
|
+
before :each do
|
14
|
+
end
|
15
|
+
|
16
|
+
after :each do
|
17
|
+
FileUtils.rm @config_file if File.exists? @config_file
|
18
|
+
end
|
19
|
+
|
20
|
+
after :all do
|
21
|
+
end
|
22
|
+
|
23
|
+
it "read config" do
|
24
|
+
open( @config_file , "w" ){|f| f.write("key: value")}
|
25
|
+
expect(RBatch.config["key"]).to eq "value"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "raise error when config does not exist" do
|
29
|
+
expect {
|
30
|
+
RBatch.config
|
31
|
+
}.to raise_error(Errno::ENOENT)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "read config twice" do
|
35
|
+
open( @config_file , "w" ){|f| f.write("key: value")}
|
36
|
+
expect(RBatch.config["key"]).to eq "value"
|
37
|
+
expect(RBatch.config["key"]).to eq "value"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "raise error when read value which key does not exist" do
|
41
|
+
open( @config_file , "w" ){|f| f.write("key: value")}
|
42
|
+
expect {
|
43
|
+
RBatch.config["not_exist"]
|
44
|
+
}.to raise_error(RBatch::Config::Exception)
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
end
|
data/spec/log_test.spec
ADDED
@@ -0,0 +1,430 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
ENV["RB_HOME"]=Dir.tmpdir
|
3
|
+
|
4
|
+
require 'rbatch'
|
5
|
+
|
6
|
+
describe RBatch::Log do
|
7
|
+
|
8
|
+
before :all do
|
9
|
+
@dir = RBatch.log_dir
|
10
|
+
Dir::mkdir(@dir)if ! Dir.exists? @dir
|
11
|
+
end
|
12
|
+
|
13
|
+
before :each do
|
14
|
+
# set quiet option
|
15
|
+
confstr = "log_quiet: true\n"
|
16
|
+
open( RBatch.rbatch_config_path , "w" ){|f| f.write(confstr)}
|
17
|
+
RBatch.load_rbatch_config
|
18
|
+
end
|
19
|
+
|
20
|
+
after :each do
|
21
|
+
Dir::foreach(@dir) do |f|
|
22
|
+
File::delete(File.join(@dir , f)) if ! (/\.+$/ =~ f)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "is run" do
|
27
|
+
RBatch::Log.new do | log |
|
28
|
+
log.info("test_log")
|
29
|
+
end
|
30
|
+
Dir::foreach(@dir) do |f|
|
31
|
+
if ! (/\.+$/ =~ f)
|
32
|
+
File::open(File.join(@dir , f)) {|f|
|
33
|
+
expect(f.read).to match /test_log/
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
it "raise error when log dir does not exist" do
|
40
|
+
Dir::rmdir(@dir)
|
41
|
+
expect{
|
42
|
+
RBatch::Log.new {|log|}
|
43
|
+
}.to raise_error(Errno::ENOENT)
|
44
|
+
Dir::mkdir(@dir)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "run when log block is nested" do
|
48
|
+
RBatch::Log.new({:name => "name1" }) do | log |
|
49
|
+
log.info("name1")
|
50
|
+
RBatch::Log.new({:name => "name2" }) do | log |
|
51
|
+
log.info("name2")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
File::open(File.join(@dir,"name1")) {|f| expect(f.read).to match /name1/ }
|
55
|
+
File::open(File.join(@dir,"name2")) {|f| expect(f.read).to match /name2/ }
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "option by argument" do
|
59
|
+
it "change log name" do
|
60
|
+
RBatch::Log.new({:name => "name1.log" }) do | log |
|
61
|
+
log.info("hoge")
|
62
|
+
end
|
63
|
+
File::open(File.join(@dir , "name1.log")) {|f|
|
64
|
+
expect(f.read).to match /hoge/
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
68
|
+
it "change log name 2" do
|
69
|
+
RBatch::Log.new({:name => "<prog><date>name.log" }) do | log |
|
70
|
+
log.info("hoge")
|
71
|
+
end
|
72
|
+
File::open(File.join(@dir , "rspec" + Time.now.strftime("%Y%m%d") + "name.log")) {|f|
|
73
|
+
expect(f.read).to match /hoge/
|
74
|
+
}
|
75
|
+
end
|
76
|
+
|
77
|
+
it "change log name 3" do
|
78
|
+
RBatch::Log.new({:name => "<prog>-<date>-name.log" }) do | log |
|
79
|
+
log.info("hoge")
|
80
|
+
end
|
81
|
+
File::open(File.join(@dir , "rspec-" + Time.now.strftime("%Y%m%d") + "-name.log")) {|f|
|
82
|
+
expect(f.read).to match /hoge/
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
it "change log dir" do
|
87
|
+
@tmp = Dir.tmpdir
|
88
|
+
RBatch::Log.new({:name => "c.log", :dir=> @tmp }) do | log |
|
89
|
+
log.info("hoge")
|
90
|
+
end
|
91
|
+
File::open(File.join(@tmp , "c.log")) {|f|
|
92
|
+
expect(f.read).to match /hoge/
|
93
|
+
}
|
94
|
+
end
|
95
|
+
|
96
|
+
it "is append mode" do
|
97
|
+
RBatch::Log.new({:append => true, :name => "a.log" }) do | log |
|
98
|
+
log.info("line1")
|
99
|
+
end
|
100
|
+
RBatch::Log.new({:append => true, :name => "a.log" }) do | log |
|
101
|
+
log.info("line2")
|
102
|
+
end
|
103
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
104
|
+
str = f.read
|
105
|
+
expect(str).to match /line1/
|
106
|
+
expect(str).to match /line2/
|
107
|
+
}
|
108
|
+
end
|
109
|
+
|
110
|
+
it "is overwrite mode" do
|
111
|
+
RBatch::Log.new({:append => false, :name => "a.log" }) do | log |
|
112
|
+
log.info("line1")
|
113
|
+
end
|
114
|
+
RBatch::Log.new({:append => false, :name => "a.log" }) do | log |
|
115
|
+
log.info("line2")
|
116
|
+
end
|
117
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
118
|
+
str = f.read
|
119
|
+
expect(str).to_not match /line1/
|
120
|
+
expect(str).to match /line2/
|
121
|
+
}
|
122
|
+
end
|
123
|
+
|
124
|
+
it "is debug level" do
|
125
|
+
RBatch::Log.new({ :level => "debug",:name => "a.log" }) do | log |
|
126
|
+
log.debug("test_debug")
|
127
|
+
log.info("test_info")
|
128
|
+
log.warn("test_warn")
|
129
|
+
log.error("test_error")
|
130
|
+
log.fatal("test_fatal")
|
131
|
+
end
|
132
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
133
|
+
str = f.read
|
134
|
+
expect(str).to match /test_debug/
|
135
|
+
expect(str).to match /test_info/
|
136
|
+
expect(str).to match /test_warn/
|
137
|
+
expect(str).to match /test_error/
|
138
|
+
expect(str).to match /test_fatal/
|
139
|
+
}
|
140
|
+
end
|
141
|
+
|
142
|
+
it "is info level" do
|
143
|
+
RBatch::Log.new({ :level => "info",:name => "a.log" }) do | log |
|
144
|
+
log.debug("test_debug")
|
145
|
+
log.info("test_info")
|
146
|
+
log.warn("test_warn")
|
147
|
+
log.error("test_error")
|
148
|
+
log.fatal("test_fatal")
|
149
|
+
end
|
150
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
151
|
+
str = f.read
|
152
|
+
expect(str).to_not match /test_debug/
|
153
|
+
expect(str).to match /test_info/
|
154
|
+
expect(str).to match /test_warn/
|
155
|
+
expect(str).to match /test_error/
|
156
|
+
expect(str).to match /test_fatal/
|
157
|
+
}
|
158
|
+
end
|
159
|
+
|
160
|
+
it "is warn level" do
|
161
|
+
RBatch::Log.new({ :level => "warn",:name => "a.log" }) do | log |
|
162
|
+
log.debug("test_debug")
|
163
|
+
log.info("test_info")
|
164
|
+
log.warn("test_warn")
|
165
|
+
log.error("test_error")
|
166
|
+
log.fatal("test_fatal")
|
167
|
+
end
|
168
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
169
|
+
str = f.read
|
170
|
+
expect(str).to_not match /test_debug/
|
171
|
+
expect(str).to_not match /test_info/
|
172
|
+
expect(str).to match /test_warn/
|
173
|
+
expect(str).to match /test_error/
|
174
|
+
expect(str).to match /test_fatal/
|
175
|
+
}
|
176
|
+
end
|
177
|
+
|
178
|
+
it "is error level" do
|
179
|
+
RBatch::Log.new({ :level => "error",:name => "a.log" }) do | log |
|
180
|
+
log.debug("test_debug")
|
181
|
+
log.info("test_info")
|
182
|
+
log.warn("test_warn")
|
183
|
+
log.error("test_error")
|
184
|
+
log.fatal("test_fatal")
|
185
|
+
end
|
186
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
187
|
+
str = f.read
|
188
|
+
expect(str).to_not match /test_debug/
|
189
|
+
expect(str).to_not match /test_info/
|
190
|
+
expect(str).to_not match /test_warn/
|
191
|
+
expect(str).to match /test_error/
|
192
|
+
expect(str).to match /test_fatal/
|
193
|
+
}
|
194
|
+
end
|
195
|
+
|
196
|
+
it "is fatal level" do
|
197
|
+
RBatch::Log.new({ :level => "fatal",:name => "a.log" }) do | log |
|
198
|
+
log.debug("test_debug")
|
199
|
+
log.info("test_info")
|
200
|
+
log.warn("test_warn")
|
201
|
+
log.error("test_error")
|
202
|
+
log.fatal("test_fatal")
|
203
|
+
end
|
204
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
205
|
+
str = f.read
|
206
|
+
expect(str).to_not match /test_debug/
|
207
|
+
expect(str).to_not match /test_info/
|
208
|
+
expect(str).to_not match /test_warn/
|
209
|
+
expect(str).to_not match /test_error/
|
210
|
+
expect(str).to match /test_fatal/
|
211
|
+
}
|
212
|
+
end
|
213
|
+
|
214
|
+
it "is default level" do
|
215
|
+
RBatch::Log.new({ :name => "a.log" }) do | log |
|
216
|
+
log.debug("test_debug")
|
217
|
+
log.info("test_info")
|
218
|
+
log.warn("test_warn")
|
219
|
+
log.error("test_error")
|
220
|
+
log.fatal("test_fatal")
|
221
|
+
end
|
222
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
223
|
+
str = f.read
|
224
|
+
expect(str).to_not match /test_debug/
|
225
|
+
expect(str).to match /test_info/
|
226
|
+
expect(str).to match /test_warn/
|
227
|
+
expect(str).to match /test_error/
|
228
|
+
expect(str).to match /test_fatal/
|
229
|
+
}
|
230
|
+
end
|
231
|
+
|
232
|
+
it "delete old log which name include <date>" do
|
233
|
+
loglist = [*0..20].map do |day|
|
234
|
+
File.join(@dir , (Date.today - day).strftime("%Y%m%d") + "_test_delete.log")
|
235
|
+
end
|
236
|
+
FileUtils.touch(loglist)
|
237
|
+
log = RBatch::Log.new({ :name => "<date>_test_delete.log",:delete_old_log => true})
|
238
|
+
log.close
|
239
|
+
loglist[1..6].each do |filename|
|
240
|
+
expect(File.exists?(filename)).to be true
|
241
|
+
end
|
242
|
+
loglist[7..20].each do |filename|
|
243
|
+
expect(File.exists?(filename)).to be false
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
it "delete old log which name include <date> even if <date> position is changed" do
|
248
|
+
loglist = [*0..20].map do |day|
|
249
|
+
File.join(@dir , "235959-" + (Date.today - day).strftime("%Y%m%d") + "_test_delete.log")
|
250
|
+
end
|
251
|
+
FileUtils.touch(loglist)
|
252
|
+
log = RBatch::Log.new({ :name => "<time>-<date>_test_delete.log",:delete_old_log => true})
|
253
|
+
log.close
|
254
|
+
loglist[1..6].each do |filename|
|
255
|
+
expect(File.exists?(filename)).to be true
|
256
|
+
end
|
257
|
+
loglist[7..20].each do |filename|
|
258
|
+
expect(File.exists?(filename)).to be false
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
it "does not delete old log which name does not include <date>" do
|
263
|
+
log = RBatch::Log.new({ :name => "test_delete.log",:delete_old_log => true})
|
264
|
+
log.close
|
265
|
+
expect(File.exists?(File.join(@dir,"test_delete.log"))).to be true
|
266
|
+
end
|
267
|
+
|
268
|
+
|
269
|
+
end
|
270
|
+
|
271
|
+
describe "option by config" do
|
272
|
+
it "change log name" do
|
273
|
+
confstr = "log_name: name1.log"
|
274
|
+
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
275
|
+
RBatch.load_rbatch_config
|
276
|
+
RBatch::Log.new() do | log |
|
277
|
+
log.info("hoge")
|
278
|
+
end
|
279
|
+
File::open(File.join(@dir , "name1.log")) {|f|
|
280
|
+
expect(f.read).to match /hoge/
|
281
|
+
}
|
282
|
+
end
|
283
|
+
|
284
|
+
it "change log dir" do
|
285
|
+
@tmp = Dir.tmpdir
|
286
|
+
confstr = "log_name: c.log\nlog_dir: " + @tmp
|
287
|
+
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
288
|
+
RBatch.load_rbatch_config
|
289
|
+
RBatch::Log.new({:name => "c.log", :dir=> @tmp }) do | log |
|
290
|
+
log.info("hoge")
|
291
|
+
end
|
292
|
+
File::open(File.join(@tmp , "c.log")) {|f|
|
293
|
+
expect(f.read).to match /hoge/
|
294
|
+
}
|
295
|
+
end
|
296
|
+
|
297
|
+
it "is append mode" do
|
298
|
+
confstr = "log_name: a.log\nappend: true"
|
299
|
+
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
300
|
+
RBatch.load_rbatch_config
|
301
|
+
RBatch::Log.new() do | log |
|
302
|
+
log.info("line1")
|
303
|
+
end
|
304
|
+
RBatch::Log.new() do | log |
|
305
|
+
log.info("line2")
|
306
|
+
end
|
307
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
308
|
+
str = f.read
|
309
|
+
expect(str).to match /line1/
|
310
|
+
expect(str).to match /line2/
|
311
|
+
}
|
312
|
+
end
|
313
|
+
|
314
|
+
it "is overwrite mode" do
|
315
|
+
confstr = "log_name: a.log\nlog_append: false"
|
316
|
+
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
317
|
+
RBatch.load_rbatch_config
|
318
|
+
RBatch::Log.new() do | log |
|
319
|
+
log.info("line1")
|
320
|
+
end
|
321
|
+
RBatch::Log.new() do | log |
|
322
|
+
log.info("line2")
|
323
|
+
end
|
324
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
325
|
+
str = f.read
|
326
|
+
expect(str).to_not match /line1/
|
327
|
+
expect(str).to match /line2/
|
328
|
+
}
|
329
|
+
end
|
330
|
+
|
331
|
+
it "is warn level" do
|
332
|
+
confstr = "log_name: a.log\nlog_level: warn"
|
333
|
+
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
334
|
+
RBatch.load_rbatch_config
|
335
|
+
RBatch::Log.new() do | log |
|
336
|
+
log.debug("test_debug")
|
337
|
+
log.info("test_info")
|
338
|
+
log.warn("test_warn")
|
339
|
+
log.error("test_error")
|
340
|
+
log.fatal("test_fatal")
|
341
|
+
end
|
342
|
+
File::open(File.join(@dir , "a.log")) {|f|
|
343
|
+
str = f.read
|
344
|
+
expect(str).to_not match /test_debug/
|
345
|
+
expect(str).to_not match /test_info/
|
346
|
+
expect(str).to match /test_warn/
|
347
|
+
expect(str).to match /test_error/
|
348
|
+
expect(str).to match /test_fatal/
|
349
|
+
}
|
350
|
+
end
|
351
|
+
|
352
|
+
it "delete old log file which name include <date>" do
|
353
|
+
confstr = "log_delete_old_log: true"
|
354
|
+
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
355
|
+
RBatch.load_rbatch_config
|
356
|
+
loglist = [*0..20].map do |day|
|
357
|
+
File.join(@dir , (Date.today - day).strftime("%Y%m%d") + "_test_delete.log")
|
358
|
+
end
|
359
|
+
FileUtils.touch(loglist)
|
360
|
+
log = RBatch::Log.new({ :name => "<date>_test_delete.log"})
|
361
|
+
log.close
|
362
|
+
loglist[1..6].each do |filename|
|
363
|
+
expect( File.exists?(filename)).to be true
|
364
|
+
end
|
365
|
+
loglist[7..20].each do |filename|
|
366
|
+
expect( File.exists?(filename)).to be false
|
367
|
+
end
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
371
|
+
describe "option by both argument and config" do
|
372
|
+
it "is prior to argument than config" do
|
373
|
+
confstr = "log_name: a.log"
|
374
|
+
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
375
|
+
RBatch.load_rbatch_config
|
376
|
+
RBatch::Log.new({:name => "b.log"}) do | log |
|
377
|
+
log.info("hoge")
|
378
|
+
end
|
379
|
+
File::open(File.join(@dir , "b.log")) {|f|
|
380
|
+
expect(f.read).to match /hoge/
|
381
|
+
}
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
385
|
+
describe "instance" do
|
386
|
+
it "run" do
|
387
|
+
log = RBatch::Log.new
|
388
|
+
expect(log).to_not be_nil
|
389
|
+
log.info("test_log")
|
390
|
+
log.close
|
391
|
+
Dir::foreach(@dir) do |f|
|
392
|
+
if ! (/\.+$/ =~ f)
|
393
|
+
File::open(File.join(@dir , f)) {|f|
|
394
|
+
expect(f.read).to match /test_log/
|
395
|
+
}
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
it "raise error when log dir does not exist" do
|
401
|
+
Dir::rmdir(@dir)
|
402
|
+
expect{
|
403
|
+
RBatch::Log.new
|
404
|
+
}.to raise_error(Errno::ENOENT)
|
405
|
+
Dir::mkdir(@dir)
|
406
|
+
end
|
407
|
+
|
408
|
+
it "option by argument" do
|
409
|
+
log = RBatch::Log.new({:name => "d.log" })
|
410
|
+
log.info("hoge")
|
411
|
+
log.close
|
412
|
+
File::open(File.join(@dir , "d.log")) {|f|
|
413
|
+
expect(f.read).to match /hoge/
|
414
|
+
}
|
415
|
+
end
|
416
|
+
|
417
|
+
|
418
|
+
it "option by config" do
|
419
|
+
confstr = "log_name: e.log"
|
420
|
+
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
421
|
+
RBatch.load_rbatch_config
|
422
|
+
log = RBatch::Log.new()
|
423
|
+
log.info("hoge")
|
424
|
+
log.close
|
425
|
+
File::open(File.join(@dir , "e.log")) {|f|
|
426
|
+
expect(f.read).to match /hoge/
|
427
|
+
}
|
428
|
+
end
|
429
|
+
end
|
430
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rbatch'
|
2
|
+
|
3
|
+
describe RBatch do
|
4
|
+
before :all do
|
5
|
+
RBatch.home_dir=Dir.tmpdir
|
6
|
+
@config_dir=File.join(RBatch.home_dir,"conf")
|
7
|
+
@config_file = File.join(@config_dir , "rbatch.yaml")
|
8
|
+
Dir::mkdir @config_dir if ! Dir.exists? @config_dir
|
9
|
+
end
|
10
|
+
|
11
|
+
before :each do
|
12
|
+
end
|
13
|
+
|
14
|
+
it "makes lock file when forbid_double_run is enable" do
|
15
|
+
open( @config_file , "w" ){|f| f.write("forbid_double_run: true")}
|
16
|
+
end
|
17
|
+
|
18
|
+
after :each do
|
19
|
+
FileUtils.rm @config_file if File.exists? @config_file
|
20
|
+
end
|
21
|
+
|
22
|
+
after :all do
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/test/cases/test_cmd.rb
CHANGED
@@ -7,6 +7,7 @@ class RuncherTest < Test::Unit::TestCase
|
|
7
7
|
Dir::mkdir(@config_dir) if ! Dir.exists? @config_dir
|
8
8
|
confstr = ""
|
9
9
|
open( RBatch.rbatch_config_path , "w" ){|f| f.write(confstr)}
|
10
|
+
RBatch.load_rbatch_config
|
10
11
|
end
|
11
12
|
|
12
13
|
def test_cmd_exists
|
@@ -105,6 +106,7 @@ class RuncherTest < Test::Unit::TestCase
|
|
105
106
|
def test_opt_raise_true_status_1_by_conf
|
106
107
|
confstr = "cmd_raise: true "
|
107
108
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
109
|
+
RBatch.load_rbatch_config
|
108
110
|
cmd_str = "ruby -e 'STDOUT.print 1; STDERR.print 2; exit 1;'"
|
109
111
|
assert_raise(RBatch::CmdException){
|
110
112
|
RBatch::Cmd.new(cmd_str).run
|
data/test/cases/test_log.rb
CHANGED
@@ -14,7 +14,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
14
14
|
# set STDOUT Logger stop
|
15
15
|
confstr = "log_quiet: true\n"
|
16
16
|
open( RBatch.rbatch_config_path , "w" ){|f| f.write(confstr)}
|
17
|
-
|
17
|
+
RBatch.load_rbatch_config
|
18
18
|
end
|
19
19
|
|
20
20
|
def teardown
|
@@ -85,6 +85,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
85
85
|
def test_change_name_by_config
|
86
86
|
confstr = "log_name: name1"
|
87
87
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
88
|
+
RBatch.load_rbatch_config
|
88
89
|
RBatch::Log.new({:name => "name1.log" }) do | log |
|
89
90
|
log.info("test_change_name_by_config")
|
90
91
|
end
|
@@ -110,6 +111,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
110
111
|
def test_change_log_dir_by_config
|
111
112
|
confstr = "log_dir: " + @dir2
|
112
113
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
114
|
+
RBatch.load_rbatch_config
|
113
115
|
RBatch::Log.new({:output_dir=> @dir2 }) do | log |
|
114
116
|
log.info("test_change_log_dir_by_config")
|
115
117
|
end
|
@@ -136,6 +138,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
136
138
|
def test_opt_overwite_config
|
137
139
|
confstr = "log_name: " + "name1"
|
138
140
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
141
|
+
RBatch.load_rbatch_config
|
139
142
|
RBatch::Log.new({:name => "name2" }) do | log |
|
140
143
|
log.info("test_opt_overwite_config")
|
141
144
|
end
|
@@ -176,6 +179,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
176
179
|
def test_append_by_conf
|
177
180
|
confstr = "log_append: true"
|
178
181
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
182
|
+
RBatch.load_rbatch_config
|
179
183
|
|
180
184
|
RBatch::Log.new({:name => "test_append" }) do | log |
|
181
185
|
log.info("test_append1")
|
@@ -193,6 +197,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
193
197
|
def test_no_append_by_conf
|
194
198
|
confstr = "log_append: false"
|
195
199
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
200
|
+
RBatch.load_rbatch_config
|
196
201
|
|
197
202
|
RBatch::Log.new({ :name => "test_append" }) do | log |
|
198
203
|
log.info("test_append1")
|
@@ -319,6 +324,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
319
324
|
def test_log_level_debug_by_conf
|
320
325
|
confstr = "log_level: debug"
|
321
326
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
327
|
+
RBatch.load_rbatch_config
|
322
328
|
|
323
329
|
RBatch::Log.new({ :name => "test_level" }) do | log |
|
324
330
|
log.debug("test_debug")
|
@@ -340,6 +346,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
340
346
|
def test_log_level_info_by_conf
|
341
347
|
confstr = "log_level: info"
|
342
348
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
349
|
+
RBatch.load_rbatch_config
|
343
350
|
RBatch::Log.new({ :name => "test_level" }) do | log |
|
344
351
|
log.debug("test_debug")
|
345
352
|
log.info("test_info")
|
@@ -360,6 +367,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
360
367
|
def test_log_level_warn_by_conf
|
361
368
|
confstr = "log_level: warn"
|
362
369
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
370
|
+
RBatch.load_rbatch_config
|
363
371
|
RBatch::Log.new({ :name => "test_level" }) do | log |
|
364
372
|
log.debug("test_debug")
|
365
373
|
log.info("test_info")
|
@@ -380,6 +388,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
380
388
|
def test_log_level_error_by_conf
|
381
389
|
confstr = "log_level: error"
|
382
390
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
391
|
+
RBatch.load_rbatch_config
|
383
392
|
RBatch::Log.new({ :name => "test_level" }) do | log |
|
384
393
|
log.debug("test_debug")
|
385
394
|
log.info("test_info")
|
@@ -400,6 +409,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
400
409
|
def test_log_level_fatal_by_conf
|
401
410
|
confstr = "log_level: fatal"
|
402
411
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
412
|
+
RBatch.load_rbatch_config
|
403
413
|
RBatch::Log.new({ :name => "test_level" }) do | log |
|
404
414
|
log.debug("test_debug")
|
405
415
|
log.info("test_info")
|
@@ -510,6 +520,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
510
520
|
def test_i_log_level_debug_by_conf
|
511
521
|
confstr = "log_level: debug"
|
512
522
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
523
|
+
RBatch.load_rbatch_config
|
513
524
|
|
514
525
|
log = RBatch::Log.new({ :name => "test_level" })
|
515
526
|
log.debug("test_debug")
|
@@ -545,6 +556,7 @@ class LoggerTest < Test::Unit::TestCase
|
|
545
556
|
def test_delete_old_log_by_config
|
546
557
|
confstr = "log_delete_old_log: true"
|
547
558
|
open( RBatch.rbatch_config_path , "a" ){|f| f.write(confstr)}
|
559
|
+
RBatch.load_rbatch_config
|
548
560
|
|
549
561
|
loglist = [*0..20].map do |day|
|
550
562
|
File.join(@dir , (Date.today - day).strftime("%Y%m%d") + "_test_delete.log")
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rbatch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.13.
|
5
|
+
version: 1.13.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- fetaro
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2013-12-
|
13
|
+
date: 2013-12-20 00:00:00 Z
|
14
14
|
dependencies: []
|
15
15
|
|
16
16
|
description: RBatch has many fanctions to help with your making a batch script such as "data backup script" or "proccess starting script".
|
@@ -105,6 +105,10 @@ files:
|
|
105
105
|
- sample/data/amAuthentication.error.1
|
106
106
|
- sample/data/amAuthentication.error.2012-07-10
|
107
107
|
- sample/log/empty
|
108
|
+
- spec/cmd_test.spec
|
109
|
+
- spec/config_test.spec
|
110
|
+
- spec/log_test.spec
|
111
|
+
- spec/rbatch_test.spec
|
108
112
|
- test/cases/test_cmd.rb
|
109
113
|
- test/cases/test_common_config.rb
|
110
114
|
- test/cases/test_config.rb
|
@@ -139,6 +143,10 @@ signing_key:
|
|
139
143
|
specification_version: 3
|
140
144
|
summary: Ruby-based simple batch framework
|
141
145
|
test_files:
|
146
|
+
- spec/cmd_test.spec
|
147
|
+
- spec/config_test.spec
|
148
|
+
- spec/log_test.spec
|
149
|
+
- spec/rbatch_test.spec
|
142
150
|
- test/cases/test_cmd.rb
|
143
151
|
- test/cases/test_common_config.rb
|
144
152
|
- test/cases/test_config.rb
|