summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/ansible-test-sanity-shebang
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/ansible-test-sanity-shebang')
-rw-r--r--test/integration/targets/ansible-test-sanity-shebang/aliases4
-rw-r--r--test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/powershell.ps11
-rw-r--r--test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/python-no-shebang.py0
-rw-r--r--test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/python.py1
-rwxr-xr-xtest/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_bash.sh1
-rwxr-xr-xtest/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py1
-rwxr-xr-xtest/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/sh.sh1
-rwxr-xr-xtest/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_bash.sh1
-rwxr-xr-xtest/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py1
-rwxr-xr-xtest/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/sh.sh1
-rw-r--r--test/integration/targets/ansible-test-sanity-shebang/expected.txt9
-rwxr-xr-xtest/integration/targets/ansible-test-sanity-shebang/runme.sh47
12 files changed, 68 insertions, 0 deletions
diff --git a/test/integration/targets/ansible-test-sanity-shebang/aliases b/test/integration/targets/ansible-test-sanity-shebang/aliases
new file mode 100644
index 0000000..7741d44
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/aliases
@@ -0,0 +1,4 @@
+shippable/posix/group3 # runs in the distro test containers
+shippable/generic/group1 # runs in the default test container
+context/controller
+needs/target/collection
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/powershell.ps1 b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/powershell.ps1
new file mode 100644
index 0000000..9eb7192
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/powershell.ps1
@@ -0,0 +1 @@
+#!powershell
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/python-no-shebang.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/python-no-shebang.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/python-no-shebang.py
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/python.py
new file mode 100644
index 0000000..013e4b7
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/plugins/modules/python.py
@@ -0,0 +1 @@
+#!/usr/bin/python
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_bash.sh b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_bash.sh
new file mode 100755
index 0000000..f1f641a
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_bash.sh
@@ -0,0 +1 @@
+#!/usr/bin/env bash
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
new file mode 100755
index 0000000..4265cc3
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
@@ -0,0 +1 @@
+#!/usr/bin/env python
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/sh.sh b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/sh.sh
new file mode 100755
index 0000000..1a24852
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/sh.sh
@@ -0,0 +1 @@
+#!/bin/sh
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_bash.sh b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_bash.sh
new file mode 100755
index 0000000..f1f641a
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_bash.sh
@@ -0,0 +1 @@
+#!/usr/bin/env bash
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
new file mode 100755
index 0000000..4265cc3
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
@@ -0,0 +1 @@
+#!/usr/bin/env python
diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/sh.sh b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/sh.sh
new file mode 100755
index 0000000..1a24852
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/sh.sh
@@ -0,0 +1 @@
+#!/bin/sh
diff --git a/test/integration/targets/ansible-test-sanity-shebang/expected.txt b/test/integration/targets/ansible-test-sanity-shebang/expected.txt
new file mode 100644
index 0000000..fbd7330
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/expected.txt
@@ -0,0 +1,9 @@
+plugins/modules/no-shebang-executable.py:0:0: file without shebang should not be executable
+plugins/modules/python-executable.py:0:0: module should not be executable
+plugins/modules/python-wrong-shebang.py:1:1: expected module shebang "b'#!/usr/bin/python'" but found: b'#!invalid'
+plugins/modules/utf-16-be-bom.py:0:0: file starts with a UTF-16 (BE) byte order mark
+plugins/modules/utf-16-le-bom.py:0:0: file starts with a UTF-16 (LE) byte order mark
+plugins/modules/utf-32-be-bom.py:0:0: file starts with a UTF-32 (BE) byte order mark
+plugins/modules/utf-32-le-bom.py:0:0: file starts with a UTF-32 (LE) byte order mark
+plugins/modules/utf-8-bom.py:0:0: file starts with a UTF-8 byte order mark
+scripts/unexpected-shebang:1:1: unexpected non-module shebang: b'#!/usr/bin/custom'
diff --git a/test/integration/targets/ansible-test-sanity-shebang/runme.sh b/test/integration/targets/ansible-test-sanity-shebang/runme.sh
new file mode 100755
index 0000000..f7fc68a
--- /dev/null
+++ b/test/integration/targets/ansible-test-sanity-shebang/runme.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+set -eu
+
+# Create test scenarios at runtime that do not pass sanity tests.
+# This avoids the need to create ignore entries for the tests.
+
+(
+ cd ansible_collections/ns/col/plugins/modules
+
+ touch no-shebang-executable.py && chmod +x no-shebang-executable.py # file without shebang should not be executable
+ python -c "open('utf-32-be-bom.py', 'wb').write(b'\x00\x00\xFE\xFF')" # file starts with a UTF-32 (BE) byte order mark
+ python -c "open('utf-32-le-bom.py', 'wb').write(b'\xFF\xFE\x00\x00')" # file starts with a UTF-32 (LE) byte order mark
+ python -c "open('utf-16-be-bom.py', 'wb').write(b'\xFE\xFF')" # file starts with a UTF-16 (BE) byte order mark
+ python -c "open('utf-16-le-bom.py', 'wb').write(b'\xFF\xFE')" # file starts with a UTF-16 (LE) byte order mark
+ python -c "open('utf-8-bom.py', 'wb').write(b'\xEF\xBB\xBF')" # file starts with a UTF-8 byte order mark
+ echo '#!/usr/bin/python' > python-executable.py && chmod +x python-executable.py # module should not be executable
+ echo '#!invalid' > python-wrong-shebang.py # expected module shebang "b'#!/usr/bin/python'" but found: b'#!invalid'
+)
+
+(
+ cd ansible_collections/ns/col/scripts
+
+ echo '#!/usr/bin/custom' > unexpected-shebang # unexpected non-module shebang: b'#!/usr/bin/custom'
+
+ echo '#!/usr/bin/make -f' > Makefile && chmod +x Makefile # pass
+ echo '#!/bin/bash -eu' > bash_eu.sh && chmod +x bash_eu.sh # pass
+ echo '#!/bin/bash -eux' > bash_eux.sh && chmod +x bash_eux.sh # pass
+ echo '#!/usr/bin/env fish' > env_fish.fish && chmod +x env_fish.fish # pass
+ echo '#!/usr/bin/env pwsh' > env_pwsh.ps1 && chmod +x env_pwsh.ps1 # pass
+)
+
+mkdir ansible_collections/ns/col/examples
+
+(
+ cd ansible_collections/ns/col/examples
+
+ echo '#!/usr/bin/custom' > unexpected-shebang # pass
+)
+
+source ../collection/setup.sh
+
+set -x
+
+ansible-test sanity --test shebang --color --lint --failure-ok "${@}" > actual.txt
+
+diff -u "${TEST_DIR}/expected.txt" actual.txt