#1 Add CI tests using the standard test interface
Merged 2 years ago by lsm5. Opened 2 years ago by yshapovalov.
git://fedorapeople.org/~yshapovalov/buildah add_tests  into  master

add tests
Yevhenii Shapovalov • 2 years ago  
tests/README.md
file added
+3

@@ -0,0 +1,3 @@

+ Buildah - a tool which facilitates building OCI container images

+ 

+ When executing the buildah bud testing, it will cost much time as it is building image in the background.

tests/binary.yml
file added
+10

@@ -0,0 +1,10 @@

+ ---

+ # test buildah

+ - hosts: all

+   become: true

+   tags:

+     - classic

+   roles:

+     - binary

+     - prepare-env

+     - cli

tests/callback_plugins/log.py
file added
+193

@@ -0,0 +1,193 @@

+ # This program is free software: you can redistribute it and/or modify

+ # it under the terms of the GNU General Public License as published by

+ # the Free Software Foundation, either version 3 of the License, or

+ # (at your option) any later version.

+ #

+ # This program is distributed in the hope that it will be useful,

+ # but WITHOUT ANY WARRANTY; without even the implied warranty of

+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

+ # GNU General Public License for more details.

+ #

+ # You should have received a copy of the GNU General Public License

+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.

+ 

+ # Inspired from: https://github.com/redhat-openstack/khaleesi/blob/master/plugins/callbacks/human_log.py

+ # Further improved support Ansible 2.0

+ 

+ from __future__ import (absolute_import, division, print_function)

+ __metaclass__ = type

+ 

+ try:

+     from ansible.plugins.callback import CallbackBase

+     BASECLASS = CallbackBase

+ except ImportError: # < ansible 2.1

+     BASECLASS = DEFAULT_MODULE.CallbackModule

+ 

+ import os, sys

+ reload(sys)

+ sys.setdefaultencoding('utf-8')

+ 

+ try:

+     import simplejson as json

+ except ImportError:

+     import json

+ 

+ # Fields to reformat output for

+ FIELDS = ['cmd', 'command', 'start', 'end', 'delta', 'msg', 'stdout',

+           'stderr', 'results', 'failed', 'reason']

+ 

+ 

+ class CallbackModule(CallbackBase):

+ 

+     """

+     Ansible callback plugin for human-readable result logging

+     """

+     CALLBACK_VERSION = 2.0

+     CALLBACK_TYPE = 'notification'

+     CALLBACK_NAME = 'human_log'

+     CALLBACK_NEEDS_WHITELIST = False

+ 

+     def __init__(self, *args, **kwargs):

+         # pylint: disable=non-parent-init-called

+         BASECLASS.__init__(self, *args, **kwargs)

+         self.artifacts = './artifacts'

+         self.result_file = os.path.join(self.artifacts, 'test.log')

+         if not os.path.exists(self.artifacts):

+             os.makedirs(self.artifacts)

+         with open(self.result_file, 'w'): pass

+ 

+     def human_log(self, data, taskname, status):

+         if type(data) == dict:

+             with open('./artifacts/test.log', 'a') as f:

+                 f.write("\n\n")

+                 f.write("# TASK NAME: %s \n" % taskname)

+                 f.write("# STATUS: %s \n\n" % status)

+                 f.write("Outputs: \n\n")

+             for field in FIELDS:

+                 no_log = data.get('_ansible_no_log', False)

+                 if field in data.keys() and data[field] and no_log != True:

+                     output = self._format_output(data[field])

+                     # The following two lines are a hack to make it work with UTF-8 characters

+                     if type(output) != list:

+                         output = output.encode('utf-8', 'replace')

+                     #self._display.display("\n{0}:\n{1}".format(field, output.replace("\\n","\n")), log_only=False)

+                     with open('./artifacts/test.log', 'a') as f:

+                         f.write("{0}: {1}".format(field, output.replace("\\n","\n"))+"\n")

+ 

+ 

+     def _format_output(self, output):

+         # Strip unicode

+         if type(output) == unicode:

+             output = output.encode(sys.getdefaultencoding(), 'replace')

+ 

+         # If output is a dict

+         if type(output) == dict:

+             return json.dumps(output, indent=2, sort_keys=True)

+ 

+         # If output is a list of dicts

+         if type(output) == list and type(output[0]) == dict:

+             # This gets a little complicated because it potentially means

+             # nested results, usually because of with_items.

+             real_output = list()

+             for index, item in enumerate(output):

+                 copy = item

+                 if type(item) == dict:

+                     for field in FIELDS:

+                         if field in item.keys():

+                             copy[field] = self._format_output(item[field])

+                 real_output.append(copy)

+             return json.dumps(output, indent=2, sort_keys=True)

+ 

+         # If output is a list of strings

+         if type(output) == list and type(output[0]) != dict:

+             return '\n'.join(output)

+ 

+         # Otherwise it's a string, (or an int, float, etc.) just return it

+         return str(output)

+ 

+     ####### V2 METHODS ######

+     def v2_on_any(self, *args, **kwargs):

+         pass

+ 

+     def v2_runner_on_failed(self, result, ignore_errors=False):

+         self.human_log(result._result, result._task.name, "fail")

+ 

+     def v2_runner_on_ok(self, result):

+         self.human_log(result._result, result._task.name, "pass")

+ 

+     def v2_runner_on_skipped(self, result):

+         pass

+ 

+     def v2_runner_on_unreachable(self, result):

+         self.human_log(result._result, result._task.name, "unreachable")

+ 

+     def v2_runner_on_no_hosts(self, task):

+         pass

+ 

+     def v2_runner_on_async_poll(self, result):

+         self.human_log(result._result, result._task.name, "")

+ 

+     def v2_runner_on_async_ok(self, host, result):

+         self.human_log(result._result, result._task.name, "pass")

+ 

+     def v2_runner_on_async_failed(self, result):

+         self.human_log(result._result, result._task.name, "fail")

+ 

+     def v2_playbook_on_start(self, playbook):

+         pass

+ 

+     def v2_playbook_on_notify(self, result, handler):

+         pass

+ 

+     def v2_playbook_on_no_hosts_matched(self):

+         pass

+ 

+     def v2_playbook_on_no_hosts_remaining(self):

+         pass

+ 

+     def v2_playbook_on_task_start(self, task, is_conditional):

+         pass

+ 

+     def v2_playbook_on_vars_prompt(self, varname, private=True, prompt=None,

+                                    encrypt=None, confirm=False, salt_size=None,

+                                    salt=None, default=None):

+         pass

+ 

+     def v2_playbook_on_setup(self):

+         pass

+ 

+     def v2_playbook_on_import_for_host(self, result, imported_file):

+         pass

+ 

+     def v2_playbook_on_not_import_for_host(self, result, missing_file):

+         pass

+ 

+     def v2_playbook_on_play_start(self, play):

+         pass

+ 

+     def v2_playbook_on_stats(self, stats):

+         pass

+ 

+     def v2_on_file_diff(self, result):

+         pass

+ 

+     def v2_playbook_on_item_ok(self, result):

+         pass

+ 

+     def v2_playbook_on_item_failed(self, result):

+         pass

+ 

+     def v2_playbook_on_item_skipped(self, result):

+         pass

+ 

+     def v2_playbook_on_include(self, included_file):

+         pass

+ 

+     def v2_playbook_item_on_ok(self, result):

+         pass

+ 

+     def v2_playbook_item_on_failed(self, result):

+         pass

+ 

+     def v2_playbook_item_on_skipped(self, result):

+         pass

tests/roles/binary/tasks/buildah.yml
file added
+15

@@ -0,0 +1,15 @@

+ ---

+ - name: pull latest buildah source from github

+   git:

+     repo: https://github.com/projectatomic/buildah

+     dest: "{{ HOME }}/go/src/github.com/projectatomic/buildah"

+ 

+ - name: make binary for buildah

+   command: make

+   args:

+     chdir: "{{ HOME }}/go/src/github.com/projectatomic/buildah"

+ 

+ - name: install buildah to /usr/local/bin

+   command: make install

+   args:

+     chdir: "{{ HOME }}/go/src/github.com/projectatomic/buildah"

tests/roles/binary/tasks/main.yml
file added
+4

@@ -0,0 +1,4 @@

+ ---

+ - import_tasks: runc.yml

+ 

+ - import_tasks: buildah.yml

tests/roles/binary/tasks/runc.yml
file added
+16

@@ -0,0 +1,16 @@

+ ---

+ - name: pull latest runc source from github

+   git:

+     repo: https://github.com/opencontainers/runc

+     dest: "{{ HOME }}/go/src/github.com/opencontainers/runc"

+ 

+ - name: building runc for buildah runtime

+   command: make

+   args:

+     chdir: "{{ HOME }}/go/src/github.com/opencontainers/runc"

+ 

+ - name: copy runc to /usr/bin

+   copy: 

+     remote_src: True

+     src: "{{ HOME }}/go/src/github.com/opencontainers/runc/runc"

+     dest: /usr/bin/runc

tests/roles/cli/tasks/add.yaml
file added
+41

@@ -0,0 +1,41 @@

+ ---

+ - name: buildah add

+   command: buildah add nginxc /tmp/buildah/bud/Dockerfile

+ 

+ - name: check buildah add

+   command: ls {{mount.stdout}}/Dockerfile

+ 

+ - name: buildah add to destination

+   command: buildah add nginxc /tmp/buildah/bud/Dockerfile /home

+ 

+ - name: check buildah add to

+   command: ls {{mount.stdout}}/home/Dockerfile

+ 

+ - name: buildah add URL

+   command: buildah add nginxc https://github.com/projectatomic/buildah/raw/master/README.md

+ 

+ - name: check buildah add URL

+   command: ls {{mount.stdout}}/README.md

+ 

+ - name: buildah add URL to destination

+   command: buildah add nginxc https://github.com/projectatomic/buildah/raw/master/README.md /home

+ 

+ - name: check buildah add URL to destination

+   command: ls {{mount.stdout}}/home/README.md

+ 

+ - name: Download buildah README.md

+   get_url:

+     url: https://github.com/projectatomic/buildah/raw/master/README.md

+     dest: /tmp/buildah/

+ 

+ - name: buildah add dir

+   command: buildah add nginxc /tmp

+ 

+ - name: check buildah add dir

+   command: ls {{mount.stdout}}/buildah/README.md

+ 

+ - name: buildah add dir to destination

+   command: buildah add nginxc /tmp /home

+ 

+ - name: check buildah add dir to destination

+   command: ls {{mount.stdout}}/home/buildah/README.md

tests/roles/cli/tasks/bud.yaml
file added
+24

@@ -0,0 +1,24 @@

+ ---

+ - name: buildah bud localfile

+   command: buildah bud -t testing/nginx --pull /tmp/buildah/bud

+ 

+ - name: check bud images with buildah images command

+   shell: buildah images | grep testing/nginx

+ 

+ - name: buildah bud -f localfile 

+   command: buildah bud -t testing/nginx2 -f /tmp/buildah/bud/Dockerfile .

+ 

+ - name: buildah bud URL

+   command: buildah bud -t testing/nginx3 http://localhost/bud/Dockerfile.tar.gz

+ 

+ - name: buildah build-using-dockerfile localfile

+   command: buildah build-using-dockerfile -t testing/nginx4 /tmp/buildah/bud

+ 

+ - name: buildah build-using-dockerfile -f localfile

+   command: buildah build-using-dockerfile -t testing/nginx5 --file /tmp/buildah/bud/Dockerfile .

+ 

+ - name: buildah build-using-dockerfile URL

+   command: buildah build-using-dockerfile --tag testing/nginx6 http://localhost/bud/Dockerfile.tar.gz

+ 

+ - name: buildah rmi

+   command: buildah rmi testing/nginx{2..6}

tests/roles/cli/tasks/cleanup.yaml
file added
+4

@@ -0,0 +1,4 @@

+ ---

+ - name: remove buildah containers after testing

+   command: buildah rm busybox nginxc nginxc-2

+   ignore_errors: true

tests/roles/cli/tasks/config.yaml
file added
+16

@@ -0,0 +1,16 @@

+ ---

+ - name: buildah config workingdir 

+   command: buildah config --workingdir /opt nginxc

+ 

+ - name: get buildah config workingdir

+   command: buildah run nginxc "pwd"

+   register: checkworkingdir

+   failed_when: "'/opt' not in checkworkingdir.stdout"

+ 

+ - name: buildah config env

+   command: buildah config --env foo=bar nginxc

+ 

+ - name: get buildah config env

+   command: buildah run nginxc env

+   register: env

+   failed_when: "'foo=bar' not in env.stdout"

tests/roles/cli/tasks/containers.yaml
file added
+18

@@ -0,0 +1,18 @@

+ ---

+ - name: buildah containers

+   shell: buildah containers | grep nginxc

+ 

+ - name: buildah containers -q

+   shell: buildah containers -q | grep -v nginxc

+ 

+ - name: buildah containers -n

+   shell: buildah containers -n | grep -v NAME

+ 

+ - name: buildah containers --notruncate

+   command: buildah containers -- notruncate

+ 

+ - name: buildah containers --all

+   command: buildah containers --all 

+ 

+ - name: buildah containers --json

+   command: buildah containers --json

tests/roles/cli/tasks/copy.yaml
file added
+41

@@ -0,0 +1,41 @@

+ ---

+ - name: buildah copy

+   command: buildah copy nginxc-2 /tmp/buildah/bud/Dockerfile

+ 

+ - name: check buildah copy

+   command: ls {{mount.stdout}}/Dockerfile

+ 

+ - name: buildah copy to destination

+   command: buildah copy nginxc-2 /tmp/buildah/bud/Dockerfile /home

+ 

+ - name: check buildah copy to

+   command: ls {{mount.stdout}}/home/Dockerfile

+ 

+ - name: buildah copy URL

+   command: buildah copy nginxc-2 https://github.com/projectatomic/buildah/raw/master/README.md

+ 

+ - name: check buildah copy URL

+   command: ls {{mount.stdout}}/README.md

+ 

+ - name: buildah copy URL to destination

+   command: buildah copy nginxc-2 https://github.com/projectatomic/buildah/raw/master/README.md /home

+ 

+ - name: check buildah copy URL to destination

+   command: ls {{mount.stdout}}/home/README.md

+ 

+ - name: Download buildah README.md

+   get_url:

+     url: https://github.com/projectatomic/buildah/raw/master/README.md

+     dest: /tmp/buildah/

+ 

+ - name: buildah copy dir

+   command: buildah copy nginxc-2 /tmp/buildah

+ 

+ - name: check buildah copy dir

+   command: ls {{mount.stdout}}/README.md

+ 

+ - name: buildah copy dir to destination

+   command: buildah copy nginxc-2 /tmp /home

+ 

+ - name: check buildah copy dir to destination

+   command: ls {{mount.stdout}}/home/buildah/README.md

tests/roles/cli/tasks/from.yaml
file added
+12

@@ -0,0 +1,12 @@

+ ---

+ - name: buildah from pull

+   command: buildah from --pull nginx

+ 

+ - name: buildah from pull always

+   command: buildah from --pull-always nginx

+ 

+ - name: buildah from with name

+   command: buildah from --name nginx nginx

+ 

+ - name: clean from testings

+   command: buildah delete nginx nginx-working-container nginx-working-container-2

tests/roles/cli/tasks/main.yaml
file added
+44

@@ -0,0 +1,44 @@

+ ---

+ - block:

+   - name: prepare containers nginxc

+     import_tasks: prepare-containers.yaml

+     tags:

+       - nginxc

+ 

+   - name: buildah containers

+     import_tasks: containers.yaml

+     tags:

+       - ctr

+ 

+   - name: buildah from

+     import_tasks: from.yaml

+     tags:

+       - from

+ 

+   - name: buildah mount

+     import_tasks: mount.yaml

+     tags:

+       - mount

+ 

+   - name: buildah tag

+     import_tasks: tag.yaml

+     tags:

+       - tag

+ 

+   - name: buildah config 

+     import_tasks: config.yaml

+     tags:

+       - config

+ 

+   - name: buildah push

+     import_tasks: push.yaml

+     tags:

+       - push 

+ 

+   - name: buildah build-using-dockerfile

+     import_tasks: bud.yaml

+     tags:

+       - bud

+ 

+   always:

+   - import_tasks: cleanup.yaml

tests/roles/cli/tasks/mount.yaml
file added
+27

@@ -0,0 +1,27 @@

+ ---

+ - name: buildah mount container nginxc

+   command: buildah mount nginxc

+   register: mount

+ 

+ - name: buildah mount without args will list all mounts

+   shell: buildah mount | grep storage

+ 

+ - name: buildah add

+   import_tasks: add.yaml

+   tags:

+     - add

+ 

+ - name: buildah umount

+   command: buildah umount nginxc

+ 

+ - name: buildah mount --notruncate

+   command: buildah mount --notruncate nginxc-2

+   register: mount

+ 

+ - name: buildah copy

+   import_tasks: copy.yaml

+   tags:

+     - copy

+ 

+ - name: buildah unmount

+   command: buildah unmount nginxc-2

tests/roles/cli/tasks/prepare-containers.yaml
file added
+6

@@ -0,0 +1,6 @@

+ ---

+ - name: prepare container nginxc for later testing

+   command: buildah from --pull --name nginxc nginx

+ 

+ - name: prepare container nginxc-2 for later testing

+   command: buildah from --name nginxc-2 nginx

tests/roles/cli/tasks/push.yaml
file added
+60

@@ -0,0 +1,60 @@

+ ---

+ - name: pull busybox before push

+   command: buildah from --pull --name busybox busybox

+ 

+ - name: buildah push image to containers-storage

+   command: buildah push docker.io/busybox:latest containers-storage:docker.io/busybox:latest

+ 

+ - name: buildah push image to docker daemon

+   command: buildah push docker.io/busybox:latest docker-daemon:docker.io/buildah/busybox:latest

+ 

+ - name: check buildah/busybox exist in docker daemon

+   command: docker images docker.io/buildah/busybox:latest

+ 

+ - name: buildah push image to docker local registry

+   command: buildah push --tls-verify=false docker.io/busybox:latest docker://localhost:5000/buildah/busybox:latest

+ 

+ - name: create /tmp/buildah/busybox

+   file: path=/tmp/buildah/docker state=directory

+ 

+ - name: rm busybox.tar because docker archive does not support modify

+   file: path=/tmp/buildah/docker/busybox.tar state=absent

+ 

+ - name: buildah push image to docker-archive

+   command: buildah push docker.io/busybox:latest docker-archive:/tmp/buildah/docker/busybox.tar:latest

+ 

+ - name: check docker archive exist

+   file: path=/tmp/buildah/docker/busybox.tar state=file

+ 

+ - name: create /tmp/buildah/dir

+   file: path=/tmp/buildah/dir state=directory

+ 

+ - name: buildah push image to dir

+   command: buildah push docker.io/busybox:latest dir:/tmp/buildah/dir

+ 

+ - name: create /tmp/buildah/oci

+   file: path=/tmp/buildah/oci state=directory

+ 

+ - name: buildah push image to oci

+   command: buildah push docker.io/busybox:latest oci:/tmp/buildah/oci:latest

+ 

+ - name: buildah push image to oci archive

+   command: buildah push docker.io/busybox:latest oci-archive:/tmp/buildah/oci/busybox.tar:latest

+ 

+ - name: check oci archive exist

+   file: path=/tmp/buildah/oci/busybox.tar state=file

+ 

+ - name: init default ostree repo

+   command: ostree --repo=/ostree/repo init

+ 

+ - name: create /tmp/buildah/ostree/repo

+   file: path=/tmp/buildah/ostree/repo state=directory

+ 

+ - name: init tmp ostree repo

+   command: ostree --repo=/tmp/buildah/ostree/repo init

+ 

+ - name: buildah push image to ostree

+   command: buildah push docker.io/busybox:latest ostree:busybox:latest

+ 

+ - name: buildah push image to non-default ostree repo

+   command: buildah push docker.io/busybox:latest ostree:busybox:latest@/tmp/buildah/ostree/repo

tests/roles/cli/tasks/tag.yaml
file added
+43

@@ -0,0 +1,43 @@

+ ---

+ - name: buildah from --pull busybox

+   command: buildah from busybox

+ 

+ - name: buildah tag by name

+   command: buildah tag busybox busybox1

+ 

+ - name: check busybox1 exists

+   shell: buildah images | grep busybox1

+ 

+ - name: get image id

+   command: buildah images -q busybox1

+   register: busyboxID

+ 

+ - name: buildah tag by ID

+   command: buildah tag {{busyboxID.stdout}} busybox2

+ 

+ - name: check busybox2 exists

+   shell: buildah images | grep busybox2

+ 

+ - name: buildah from tagged image

+   command: buildah from busybox1

+ 

+ - name: mount the container which using tagged image

+   command: buildah mount busybox1-working-container

+ 

+ - name: buildah umount the container

+   command: buildah umount  busybox1-working-container

+ 

+ - name: buildah rm container busybox

+   command: buildah rm busybox-working-container

+ 

+ - name: buildah rm container busybox1

+   command: buildah rm busybox1-working-container

+ 

+ - name: buildah rmi tagged image

+   command: buildah rmi busybox{1..2}

+ 

+ - name: check image busybox is not deleted

+   shell: buildah images | grep busybox 

+ 

+ - name: buildah rmi image busybox

+   command: buildah rmi busybox

tests/roles/prepare-env/tasks/main.yml
file added
+41

@@ -0,0 +1,41 @@

+ ---

+ - name: install required packages for testings

+   package:

+     name: "{{ item }}"

+     state: latest

+   with_items:

+     - docker

+     - python-docker-py

+     - buildah

+     - docker-distribution

+     - ostree

+     - httpd 

+     - libselinux-python

+ 

+ - name: start docker daemon

+   systemd: state=started name=docker

+ 

+ - name: create /ostree/repo

+   file: path=/ostree/repo state=directory

+ 

+ - name: ensure docker-distribution service is running

+   systemd: state=started name=docker-distribution

+ 

+ - name: creates directory buildah testing

+   file: path=/tmp/buildah/bud state=directory

+ 

+ - name: download Dockerfile 

+   get_url:

+     url: https://github.com/fedora-cloud/Fedora-Dockerfiles/raw/master/nginx/Dockerfile

+     dest: /tmp/buildah/bud/Dockerfile

+ 

+ - name: creates a bud directory in /var/www/html

+   file: path=/var/www/html/bud state=directory

+ 

+ - name: archive dockerfile into httpd directory

+   command: tar zcvf /var/www/html/bud/Dockerfile.tar.gz Dockerfile

+   args:

+     chdir: /tmp/buildah/bud

+ 

+ - name: start httpd service

+   systemd: state=started name=httpd

tests/roles/tear-down/tasks/main.yml
file added
+6

@@ -0,0 +1,6 @@

+ ---

+ - name: stop docker-distribution service

+   systemd: state=stopped name=docker-distribution

+ 

+ - name: stop httpd service

+   systemd: state=stopped name=httpd

tests/rpm.yml
file added
+9

@@ -0,0 +1,9 @@

+ ---

+ # test buildah

+ - hosts: all

+   become: true

+   tags:

+     - classic

+   roles:

+     - prepare-env

+     - cli

tests/test_binary.sh
file added
+1

@@ -0,0 +1,1 @@

+ ansible-playbook -i inventory binary.yml "$@"

tests/test_rpm.sh
file added
+1

@@ -0,0 +1,1 @@

+ ansible-playbook -i inventory buildah_rpm.yml "$@"

tests/tests.yml
file added
+12

@@ -0,0 +1,12 @@

+ ---

+ # test buildah

+ - hosts: localhost

+   become: true

+   tags:

+     - classic

+   roles:

+     - prepare-env

+     - role: cli

+       tags:

+         - cli

+     - tear-down

no initial comment

Justification

Adds tests according to the CI wiki specifically the standard test interface in the spec.

The playbook includes Tier1 level test cases that have been tested in the following contexts and is passing reliably: Classic. Test logs are stored in the artifacts directory.

The following steps are used to execute the tests using the standard test interface:

Test enveronment

Make sure you have installed packages from the spec

# rpm -q ansible python2-dnf libselinux-python standard-test-roles \
ansible-2.4.1.0-2.fc27.noarch
python2-dnf-2.7.5-1.fc27.noarch
libselinux-python-2.7-2.fc27.x86_64
standard-test-roles-2.5-1.fc27.noarch

Run tests for Classic

# export TEST_SUBJECTS=
# sudo ansible-playbook --tags classic tests.yml

TASK [tear-down : stop httpd service] *************************
changed: [localhost]

PLAY RECAP ********************************
localhost : ok=102 changed=97 unreachable=0 failed=0

```

Notes

Tests will be enabled in CI, yet gating is currently disabled, so nothing will change. Tests will run on each dist-git commit, they are not triggered on koji builds and if you are using FMN, it should notify you of failures normally.

The RH QE maintainer contact in case you have questions: yhsapova@redhat.com
The idea is that these tests become yours just as you're maintaining the package, there will of course be people around if you have questions or troubles.

so iiuc, this doesn't mess with the standard rpm build process, is that correct?

@nalin @dwalsh ptal

LGTM with the caveat that I'm not quite familiar with tests/* but it's well isolated from the rpm process so I choose to trust @yshapovalov and unblock him :)

Merging...

HTH.

Pull-Request has been merged by lsm5

2 years ago