sprout-flashplayer-bundle 9.115.9 → 9.115.11

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.
@@ -3,7 +3,7 @@ module Sprout
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 9
5
5
  MINOR = 115
6
- TINY = 9
6
+ TINY = 11
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY].join('.')
9
9
  MAJOR_MINOR = [MAJOR, MINOR].join('.')
@@ -25,7 +25,13 @@ module Sprout
25
25
 
26
26
  class FlashPlayerError < StandardError #:nodoc:
27
27
  end
28
-
28
+
29
+ # This exception will be raised when the FlashPlayerTask has encountered
30
+ # a test_result_pre_delimiter and subsequently a well-formatted JUnit
31
+ # XML result test failure
32
+ class AssertionFailure < StandardError
33
+ end
34
+
29
35
  # The FlashPlayerTask will download, unpack, configure and launch the debug
30
36
  # Flash Player for OS X, Windows and Linux.
31
37
  #
@@ -40,58 +46,36 @@ module Sprout
40
46
  # t.swf = 'bin/SomeProject.swf'
41
47
  # end
42
48
  #
43
- # You can also send the FlashPlayerTask a variety of additional parameters including which
44
- # version of the FlashPlayer to download (only 9.115.x is supported at the time of this writing).
45
- #
46
49
  class FlashPlayerTask < Rake::Task
47
- DEFAULT_VERSION = nil
48
- EXECUTABLE_NAME = 'sprout-flashplayer-tool'
49
-
50
+ # This is the opening prelude to a collection of test results. When the
51
+ # task encounters this string in the trace output log file, it will begin
52
+ # collecting trace statements with the expectation that the following
53
+ # strings will be well-formatted XML data matching what JUnit emits for
54
+ # Cruise Control.
55
+ #
56
+ # See the lib/asunit3/asunit.framework.XMLResultPrinter for more information.
50
57
  @@test_result_pre_delimiter = '<XMLResultPrinter>'
58
+
59
+ # This is the closing string that will indicate the end of test result XML data
51
60
  @@test_result_post_delimiter = '</XMLResultPrinter>'
61
+
52
62
  @@home = nil
53
63
  @@trust = nil
54
64
 
55
- attr_accessor :version,
56
- :name
57
-
58
- attr_writer :swf,
59
- :test_result_file
65
+ def initialize(task_name, app)
66
+ super(task_name, app)
67
+ @default_gem_name = 'sprout-flashplayer-tool'
68
+ @default_result_file = 'AsUnitResults.xml'
69
+ @inside_test_result = false
70
+ end
60
71
 
61
72
  def self.define_task(args, &block)
62
73
  t = super
63
74
  yield t if block_given?
64
75
  t.define
65
76
  end
66
-
67
- def initialize_task
68
- end
69
77
 
70
- def swf
71
- @swf ||= nil
72
- if(@swf.nil?)
73
- prerequisites.each do |req|
74
- if(req.index('.swf'))
75
- @swf = req.to_s
76
- break
77
- end
78
- end
79
- end
80
- return @swf
81
- end
82
-
83
- def define
84
- CLEAN.add(test_result_file)
85
- end
86
-
87
- def test_result_file
88
- @test_result_file ||= 'AsUnitResults.xml'
89
- end
90
-
91
- def test_result
92
- @test_result ||= ''
93
- end
94
-
78
+ # Local system path to the Flash Player Trust file
95
79
  def FlashPlayerTask.trust
96
80
  if(@@trust)
97
81
  return @@trust
@@ -100,6 +84,7 @@ module Sprout
100
84
  return @@trust
101
85
  end
102
86
 
87
+ # Local system path to where the Flash Player stores trace output logs and trust files
103
88
  def FlashPlayerTask.home
104
89
  if(@@home)
105
90
  return @@home
@@ -117,7 +102,7 @@ module Sprout
117
102
  return @@home
118
103
  end
119
104
 
120
- # Enumerate the potential locations of the Flash Player Home
105
+ # Collection of the potential locations of the Flash Player Home
121
106
  # For each supported Platform, the first existing location
122
107
  # will be used.
123
108
  def FlashPlayerTask.home_paths
@@ -127,10 +112,97 @@ module Sprout
127
112
  File.join(User.home, '.macromedia', 'Flash_Player')]
128
113
  end
129
114
 
130
- def initialize(task_name, app)
131
- super(task_name, app)
132
- @version = DEFAULT_VERSION
133
- @inside_test_result = false
115
+ # The swf parameter can be set explicitly in the block sent to this task as in:
116
+ #
117
+ # flashplayer :run do |t|
118
+ # t.swf = 'bin/SomeProject.swf'
119
+ # end
120
+ #
121
+ # Or it can be set implicitly as a rake prerequisite as follows:
122
+ #
123
+ # flashplayer :run => 'bin/SomeProject' do |t|
124
+ # end
125
+ #
126
+ def swf(swf)
127
+ @swf = swf
128
+ end
129
+
130
+ def swf
131
+ @swf ||= nil
132
+ if(@swf.nil?)
133
+ prerequisites.each do |req|
134
+ if(req.index('.swf'))
135
+ @swf = req.to_s
136
+ break
137
+ end
138
+ end
139
+ end
140
+ return @swf
141
+ end
142
+
143
+ # By default, the Flash Player should be given focus after being launched. Unfortunately,
144
+ # this doesn't work properly on OS X, so we needed to do some hackery in order to make it
145
+ # happen. This in turn can lead to multiple instances of the Player being instantiated.
146
+ # In the case of running a test harness, this is absolutely not desirable, so we had
147
+ # expose a parameter that allows us to prevent auto-focus of the player.
148
+ def do_not_focus=(focus)
149
+ @do_not_focus = focus
150
+ end
151
+
152
+ def do_not_focus
153
+ @do_not_focus ||= nil
154
+ end
155
+
156
+ # The gem version of the sprout-flashplayer-tool RubyGem to download.
157
+ #
158
+ # It's important to note that this version number
159
+ # will differ slightly from the actual player version in that the final revision
160
+ # (the last of three numbers), is the gem version, while the first two describe the player
161
+ # version being downloaded.
162
+ # The exact gem version that you would like the ToolTask to execute. By default this value
163
+ # should be nil and will download the latest version of the gem that is available unless
164
+ # there is a version already installed on your system.
165
+ #
166
+ # This attribute could be an easy
167
+ # way to update your local gem to the latest version without leaving your build file,
168
+ # but it's primary purpose is to allow you to specify very specific versions of the tools
169
+ # that your project depends on. This way your team can rest assured that they are all
170
+ # working with the same tools.
171
+ def gem_version=(version)
172
+ @gem_version = version
173
+ end
174
+
175
+ def gem_version
176
+ return @gem_version ||= nil
177
+ end
178
+
179
+ # Full name of the sprout tool gem that this tool task will use.
180
+ # This defaults to sprout-flashplayer-tool
181
+ def gem_name=(name)
182
+ @gem_name = name
183
+ end
184
+
185
+ def gem_name
186
+ return @gem_name ||= @default_gem_name
187
+ end
188
+
189
+ # The File where JUnit test results should be written. This value
190
+ # defaults to 'AsUnitResults.xml'
191
+ #
192
+ def test_result_file=(file)
193
+ @test_result_file = file
194
+ end
195
+
196
+ def test_result_file
197
+ @test_result_file ||= @default_result_file
198
+ end
199
+
200
+ def test_result
201
+ @test_result ||= ''
202
+ end
203
+
204
+ def define # :nodoc:
205
+ CLEAN.add(test_result_file)
134
206
  end
135
207
 
136
208
  def execute(*args)
@@ -157,7 +229,7 @@ module Sprout
157
229
  end
158
230
 
159
231
  @running_process = nil
160
- @thread = run(EXECUTABLE_NAME, version, swf)
232
+ @thread = run(gem_name, gem_version, swf)
161
233
  read_log(@thread, log_file)
162
234
  @thread.join
163
235
  end
@@ -170,8 +242,8 @@ module Sprout
170
242
  end
171
243
  end
172
244
 
173
- def run(tool, version, swf)
174
- path_to_exe = Sprout.get_executable(tool, nil, version)
245
+ def run(tool, gem_version, swf)
246
+ path_to_exe = Sprout.get_executable(tool, nil, gem_version)
175
247
  target = User.clean_path(path_to_exe)
176
248
  @player_pid = nil
177
249
 
@@ -192,6 +264,7 @@ module Sprout
192
264
  end
193
265
 
194
266
  def focus_player_on_mac(out, exe)
267
+ return if do_not_focus
195
268
  begin
196
269
  if(User.new.is_a?(OSXUser))
197
270
  require 'appscript'
@@ -227,7 +300,7 @@ module Sprout
227
300
  end
228
301
  end
229
302
  end
230
-
303
+
231
304
  # Returns true if inside of a test result
232
305
  def parse_test_result(line, thread)
233
306
  if(@inside_test_result)
@@ -235,6 +308,7 @@ module Sprout
235
308
  @inside_test_result = false
236
309
  write_test_result(test_result)
237
310
  close
311
+ examine_test_result test_result
238
312
  return true
239
313
  else
240
314
  test_result << line
@@ -254,6 +328,35 @@ module Sprout
254
328
  f.puts(result)
255
329
  end
256
330
  end
331
+
332
+ def examine_test_result(result)
333
+ require 'rexml/document'
334
+ doc = nil
335
+ begin
336
+ doc = REXML::Document.new(result)
337
+ rescue REXML::ParseException => e
338
+ puts "[WARNING] Invalid test results encountered"
339
+ return
340
+ end
341
+
342
+ # Handle JUnit Failures
343
+ failures = []
344
+
345
+ doc.elements.each('/testsuites/testsuite/testsuite/testcase/error') do |element|
346
+ failures << element.text
347
+ end
348
+
349
+ doc.elements.each("/testsuites/testsuite/testsuite/testcase/failure") do |element|
350
+ failures << element.text
351
+ end
352
+
353
+ if(failures.size > 0)
354
+ raise AssertionFailure.new("Test Failures Encountered #{failures.join("\n")}")
355
+ end
356
+
357
+ end
358
+
359
+
257
360
  end
258
361
 
259
362
  ##########################################
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprout-flashplayer-bundle
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.115.9
4
+ version: 9.115.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pattern Park
@@ -9,7 +9,7 @@ autorequire: sprout/flashplayer
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-17 00:00:00 -08:00
12
+ date: 2008-02-20 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency