23
23
import shutil
24
24
import subprocess
25
25
from subprocess import PIPE
26
+ from typing import Optional
26
27
27
28
import pexpect
28
29
import pkg_resources
29
30
import pytest
30
31
31
32
from molecule import logger , util
32
33
from molecule .config import ansible_version
33
- from molecule .test .conftest import change_dir_to
34
+ from molecule .test .conftest import change_dir_to , molecule_directory
34
35
from molecule .text import strip_ansi_color
35
36
from molecule .util import run_command
36
37
@@ -92,7 +93,6 @@ def skip_test(request, driver_name):
92
93
pass
93
94
94
95
95
- @pytest .helpers .register
96
96
def idempotence (scenario_name ):
97
97
cmd = ["molecule" , "create" , "--scenario-name" , scenario_name ]
98
98
assert run_command (cmd ).returncode == 0
@@ -104,31 +104,29 @@ def idempotence(scenario_name):
104
104
assert run_command (cmd ).returncode == 0
105
105
106
106
107
- @pytest .helpers .register
108
107
def init_role (temp_dir , driver_name ):
109
108
role_directory = os .path .join (temp_dir .strpath , "myorg.myrole" )
110
109
111
110
cmd = ["molecule" , "init" , "role" , "myorg.myrole" , "--driver-name" , driver_name ]
112
111
assert run_command (cmd ).returncode == 0
113
- pytest . helpers . metadata_lint_update (role_directory )
112
+ metadata_lint_update (role_directory )
114
113
115
114
with change_dir_to (role_directory ):
116
115
cmd = ["molecule" , "test" , "--all" ]
117
116
assert run_command (cmd ).returncode == 0
118
117
119
118
120
- @pytest .helpers .register
121
119
def init_scenario (temp_dir , driver_name ):
122
120
# Create role
123
121
role_directory = os .path .join (temp_dir .strpath , "test-init" )
124
122
cmd = ["molecule" , "init" , "role" , "test-init" , "--driver-name" , driver_name ]
125
123
assert run_command (cmd ).returncode == 0
126
- pytest . helpers . metadata_lint_update (role_directory )
124
+ metadata_lint_update (role_directory )
127
125
128
126
with change_dir_to (role_directory ):
129
127
# Create scenario
130
- molecule_directory = pytest . helpers . molecule_directory ()
131
- scenario_directory = os .path .join (molecule_directory , "test-scenario" )
128
+ molecule_dir = molecule_directory ()
129
+ scenario_directory = os .path .join (molecule_dir , "test-scenario" )
132
130
133
131
cmd = [
134
132
"molecule" ,
@@ -148,17 +146,15 @@ def init_scenario(temp_dir, driver_name):
148
146
assert run_command (cmd ).returncode == 0
149
147
150
148
151
- @pytest .helpers .register
152
- def metadata_lint_update (role_directory ):
149
+ def metadata_lint_update (role_directory : str ) -> None :
153
150
# By default, ansible-lint will fail on newly-created roles because the
154
151
# fields in this file have not been changed from their defaults. This is
155
152
# good because molecule should create this file using the defaults, and
156
153
# users should receive feedback to change these defaults. However, this
157
154
# blocks the testing of 'molecule init' itself, so ansible-lint should
158
155
# be configured to ignore these metadata lint errors.
159
- ansible_lint_src = os .path .join (
160
- os .path .dirname (util .abs_path (__file__ )), ".ansible-lint"
161
- )
156
+ dirname = os .path .dirname (os .path .abspath (__file__ ))
157
+ ansible_lint_src = os .path .join (dirname , ".ansible-lint" )
162
158
shutil .copy (ansible_lint_src , role_directory )
163
159
164
160
# Explicitly lint here to catch any unexpected lint errors before
@@ -170,8 +166,7 @@ def metadata_lint_update(role_directory):
170
166
assert run_command (cmd ).returncode == 0
171
167
172
168
173
- @pytest .helpers .register
174
- def list (x ):
169
+ def list_cmd (x ):
175
170
cmd = ["molecule" , "list" ]
176
171
result = run_command (cmd )
177
172
assert result .returncode == 0
@@ -181,7 +176,6 @@ def list(x):
181
176
assert l in out
182
177
183
178
184
- @pytest .helpers .register
185
179
def list_with_format_plain (x ):
186
180
cmd = ["molecule" , "list" , "--format" , "plain" ]
187
181
result = util .run_command (cmd )
@@ -191,7 +185,6 @@ def list_with_format_plain(x):
191
185
assert l in out
192
186
193
187
194
- @pytest .helpers .register
195
188
def login (login_args , scenario_name = "default" ):
196
189
cmd = ["molecule" , "destroy" , "--scenario-name" , scenario_name ]
197
190
assert run_command (cmd ).returncode == 0
@@ -212,8 +205,7 @@ def login(login_args, scenario_name="default"):
212
205
child .sendline ("exit" )
213
206
214
207
215
- @pytest .helpers .register
216
- def test (driver_name , scenario_name = "default" , parallel = False ):
208
+ def run_test (driver_name , scenario_name = "default" , parallel = False ):
217
209
cmd = ["molecule" , "test" , "--scenario-name" , scenario_name ]
218
210
if driver_name != "delegated" :
219
211
if scenario_name is None :
@@ -224,7 +216,6 @@ def test(driver_name, scenario_name="default", parallel=False):
224
216
assert run_command (cmd ).returncode == 0
225
217
226
218
227
- @pytest .helpers .register
228
219
def verify (scenario_name = "default" ):
229
220
cmd = ["molecule" , "create" , "--scenario-name" , scenario_name ]
230
221
assert run_command (cmd ).returncode == 0
@@ -236,17 +227,16 @@ def verify(scenario_name="default"):
236
227
assert run_command (cmd ).returncode == 0
237
228
238
229
239
- def get_docker_executable ():
230
+ def get_docker_executable () -> Optional [ str ] :
240
231
return shutil .which ("docker" )
241
232
242
233
243
234
def get_virtualbox_executable ():
244
235
return shutil .which ("VBoxManage" )
245
236
246
237
247
- @pytest .helpers .register
248
238
@util .lru_cache ()
249
- def supports_docker ():
239
+ def supports_docker () -> bool :
250
240
docker = get_docker_executable ()
251
241
if docker :
252
242
result = subprocess .run ([docker , "info" ], stdout = PIPE , universal_newlines = True )
0 commit comments