Compile Python with missing deps and shared libs
Change-Id: I99c5d518736004beed8686ff330a5c7150e3f7c6
This commit is contained in:
parent
d3de47fff0
commit
94de803520
@ -36,14 +36,6 @@
|
|||||||
- hosts: all
|
- hosts: all
|
||||||
roles:
|
roles:
|
||||||
|
|
||||||
- name: ensures has 'python3' and 'pip3' commands
|
|
||||||
role: python
|
|
||||||
vars:
|
|
||||||
python_command: python3
|
|
||||||
python_version: 3.7
|
|
||||||
python_release: 3.7.5
|
|
||||||
pip_command: pip3
|
|
||||||
|
|
||||||
- role: copy-build-sshkey
|
- role: copy-build-sshkey
|
||||||
copy_sshkey_target_user: stack
|
copy_sshkey_target_user: stack
|
||||||
|
|
||||||
|
@ -4,8 +4,10 @@
|
|||||||
roles:
|
roles:
|
||||||
- role: ../roles/python
|
- role: ../roles/python
|
||||||
vars:
|
vars:
|
||||||
|
python_command: python3.8
|
||||||
python_version: "3.8"
|
python_version: "3.8"
|
||||||
python_release: "3.8.0"
|
python_release: "3.8.0"
|
||||||
|
pip_command: pip3.8
|
||||||
pip_install_packages:
|
pip_install_packages:
|
||||||
- virtualenv
|
- virtualenv
|
||||||
- tox
|
- tox
|
||||||
|
16
roles/python/Vagrantfile
vendored
16
roles/python/Vagrantfile
vendored
@ -14,10 +14,10 @@ MEMORY = 512
|
|||||||
# boxes at https://vagrantcloud.com/search.
|
# boxes at https://vagrantcloud.com/search.
|
||||||
BOX = "generic/centos7"
|
BOX = "generic/centos7"
|
||||||
|
|
||||||
HOSTNAME = "tobiko"
|
|
||||||
|
|
||||||
TOX_INI_DIR = '../..'
|
TOX_INI_DIR = '../..'
|
||||||
|
|
||||||
|
TEST_DIR = File.join(File.dirname(__FILE__), 'tests')
|
||||||
|
|
||||||
|
|
||||||
# All Vagrant configuration is done below. The "2" in Vagrant.configure
|
# All Vagrant configuration is done below. The "2" in Vagrant.configure
|
||||||
# configures the configuration version (we support older styles for
|
# configures the configuration version (we support older styles for
|
||||||
@ -29,7 +29,6 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|||||||
# https://docs.vagrantup.com.
|
# https://docs.vagrantup.com.
|
||||||
|
|
||||||
config.vm.box = BOX
|
config.vm.box = BOX
|
||||||
config.vm.hostname = HOSTNAME
|
|
||||||
|
|
||||||
# Disable automatic box update checking. If you disable this, then
|
# Disable automatic box update checking. If you disable this, then
|
||||||
# boxes will only be checked for updates when the user runs
|
# boxes will only be checked for updates when the user runs
|
||||||
@ -87,8 +86,15 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|||||||
ansible.playbook = "resolv_conf.yaml"
|
ansible.playbook = "resolv_conf.yaml"
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.provision "ansible" do |ansible|
|
# Spawn a VM for each playbook in TEST_DIR
|
||||||
ansible.playbook = "tox-py38.yaml"
|
for playbook_file in Dir[File.join(TEST_DIR, 'test_*.yaml')] do
|
||||||
|
test_name = File.basename(playbook_file, '.yaml')
|
||||||
|
config.vm.define test_name do |node|
|
||||||
|
node.vm.hostname = test_name.gsub('_', '-')
|
||||||
|
node.vm.provision "ansible" do |ansible|
|
||||||
|
ansible.playbook = playbook_file
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -1,29 +1,45 @@
|
|||||||
python_release: "3.8.0"
|
|
||||||
python_version: "3.8"
|
setup_python: true
|
||||||
python_command: "python{{ python_version }}"
|
setup_pip: true
|
||||||
|
|
||||||
|
python_release: "3.7.5"
|
||||||
|
python_version: "3.7"
|
||||||
|
python_command: "python3"
|
||||||
python_name: "Python-{{ python_release }}"
|
python_name: "Python-{{ python_release }}"
|
||||||
python_prefix: "/usr/local"
|
python_prefix: "/usr/local"
|
||||||
python_executable: "{{ python_prefix }}/bin/{{ python_command }}"
|
python_executable: "{{ python_prefix }}/bin/python{{ python_version }}"
|
||||||
|
python_command_link: "{{ python_executable | dirname }}/{{ python_command }}"
|
||||||
python_url: "https://www.python.org/ftp/python/{{ python_release }}/{{ python_name }}.tgz"
|
python_url: "https://www.python.org/ftp/python/{{ python_release }}/{{ python_name }}.tgz"
|
||||||
python_tar: "{{ ansible_env.HOME }}/{{ python_url | basename }}"
|
python_tar: "{{ ansible_env.HOME }}/{{ python_url | basename }}"
|
||||||
python_src_dir: "{{ ansible_env.HOME }}/{{ python_name }}"
|
python_src_dir: "{{ ansible_env.HOME }}/{{ python_name }}"
|
||||||
python_configure_flags: "" # ""--enable-optimizations"
|
python_configure_flags: '--enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"'
|
||||||
python_profile_file: "/etc/profile.d/{{ python_name }}.sh"
|
|
||||||
python_sudoers_file: "/etc/sudoers.d/60_{{python_name}}"
|
|
||||||
|
|
||||||
pip_command: "pip{{ python_version }}"
|
pip_command: "pip3"
|
||||||
pip_executable: "{{ python_prefix }}/bin/{{ pip_command }}"
|
pip_executable: "{{ python_prefix }}/bin/{{ pip_command }}"
|
||||||
pip_url: "https://bootstrap.pypa.io/get-pip.py"
|
pip_url: "https://bootstrap.pypa.io/get-pip.py"
|
||||||
pip_installer: "{{ ansible_env.HOME }}/{{ pip_url | basename }}"
|
pip_installer: "{{ ansible_env.HOME }}/{{ pip_url | basename }}"
|
||||||
|
|
||||||
make_jobs: "{{ ansible_processor_vcpus }}"
|
make_jobs: "{{ ansible_processor_vcpus }}"
|
||||||
|
make_install_goal: "install"
|
||||||
|
|
||||||
|
bash_profile_file: "/etc/profile.d/{{ python_name }}.sh"
|
||||||
|
ldconfig_file: "/etc/ld.so.conf.d/{{ python_name }}.conf"
|
||||||
|
|
||||||
|
|
||||||
yum_install_packages:
|
yum_install_packages:
|
||||||
- "@Development tools"
|
- "@Development tools"
|
||||||
- zlib-devel
|
|
||||||
- openssl-devel
|
|
||||||
- bzip2-devel
|
- bzip2-devel
|
||||||
|
- expat-devel
|
||||||
|
- gdbm-devel
|
||||||
- libffi-devel
|
- libffi-devel
|
||||||
|
- libpcap-devel
|
||||||
|
- ncurses-devel
|
||||||
|
- openssl-devel
|
||||||
|
- readline-devel
|
||||||
|
- sqlite-devel
|
||||||
|
- tk-devel
|
||||||
|
- xz-devel
|
||||||
|
- zlib-devel
|
||||||
|
|
||||||
pip_install_base_packages:
|
pip_install_base_packages:
|
||||||
- setuptools
|
- setuptools
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
- name: check '{{ pip_command }}' command
|
|
||||||
command: "'{{ pip_command }}' --version"
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
|
|
||||||
- name: discover '{{ pip_command }}' executable path
|
|
||||||
command: "which '{{ pip_command }}'"
|
|
||||||
register: discover_pip_executable
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
|
|
||||||
- name: register '{{ pip_command }}' executable as '{{ discover_pip_executable.stdout }}'
|
|
||||||
set_fact:
|
|
||||||
pip_executable: '{{ discover_pip_executable.stdout }}'
|
|
@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
- name: check '{{ python_command }}' command
|
|
||||||
command: "'{{ python_command }}' --version"
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
- name: discover '{{ python_command }}' executable path
|
|
||||||
command: "which '{{ python_command }}'"
|
|
||||||
register: discover_python_executable
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
- name: register '{{ python_command }}' executable as '{{ discover_python_executable.stdout }}'
|
|
||||||
set_fact:
|
|
||||||
python_executable: '{{ discover_python_executable.stdout }}'
|
|
@ -1,30 +1,7 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- block:
|
- include: setup_python.yaml
|
||||||
- include: check_python.yaml
|
when: setup_python | bool
|
||||||
|
|
||||||
rescue:
|
- include: setup_pip.yaml
|
||||||
- include: setup_python.yaml
|
when: setup_pip | bool
|
||||||
- include: check_python.yaml
|
|
||||||
|
|
||||||
|
|
||||||
- block:
|
|
||||||
- include: check_pip.yaml
|
|
||||||
rescue:
|
|
||||||
- include: setup_pip.yaml
|
|
||||||
- include: check_pip.yaml
|
|
||||||
|
|
||||||
|
|
||||||
- become: yes
|
|
||||||
become_user: root
|
|
||||||
block:
|
|
||||||
- include: check_python.yaml
|
|
||||||
- include: check_pip.yaml
|
|
||||||
|
|
||||||
rescue:
|
|
||||||
- include: setup_sudo.yaml
|
|
||||||
- include: check_python.yaml
|
|
||||||
- include: check_pip.yaml
|
|
||||||
|
|
||||||
|
|
||||||
- include: update_packages.yaml
|
|
||||||
|
@ -2,10 +2,19 @@
|
|||||||
|
|
||||||
- block:
|
- block:
|
||||||
|
|
||||||
- name: check '{{ pip_executable }}' is installed
|
- name: check '{{ pip_command }}' command
|
||||||
command: "'{{ pip_executable }}' --version"
|
command: "'{{ pip_command }}' --version"
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
|
- name: discover '{{ pip_command }}' executable path
|
||||||
|
command: "which '{{ pip_command }}'"
|
||||||
|
register: discover_pip_executable
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: register '{{ pip_command }}' executable as '{{ discover_pip_executable.stdout }}'
|
||||||
|
set_fact:
|
||||||
|
pip_executable: '{{ discover_pip_executable.stdout }}'
|
||||||
|
|
||||||
rescue:
|
rescue:
|
||||||
|
|
||||||
- name: download Pip installer from '{{ pip_url }}'
|
- name: download Pip installer from '{{ pip_url }}'
|
||||||
@ -21,3 +30,31 @@
|
|||||||
- name: check Pip is installed for '{{ pip_executable }}'
|
- name: check Pip is installed for '{{ pip_executable }}'
|
||||||
command: "'{{ pip_executable }}' --version"
|
command: "'{{ pip_executable }}' --version"
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
|
- name: check '{{ pip_command }}' command
|
||||||
|
command: "'{{ pip_command }}' --version"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
- name: "ensure required Python packages are installed and up-to-date"
|
||||||
|
become: true
|
||||||
|
become_user: root
|
||||||
|
pip:
|
||||||
|
name: "{{ item }}"
|
||||||
|
executable: '{{ pip_executable }}'
|
||||||
|
state: latest
|
||||||
|
vars:
|
||||||
|
ansible_python_interpreter: '{{ python_executable }}'
|
||||||
|
when: (item | length ) > 0
|
||||||
|
loop:
|
||||||
|
- "{{ pip_install_base_packages }}"
|
||||||
|
- "{{ pip_install_packages }}"
|
||||||
|
|
||||||
|
|
||||||
|
- name: "remove '{{ pip_executable | dirname }}/pip'"
|
||||||
|
become: yes
|
||||||
|
become_user: root
|
||||||
|
file:
|
||||||
|
path: '{{ pip_executable | dirname }}/pip'
|
||||||
|
state: absent
|
||||||
|
when: pip_command != "pip"
|
||||||
|
@ -1,15 +1,20 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
|
- name: check '{{ python_command }}' command
|
||||||
- name: check '{{ python_executable }}' is installed
|
command: "'{{ python_command }}' --version"
|
||||||
shell: |
|
|
||||||
'{{ python_executable }}' --version 2>&1 | \
|
|
||||||
grep 'Python {{ python_version}}'
|
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
rescue:
|
- name: discover '{{ python_command }}' executable path
|
||||||
|
command: "which '{{ python_command }}'"
|
||||||
|
register: discover_python_executable
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: register '{{ python_command }}' executable as '{{ discover_python_executable.stdout }}'
|
||||||
|
set_fact:
|
||||||
|
python_executable: '{{ discover_python_executable.stdout }}'
|
||||||
|
|
||||||
|
rescue:
|
||||||
- name: install '{{ python_name }}' build requeirements
|
- name: install '{{ python_name }}' build requeirements
|
||||||
become: yes
|
become: yes
|
||||||
become_user: root
|
become_user: root
|
||||||
@ -42,14 +47,14 @@
|
|||||||
|
|
||||||
- name: compile '{{ python_name }}'
|
- name: compile '{{ python_name }}'
|
||||||
command:
|
command:
|
||||||
cmd: 'make -j {{ make_jobs }}'
|
cmd: "make -j '{{ make_jobs }}'"
|
||||||
chdir: '{{ python_src_dir }}'
|
chdir: '{{ python_src_dir }}'
|
||||||
|
|
||||||
- name: install '{{ python_name }}'
|
- name: install '{{ python_name }}'
|
||||||
become: yes
|
become: yes
|
||||||
become_user: root
|
become_user: root
|
||||||
command:
|
command:
|
||||||
cmd: 'make install'
|
cmd: "make '{{ make_install_goal }}'"
|
||||||
chdir: '{{ python_src_dir }}'
|
chdir: '{{ python_src_dir }}'
|
||||||
|
|
||||||
- name: check '{{ python_executable }}' is installed
|
- name: check '{{ python_executable }}' is installed
|
||||||
@ -58,20 +63,45 @@
|
|||||||
grep 'Python {{ python_version}}'
|
grep 'Python {{ python_version}}'
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
|
- name: add '{{ python_prefix }}/lib' to '{{ ldconfig_file }}'
|
||||||
|
become: yes
|
||||||
|
become_user: root
|
||||||
|
lineinfile:
|
||||||
|
path: '{{ ldconfig_file }}'
|
||||||
|
line: '{{ python_prefix }}/lib'
|
||||||
|
create: yes
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0644'
|
||||||
|
register: add_ldconfig_file
|
||||||
|
|
||||||
- name: add '{{ python_profile_file }}'
|
- name: run ldconfig after changing '{{ ldconfig_file }}'
|
||||||
become: yes
|
become: yes
|
||||||
become_user: root
|
become_user: root
|
||||||
template:
|
command: ldconfig
|
||||||
src: profile.sh.j2
|
when: add_ldconfig_file.changed
|
||||||
dest: '{{ python_profile_file }}'
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: reset ssh connection to allow environment variable changes
|
- name: add '{{ python_executable | dirname }}' to '{{ bash_profile_file }}'
|
||||||
meta: reset_connection
|
become: yes
|
||||||
|
become_user: root
|
||||||
|
lineinfile:
|
||||||
|
path: '{{ bash_profile_file }}'
|
||||||
|
line: 'PATH={{ python_executable | dirname }}:$PATH'
|
||||||
|
create: yes
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0644'
|
||||||
|
when: (python_executable | dirname) not in ansible_env.PATH.split(':')
|
||||||
|
register: add_python_dir
|
||||||
|
|
||||||
- name: check '{{ python_command }}' command
|
- name: reset ssh connection after changing '{{ python_profile_file }}'
|
||||||
command: "'{{ python_command }}' --version"
|
meta: reset_connection
|
||||||
changed_when: false
|
|
||||||
|
- name: check '{{ python_command }}' command
|
||||||
|
command: "'{{ python_command }}' --version"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: discover '{{ python_command }}' executable path
|
||||||
|
command: "which '{{ python_command }}'"
|
||||||
|
register: discover_python_executable
|
||||||
|
changed_when: false
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
- name: discover sudo secure_path
|
|
||||||
command: |
|
|
||||||
awk '($1 == "Defaults" && $2 == "secure_path"){print $NF}' /etc/sudoers
|
|
||||||
register: discover_sudo_secure_path
|
|
||||||
|
|
||||||
|
|
||||||
- name: add '{{ python_executable | dirname }}' to sudo 'secure_path'
|
|
||||||
lineinfile:
|
|
||||||
regex: '{{ discover_sudo_secure_path.stdout }}$'
|
|
||||||
path: /etc/sudoers
|
|
||||||
line:
|
|
||||||
'Defaults secure_path = {{ python_executable | dirname }}:{{ discover_sudo_secure_path.stdout }}'
|
|
||||||
validate: '/usr/sbin/visudo -cf %s'
|
|
||||||
when:
|
|
||||||
- (python_executable | dirname) not in discover_sudo_secure_path.stdout
|
|
@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
- name: "ensure required Python packages are installed and up-to-date"
|
|
||||||
become: true
|
|
||||||
become_user: root
|
|
||||||
pip:
|
|
||||||
name: "{{ item }}"
|
|
||||||
executable: '{{ pip_executable }}'
|
|
||||||
state: latest
|
|
||||||
vars:
|
|
||||||
ansible_python_interpreter: '{{ python_executable }}'
|
|
||||||
when: (item | length ) > 0
|
|
||||||
loop:
|
|
||||||
- "{{ pip_install_base_packages }}"
|
|
||||||
- "{{ pip_install_packages }}"
|
|
@ -1 +0,0 @@
|
|||||||
PATH={{ python_executable | dirname }}:$PATH
|
|
@ -1 +0,0 @@
|
|||||||
Defaults secure_path = {{ secure_path }}
|
|
1
roles/python/tests/.gitignore
vendored
Normal file
1
roles/python/tests/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
test_py38/
|
83
roles/python/tests/test_py38.yaml
Normal file
83
roles/python/tests/test_py38.yaml
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: install default system python and pip packages
|
||||||
|
become: yes
|
||||||
|
yum:
|
||||||
|
state: present
|
||||||
|
name:
|
||||||
|
- python
|
||||||
|
- python-pip
|
||||||
|
|
||||||
|
- name: check default command paths
|
||||||
|
command: "which '{{ item.command }}'"
|
||||||
|
register: which_command
|
||||||
|
changed_when: false
|
||||||
|
failed_when: 'which_command.stdout != item.path'
|
||||||
|
loop:
|
||||||
|
- command: python
|
||||||
|
path: /usr/bin/python
|
||||||
|
- command: pip
|
||||||
|
path: /usr/bin/pip
|
||||||
|
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- role: "{{ playbook_dir }}/../../python"
|
||||||
|
vars:
|
||||||
|
python_version: "3.8"
|
||||||
|
python_release: "3.8.0"
|
||||||
|
pip_install_packages:
|
||||||
|
- virtualenv
|
||||||
|
- tox
|
||||||
|
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: check command paths
|
||||||
|
command: "which '{{ item.command }}'"
|
||||||
|
register: which_command
|
||||||
|
changed_when: false
|
||||||
|
failed_when: 'which_command.stdout != item.path'
|
||||||
|
loop:
|
||||||
|
- command: python
|
||||||
|
path: /usr/bin/python
|
||||||
|
- command: pip
|
||||||
|
path: /usr/bin/pip
|
||||||
|
- command: python3
|
||||||
|
path: /usr/local/bin/python3
|
||||||
|
- command: python3.8
|
||||||
|
path: /usr/local/bin/python3.8
|
||||||
|
- command: pip3
|
||||||
|
path: /usr/local/bin/pip3
|
||||||
|
- command: pip3.8
|
||||||
|
path: /usr/local/bin/pip3.8
|
||||||
|
|
||||||
|
- name: run Tobiko test cases
|
||||||
|
shell:
|
||||||
|
cmd: tox -e py38 2>&1
|
||||||
|
chdir: /vagrant
|
||||||
|
register: run_test_cases
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: produce test reports
|
||||||
|
shell:
|
||||||
|
cmd: tox -e report 2>&1
|
||||||
|
chdir: /vagrant
|
||||||
|
|
||||||
|
- name: get test reports
|
||||||
|
fetch:
|
||||||
|
src: "/vagrant/tobiko_results.html"
|
||||||
|
dest: "{{ playbook_dir }}/test_py38/test_results.html"
|
||||||
|
flat: yes
|
||||||
|
|
||||||
|
- name: check test cases result
|
||||||
|
assert:
|
||||||
|
that: run_test_cases.rc == 0
|
||||||
|
fail_msg: |
|
||||||
|
Test cases failed:
|
||||||
|
{{ run_test_cases.stdout }}
|
||||||
|
success_msg: |
|
||||||
|
Test cases passed
|
@ -1,49 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
- hosts: all
|
|
||||||
roles:
|
|
||||||
|
|
||||||
- role: .
|
|
||||||
vars:
|
|
||||||
python_version: "3.8"
|
|
||||||
python_release: "3.8.0"
|
|
||||||
pip_install_packages:
|
|
||||||
- virtualenv
|
|
||||||
- tox
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
|
|
||||||
- name: run test cases
|
|
||||||
shell:
|
|
||||||
cmd: tox -e py38
|
|
||||||
chdir: /vagrant
|
|
||||||
register: run_test_cases
|
|
||||||
ignore_errors: true
|
|
||||||
|
|
||||||
- name: Install Python devel package required to compile tox reports
|
|
||||||
yum:
|
|
||||||
name: python-devel
|
|
||||||
state: latest
|
|
||||||
|
|
||||||
- name: produce test reports
|
|
||||||
shell:
|
|
||||||
cmd: tox -e report 2>&1
|
|
||||||
chdir: /vagrant
|
|
||||||
|
|
||||||
- name: get test reports
|
|
||||||
fetch:
|
|
||||||
src: "/vagrant/{{ item }}"
|
|
||||||
dest: "{{ playbook_dir }}/tox-py38/{{ inventory_hostname }}/{{ item }}"
|
|
||||||
flat: yes
|
|
||||||
loop:
|
|
||||||
- tobiko_results.html
|
|
||||||
|
|
||||||
- name: check test cases result
|
|
||||||
assert:
|
|
||||||
that: run_test_cases.rc == 0
|
|
||||||
fail_msg: |
|
|
||||||
Test cases failed
|
|
||||||
{{ run_test_cases.stdout }}
|
|
||||||
success_msg: |
|
|
||||||
Test cases passed
|
|
||||||
{{ run_test_cases.stdout }}
|
|
Loading…
Reference in New Issue
Block a user