bauxite 0.6.5 → 0.6.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3841662a25997807678f3e52176b061751172c8c
4
- data.tar.gz: b22e3da073d4015be52e819bc8858831d51f3d40
3
+ metadata.gz: 90ce48c06f99606d8c8a5c73b576e222dc1dcab3
4
+ data.tar.gz: f0c003f941b4606eb917a18254e5c12ac5de6d54
5
5
  SHA512:
6
- metadata.gz: 4676bd2187cd55b5770dbe6b5bcfbdd1b30008879f020a78701de4cdac9fede413cdc957ecac933287fd823615fdc5d7ac29d9b5b1881ebb0db2b009dd4669c8
7
- data.tar.gz: 8ad2335de258b2a6c58f03709862ab36da4bfab9ccbee168c87158497d388fa942aa4be6537e77c84137aef59651588325a27df979bcb06fe00e2cb2e42fb105
6
+ metadata.gz: 896b21ed882309deb9cffa5d6efe34071916a0e5574fe7c6dcdda4ed4608b932420829c09d2fee2742c4d6b7d012ad62963fc4e67c8fbfe32b7eb4bcb01a04c4
7
+ data.tar.gz: 1ce615dc1d7b1d2c3112da20220c58f0f26d9f342f1dc5092c1deffde8bec9c49e4c5e64badfccc263fcf1a8906f81c5064c3d3c921ffb1ec86d338b79f251fa
data/README.md CHANGED
@@ -262,8 +262,7 @@ If you want to run Bauxite tests in your [Jenkins CI](http://jenkins-ci.org/) se
262
262
 
263
263
  #!/bin/bash
264
264
  source ~/.rvm/scripts/rvm
265
- bauxite -l echo -u http://localhost:4444/wd/hub \
266
- -t 60 -o 240 --csv-summary "$WORKSPACE/test.csv" \
265
+ bauxite -t 60 -o 240 --jenkins "$WORKSPACE/test-results" \
267
266
  "$WORKSPACE/test/suite.bxt"
268
267
 
269
268
  Assuming you have Selenium Server running on localhost and your workspace (e.g. GIT repo) contains a folder named `test` with a file named `suite.bxt` the configuration above should work like a charm.
@@ -277,7 +276,9 @@ Assuming you have Selenium Server running on localhost and your workspace (e.g.
277
276
  test purchase_something.bxt
278
277
  # more tests here...
279
278
 
280
- Note the `--csv-summary` option in the configuration above. That option generates a single-line CSV file ideal to feed into the `Plot` Jenkins plugin. I won't go into the details of configuring the Plot plugin, but instead here is a fragment of a possible Jenkins `config.xml` plotting the Bauxite test results:
279
+ Note the `--jenkins` option in the configuration above. That option sets the default configuration arguments for Jenkins integration. For more details on the `bauxite` command-line arguments refer to the [RDoc documentation](http://pzavolinsky.github.io/bauxite/Bauxite/Application.html).
280
+
281
+ I won't go into the details of configuring the Jenkins publishing plugins to print Bauxite test results, but instead here is a fragment of a possible Jenkins `config.xml`:
281
282
 
282
283
  <publishers>
283
284
  ...
@@ -288,7 +289,7 @@ Note the `--csv-summary` option in the configuration above. That option generate
288
289
  <yaxis>Number of tests</yaxis>
289
290
  <series>
290
291
  <hudson.plugins.plot.CSVSeries>
291
- <file>test.csv</file>
292
+ <file>test-results/summary.csv</file>
292
293
  <label></label>
293
294
  <fileType>csv</fileType>
294
295
  <strExclusionSet>
@@ -314,7 +315,7 @@ Note the `--csv-summary` option in the configuration above. That option generate
314
315
  <yaxis>Test time (s)</yaxis>
315
316
  <series>
316
317
  <hudson.plugins.plot.CSVSeries>
317
- <file>test.csv</file>
318
+ <file>test-results/summary.csv</file>
318
319
  <label></label>
319
320
  <fileType>csv</fileType>
320
321
  <strExclusionSet>
@@ -669,14 +669,14 @@ will be stored in <code>__CAPTURE__</code>.</p>
669
669
 
670
670
  <span class="ruby-identifier">capture</span> <span class="ruby-identifier">my_file</span>.<span class="ruby-identifier">png</span>
671
671
  <span class="ruby-comment"># =&gt; this would capture the screenshot to my_file.png in the current</span>
672
- <span class="ruby-comment"># working directory.</span>
672
+ <span class="ruby-comment"># output directory.</span>
673
673
  </pre>
674
674
 
675
675
 
676
676
 
677
677
 
678
678
  <div class="method-source-code" id="capture-source">
679
- <pre><span class="ruby-comment"># File lib/bauxite/actions/capture.rb, line 42</span>
679
+ <pre><span class="ruby-comment"># File lib/bauxite/actions/capture.rb, line 40</span>
680
680
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">capture</span>(<span class="ruby-identifier">file</span> = <span class="ruby-keyword">nil</span>)
681
681
  <span class="ruby-keyword">unless</span> <span class="ruby-identifier">file</span>
682
682
  <span class="ruby-identifier">seq</span> = <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">variables</span>[<span class="ruby-string">&#39;__CAPTURE_SEQ__&#39;</span>] <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
@@ -690,17 +690,11 @@ will be stored in <code>__CAPTURE__</code>.</p>
690
690
  <span class="ruby-identifier">file</span> = <span class="ruby-node">&quot;#{test}_#{file}&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">test</span>
691
691
  <span class="ruby-identifier">file</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/[^A-Z0-9_-]/i</span>, <span class="ruby-string">&#39;_&#39;</span>) <span class="ruby-operator">+</span> <span class="ruby-string">&#39;.png&#39;</span>
692
692
  <span class="ruby-keyword">end</span>
693
-
694
- <span class="ruby-keyword">unless</span> <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">file</span>).<span class="ruby-identifier">absolute?</span>
695
- <span class="ruby-identifier">output</span> = <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">variables</span>[<span class="ruby-string">&#39;__OUTPUT__&#39;</span>]
696
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">output</span>
697
- <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span> <span class="ruby-identifier">output</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">exists?</span> <span class="ruby-identifier">output</span>
698
- <span class="ruby-identifier">file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">output</span>, <span class="ruby-identifier">file</span>)
699
- <span class="ruby-keyword">end</span>
700
- <span class="ruby-keyword">end</span>
701
-
693
+
694
+ <span class="ruby-identifier">file</span> = <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">output_path</span>(<span class="ruby-identifier">file</span>)
695
+
702
696
  <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">save_screenshot</span>(<span class="ruby-identifier">file</span>)
703
-
697
+
704
698
  <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">variables</span>[<span class="ruby-string">&#39;__CAPTURE__&#39;</span>] = <span class="ruby-identifier">file</span>
705
699
  <span class="ruby-keyword">true</span>
706
700
  <span class="ruby-keyword">end</span></pre>
@@ -118,6 +118,10 @@ href="../Bauxite.html">Bauxite</a> version execute:</p>
118
118
  <dd>
119
119
  <p>Number of seconds to wait before issuing a timeout error. This timeout
120
120
  applies only to Selectors.</p>
121
+ </dd><dt>-o, --open_timeout SECONDS
122
+ <dd>
123
+ <p>Number of seconds to wait before issuing a timeout error. This timeout
124
+ applies only to page loading times (i.e. Net::HTTP).</p>
121
125
  </dd><dt>-d, --debug
122
126
  <dd>
123
127
  <p>If an error occurs, break into the debug console. This mode is very useful
@@ -161,6 +165,8 @@ otherwise it defaults to <code>terminal</code>.</p>
161
165
  <p>To see a complete list of the available loggers execute:</p>
162
166
 
163
167
  <pre>bauxite -h</pre>
168
+
169
+ <p>Note that multiple instances of this option can be specified.</p>
164
170
  </dd><dt>-L, --logger-option OPTION
165
171
  <dd>
166
172
  <p>A <code>name=value</code> pair of options that are directly forwarded to
@@ -184,6 +190,19 @@ does not contain an <code>=</code> sign.</p>
184
190
  <p>To see a complete list of the available selectors execute:</p>
185
191
 
186
192
  <pre>bauxite -h</pre>
193
+ </dd><dt>-c, --capture
194
+ <dd>
195
+ <p>If the test fails, capture a screenshot in the <code>output</code>
196
+ directory. See the --output option below.</p>
197
+ </dd><dt>--csv-summary FILE
198
+ <dd>
199
+ <p>Output a single-line CSV summary ideal to feed into the Plot Jenkins
200
+ plugin. If <code>FILE</code> is not specified, defaults to
201
+ <code>summary.csv</code></p>
202
+ </dd><dt>--output DIR
203
+ <dd>
204
+ <p>Output directory for generated artifacts. Defaults to the current working
205
+ directory.</p>
187
206
  </dd><dt>-u, --url URL
188
207
  <dd>
189
208
  <p>This option is an alias of:</p>
@@ -192,6 +211,19 @@ does not contain an <code>=</code> sign.</p>
192
211
 
193
212
  <p>If <code>URL</code> is not present
194
213
  <code>http://localhost:4444/wd/hub</code> will be assumed.</p>
214
+ </dd><dt>--jenkins DIR
215
+ <dd>
216
+ <p>Configures default options for Jenkins integration. This option is an alias
217
+ of:</p>
218
+
219
+ <pre>-p remote -P url=http://localhost:4444/wd/hub -l echo -l html
220
+ -L html_package=true -c --csv-summary
221
+ --output DIR</pre>
222
+
223
+ <p>Note that any of the options above can be overridden by specifying the
224
+ option after the <code>--jenkins</code> option. For example:</p>
225
+
226
+ <pre>--jenkins -u selenium.my-organization.com:4445</pre>
195
227
  </dd><dt>-e, --extension DIR
196
228
  <dd>
197
229
  <p>Loads every Ruby file (*.rb) inside <code>DIR</code> (and subdirectories).
@@ -138,6 +138,8 @@
138
138
 
139
139
  <li ><a href="#method-i-get_value">#get_value</a>
140
140
 
141
+ <li ><a href="#method-i-output_path">#output_path</a>
142
+
141
143
  <li ><a href="#method-i-print_error">#print_error</a>
142
144
 
143
145
  <li ><a href="#method-i-reset_driver">#reset_driver</a>
@@ -412,7 +414,7 @@ href="Context.html#method-i-stop">stop</a> (defaults to <code>false</code>)</p>
412
414
 
413
415
 
414
416
  <div class="method-source-code" id="new-source">
415
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 140</span>
417
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 141</span>
416
418
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span>)
417
419
  <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">options</span>
418
420
  <span class="ruby-ivar">@driver_name</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:driver</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:firefox</span>).<span class="ruby-identifier">to_sym</span>
@@ -480,7 +482,7 @@ href="Context.html#method-i-stop">stop</a> (defaults to <code>false</code>)</p>
480
482
 
481
483
 
482
484
  <div class="method-source-code" id="debug-source">
483
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 266</span>
485
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 272</span>
484
486
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">debug</span>
485
487
  <span class="ruby-identifier">exec_parsed_action</span>(<span class="ruby-string">&#39;debug&#39;</span>, [], <span class="ruby-keyword">false</span>)
486
488
  <span class="ruby-keyword">end</span></pre>
@@ -537,7 +539,7 @@ applies if no <code>block</code> was given).</p>
537
539
 
538
540
 
539
541
  <div class="method-source-code" id="find-source">
540
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 255</span>
542
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 261</span>
541
543
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">find</span>(<span class="ruby-identifier">selector</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-comment"># yields: element</span>
542
544
  <span class="ruby-identifier">with_timeout</span> <span class="ruby-constant">Selenium</span><span class="ruby-operator">::</span><span class="ruby-constant">WebDriver</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span><span class="ruby-operator">::</span><span class="ruby-constant">NoSuchElementError</span> <span class="ruby-keyword">do</span>
543
545
  <span class="ruby-constant">Selector</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">self</span>, <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__SELECTOR__&#39;</span>]).<span class="ruby-identifier">find</span>(<span class="ruby-identifier">selector</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -587,7 +589,7 @@ the inner text or the value of the <code>value</code> attribute.</p>
587
589
 
588
590
 
589
591
  <div class="method-source-code" id="get_value-source">
590
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 285</span>
592
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 291</span>
591
593
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_value</span>(<span class="ruby-identifier">element</span>)
592
594
  <span class="ruby-keyword">if</span> [<span class="ruby-string">&#39;input&#39;</span>,<span class="ruby-string">&#39;select&#39;</span>,<span class="ruby-string">&#39;textarea&#39;</span>].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">element</span>.<span class="ruby-identifier">tag_name</span>.<span class="ruby-identifier">downcase</span>
593
595
  <span class="ruby-identifier">element</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-string">&#39;value&#39;</span>)
@@ -630,7 +632,7 @@ the inner text or the value of the <code>value</code> attribute.</p>
630
632
 
631
633
 
632
634
  <div class="method-source-code" id="reset_driver-source">
633
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 203</span>
635
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 209</span>
634
636
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">reset_driver</span>
635
637
  <span class="ruby-ivar">@driver</span>.<span class="ruby-identifier">quit</span>
636
638
  <span class="ruby-identifier">_load_driver</span>
@@ -679,9 +681,14 @@ href="Context.html#method-i-stop">stop</a>).</p>
679
681
 
680
682
 
681
683
  <div class="method-source-code" id="start-source">
682
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 179</span>
684
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 180</span>
683
685
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">start</span>(<span class="ruby-identifier">actions</span> = [])
684
- <span class="ruby-identifier">_load_driver</span>
686
+ <span class="ruby-keyword">begin</span>
687
+ <span class="ruby-identifier">_load_driver</span>
688
+ <span class="ruby-keyword">rescue</span> <span class="ruby-constant">StandardError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
689
+ <span class="ruby-identifier">print_error</span>(<span class="ruby-identifier">e</span>)
690
+ <span class="ruby-identifier">raise</span>
691
+ <span class="ruby-keyword">end</span>
685
692
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">actions</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
686
693
  <span class="ruby-keyword">begin</span>
687
694
  <span class="ruby-identifier">actions</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">action</span><span class="ruby-operator">|</span>
@@ -744,7 +751,7 @@ href="Context.html#method-i-stop">stop</a> pattern.</p>
744
751
 
745
752
 
746
753
  <div class="method-source-code" id="stop-source">
747
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 223</span>
754
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 229</span>
748
755
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">stop</span>
749
756
  <span class="ruby-constant">Context</span><span class="ruby-operator">::</span><span class="ruby-identifier">wait</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@options</span>[<span class="ruby-value">:wait</span>]
750
757
  <span class="ruby-keyword">begin</span>
@@ -801,7 +808,7 @@ href="Context.html#method-i-stop">stop</a> pattern.</p>
801
808
 
802
809
  <div class="method-heading">
803
810
  <span class="method-name">load_logger</span><span
804
- class="method-args">(name, options)</span>
811
+ class="method-args">(loggers, options)</span>
805
812
 
806
813
  <span class="method-click-advice">click to toggle source</span>
807
814
 
@@ -817,8 +824,14 @@ logger type.</p>
817
824
 
818
825
 
819
826
  <div class="method-source-code" id="load_logger-source">
820
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 423</span>
821
- <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">load_logger</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">options</span>)
827
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 429</span>
828
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">load_logger</span>(<span class="ruby-identifier">loggers</span>, <span class="ruby-identifier">options</span>)
829
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">loggers</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
830
+ <span class="ruby-keyword">return</span> <span class="ruby-constant">Loggers</span><span class="ruby-operator">::</span><span class="ruby-constant">CompositeLogger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>, <span class="ruby-identifier">loggers</span>)
831
+ <span class="ruby-keyword">end</span>
832
+
833
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">loggers</span>
834
+
822
835
  <span class="ruby-identifier">log_name</span> = (<span class="ruby-identifier">name</span> <span class="ruby-operator">||</span> <span class="ruby-string">&#39;null&#39;</span>).<span class="ruby-identifier">downcase</span>
823
836
 
824
837
  <span class="ruby-identifier">class_name</span> = <span class="ruby-node">&quot;#{log_name.capitalize}Logger&quot;</span>
@@ -859,7 +872,7 @@ logger type.</p>
859
872
 
860
873
 
861
874
  <div class="method-source-code" id="parse_action_default-source">
862
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 445</span>
875
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 457</span>
863
876
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parse_action_default</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">file</span> = <span class="ruby-string">&#39;&lt;unknown&gt;&#39;</span>, <span class="ruby-identifier">line</span> = <span class="ruby-value">0</span>)
864
877
  <span class="ruby-identifier">data</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39; &#39;</span>, <span class="ruby-value">2</span>)
865
878
  <span class="ruby-keyword">begin</span>
@@ -927,7 +940,7 @@ logger type.</p>
927
940
 
928
941
 
929
942
  <div class="method-source-code" id="wait-source">
930
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 416</span>
943
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 422</span>
931
944
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">wait</span>
932
945
  <span class="ruby-constant">Readline</span>.<span class="ruby-identifier">readline</span>(<span class="ruby-string">&quot;Press ENTER to continue\n&quot;</span>)
933
946
  <span class="ruby-keyword">end</span></pre>
@@ -969,7 +982,7 @@ with the arguments specified in <code>args</code>.</p>
969
982
 
970
983
 
971
984
  <div class="method-source-code" id="add_alias-source">
972
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 439</span>
985
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 451</span>
973
986
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_alias</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>)
974
987
  <span class="ruby-ivar">@aliases</span>[<span class="ruby-identifier">name</span>] = { <span class="ruby-value">:action</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">action</span>, <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span> }
975
988
  <span class="ruby-keyword">end</span></pre>
@@ -1012,7 +1025,7 @@ behavior).</p>
1012
1025
 
1013
1026
 
1014
1027
  <div class="method-source-code" id="exec_action-source">
1015
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 306</span>
1028
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 312</span>
1016
1029
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">exec_action</span>(<span class="ruby-identifier">text</span>)
1017
1030
  <span class="ruby-identifier">data</span> = <span class="ruby-constant">Context</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse_action_default</span>(<span class="ruby-identifier">text</span>, <span class="ruby-string">&#39;&lt;unknown&gt;&#39;</span>, <span class="ruby-value">0</span>)
1018
1031
  <span class="ruby-identifier">exec_parsed_action</span>(<span class="ruby-identifier">data</span>[<span class="ruby-value">:action</span>], <span class="ruby-identifier">data</span>[<span class="ruby-value">:args</span>], <span class="ruby-keyword">true</span>, <span class="ruby-identifier">text</span>)
@@ -1060,7 +1073,7 @@ ret.call if ret.respond_to? :call</pre>
1060
1073
 
1061
1074
 
1062
1075
  <div class="method-source-code" id="exec_action_object-source">
1063
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 525</span>
1076
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 537</span>
1064
1077
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">exec_action_object</span>(<span class="ruby-identifier">action</span>)
1065
1078
  <span class="ruby-identifier">action</span>.<span class="ruby-identifier">execute</span>
1066
1079
  <span class="ruby-keyword">end</span></pre>
@@ -1099,7 +1112,7 @@ ret.call if ret.respond_to? :call</pre>
1099
1112
 
1100
1113
 
1101
1114
  <div class="method-source-code" id="exec_file-source">
1102
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 317</span>
1115
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 323</span>
1103
1116
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">exec_file</span>(<span class="ruby-identifier">file</span>)
1104
1117
  <span class="ruby-identifier">current_dir</span> = <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__DIR__&#39;</span> ]
1105
1118
  <span class="ruby-identifier">current_file</span> = <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__FILE__&#39;</span>]
@@ -1160,7 +1173,7 @@ preferred.</p>
1160
1173
 
1161
1174
 
1162
1175
  <div class="method-source-code" id="exec_parsed_action-source">
1163
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 347</span>
1176
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 353</span>
1164
1177
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">exec_parsed_action</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">log</span> = <span class="ruby-keyword">true</span>, <span class="ruby-identifier">text</span> = <span class="ruby-keyword">nil</span>)
1165
1178
  <span class="ruby-identifier">action</span> = <span class="ruby-identifier">get_action</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">text</span>)
1166
1179
  <span class="ruby-identifier">ret</span> = <span class="ruby-keyword">nil</span>
@@ -1211,7 +1224,7 @@ preferred.</p>
1211
1224
 
1212
1225
 
1213
1226
  <div class="method-source-code" id="get_action-source">
1214
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 485</span>
1227
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 497</span>
1215
1228
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_action</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">text</span> = <span class="ruby-keyword">nil</span>)
1216
1229
  <span class="ruby-keyword">while</span> (<span class="ruby-identifier">alias_action</span> = <span class="ruby-ivar">@aliases</span>[<span class="ruby-identifier">action</span>])
1217
1230
  <span class="ruby-identifier">action</span> = <span class="ruby-identifier">alias_action</span>[<span class="ruby-value">:action</span>]
@@ -1245,6 +1258,58 @@ preferred.</p>
1245
1258
 
1246
1259
 
1247
1260
 
1261
+ </div>
1262
+
1263
+
1264
+ <div id="method-i-output_path" class="method-detail ">
1265
+
1266
+ <div class="method-heading">
1267
+ <span class="method-name">output_path</span><span
1268
+ class="method-args">(path)</span>
1269
+
1270
+ <span class="method-click-advice">click to toggle source</span>
1271
+
1272
+ </div>
1273
+
1274
+
1275
+ <div class="method-description">
1276
+
1277
+ <p>Returns the output path for <code>path</code> accounting for the
1278
+ <code>__OUTPUT__</code> variable.</p>
1279
+
1280
+ <p>For example:</p>
1281
+
1282
+ <pre class="ruby"><span class="ruby-comment"># assuming --output /mnt/disk</span>
1283
+
1284
+ <span class="ruby-identifier">ctx</span>.<span class="ruby-identifier">output_path</span> <span class="ruby-string">&#39;/tmp/myfile.txt&#39;</span>
1285
+ <span class="ruby-comment"># =&gt; returns &#39;/tmp/myfile.txt&#39;</span>
1286
+
1287
+ <span class="ruby-identifier">ctx</span>.<span class="ruby-identifier">output_path</span> <span class="ruby-string">&#39;myfile.txt&#39;</span>
1288
+ <span class="ruby-comment"># =&gt; returns &#39;/mnt/disk/myfile.txt&#39;</span>
1289
+ </pre>
1290
+
1291
+
1292
+
1293
+
1294
+ <div class="method-source-code" id="output_path-source">
1295
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 582</span>
1296
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">output_path</span>(<span class="ruby-identifier">path</span>)
1297
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">path</span>).<span class="ruby-identifier">absolute?</span>
1298
+ <span class="ruby-identifier">output</span> = <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__OUTPUT__&#39;</span>]
1299
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">output</span>
1300
+ <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span> <span class="ruby-identifier">output</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">exists?</span> <span class="ruby-identifier">output</span>
1301
+ <span class="ruby-identifier">path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">output</span>, <span class="ruby-identifier">path</span>)
1302
+ <span class="ruby-keyword">end</span>
1303
+ <span class="ruby-keyword">end</span>
1304
+ <span class="ruby-identifier">path</span>
1305
+ <span class="ruby-keyword">end</span></pre>
1306
+ </div>
1307
+
1308
+ </div>
1309
+
1310
+
1311
+
1312
+
1248
1313
  </div>
1249
1314
 
1250
1315
 
@@ -1278,7 +1343,7 @@ handling the verbose option.</p>
1278
1343
 
1279
1344
 
1280
1345
  <div class="method-source-code" id="print_error-source">
1281
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 540</span>
1346
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 552</span>
1282
1347
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_error</span>(<span class="ruby-identifier">e</span>, <span class="ruby-identifier">capture</span> = <span class="ruby-keyword">true</span>)
1283
1348
  <span class="ruby-keyword">if</span> <span class="ruby-ivar">@logger</span>
1284
1349
  <span class="ruby-ivar">@logger</span>.<span class="ruby-identifier">log</span> <span class="ruby-node">&quot;#{e.message}\n&quot;</span>, <span class="ruby-value">:error</span>
@@ -1338,7 +1403,7 @@ available <a href="Selector.html">Selector</a> strategies).</p>
1338
1403
 
1339
1404
 
1340
1405
  <div class="method-source-code" id="with_driver_timeout-source">
1341
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 401</span>
1406
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 407</span>
1342
1407
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">with_driver_timeout</span>(<span class="ruby-identifier">timeout</span>)
1343
1408
  <span class="ruby-identifier">current</span> = <span class="ruby-ivar">@driver_timeout</span>
1344
1409
  <span class="ruby-ivar">@driver</span>.<span class="ruby-identifier">manage</span>.<span class="ruby-identifier">timeouts</span>.<span class="ruby-identifier">implicit_wait</span> = <span class="ruby-identifier">timeout</span>
@@ -1387,7 +1452,7 @@ to execute the block itself.</p>
1387
1452
 
1388
1453
 
1389
1454
  <div class="method-source-code" id="with_timeout-source">
1390
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 373</span>
1455
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 379</span>
1391
1456
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">with_timeout</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">error_types</span>)
1392
1457
  <span class="ruby-identifier">stime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>
1393
1458
  <span class="ruby-identifier">timeout</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">stime</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__TIMEOUT__&#39;</span>]
@@ -1468,7 +1533,7 @@ to execute the block itself.</p>
1468
1533
 
1469
1534
 
1470
1535
  <div class="method-source-code" id="action_args-source">
1471
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 578</span>
1536
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 613</span>
1472
1537
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">action_args</span>(<span class="ruby-identifier">action</span>)
1473
1538
  <span class="ruby-identifier">action</span> <span class="ruby-operator">+=</span> <span class="ruby-string">&#39;_action&#39;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">_action_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">action</span>
1474
1539
  <span class="ruby-constant">Action</span>.<span class="ruby-identifier">public_instance_method</span>(<span class="ruby-identifier">action</span>).<span class="ruby-identifier">parameters</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">att</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">|</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span> }
@@ -1508,7 +1573,7 @@ to execute the block itself.</p>
1508
1573
 
1509
1574
 
1510
1575
  <div class="method-source-code" id="actions-source">
1511
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 568</span>
1576
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 603</span>
1512
1577
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">actions</span>
1513
1578
  <span class="ruby-identifier">_action_methods</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/_action$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1514
1579
  <span class="ruby-keyword">end</span></pre>
@@ -1547,7 +1612,7 @@ to execute the block itself.</p>
1547
1612
 
1548
1613
 
1549
1614
  <div class="method-source-code" id="loggers-source">
1550
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 607</span>
1615
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 642</span>
1551
1616
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">loggers</span>
1552
1617
  <span class="ruby-constant">Loggers</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/logger$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1553
1618
  <span class="ruby-keyword">end</span></pre>
@@ -1589,7 +1654,7 @@ to execute the block itself.</p>
1589
1654
 
1590
1655
 
1591
1656
  <div class="method-source-code" id="max_action_name_size-source">
1592
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 631</span>
1657
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 666</span>
1593
1658
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">max_action_name_size</span>
1594
1659
  <span class="ruby-identifier">actions</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">s</span> }
1595
1660
  <span class="ruby-keyword">end</span></pre>
@@ -1628,7 +1693,7 @@ to execute the block itself.</p>
1628
1693
 
1629
1694
 
1630
1695
  <div class="method-source-code" id="parsers-source">
1631
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 617</span>
1696
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 652</span>
1632
1697
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parsers</span>
1633
1698
  (<span class="ruby-constant">Parser</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>) <span class="ruby-operator">-</span> <span class="ruby-constant">ParserModule</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>))
1634
1699
  .<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">to_s</span> }
@@ -1672,7 +1737,7 @@ custom selectors are returned.</p>
1672
1737
 
1673
1738
 
1674
1739
  <div class="method-source-code" id="selectors-source">
1675
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 593</span>
1740
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 628</span>
1676
1741
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">selectors</span>(<span class="ruby-identifier">include_standard_selectors</span> = <span class="ruby-keyword">true</span>)
1677
1742
  <span class="ruby-identifier">ret</span> = <span class="ruby-constant">Selector</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/_selector$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1678
1743
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">include_standard_selectors</span>
@@ -1754,7 +1819,7 @@ with the corresponding variable value.</p>
1754
1819
 
1755
1820
 
1756
1821
  <div class="method-source-code" id="expand-source">
1757
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 652</span>
1822
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 687</span>
1758
1823
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">expand</span>(<span class="ruby-identifier">s</span>)
1759
1824
  <span class="ruby-identifier">result</span> = <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-identifier">s</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">kv</span><span class="ruby-operator">|</span>
1760
1825
  <span class="ruby-identifier">s</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-node">/\$\{#{kv[0]}\}/</span>, <span class="ruby-identifier">kv</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_s</span>)
@@ -1807,7 +1872,7 @@ variables is restored.</p>
1807
1872
 
1808
1873
 
1809
1874
  <div class="method-source-code" id="with_vars-source">
1810
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 675</span>
1875
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 710</span>
1811
1876
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">with_vars</span>(<span class="ruby-identifier">vars</span>)
1812
1877
  <span class="ruby-identifier">current</span> = <span class="ruby-ivar">@variables</span>
1813
1878
  <span class="ruby-ivar">@variables</span> = <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">vars</span>)