Fix integration test shebangs and update tests.

* Integration tests now have their own list of allowed shebangs.
* Use `#!/usr/bin/env bash` instead of `#!/bin/bash`
  since the location is different on various platforms.
pull/50960/head
Matt Clay 6 years ago
parent 11b27b367c
commit 634533208e

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Wrapper to use the correct Python interpreter and support code coverage. # Wrapper to use the correct Python interpreter and support code coverage.
REL_SCRIPT="../../../../contrib/inventory/foreman.py" REL_SCRIPT="../../../../contrib/inventory/foreman.py"

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# start by removing pycrypto and cryptography # start by removing pycrypto and cryptography

@ -6,10 +6,9 @@ import sys
def main(): def main():
allowed = set([ standard_shebangs = set([
b'#!/bin/bash -eu', b'#!/bin/bash -eu',
b'#!/bin/bash -eux', b'#!/bin/bash -eux',
b'#!/bin/bash',
b'#!/bin/sh', b'#!/bin/sh',
b'#!/usr/bin/env bash', b'#!/usr/bin/env bash',
b'#!/usr/bin/env fish', b'#!/usr/bin/env fish',
@ -18,6 +17,12 @@ def main():
b'#!/usr/bin/make -f', b'#!/usr/bin/make -f',
]) ])
integration_shebangs = set([
b'#!/bin/sh',
b'#!/usr/bin/env bash',
b'#!/usr/bin/env python',
])
module_shebangs = { module_shebangs = {
'': b'#!/usr/bin/python', '': b'#!/usr/bin/python',
'.py': b'#!/usr/bin/python', '.py': b'#!/usr/bin/python',
@ -61,6 +66,7 @@ def main():
continue continue
is_module = False is_module = False
is_integration = False
if path.startswith('lib/ansible/modules/'): if path.startswith('lib/ansible/modules/'):
is_module = True is_module = True
@ -73,6 +79,8 @@ def main():
continue continue
elif path.startswith('test/integration/targets/'): elif path.startswith('test/integration/targets/'):
is_integration = True
dirname = os.path.dirname(path) dirname = os.path.dirname(path)
if dirname.endswith('/library') or dirname in ( if dirname.endswith('/library') or dirname in (
@ -98,6 +106,11 @@ def main():
else: else:
print('%s:%d:%d: expected module extension %s but found: %s' % (path, 0, 0, expected_ext, ext)) print('%s:%d:%d: expected module extension %s but found: %s' % (path, 0, 0, expected_ext, ext))
else: else:
if is_integration:
allowed = integration_shebangs
else:
allowed = standard_shebangs
if shebang not in allowed: if shebang not in allowed:
print('%s:%d:%d: unexpected non-module shebang: %s' % (path, 1, 1, shebang)) print('%s:%d:%d: unexpected non-module shebang: %s' % (path, 1, 1, shebang))

Loading…
Cancel
Save