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.
This commit is contained in:
Matt Clay 2019-01-15 13:31:33 -08:00
parent 11b27b367c
commit 634533208e
3 changed files with 17 additions and 4 deletions

View file

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

View file

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

View file

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