18
18
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19
19
# DEALINGS IN THE SOFTWARE.
20
20
21
+ import os
21
22
import click
22
23
23
24
from molecule import config
24
25
from molecule import logger
25
26
from molecule .command import base
27
+ from molecule import util
26
28
27
29
LOG = logger .get_logger (__name__ )
30
+ MOLECULE_PARALLEL = os .environ .get ('MOLECULE_PARALLEL' , False )
28
31
29
32
30
33
class Test (base .Base ):
@@ -71,6 +74,12 @@ class Test(base.Base):
71
74
72
75
Load an env file to read variables from when rendering
73
76
molecule.yml.
77
+
78
+ .. program:: molecule --parallel test
79
+
80
+ .. option:: molecule --parallel test
81
+
82
+ Run in parallelizable mode.
74
83
"""
75
84
76
85
def execute (self ):
@@ -106,7 +115,12 @@ def execute(self):
106
115
default = 'always' ,
107
116
help = ('The destroy strategy used at the conclusion of a '
108
117
'Molecule run (always).' ))
109
- def test (ctx , scenario_name , driver_name , __all , destroy ): # pragma: no cover
118
+ @click .option (
119
+ '--parallel/--no-parallel' ,
120
+ default = MOLECULE_PARALLEL ,
121
+ help = 'Enable or disable parallel mode. Default is disabled.' )
122
+ def test (ctx , scenario_name , driver_name , __all , destroy ,
123
+ parallel ): # pragma: no cover
110
124
"""
111
125
Test (lint, cleanup, destroy, dependency, syntax, create, prepare,
112
126
converge, idempotence, side_effect, verify, cleanup, destroy).
@@ -115,6 +129,7 @@ def test(ctx, scenario_name, driver_name, __all, destroy): # pragma: no cover
115
129
args = ctx .obj .get ('args' )
116
130
subcommand = base ._get_subcommand (__name__ )
117
131
command_args = {
132
+ 'parallel' : parallel ,
118
133
'destroy' : destroy ,
119
134
'subcommand' : subcommand ,
120
135
'driver_name' : driver_name ,
@@ -123,4 +138,7 @@ def test(ctx, scenario_name, driver_name, __all, destroy): # pragma: no cover
123
138
if __all :
124
139
scenario_name = None
125
140
141
+ if parallel :
142
+ util .validate_parallel_cmd_args (command_args )
143
+
126
144
base .execute_cmdline_scenarios (scenario_name , args , command_args )
0 commit comments