Skip to content

Commit 4316219

Browse files
author
Eric Anderson
committed
added tests
1 parent 109fd60 commit 4316219

File tree

5 files changed

+122
-0
lines changed

5 files changed

+122
-0
lines changed

.travis.yml

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
sudo: required
3+
4+
env:
5+
- distribution: centos
6+
version: 7
7+
init: /usr/lib/systemd/systemd
8+
run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
9+
- distribution: ubuntu
10+
version: 16.04
11+
init: /sbin/init
12+
run_opts: ""
13+
- distribution: ubuntu
14+
version: 14.04
15+
init: /sbin/init
16+
run_opts: ""
17+
18+
services:
19+
- docker
20+
21+
before_install:
22+
# - sudo apt-get update
23+
# Pull container
24+
- 'sudo docker pull ${distribution}:${version}'
25+
# Customize container
26+
- 'sudo docker build --rm=true --file=tests/Dockerfile.${distribution}-${version} --tag=${distribution}-${version}:ansible tests'
27+
28+
script:
29+
- container_id=$(mktemp)
30+
# Run container in detached state
31+
- 'sudo docker run --privileged --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} ${distribution}-${version}:ansible "${init}" > "${container_id}"'
32+
33+
# Ansible syntax check.
34+
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check'
35+
36+
# Test role.
37+
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml'
38+
39+
# Test role idempotence.
40+
- >
41+
sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml
42+
| grep -q 'changed=0.*failed=0'
43+
&& (echo 'Idempotence test: pass' && exit 0)
44+
|| (echo 'Idempotence test: fail' && exit 1)
45+
# Clean up
46+
- 'sudo docker stop "$(cat ${container_id})"'
47+
48+
notifications:
49+
webhooks: https://galaxy.ansible.com/api/v1/notifications/

tests/Dockerfile.centos-7

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
FROM centos:7
2+
3+
# Install systemd -- See https://hub.docker.com/_/centos/
4+
RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs
5+
RUN yum -y update; yum clean all; \
6+
(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
7+
rm -f /lib/systemd/system/multi-user.target.wants/*; \
8+
rm -f /etc/systemd/system/*.wants/*; \
9+
rm -f /lib/systemd/system/local-fs.target.wants/*; \
10+
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
11+
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
12+
rm -f /lib/systemd/system/basic.target.wants/*; \
13+
rm -f /lib/systemd/system/anaconda.target.wants/*;
14+
15+
# Install Ansible
16+
RUN yum -y install epel-release
17+
RUN yum -y install git ansible sudo
18+
RUN yum clean all
19+
20+
# Disable requiretty
21+
RUN sed -i -e 's/^\(Defaults\s*requiretty\)/#--- \1/' /etc/sudoers
22+
23+
# Install Ansible inventory file
24+
RUN echo -e '[local]\nlocalhost ansible_connection=local' > /etc/ansible/hosts
25+
26+
VOLUME ["/sys/fs/cgroup"]
27+
CMD ["/usr/sbin/init"]

tests/Dockerfile.ubuntu-14.04

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM ubuntu:14.04
2+
RUN apt-get update
3+
4+
# Install Ansible
5+
RUN apt-get install -y software-properties-common git
6+
RUN apt-add-repository -y ppa:ansible/ansible
7+
RUN apt-get update
8+
RUN apt-get install -y ansible
9+
10+
# Install Ansible inventory file
11+
RUN echo "[local]\nlocalhost ansible_connection=local" > /etc/ansible/hosts

tests/Dockerfile.ubuntu-16.04

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM ubuntu:16.04
2+
RUN apt-get update
3+
4+
# Install Ansible
5+
RUN apt-get install -y software-properties-common git
6+
RUN apt-add-repository -y ppa:ansible/ansible
7+
RUN apt-get update
8+
RUN apt-get install -y ansible
9+
10+
# Install Ansible inventory file
11+
RUN echo "[local]\nlocalhost ansible_connection=local" > /etc/ansible/hosts

tests/test.yml

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
- hosts: all
2+
3+
pre_tasks:
4+
- name: Ensure build dependencies are installed (RedHat).
5+
yum: 'name="{{ item }}" state=present'
6+
with_items:
7+
- "@Development tools"
8+
- tar
9+
- unzip
10+
- sudo
11+
- which
12+
when: ansible_os_family == 'RedHat'
13+
14+
- name: Ensure build dependencies are installed (Debian).
15+
apt: 'name="{{ item }}" state=installed'
16+
with_items:
17+
- build-essential
18+
- unzip
19+
- tar
20+
- sudo
21+
when: ansible_os_family == 'Debian'
22+
23+
roles:
24+
- role_under_test

0 commit comments

Comments
 (0)