patir 0.6.1 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,17 @@
1
+ ==0.6.4 / 2009-09-4
2
+ * context parameter added to Command#run
3
+
4
+ ==0.6.3
5
+ * Repository restructured (git is used internally so the svn repository matches now the master branch)
6
+ * Cleanup. Some obsolete code was removed
7
+ * Unit tests clarified
8
+ ==0.6.2
9
+ * RubyCommand and ShellCommand are now more robust handling StandardError exceptions.
1
10
  ==0.6.1
2
11
  * RubyCommand failure logs are now clearer no more 'RubyCommand failed:' redundancies.
3
12
  * RubyCommand: Backtrace added to error output if $DEBUG=true
4
13
  ==0.6.0
5
- * RubyCommand now sets success when the block runs to the end. Block returns values re ignored. To indicate failure raise an exception.
14
+ * RubyCommand now sets success when the block runs to the end. Block returns values are ignored. To indicate failure raise an exception.
6
15
 
7
16
  == 0.5.8 /2008-09-18
8
17
  * CommandSequence status updates set the correct status
data/README.txt CHANGED
@@ -1,6 +1,5 @@
1
- patir
2
- http://patir.rubyforge.org
3
- by riva (Vassilis Rizopoulos)
1
+ patir - http://patir.rubyforge.org
2
+
4
3
  == DESCRIPTION:
5
4
 
6
5
  patir provides the libraries common to all the project automation tools included in the Patir project.
data/Rakefile CHANGED
@@ -4,7 +4,8 @@ require 'rubygems'
4
4
  require 'hoe'
5
5
  require 'patir/base'
6
6
 
7
- Hoe.new('patir', Patir::Version::STRING) do |p|
7
+ Hoe.spec('patir') do |p|
8
+ p.version = Patir::Version::STRING
8
9
  p.author = "Vassilis Rizopoulos"
9
10
  p.email = "riva@braveworld.net"
10
11
  p.summary = 'patir (Project Automation Tools in Ruby) provides libraries for use in automation tools'
@@ -38,13 +38,28 @@
38
38
  You can browse the <a href="http://patir.rubyforge.org/svn/">patir subversion repository</a>.
39
39
  </p>
40
40
  <p>
41
- Like all self-conscious developers the patir team does not claim infalibility. Neither are we to proud to have our flaws pointed out, so if and when you find a bug, please post a report in our <a href="http://rubyforge.org/tracker/?group_id=3597">Bugtracker</a>
41
+ Like all self-conscious developers the patir team does not claim infalibility. Neither are we too proud to have our flaws pointed out, so if and when you find a bug, please post a report in our <a href="http://rubyforge.org/tracker/?group_id=3597">Bugtracker</a>
42
42
  </p>
43
43
  </div>
44
44
  </div>
45
45
  <div id="leftpanel">
46
46
  <div align="justify" class="graypanel">
47
47
  <span class="smalltitle">News</span><br /><br />
48
+ <span class="smallredtext">17 July 2009</span><br />
49
+ <span class="bodytext">rutema_web v1.0.0 is out!</span><br />
50
+ <a href="rutemaweb100.html" class="smallgraytext">More...</a><br /><br />
51
+ <span class="smallredtext">28 November 2008</span><br />
52
+ <span class="bodytext">rutemaweb v0.9.4 is out!</span><br />
53
+ <a href="rutemaweb094.html" class="smallgraytext">More...</a><br /><br />
54
+ <span class="smallredtext">11 November 2008</span><br />
55
+ <span class="bodytext">rutema v1.0.3 is out!</span><br />
56
+ <a href="rutema103.html" class="smallgraytext">More...</a><br /><br />
57
+ <span class="smallredtext">28 October 2008</span><br />
58
+ <span class="bodytext">rutema_elements v0.1.0 is out!</span><br />
59
+ <a href="elements010.html" class="smallgraytext">More...</a><br /><br />
60
+ <span class="smallredtext">10 October 2008</span><br />
61
+ <span class="bodytext">rutema v1.0.0 is out!</span><br />
62
+ <a href="rutema100.html" class="smallgraytext">More...</a><br /><br />
48
63
  <span class="smallredtext">9 September 2008</span><br />
49
64
  <span class="bodytext">rutema v0.9.0 is out!</span><br />
50
65
  <a href="rutema090.html" class="smallgraytext">More...</a><br /><br />
@@ -6,17 +6,13 @@ module Patir
6
6
  module Version
7
7
  MAJOR=0
8
8
  MINOR=6
9
- TINY=1
9
+ TINY=4
10
10
  STRING=[ MAJOR, MINOR, TINY ].join( "." )
11
11
  end
12
12
  #Error thrown usually in initialize methods when missing required parameters
13
13
  #from the initialization hash.
14
14
  class ParameterException<RuntimeError
15
15
  end
16
- #creates a drb service URL from an ip and a port number
17
- def self.drb_service ip,port
18
- return "druby://#{ip}:#{port}"
19
- end
20
16
 
21
17
  class PatirLoggerFormatter<Logger::Formatter
22
18
  Format="[%s] %5s: %s\n"
@@ -62,7 +62,7 @@ module Patir
62
62
  #executes the command and returns the status of the command.
63
63
  #
64
64
  #overwrite this method in classes that include Command
65
- def run
65
+ def run context=nil
66
66
  @status=:success
67
67
  return self.status
68
68
  end
@@ -125,28 +125,34 @@ module Patir
125
125
  end
126
126
 
127
127
  #Executes the shell command and returns the status
128
- def run
128
+ def run context=nil
129
129
  start_time=Time.now
130
130
  super
131
- #create the working directory if it does not exist
132
- FileUtils::mkdir_p(@working_directory,:verbose=>false)
133
- #create the actual command, run it, grab stderr and stdout and set output,error, status and execution time
134
- status, @output, @error = systemu(@command,:cwd=>@working_directory)
135
- #lets get the status how we want it
136
131
  begin
137
- exited = status.exited?
138
- rescue NotImplementedError
139
- # so, JRuby as of version 1.1 does not understand exited?
140
- exited = true
141
- end
142
- if exited
143
- if status.exitstatus==0
144
- @status=:success
132
+ #create the working directory if it does not exist
133
+ FileUtils::mkdir_p(@working_directory,:verbose=>false)
134
+ #create the actual command, run it, grab stderr and stdout and set output,error, status and execution time
135
+ status, @output, @error = systemu(@command,:cwd=>@working_directory)
136
+ #lets get the status how we want it
137
+ begin
138
+ exited = status.exited?
139
+ rescue NotImplementedError
140
+ # so, JRuby as of version 1.1 does not understand exited?
141
+ exited = true
142
+ end
143
+ if exited
144
+ if status.exitstatus==0
145
+ @status=:success
146
+ else
147
+ @status=:error
148
+ end
145
149
  else
146
- @status=:error
150
+ @status=:warning
147
151
  end
148
- else
149
- @status=:warning
152
+ rescue
153
+ @error<<"\n#{$!.message}"
154
+ @error<<"\n#{$!.backtrace}" if $DEBUG
155
+ @status=:error
150
156
  end
151
157
  #set the time it took us
152
158
  @exec_time=Time.now-start_time
@@ -200,7 +206,7 @@ module Patir
200
206
  #Executes the CommandSequence.
201
207
  #
202
208
  #Will run all step instances in sequence observing the exit strategies on warning/failures
203
- def run
209
+ def run context=nil
204
210
  #set the start time
205
211
  @state.start_time=Time.now
206
212
  #reset the stop time
@@ -219,7 +225,7 @@ module Patir
219
225
  step.status=:running
220
226
  notify(:sequence_status=>@state)
221
227
  #run it, get the result and notify
222
- result=step.run
228
+ result=step.run(context)
223
229
  @state.step=step
224
230
  step.status=:running
225
231
  notify(:sequence_status=>@state)
@@ -268,12 +274,14 @@ module Patir
268
274
  bstep.reset
269
275
  #set the extended attributes
270
276
  bstep.number=@steps.size
277
+ exit_strategy = :fail_on_error unless [:flunk_on_error,:fail_on_warning,:flunk_on_warning].include?(exit_strategy)
271
278
  bstep.strategy=exit_strategy
272
279
  #add it to the lot
273
280
  @steps<<bstep
274
281
  #add it to status as well
275
282
  @state.step=bstep
276
283
  notify(:sequence_status=>@state)
284
+ return bstep
277
285
  end
278
286
 
279
287
  #Resets the status. This will set :not_executed status,
@@ -478,7 +486,7 @@ module Patir
478
486
  end
479
487
  end
480
488
  #Runs the associated block
481
- def run
489
+ def run context=nil
482
490
  @run=true
483
491
  begin
484
492
  t1=Time.now
@@ -486,7 +494,7 @@ module Patir
486
494
  @cmd.call(self)
487
495
  @status=:success
488
496
  end
489
- rescue
497
+ rescue StandardError
490
498
  error<<"\n#{$!.message}"
491
499
  error<<"\n#{$!.backtrace}" if $DEBUG
492
500
  @status=:error
@@ -3,14 +3,12 @@ require 'test/unit'
3
3
  require 'patir/base.rb'
4
4
 
5
5
  class TestBase<Test::Unit::TestCase
6
+ TEMP_LOG="temp.log"
6
7
  def teardown
7
8
  #clean up
8
- File.delete("temp.log") if File.exists?("temp.log")
9
- end
10
- #simple match test
11
- def test_drb_service
12
- assert_equal("druby://service.host:7000",Patir.drb_service("service.host",7000))
9
+ File.delete(TEMP_LOG) if File.exists?(TEMP_LOG)
13
10
  end
11
+
14
12
  #This is not actually testing anything meaningfull but can be expanded when we learn more about
15
13
  #the logger
16
14
  def test_setup_logger
@@ -20,6 +18,7 @@ class TestBase<Test::Unit::TestCase
20
18
  assert_not_nil(logger)
21
19
  logger=Patir.setup_logger("temp.log",:silent)
22
20
  assert_not_nil(logger)
21
+ assert(File.exists?(TEMP_LOG), "Log file not created")
23
22
  logger.close
24
23
  end
25
24
 
@@ -8,7 +8,7 @@ end
8
8
 
9
9
  class MockCommandWarning
10
10
  include Patir::Command
11
- def run
11
+ def run context=nil
12
12
  @status=:warning
13
13
  return :warning
14
14
  end
@@ -16,7 +16,7 @@ end
16
16
 
17
17
  class MockCommandError
18
18
  include Patir::Command
19
- def run
19
+ def run context=nil
20
20
  @status=:error
21
21
  return :error
22
22
  end
@@ -118,6 +118,7 @@ class TestCommandSequence<Test::Unit::TestCase
118
118
  @error=MockCommandError.new
119
119
  @warning=MockCommandWarning.new
120
120
  end
121
+
121
122
  def test_normal
122
123
  seq=CommandSequence.new("test")
123
124
  assert(seq.steps.empty?)
@@ -129,10 +130,13 @@ class TestCommandSequence<Test::Unit::TestCase
129
130
  assert_nothing_raised{seq.run}
130
131
  assert(seq.state.success?)
131
132
  end
133
+
132
134
  def test_flunk_on_error
133
135
  seq=CommandSequence.new("test")
134
136
  assert(seq.steps.empty?)
135
- assert_nothing_raised{seq.add_step(@echo,:flunk_on_error)}
137
+ check_step=nil
138
+ assert_nothing_raised{check_step=seq.add_step(@echo,:flunk_on_error)}
139
+ assert_equal(:flunk_on_error,check_step.strategy)
136
140
  assert_nothing_raised{seq.add_step(@error,:flunk_on_error)}
137
141
  assert_nothing_raised{seq.add_step(@void,:flunk_on_error)}
138
142
  assert(:not_executed==seq.state.step_state(0)[:status])
@@ -150,7 +154,9 @@ class TestCommandSequence<Test::Unit::TestCase
150
154
  seq=CommandSequence.new("test")
151
155
  assert(seq.steps.empty?)
152
156
  assert_nothing_raised{seq.add_step(@echo)}
153
- assert_nothing_raised{seq.add_step(@error,:fail_on_error)}
157
+ check_step=nil
158
+ assert_nothing_raised{check_step=seq.add_step(@error,:fail_on_error)}
159
+ assert_equal(:fail_on_error,check_step.strategy)
154
160
  assert_nothing_raised{seq.add_step(@void)}
155
161
  assert(:not_executed==seq.state.step_state(0)[:status])
156
162
  assert(:not_executed==seq.state.step_state(1)[:status])
@@ -167,7 +173,9 @@ class TestCommandSequence<Test::Unit::TestCase
167
173
  seq=CommandSequence.new("test")
168
174
  assert(seq.steps.empty?)
169
175
  assert_nothing_raised{seq.add_step(@echo)}
170
- assert_nothing_raised{seq.add_step(@warning,:flunk_on_warning)}
176
+ check_step=nil
177
+ assert_nothing_raised{check_step=seq.add_step(@error,:flunk_on_warning)}
178
+ assert_equal(:flunk_on_warning,check_step.strategy)
171
179
  assert_nothing_raised{seq.add_step(@void)}
172
180
  assert(:not_executed==seq.state.step_state(0)[:status])
173
181
  assert(:not_executed==seq.state.step_state(1)[:status])
@@ -184,7 +192,9 @@ class TestCommandSequence<Test::Unit::TestCase
184
192
  seq=CommandSequence.new("test")
185
193
  assert(seq.steps.empty?)
186
194
  assert_nothing_raised{seq.add_step(@echo)}
187
- assert_nothing_raised{seq.add_step(@warning,:fail_on_warning)}
195
+ check_step=nil
196
+ assert_nothing_raised{check_step=seq.add_step(@warning,:fail_on_warning)}
197
+ assert_equal(:fail_on_warning,check_step.strategy)
188
198
  assert_nothing_raised{seq.add_step(@void)}
189
199
  assert(:not_executed==seq.state.step_state(0)[:status])
190
200
  assert(:not_executed==seq.state.step_state(1)[:status])
@@ -198,7 +208,7 @@ class TestCommandSequence<Test::Unit::TestCase
198
208
  end
199
209
  end
200
210
 
201
- class TestRubyCommad<Test::Unit::TestCase
211
+ class TestRubyCommand<Test::Unit::TestCase
202
212
  include Patir
203
213
  def test_normal_ruby
204
214
  cmd=RubyCommand.new("test"){sleep 1}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: patir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vassilis Rizopoulos
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-01 00:00:00 +02:00
12
+ date: 2009-09-04 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,9 +30,20 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.7.0
33
+ version: 2.3.3
34
34
  version:
35
- description: "== SYNOPSIS: patir is the library of common functionality used in the patir projects. This includes a class that allows you to build configuration files in Ruby and a library for command abstraction. == REQUIREMENTS: * systemu"
35
+ description: |-
36
+ == FEATURES/PROBLEMS:
37
+
38
+ * Configuration library for creating Ruby configuration files
39
+ * Command library abstracting the execution of commands
40
+
41
+ == SYNOPSIS:
42
+
43
+ patir is the library of common functionality used in the patir projects.
44
+ This includes a class that allows you to build configuration files in Ruby and a library for command abstraction.
45
+
46
+ == REQUIREMENTS:
36
47
  email: riva@braveworld.net
37
48
  executables: []
38
49
 
@@ -76,7 +87,9 @@ files:
76
87
  - docu/rw-scenario.png
77
88
  - docu/screenshots.html
78
89
  has_rdoc: true
79
- homepage: http://patir.rubyforge.org
90
+ homepage:
91
+ licenses: []
92
+
80
93
  post_install_message:
81
94
  rdoc_options:
82
95
  - --main
@@ -98,9 +111,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
111
  requirements: []
99
112
 
100
113
  rubyforge_project: patir
101
- rubygems_version: 1.3.0
114
+ rubygems_version: 1.3.5
102
115
  signing_key:
103
- specification_version: 2
116
+ specification_version: 3
104
117
  summary: patir (Project Automation Tools in Ruby) provides libraries for use in automation tools
105
118
  test_files:
106
119
  - test/test_patir_base.rb