summaryrefslogtreecommitdiff
path: root/test/sanity/code-smell
diff options
context:
space:
mode:
authorMatt Clay <matt@mystile.com>2016-12-21 16:46:28 -0800
committerGitHub <noreply@github.com>2016-12-21 16:46:28 -0800
commit422857166baca4d80fc46bebd53fb3f92bbda9fe (patch)
tree642910309e493ec8ce42be03bb0bdbf55387529e /test/sanity/code-smell
parent241ad8cac311e10d66ddd09b1f1b183b6ff1ad0d (diff)
downloadansible-422857166baca4d80fc46bebd53fb3f92bbda9fe.tar.gz
Remove legacy test alias migration script. (#19629)
* Require code-smell tests to be files. * Add sanity check for integration test aliases. * Remove migration script for test aliases.
Diffstat (limited to 'test/sanity/code-smell')
-rwxr-xr-xtest/sanity/code-smell/integration-aliases.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/test/sanity/code-smell/integration-aliases.py b/test/sanity/code-smell/integration-aliases.py
new file mode 100755
index 0000000000..980b120c22
--- /dev/null
+++ b/test/sanity/code-smell/integration-aliases.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+
+import os
+import textwrap
+
+
+def main():
+ targets_dir = 'test/integration/targets'
+
+ with open('test/integration/target-prefixes.network', 'r') as prefixes_fd:
+ network_prefixes = prefixes_fd.read().splitlines()
+
+ missing_aliases = []
+
+ for target in sorted(os.listdir(targets_dir)):
+ target_dir = os.path.join(targets_dir, target)
+ aliases_path = os.path.join(target_dir, 'aliases')
+ files = sorted(os.listdir(target_dir))
+
+ # aliases already defined
+ if os.path.exists(aliases_path):
+ continue
+
+ # don't require aliases for support directories
+ if any(os.path.splitext(f)[0] == 'test' for f in files):
+ continue
+
+ # don't require aliases for setup_ directories
+ if target.startswith('setup_'):
+ continue
+
+ # don't require aliases for prepare_ directories
+ if target.startswith('prepare_'):
+ continue
+
+ # TODO: remove this exclusion once the `ansible-test network-integration` command is working properly
+ # don't require aliases for network modules
+ if any(target.startswith('%s_' % prefix) for prefix in network_prefixes):
+ continue
+
+ missing_aliases.append(target_dir)
+
+ if missing_aliases:
+ message = '''
+ The following integration target directories are missing `aliases` files:
+
+ %s
+
+ Unless a test cannot run as part of CI, you'll want to add an appropriate CI alias, such as:
+
+ posix/ci/group1
+ windows/ci/group2
+
+ The CI groups are used to balance tests across multiple jobs to minimize test run time.
+
+ Aliases can also be used to express test requirements:
+
+ needs/privileged
+ needs/root
+ needs/ssh
+
+ Other aliases are used to skip tests under certain conditions:
+
+ skip/freebsd
+ skip/osx
+ skip/python3
+
+ Take a look at existing `aliases` files to see what aliases are available and how they're used.
+ ''' % '\n'.join(missing_aliases)
+
+ print(textwrap.dedent(message).strip())
+
+ exit(1)
+
+
+if __name__ == '__main__':
+ main()