asautotest 0.0.1 → 0.0.2

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.
data/bin/asautotest CHANGED
@@ -44,7 +44,6 @@ require "asautotest/utilities"
44
44
  module ASAutotest
45
45
  FCSH = ENV["FCSH"] || "fcsh"
46
46
  FLASHPLAYER = ENV["FLASHPLAYER"] || "flashplayer"
47
- WATCH_GLOB = "**/[^.]*.{as,mxml}"
48
47
  DEFAULT_TEST_PORT = 50102
49
48
  GROWL_ERROR_TOKEN = "ASAutotest-#{ARGV.inspect.hash}"
50
49
 
@@ -60,6 +59,7 @@ module ASAutotest
60
59
  attr_reader :test_port
61
60
  attr_reader :output_file_name
62
61
  attr_reader :extra_mxmlc_options
62
+ attr_reader :demo_command
63
63
 
64
64
  def production? ; @production end
65
65
  def test? ; @test end
@@ -73,6 +73,7 @@ module ASAutotest
73
73
  @test = options[:test?]
74
74
  @test_port = options[:test_port] || DEFAULT_TEST_PORT
75
75
  @extra_mxmlc_options = options[:extra_mxmlc_options] || []
76
+ @demo_command = options[:demo_command]
76
77
 
77
78
  if options.include? :output_file_name
78
79
  @output_file_name = File.expand_path(options[:output_file_name])
@@ -96,34 +97,55 @@ module ASAutotest
96
97
  else
97
98
  build_string do |result|
98
99
  result << %{mxmlc}
99
- for source_directory in @source_directories do
100
- result << %{ -compiler.source-path=#{source_directory}}
100
+ for source_directory in source_directories do
101
+ result << %{ -compiler.source-path+=#{source_directory}}
101
102
  end
102
- for library in @library_file_names do
103
- result << %{ -compiler.library-path=#{library}}
103
+ for library in library_file_names do
104
+ result << %{ -compiler.library-path+=#{library}}
104
105
  end
105
- result << %{ -output=#@output_file_name}
106
+ result << %{ -output=#{output_file_name}}
106
107
  result << %{ -static-link-runtime-shared-libraries}
107
108
  result << %{ -compiler.strict}
108
- result << %{ -debug} unless @production
109
+ result << %{ -debug} unless production?
109
110
  for option in @extra_mxmlc_options
110
111
  result << %{ #{option}}
111
112
  end
112
- result << %{ #@source_file_name}
113
+ result << %{ #{source_file_name}}
113
114
  end
114
115
  end
115
116
  end
116
117
 
117
118
  attr_accessor :compile_id
118
119
  attr_accessor :index
120
+
121
+ def run_test!
122
+ TestRunner.new(output_file_name, test_port).run if test?
123
+ end
124
+
125
+ def stop_demo!
126
+ Process.kill("TERM", @demo_pid) if @demo_pid
127
+ rescue Errno::ESRCH # No such process.
128
+ ensure
129
+ @demo_pid = nil
130
+ end
131
+
132
+ def start_demo!
133
+ if @demo_command
134
+ @demo_pid = fork { exec("exec #@demo_command") }
135
+ Process.detach(@demo_pid)
136
+ end
137
+ end
119
138
  end
120
139
 
121
140
  class Main
122
141
  include Logging
123
142
 
143
+ attr_reader :compilation_requests
144
+
124
145
  def initialize(options)
125
146
  initialize_growl if options[:enable_growl?]
126
147
  @typing = options[:typing]
148
+ @watch_globs = options[:watch_globs]
127
149
  @compilation_requests = options[:compilation_requests].
128
150
  map(&method(:make_compilation_request))
129
151
  end
@@ -158,10 +180,6 @@ module ASAutotest
158
180
  CompilationRequest.new(options)
159
181
  end
160
182
 
161
- def self.run(*arguments)
162
- new(*arguments).run
163
- end
164
-
165
183
  def run
166
184
  print_header
167
185
  start_compiler_shell
@@ -191,7 +209,7 @@ module ASAutotest
191
209
  say_tabbed " Source directory:",
192
210
  format_file_name(source_directory)
193
211
  end
194
-
212
+
195
213
  for library in request.library_file_names
196
214
  say_tabbed " Library:", format_file_name(library)
197
215
  end
@@ -210,6 +228,10 @@ module ASAutotest
210
228
  say " Running as test (using port #{request.test_port})."
211
229
  end
212
230
 
231
+ if request.demo_command
232
+ say_tabbed " Demo command:", "$ #{request.demo_command}"
233
+ end
234
+
213
235
  say " Compiling in production mode." if request.production?
214
236
  end
215
237
 
@@ -219,6 +241,8 @@ module ASAutotest
219
241
  say "Not warning about missing type declarations."
220
242
  end
221
243
 
244
+ say "Monitoring #{@watch_globs * " "} for changes."
245
+
222
246
  new_logging_section
223
247
  end
224
248
 
@@ -242,7 +266,7 @@ module ASAutotest
242
266
  monitor = FSSM::Monitor.new
243
267
 
244
268
  for source_directory in source_directories
245
- monitor.path(source_directory, WATCH_GLOB) do |watch|
269
+ monitor.path(source_directory, watch_glob) do |watch|
246
270
  watch.update { handle_change }
247
271
  watch.create { handle_change ; throw :asautotest_interrupt }
248
272
  watch.delete { handle_change ; throw :asautotest_interrupt }
@@ -258,6 +282,14 @@ module ASAutotest
258
282
  end
259
283
  end
260
284
 
285
+ def watch_glob
286
+ if @watch_globs.size == 1
287
+ "**/#@watch_globs"
288
+ else
289
+ "**/{#{@watch_globs * ","}}"
290
+ end
291
+ end
292
+
261
293
  def source_directories
262
294
  @compilation_requests.map(&:source_directories).flatten.uniq
263
295
  end
@@ -272,9 +304,12 @@ module ASAutotest
272
304
  compile
273
305
 
274
306
  for summary in @compilation.result.summaries
307
+ summary[:request].stop_demo!
308
+
275
309
  if summary[:successful?]
276
- if compilation_successful? and summary[:request].test?
277
- run_test(summary[:request])
310
+ if compilation_successful?
311
+ summary[:request].run_test!
312
+ summary[:request].start_demo!
278
313
  end
279
314
 
280
315
  if summary[:request].temporary_output?
@@ -304,10 +339,6 @@ module ASAutotest
304
339
  @compilation.run
305
340
  end
306
341
 
307
- def run_test(request)
308
- TestRunner.new(request.output_file_name, request.test_port).run
309
- end
310
-
311
342
  def delete_output_file(file_name)
312
343
  begin
313
344
  File.delete(file_name)
@@ -334,6 +365,7 @@ $typing = nil
334
365
  $verbose = false
335
366
  $enable_growl = RUBY_PLATFORM =~ /darwin/
336
367
  $parsing_global_options = false
368
+ $watch_globs = []
337
369
 
338
370
  until ARGV.empty?
339
371
  request = $compilation_requests.last
@@ -378,6 +410,8 @@ until ARGV.empty?
378
410
  for request in requests
379
411
  request[:source_directories] << value
380
412
  end
413
+ when /^--watch(?:=(.*))$/
414
+ $watch_globs << $1 || ARGV.shift
381
415
  when "--dynamic-typing"
382
416
  $typing = :dynamic
383
417
  when "--static-typing"
@@ -386,6 +420,8 @@ until ARGV.empty?
386
420
  $verbose = true
387
421
  when "--no-growl"
388
422
  $enable_growl = false
423
+ when /^--demo-command(?:=(.*))$/
424
+ request[:demo_command] = $1 || ARGV.shift
389
425
  when /^--mxmlc-option(?:=(.*))?$/, "-X"
390
426
  value = ($1 || ARGV.shift)
391
427
  for request in requests
@@ -425,13 +461,22 @@ end
425
461
 
426
462
  ASAutotest::Logging.verbose = $verbose
427
463
 
464
+ $watch_globs = %w|*.as *.mxml| if $watch_globs.empty?
465
+
466
+ $main = ASAutotest::Main.new \
467
+ :compilation_requests => $compilation_requests,
468
+ :typing => $typing,
469
+ :enable_growl? => $enable_growl,
470
+ :watch_globs => $watch_globs
471
+
428
472
  begin
429
- ASAutotest::Main.run \
430
- :compilation_requests => $compilation_requests,
431
- :typing => $typing,
432
- :enable_growl? => $enable_growl
473
+ $main.run
433
474
  rescue Interrupt
434
475
  end
435
476
 
477
+ for request in $main.compilation_requests
478
+ request.stop_demo!
479
+ end
480
+
436
481
  # Signal successful exit.
437
482
  exit 200
@@ -21,7 +21,9 @@
21
21
  require "socket"
22
22
  require "timeout"
23
23
 
24
- class PolicyServer
24
+ PROGRAM_NAME = File.basename($0)
25
+
26
+ class FlashPolicyServer
25
27
  PORT = 843
26
28
 
27
29
  def initialize
@@ -44,7 +46,7 @@ class PolicyServer
44
46
  end
45
47
 
46
48
  def info_string(message)
47
- "policy-server: #{message}"
49
+ "#{PROGRAM_NAME}: #{message}"
48
50
  end
49
51
 
50
52
  def begin_info(message)
@@ -85,4 +87,4 @@ class PolicyServer
85
87
  end
86
88
  end
87
89
 
88
- PolicyServer.new.run
90
+ FlashPolicyServer.new.run
@@ -511,7 +511,7 @@ module ASAutotest
511
511
  end
512
512
 
513
513
  def identifier_source_line_parts
514
- source_line =~ /^(.{#{column_number}})([\w$]+)(.*)$/
514
+ source_line =~ /^(.{#{column_number.to_i}})([\w$]+)(.*)$/
515
515
  [$1, $2, $3]
516
516
  end
517
517
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asautotest
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Brockman
@@ -15,7 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-04 00:00:00 Z
18
+ date: 2011-06-07 00:00:00 +02:00
19
+ default_executable:
19
20
  dependencies: []
20
21
 
21
22
  description:
@@ -41,6 +42,7 @@ files:
41
42
  - bin/flash-policy-server
42
43
  - README.rdoc
43
44
  - LICENSE
45
+ has_rdoc: true
44
46
  homepage: http://github.com/dbrock/asautotest
45
47
  licenses: []
46
48
 
@@ -70,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
72
  requirements: []
71
73
 
72
74
  rubyforge_project:
73
- rubygems_version: 1.7.2
75
+ rubygems_version: 1.6.2
74
76
  signing_key:
75
77
  specification_version: 3
76
78
  summary: Detects source changes and compiles ActionScript.