container-tools/tests/roles/run_bats_tests/tasks/main.yml

51 lines
1.4 KiB
YAML

---
# Create a directory for artifacts on remote host
- name: create remote artifacts directory
file:
path: /tmp/artifacts
state: directory
mode: 0777
# Create empty results file, world-writable so rootless test can log to it
- name: initialize test.log file
copy: dest=/tmp/artifacts/test.log content='' force=yes mode=0666
# Same with results.yml file
- name: initialize results.yml file
copy: dest=/tmp/artifacts/results.yml content='results:\n' force=yes mode=0666
- name: execute tests
include: run_one_test.yml
with_items: "{{ tests }}"
loop_control:
loop_var: test
- name: pull test.log and results.yml
fetch:
src: "{{ item }}"
dest: "{{ artifacts }}/"
flat: yes
with_items:
- /tmp/artifacts/test.log
- /tmp/artifacts/results.yml
# Copied from standard-test-basic
- name: check results
shell: grep "^FAIL" /tmp/artifacts/test.log
register: test_fails
# Never fail at this step. Just store result of tests.
failed_when: False
- name: preserve results
set_fact:
role_result_failed: "{{ (test_fails.stdout|d|length > 0) or (test_fails.stderr|d|length > 0) }}"
role_result_msg: "{{ test_fails.stdout|d('tests failed.') }}"
- name: display results
vars:
msg: |
Tests failed: {{ role_result_failed|d('Undefined') }}
Tests msg: {{ role_result_msg|d('None') }}
debug:
msg: "{{ msg.split('\n') }}"