Skip to content

Commit

Permalink
Add runner tests from ansible core test suite
Browse files Browse the repository at this point in the history
  • Loading branch information
Shrews committed Jan 4, 2024
1 parent 309baad commit 5d06900
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 0 deletions.
57 changes: 57 additions & 0 deletions test/integration/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,60 @@ def container_image(request, cli, tmp_path): # pylint: disable=W0621
[runtime, 'rmi', '-f', image_name],
bare=True,
)

@pytest.fixture
def container_image_devel(request, cli, tmp_path): # pylint: disable=W0621
DOCKERFILE = """
FROM quay.io/centos/centos:stream9
ARG WHEEL
COPY $WHEEL /$WHEEL
# Need python 3.11 minimum for devel
RUN dnf install -y python3.11 python3.11-pip git
RUN alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 0
RUN python3 -m pip install /$WHEEL git+https://github.com/ansible/ansible@devel
RUN mkdir -p /runner/{env,inventory,project,artifacts} /home/runner/.ansible/tmp
RUN chmod -R 777 /runner /home/runner
WORKDIR /runner
ENV HOME=/home/runner
CMD ["ansible-runner", "run", "/runner"]
"""

try:
containerized = request.getfixturevalue('containerized')
if not containerized:
yield None
return
except Exception:
# Test func doesn't use containerized
pass

if (env_image_name := os.getenv('RUNNER_TEST_IMAGE_NAME')):
yield env_image_name
return

cli(
['pyproject-build', '-w', '-o', str(tmp_path)],
cwd=here.parent.parent,
bare=True,
)

wheel = next(tmp_path.glob('*.whl')) # pylint: disable=R1708

runtime = request.getfixturevalue('runtime')
dockerfile_path = tmp_path / 'Dockerfile'
dockerfile_path.write_text(DOCKERFILE)
random_string = ''.join(random.choice(ascii_lowercase) for i in range(10))
image_name = f'ansible-runner-{random_string}-event-test'

cli(
[runtime, 'build', '--build-arg', f'WHEEL={wheel.name}', '--rm=true', '-t', image_name, '-f', str(dockerfile_path), str(tmp_path)],
bare=True,
)
yield image_name
cli(
[runtime, 'rmi', '-f', image_name],
bare=True,
)

28 changes: 28 additions & 0 deletions test/integration/test_core_integration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import pytest
import sys

from ansible_runner.interface import run


@pytest.mark.test_all_runtimes
@pytest.mark.skipif(sys.platform == 'darwin', reason='does not work on macOS')
def test_adhoc(tmp_path, runtime, container_image_devel):
# pvt_data_dir is mounted on the container, so it must contain the expected directories
project_dir = tmp_path / 'project'
project_dir.mkdir()
r = run(private_data_dir=str(tmp_path),
host_pattern='localhost',
module='shell',
module_args='whoami',
process_isolation_executable=runtime,
process_isolation=True,
container_image=container_image_devel,
)

assert r.status == 'successful'
assert r.rc == 0
assert 'ok' in r.stats
assert 'localhost' in r.stats['ok']
events = [x['event'] for x in r.events if x['event'] != 'verbose']
assert len(events) == 4

0 comments on commit 5d06900

Please sign in to comment.