bauxite 0.4.6 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/Bauxite/Action.html +103 -13
- data/doc/Bauxite/ActionModule.html +1 -1
- data/doc/Bauxite/Application.html +1 -1
- data/doc/Bauxite/Context.html +149 -22
- data/doc/Bauxite/Errors/AssertionError.html +1 -1
- data/doc/Bauxite/Errors/FileNotFoundError.html +1 -1
- data/doc/Bauxite/Errors/FormatError.html +1 -1
- data/doc/Bauxite/Errors.html +1 -1
- data/doc/Bauxite/Loggers/CompositeLogger.html +1 -1
- data/doc/Bauxite/Loggers/EchoLogger.html +1 -1
- data/doc/Bauxite/Loggers/FileLogger.html +1 -1
- data/doc/Bauxite/Loggers/NullLogger.html +1 -1
- data/doc/Bauxite/Loggers/TerminalLogger.html +1 -1
- data/doc/Bauxite/Loggers/XtermLogger.html +1 -1
- data/doc/Bauxite/Loggers.html +1 -1
- data/doc/Bauxite/Parser.html +1 -1
- data/doc/Bauxite/ParserModule.html +1 -1
- data/doc/Bauxite/Selector.html +1 -1
- data/doc/Bauxite/SelectorModule.html +1 -1
- data/doc/Bauxite.html +1 -1
- data/doc/README_md.html +1 -1
- data/doc/created.rid +49 -47
- data/doc/index.html +1 -1
- data/doc/js/jquery.js +18 -4
- data/doc/js/search_index.js +1 -1
- data/doc/table_of_contents.html +68 -48
- data/lib/bauxite/actions/doif.rb +43 -0
- data/lib/bauxite/actions/failif.rb +3 -12
- data/lib/bauxite/actions/setif.rb +40 -0
- data/lib/bauxite/core/context.rb +67 -22
- data/lib/bauxite.rb +1 -1
- data/test/doif.bxt +6 -0
- data/test/setif.bxt +3 -0
- metadata +6 -2
data/lib/bauxite/core/context.rb
CHANGED
@@ -292,7 +292,7 @@ module Bauxite
|
|
292
292
|
#
|
293
293
|
def exec_action(text, log = true, file = '<unknown>', line = 0)
|
294
294
|
data = Context::parse_action_default(text, file, line)
|
295
|
-
|
295
|
+
exec_parsed_action(data[:action], data[:args], log, text, file, line)
|
296
296
|
end
|
297
297
|
|
298
298
|
# Executes the specified +file+.
|
@@ -303,9 +303,42 @@ module Bauxite
|
|
303
303
|
#
|
304
304
|
def exec_file(file)
|
305
305
|
@parser.parse(file) do |action, args, text, file, line|
|
306
|
-
|
306
|
+
exec_parsed_action(action, args, true, text, file, line)
|
307
307
|
end
|
308
308
|
end
|
309
|
+
|
310
|
+
# Executes the specified action handling errors, logging and debug
|
311
|
+
# history.
|
312
|
+
#
|
313
|
+
# This method if part of the action execution chain and is intended
|
314
|
+
# for advanced use (e.g. in complex actions). To execute an Action
|
315
|
+
# directly, the #exec_action method is preferred.
|
316
|
+
#
|
317
|
+
# If +log+ is +true+, log the action execution (default behavior).
|
318
|
+
#
|
319
|
+
# For example:
|
320
|
+
# ctx.exec_action 'open "http://www.ruby-lang.org"'
|
321
|
+
# # => navigates to www.ruby-lang.org
|
322
|
+
#
|
323
|
+
def exec_parsed_action(action, args, log = true, text = nil, file = nil, line = nil)
|
324
|
+
ret = handle_errors(true) do
|
325
|
+
|
326
|
+
action = get_action(action, args, text, file, line)
|
327
|
+
|
328
|
+
if log
|
329
|
+
@logger.log_cmd(action) do
|
330
|
+
Readline::HISTORY << action.text
|
331
|
+
exec_action_object(action)
|
332
|
+
end
|
333
|
+
else
|
334
|
+
exec_action_object(action)
|
335
|
+
end
|
336
|
+
end
|
337
|
+
handle_errors(true) do
|
338
|
+
ret.call if ret.respond_to? :call # delayed actions (after log_cmd)
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
309
342
|
|
310
343
|
# Executes the +block+ inside a rescue block applying standard criteria of
|
311
344
|
# error handling.
|
@@ -474,7 +507,7 @@ module Bauxite
|
|
474
507
|
# for advanced use (e.g. in complex actions). To execute an Action
|
475
508
|
# directly, the #exec_action method is preferred.
|
476
509
|
#
|
477
|
-
def get_action(action, args, text, file, line)
|
510
|
+
def get_action(action, args, text = nil, file = nil, line = nil)
|
478
511
|
while (alias_action = @aliases[action])
|
479
512
|
action = alias_action[:action]
|
480
513
|
args = alias_action[:args].map do |a|
|
@@ -495,6 +528,8 @@ module Bauxite
|
|
495
528
|
end
|
496
529
|
|
497
530
|
text = ([action] + args.map { |a| '"'+a.gsub('"', '""')+'"' }).join(' ') unless text
|
531
|
+
file = @variables['__FILE__'] unless file
|
532
|
+
line = @variables['__LINE__'] unless line
|
498
533
|
|
499
534
|
Action.new(self, action, args, text, file, line)
|
500
535
|
end
|
@@ -521,6 +556,35 @@ module Bauxite
|
|
521
556
|
action.execute
|
522
557
|
end
|
523
558
|
|
559
|
+
# Executes the specified +action+ and returns +true+ if the action
|
560
|
+
# succeeds and +false+ otherwise.
|
561
|
+
#
|
562
|
+
# This method is intended to simplify conditional actions that execute
|
563
|
+
# different code depending on the outcome of an action execution.
|
564
|
+
#
|
565
|
+
# For example:
|
566
|
+
# if ctx.try_exec_action(action, args)
|
567
|
+
# # => when action succeeds...
|
568
|
+
# else
|
569
|
+
# # => when action fails...
|
570
|
+
# end
|
571
|
+
#
|
572
|
+
def try_exec_action(action, args)
|
573
|
+
action = get_action(action, args)
|
574
|
+
|
575
|
+
with_timeout Bauxite::Errors::AssertionError do
|
576
|
+
with_vars({ '__TIMEOUT__' => 0}) do
|
577
|
+
begin
|
578
|
+
ret = exec_action_object(action)
|
579
|
+
ret.call if ret.respond_to? :call
|
580
|
+
true
|
581
|
+
rescue Bauxite::Errors::AssertionError
|
582
|
+
false
|
583
|
+
end
|
584
|
+
end
|
585
|
+
end
|
586
|
+
end
|
587
|
+
|
524
588
|
|
525
589
|
# ======================================================================= #
|
526
590
|
# :section: Metadata
|
@@ -668,25 +732,6 @@ module Bauxite
|
|
668
732
|
end
|
669
733
|
end
|
670
734
|
|
671
|
-
def _exec_parsed_action(action, args, text, log, file, line)
|
672
|
-
ret = handle_errors(true) do
|
673
|
-
|
674
|
-
action = get_action(action, args, text, file, line)
|
675
|
-
|
676
|
-
if log
|
677
|
-
@logger.log_cmd(action) do
|
678
|
-
Readline::HISTORY << action.text
|
679
|
-
exec_action_object(action)
|
680
|
-
end
|
681
|
-
else
|
682
|
-
exec_action_object(action)
|
683
|
-
end
|
684
|
-
end
|
685
|
-
handle_errors(true) do
|
686
|
-
ret.call if ret.respond_to? :call # delayed actions (after log_cmd)
|
687
|
-
end
|
688
|
-
end
|
689
|
-
|
690
735
|
# ======================================================================= #
|
691
736
|
# Hacks required to overcome the String#split(' ') behavior of folding the
|
692
737
|
# space characters, coupled with CSV not supporting a regex as :col_sep.
|
data/lib/bauxite.rb
CHANGED
data/test/doif.bxt
ADDED
data/test/setif.bxt
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bauxite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patricio Zavolinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -122,6 +122,7 @@ files:
|
|
122
122
|
- lib/bauxite/actions/break.rb
|
123
123
|
- lib/bauxite/actions/click.rb
|
124
124
|
- lib/bauxite/actions/debug.rb
|
125
|
+
- lib/bauxite/actions/doif.rb
|
125
126
|
- lib/bauxite/actions/echo.rb
|
126
127
|
- lib/bauxite/actions/exec.rb
|
127
128
|
- lib/bauxite/actions/failif.rb
|
@@ -135,6 +136,7 @@ files:
|
|
135
136
|
- lib/bauxite/actions/ruby.rb
|
136
137
|
- lib/bauxite/actions/select.rb
|
137
138
|
- lib/bauxite/actions/set.rb
|
139
|
+
- lib/bauxite/actions/setif.rb
|
138
140
|
- lib/bauxite/actions/source.rb
|
139
141
|
- lib/bauxite/actions/store.rb
|
140
142
|
- lib/bauxite/actions/submit.rb
|
@@ -168,6 +170,7 @@ files:
|
|
168
170
|
- test/default_selector_var.bxt
|
169
171
|
- test/delay.bxt
|
170
172
|
- test/delay/page.html
|
173
|
+
- test/doif.bxt
|
171
174
|
- test/exec.bxt
|
172
175
|
- test/extension.bxt.manual
|
173
176
|
- test/extension/custom.rb
|
@@ -193,6 +196,7 @@ files:
|
|
193
196
|
- test/select/page.html
|
194
197
|
- test/selectors.bxt
|
195
198
|
- test/selectors/page.html
|
199
|
+
- test/setif.bxt
|
196
200
|
- test/smart_selector.bxt
|
197
201
|
- test/smart_selector/page.html
|
198
202
|
- test/stdin.bxt
|