Name: ptef
Version: 1.0.2.g4271e10
Release: 1%{?dist}
Summary: Portable Test Execution Framework

License: MIT
URL: https://github.com/comps/ptef
Source: ptef-1.0.2.g4271e10.tar.gz

# >1 on non-native (emulated) hw platforms in mock/copr,
# https://rpm-software-management.github.io/mock/Release-Notes-2.11
%if 0%{?_platform_multiplier} <= 1
%global running_on_native 1
%else
%global running_on_native 0
%endif

# required for python rpm macros to work
BuildRequires: python3-devel

%if %{running_on_native} && 0%{?!skip_tests:1}
BuildRequires: valgrind
BuildRequires: python3
%endif

BuildRequires: gcc
BuildRequires: make
BuildRequires: bash-devel
BuildRequires: asciidoctor

Recommends: bash
Recommends: python3

%description
A simple (KISS) specification and an example implementation of a test "runner"
framework for system testing and/or integration and execution of test suites.

The "portable" refers to its inspiration from POSIX concepts and C API - the
specification can be implemented purely using POSIX.1-2008 and the reference
implementation does so (no GNU extensions).

%changelog
* Wed May 03 2023 Jiri Jaburek <comps@nomail.dom> - 1.0.2.g4271e10-1
- include bash/version.h to make DEFAULT_COMPAT_LEVEL available

* Mon Jun 27 2022 Jiri Jaburek <comps@nomail.dom> - 1.0.1.g1374fd1-1
- don't run valgrind tests on non-native CPU

* Mon Jun 27 2022 Jiri Jaburek <comps@nomail.dom> - 1.0.0.g57b641c-1
- add video links for quick {{{PTEF_CHANGELOG}}} long intros into the main README

* Mon Jun 27 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.216.gc9bb902-1
- catch internal valgrind failure in the test suite

* Mon Jun 27 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.215.gc3504e5-1
- don't echo the entire specfile during build_versioned_srpm

* Fri Jun 24 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.214.g3abf729-1
- unset PTEF_SHELL for the actual spawned shell

* Wed Jun 22 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.213.gab100c4-1
- add a standalone_simple contrib example

* Tue Jun 21 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.212.ge1a6796-1
- don't run bash/python tests on 32bit multilib

* Mon Jun 20 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.211.gdfeb841-1
- use CFLAGS even for linking

* Mon Jun 20 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.210.g4113f92-1
- replace TEST_VARIANT with a script getter

* Mon Jun 20 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.209.g48b9d30-1
- rename misc/exit_code_sanity to exit_code_mapping

* Fri Jun 17 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.208.g096bb57-1
- check tests for FAIL instead of diffing results

* Fri Jun 17 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.207.g717605a-1
- run ptef_shell test only where realpath is available

* Fri Jun 17 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.206.gd6017eb-1
- print test logs to output with TEST_PRINT_LOGS defined

* Fri Jun 17 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.205.g3ce4afa-1
- make report/locking/ use signals instead of a named pipe

* Thu Jun 16 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.204.g780625f-1
- move tests/bin/list-fds to a test-specific dir

* Thu Jun 16 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.203.g80bc274-1
- run limited tests on rhel7/rhel6 too

* Thu Jun 16 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.202.ge03f89e-1
- split results-reference.log per-variant

* Thu Jun 16 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.201.g7dd0cc9-1
- don't run the lock-waiting tests via valgrind due to SIGTERM

* Thu Jun 16 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.200.g085f8be-1
- print out valgrind errors to console in tests

* Wed Jun 15 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.199.gf8a527a-1
- sort test results via a known LC_COLLATE before comparison

* Wed Jun 15 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.198.g37188fa-1
- don't run misc/open_fds test under valgrind

* Wed Jun 15 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.197.g9ea7223-1
- rewrite tests into individual script files

* Wed Jun 15 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.196.gceb72dc-1
- adjust tests for libptef.so.0.0 instead of .so.0

* Wed Jun 15 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.195.g782b0a8-1
- run tests in specfiles by default

* Tue Jun 14 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.194.g2f87cff-1
- make git ignore unix ownership of the repo, in mock/copr

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.193.g8869657-1
- misc examples and related README fixes

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.192.gb5cb40f-1
- add a "No dry run mode" to ptef.adoc Rationale

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.191.gb6323fd-1
- add .gitignore files for examples (where possible)

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.190.g8c9b0f9-1
- move examples/contrib/nested-tests-dir description into a README

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.189.g70a96ea-1
- minor clarifications in ptef.adoc

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.188.g2ce2806-1
- support running tests with PTEF_RUN

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.187.g3064801-1
- rename missed bash something() -> function something

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.186.g43f8e33-1
- disable valgrind for tests where fork()ed child does exit(1)

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.185.g80abfd6-1
- make ltp example work in containers

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.184.gae4902a-1
- fix up tests and examples dependencies

* Sun Jun 12 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.183.g4a6cd01-1
- remove symbol versioning

* Tue Feb 01 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.182.g7270e41-1
- add a runconf-based contrib example

* Tue Feb 01 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.181.g401f28d-1
- fix branch name in standalone example

* Tue Feb 01 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.180.g1f5b79a-1
- split exit code example to 15-nonstandard

* Sat Jan 08 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.179.g6dac646-1
- Revert python RunnerCLI addition

* Thu Jan 06 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.178.ga18be8c-1
- add ptef-report -c to ptef-runner as well

* Thu Jan 06 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.177.g7687f53-1
- add runner CLI handling to ptef.py, emulating C-based CLI

* Thu Jan 06 2022 Jiri Jaburek <comps@nomail.dom> - 0.7.176.g2950d2b-1
- add customizable exit-code-to-status mapping

* Tue Oct 19 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.175.g0b59164-1
- split rhel9.spec out of fedora.spec, remove asciidoctor

* Tue Oct 19 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.174.g0993688-1
- use override for setting CFLAGS/LDFLAGS

* Tue Oct 19 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.173.g41beff2-1
- add contrib/standalone example

* Tue Oct 19 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.172.g12c289d-1
- add environment-checking and nested-tests-dir examples

* Wed Oct 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.171.g5e07ed6-1
- use RPM_LD_FLAGS for RHEL spec files too

* Wed Oct 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.170.g00e372b-1
- use RPM_LD_FLAGS, pass LDFLAGS when building cli

* Tue Oct 05 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.169.g86e430c-1
- install git in .copr/Makefile

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.168.g30144ef-1
- add extra contrib/ examples

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.167.gbd9224e-1
- add a test for parallel_jobs_extrajobs

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.166.gbc349a6-1
- add -pie -Wl,-z,now to spec files directly

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.165.g6f144a2-1
- split CFLAGS/LDFLAGS handling to allow for -pie / -fPIE / -Wl,-z,now

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.164.g07d15ab-1
- remove __thread from ptef_status_colors

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.163.g62d9c51-1
- reuse rhel7.6.spec as rhel6.spec

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.162.g32d8720-1
- remove -flto by default

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.161.g74b5c2a-1
- remove _Noreturn, which is not c99

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.160.g110c39f-1
- guarantee that PTEF_NOLOGS doesn't touch logs

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.159.g5e7873f-1
- add support for rhel7.6 and older (no python3)

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.158.g14274d6-1
- don't use pycached in rhel8.spec to support older rhel8.x versions

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.157.gc6b3a4b-1
- go back to .copr instead of rpkg

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.156.g3f7c981-1
- fix up rpkg changelog macro / spec files

* Fri Sep 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.155.g28f3346-1
- clarify portability in README

* Thu Sep 16 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.154.g9b2ef22-1
- documentation updates, main README rewrite

* Thu Sep 16 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.153.ga45e4a1-1
- add new examples, remove development notes

* Thu Sep 16 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.152.g461e83d-1
- delete old examples

* Thu Sep 16 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.151.gdd66c56-1
- rename builtins.sh to builtins.bash

* Thu Sep 16 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.150.gede4d45-1
- fix repeated occurence of a standalone arg

* Sat Sep 11 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.149.g43c98e6-1
- get rid of -Werror due to compiler bugs

* Sat Sep 11 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.148.g1004950-1
- fix rare conditions / unused vars found using clang

* Thu Sep 09 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.147.g72ca49f-1
- force arg sanity check, slash-trim each argument

* Thu Sep 09 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.146.g9f24b7e-1
- duplicate stdout to stderr for PTEF_DEBUG

* Thu Sep 09 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.145.g167a39d-1
- remove -Werror from spec files due to gcc bugs

* Thu Sep 09 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.144.g1d49f3d-1
- adjust tests to the new (and correct) assert_contents

* Thu Sep 09 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.143.g1e6cb03-1
- add PTEF_SHELL, for debugging

* Tue Sep 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.142.g848bf98-1
- add PTEF_SILENT to suppress stdout result reporting

* Mon Sep 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.141.gfafe3f0-1
- Revert "add depinstall to root-level Makefile"

* Mon Sep 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.140.ge4c9c1c-1
- add depinstall to root-level Makefile

* Mon Sep 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.139.g9c6d863-1
- auto-guess python3_sitelib, should work on Python 3.2+

* Sun Sep 05 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.138.g2a12bbf-1
- replace .copr with .rpkg

* Sun Sep 05 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.137.g7068651-1
- make copr/ptef.spec compatible with el8/el7

* Sun Sep 05 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.136.g60696b0-1
- explicitly use -std=c99 (fix build on older gcc versions)

* Sat Sep 04 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.135.g8598c3f-1
- hardcode python read1() buffer size for python 3.6 and older

* Sat Sep 04 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.134.gf062f18-1
- add back runner ignore functionality

* Sat Sep 04 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.133.g4685e4d-1
- add a test for closed PTEF_RESULTS_FD

* Sat Sep 04 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.132.g6d4758a-1
- don't build bash builtins if bash-devel is missing

* Fri Sep 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.131.g389ece9-1
- make dup2/close EINTR-safe

* Fri Sep 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.130.g260c34a-1
- minimize time spent in report while holding locks

* Fri Sep 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.129.gd659b8f-1
- clean up includes

* Fri Sep 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.128.g3e66601-1
- add documentation to ptef.py

* Fri Sep 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.127.g2d378e3-1
- add tests for -h (help) and report/mklog without arguments

* Fri Sep 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.126.g4705769-1
- address without_args.c issues found by gcc -fanalyzer

* Fri Sep 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.125.g62c2baa-1
- remove PTEF_IGNORE_FILES and any exclude/ignore logic

* Thu Sep 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.124.g898d1f4-1
- add manpages for ptef_report and ptef_mklog

* Thu Sep 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.123.g7a676b7-1
- always use -D_POSIX_C_SOURCE=200809 in CFLAGS

* Thu Sep 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.122.g2c65cc3-1
- remove default_basename, pass it as part of argc/argv

* Wed Sep 01 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.121.gd5f7d24-1
- add rationale for not having test elapsed time to the spec

* Wed Sep 01 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.120.gb10b54d-1
- remove the MARK status and functionality

* Wed Sep 01 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.119.g119a7a6-1
- provide ptef_set_status_colors bash builtin instead of -c

* Wed Sep 01 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.118.g045fe14-1
- use a global variable on TLS for custom status colors

* Tue Aug 31 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.117.g8250ced-1
- add user-specified color map support for report

* Mon Aug 30 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.116.ga2d8b7a-1
- don't build ptef.html when asciidoctor cmd isn't available

* Mon Aug 30 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.115.gc6c7330-1
- use commit-number-above-tag as RPM version, not release

* Mon Aug 30 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.114.g89d5793-1
- install ptef.h into /usr/include

* Mon Aug 30 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.113.gea658d4-1
- record DT_SONAME in libptef.so.0

* Mon Aug 30 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.112.ge9240ff-1
- update copr spec file, install and package documentation

* Mon Aug 30 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.111.gde3e728-1
- fix libptef-bash.c build on bash-5.1

* Mon Aug 30 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.110.g9ed64ef-1
- add a manpage for ptef_runner

* Sun Aug 29 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.109.g31da97f-1
- add PTEF_NOROTATE to mklog, disabling log rotation

* Sun Aug 29 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.108.g840aac1-1
- remove old TEF specification

* Fri Aug 27 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.107.g169d071-1
- write out the PTEF spec as ptef.adoc

* Wed Aug 25 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.106.g5bcffe5-1
- abort run with args on the first invalid arg

* Wed Aug 25 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.105.g33c2d3b-1
- exit runner with non-0 when invalid args are found

* Sun Aug 22 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.104.g1af69e5-1
- transform the RUN status into opt-in PTEF_RUN env var

* Sun Aug 22 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.103.gc164825-1
- Revert "add the NORUN flag to runner"

* Sun Aug 22 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.102.gd141a2d-1
- add the NORUN flag to runner

* Sun Aug 22 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.101.g7d3ddbc-1
- implement the MARK status

* Sat Aug 21 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.100.g900232e-1
- make report lock both stdout and PTEF_RESULTS_FD before writing

* Sat Aug 21 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.99.g0f226fb-1
- add report locking tests, expose flag defines via CLI

* Fri Aug 20 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.98.gf682cb6-1
- add flags parameter to C runner/report/mklog functions

* Fri Aug 20 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.97.g6924d62-1
- add mklog tests, fix log rotation from .1.log to .log.1

* Fri Aug 20 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.96.g4bfa24a-1
- add misc tests, fix found issues in runner code

* Thu Aug 19 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.95.g658b403-1
- unify most of mkfile contents across tests

* Wed Aug 18 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.94.gf31d1d3-1
- add vars and basename tests, fix PTEF_IGNORE_FILES bug

* Wed Aug 18 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.93.g52af2eb-1
- introduce PTEF_BASENAME

* Thu Aug 05 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.92.gfecbf5f-1
- move install logic from specfile to make install

* Wed Aug 04 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.91.gc7b591a-1
- use major ABI version for shared object file names

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.90.g5ee3bec-1
- first working/buildable spec file

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.89.g7c5e384-1
- Revert "add errno test variant using LD_PRELOAD"

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.88.gf0911b2-1
- return original errno on success

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.87.g216896e-1
- Revert "reset errno to 0 on expected errors"

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.86.g5793683-1
- add errno test variant using LD_PRELOAD

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.85.g9d7c06c-1
- reset errno to 0 on expected errors

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.84.g6444c93-1
- add strace test variant, used only manually for debug

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.83.g301f0f8-1
- remove test fail exit code from make ptef-runner CLI

* Tue Aug 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.82.gd7b7cee-1
- raise OSError in ptef.py when ptef_* return -1

* Mon Aug 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.81.gcf6b9a7-1
- first attempt at a spec file {{{PTEF_CHANGELOG}}} rpm building

* Mon Aug 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.80.gb817729-1
- add tests for python runner

* Mon Aug 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.79.g5bb44f5-1
- add python ctypes-based wrapper

* Mon Aug 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.78.g0006f19-1
- use 'testname' as test name, consistently

* Sat Jul 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.77.g0cd9fb7-1
- rewrite tests from dir structure to shell scripts

* Sat Jul 24 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.76.g4471133-1
- don't throw error on processing an empty argument

* Tue Jul 13 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.75.g42c4aab-1
- add ptef-runner -v for exporting PTEF_NOLOGS=1

* Tue Jul 13 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.74.gc7e6969-1
- call mklog() from runner before adjusting prefix

* Mon Jul 12 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.73.g95c7010-1
- always add testname to PTEF_PREFIX, not just to subrunner

* Mon Jul 12 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.72.g63fbe55-1
- update gitignore files for the c-based runner

* Mon Jul 12 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.71.g4b85592-1
- add support for PTEF_COLOR

* Mon Jul 12 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.70.g93dc186-1
- replace struct runner_opts with direct args

* Mon Jul 12 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.69.geb2600c-1
- re-do ignored executables as PTEF_IGNORE_FILES

* Mon Jul 12 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.68.g582e9f3-1
- implement PTEF_NOLOGS

* Sun Jul 11 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.67.g30cd352-1
- get rid of global error log fd var, restructure O_CLOEXEC code

* Sun Jul 11 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.66.gdbf2850-1
- abstract 'defined and non-empty' as getenv_defined()

* Sun Jul 11 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.65.g3e7821c-1
- allow specifying runner type as arg to tests/run

* Sun Jul 11 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.64.g151c8cf-1
- use CLI runner instead of bash builtin

* Sat Jul 10 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.63.g5755dbe-1
- add bash runner to tests

* Wed Jul 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.62.g417803f-1
- add bash builtin wrapper, mostly working

* Tue Jul 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.61.g208a37e-1
- use link time optimization

* Tue Jul 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.60.g6ff5de9-1
- add help texts, make mklog CLI forward output

* Sat Jul 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.59.gcaaa117-1
- run tests without color, add reference output

* Sat Jul 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.58.gaa0007c-1
- separate stdout logging + diff in tests

* Sat Jul 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.57.gdb19c44-1
- use global var for current_error_fd

* Sat Jul 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.56.gbdc5dbd-1
- preserve errno from open_create_dir in mklog

* Sat Jul 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.55.g470028b-1
- preserve errno when printing errors

* Sat Jul 03 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.54.gfcbd6d4-1
- add basic PTEF_LOGS tests

* Fri Jun 25 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.53.gc804b00-1
- add runner_prefix tests

* Wed Jun 23 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.52.g0aa014e-1
- use ptef independent hierarchy traversal in tests

* Tue Jun 22 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.51.ge851e50-1
- remove getopt ':' GNUism from runner CLI

* Tue Jun 22 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.50.g781b81a-1
- log tests output via ttee

* Mon Jun 21 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.49.gc348335-1
- working valgrind + cli test runners

* Mon Jun 21 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.48.g7116fdb-1
- add argument-based tests

* Mon Jun 21 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.47.g0273598-1
- rename test-runner to ptef-runner, for PATH consistency

* Mon Jun 21 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.46.gaa12cb3-1
- basic tests structure

* Mon Jun 21 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.45.gc2781bc-1
- correctly qsort dirents as pointers to pointers

* Mon Jun 21 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.44.g22e8812-1
- honor external CFLAGS without breaking includes

* Sun Jun 20 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.43.gf886f34-1
- rename tef to ptef

* Sun Jun 20 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.42.g0203694-1
- mention symlink support in guide

* Sun Jun 20 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.41.g924c60a-1
- always do fstatat() on readdir(3) entries

* Sun Jun 20 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.40.g88156fb-1
- embed colors into status strings via preprocessor

* Sun Jun 13 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.39.g00b19f9-1
- actually dup2() tef_mklog fd to stderr

* Sun Jun 13 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.38.gf1a5976-1
- fix double free in without_args.c

* Sun Jun 13 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.37.g9f92c1c-1
- store max jobs in exec_state

* Sun Jun 13 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.36.gf6f0f55-1
- return on execute() failure, ignore test failure

* Mon Jun 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.35.g2c79adf-1
- first complete runner w/ execute, untested

* Sun Jun 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.34.g99155f9-1
- full working mklog

* Sun Jun 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.33.gf325fbe-1
- first mklog version, kinda works

* Wed Jun 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.32.g3830423-1
- better error reporting

* Wed Jun 02 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.31.ga160643-1
- bool->int, ERROR(), some execute.c work

* Tue Jun 01 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.30.ga424f20-1
- guarantee allocated argv for execute()

* Tue Jun 01 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.29.g05b75c1-1
- remove now-useless static archives

* Tue Jun 01 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.28.g9ff7fc4-1
- link runner/report to .so

* Fri May 28 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.27.gd78e1ba-1
- restructure src, add lib, fix report->stdout

* Wed May 26 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.26.g6a0c14c-1
- Makefile for report

* Wed May 26 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.25.gb661ff0-1
- working locking safe report.c

* Wed May 26 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.24.g5bafb97-1
- first basic report.c idea

* Tue May 18 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.23.gd58e1d4-1
- cli as tef-runner, copy runner to (tef-)report

* Mon May 17 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.22.g50329c5-1
- non-merging runner

* Mon May 17 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.21.gc4c1d60-1
- add top-level Makefile

* Mon May 17 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.20.g08afa8b-1
- working getopt CLI

* Mon May 17 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.19.g0799d69-1
- restructure runner, move stuff into common.h

* Mon May 17 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.18.gcf66d8c-1
- runner abort on insane arg

* Mon May 17 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.17.gd9e4471-1
- split runner into multiple files

* Mon May 17 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.16.g74fba91-1
- de-const, kinda buggy in C11

* Mon May 17 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.15.g23b9b3b-1
- actually working arg runner, woohoo

* Sun May 16 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.14.g0ea4943-1
- more progress

* Fri May 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.13.gb25ba95-1
- actually decent file/dir detection

* Fri May 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.12.g0c84cd7-1
- try to abstract execute_unknown, badly

* Fri May 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.11.g34fd141-1
- remove useless test2.c

* Fri May 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.10.gac6c8e2-1
- useless changes to test2.c

* Thu May 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.9.g923f1ca-1
- changes to TEF.md

* Thu May 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.8.g9c94c9a-1
- c runner #6

* Thu May 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.7.gba9462c-1
- c runner #5

* Thu May 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.6.ga5a7d10-1
- c runner #4

* Thu May 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.5.g03710a9-1
- c runner #3 noncompile

* Thu May 06 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.4.gd104ee1-1
- c runner #2 noncompile

* Sat May 01 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.3.gf048473-1
- c runner #1

* Mon Apr 19 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.2.g79903d9-1
- switch license to MIT

* Thu Apr 15 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.1.g6cb7f6a-1
- delete previous bash runner

* Thu Apr 08 2021 Jiri Jaburek <comps@nomail.dom> - 0.7.0.ga20cbba-1
- use gray color for the MARK status

* Thu Apr 08 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.9.g2a47f00-1
- propagate failure upwards in the hierarchy

* Wed Apr 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.8.ga6d0787-1
- install common.inc as lib/tef.bash for external use

* Wed Apr 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.7.ge1bb3a1-1
- rewrite runner/report/mklog as bash functions

* Wed Apr 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.6.g88ec696-1
- remove tput colors check, optimize touch

* Wed Apr 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.5.g4644bc3-1
- optimize mklog/report, don't call realpath

* Wed Apr 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.4.gda17781-1
- use safe [ -n .. ] test

* Wed Apr 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.3.gebc975f-1
- introduce the MARK result status

* Wed Apr 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.2.g895e9b4-1
- expose create_logroot via tef-mklog

* Wed Apr 07 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.1.gd8d8b72-1
- split logging back into logs and TEF_LOGS, separately

* Wed Mar 31 2021 Jiri Jaburek <comps@nomail.dom> - 0.6.0.gfa7a541-1
- correct logical error in the spec, fix formatting

* Tue Jun 19 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.48.g70dffb5-1
- add in-development note to README

* Tue Jun 19 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.47.g638d819-1
- add test suite example

* Tue Jun 19 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.46.gf004ae2-1
- unify logging hierarchy, get rid of per-level logs

* Tue Jun 19 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.45.gec6a0a2-1
- make reporting RUN optional

* Tue Jun 19 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.44.gdbd4e6c-1
- TEF_PREFIX any executable like a subdir runner

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.43.g9990a2d-1
- replace flock(2) with standard POSIX advisory locks

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.42.g8f49f6c-1
- introduce TEF_RESULTS_FD for status logging

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.41.ge7889e9-1
- split runner into include files, provide report/mklog tools

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.40.gc89cc61-1
- runner code cleanup, remove tef_ func prefix

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.39.g90b8049-1
- redesign TEF_LOGS logic, mimic execution hierarchy

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.38.g89071c9-1
- further clarify executable files vs directories

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.37.gbe3f6fd-1
- get rid of binary logs, output to fd0 only

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.36.g56848a5-1
- detect fail rc from an executable inside a dir

* Mon Jun 18 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.35.g025b9a1-1
- provide rationale for undefined argument-less run

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.34.gf4135ec-1
- make readlog print all results for 'only/not' filter

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.33.g1b22da7-1
- simplify binary log tty condition, make it fd0 independent

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.32.g1a68123-1
- detect terminal based on opened fd, more spec-like

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.31.g67e1409-1
- upgrade log format, split status/name with whitespace

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.30.g36d0896-1
- trim paths leading above CWD

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.29.g18fb3a3-1
- don't automatically run hidden executables

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.28.g68c1030-1
- argv0 override, scripts-based example

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.27.gfe4890d-1
- remove path/arg relativity to simplify external runner execution

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.26.ga656f85-1
- add README for the symlinks example

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.25.gbfdd9c9-1
- rename selftest as symlinks example

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.24.ga624121-1
- make path/arg relativity optional

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.23.ge3b8a33-1
- rewrite/update and formalize documentation, provide README

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.22.g98baa78-1
- add proper license and copyrights

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.21.g5c31a1b-1
- move runner into a more proper src/bin structure

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.20.g97420f4-1
- add a simple selftest, no runners yet

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.19.g4f8d803-1
- give readlog basic log parsing functionality

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.18.gc50aba1-1
- add readlog, a prototype results parser

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.17.g8613418-1
- version the 'tefresults' on-disk format

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.16.g9334bbd-1
- allow any number of whitespaces after STATUS

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.15.g0879d26-1
- support colors, reorganize io setup

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.14.g15d3316-1
- add support for stdout/err redirection to logs

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.13.g27eacb7-1
- implement basic result reporting

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.12.g81fe2cc-1
- prepare for result logging

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.11.g9d0bfee-1
- rephrase stdout log file for test results in concept

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.10.g859d15b-1
- mention result collection in concept

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.9.g0f0fdb3-1
- slight re-wording/updating of the concept

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.8.g2f0fc43-1
- further clarify on-disk runner output

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.7.g6e8d5d1-1
- specify output/result logging in concept

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.6.gb94cec3-1
- parent vs child path, logic cleanup, un-bug

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.5.ge332a1c-1
- relative path support, buggy

* Thu Jun 07 2018 Jiri Jaburek <comps@nomail.dom> - 0.1.4.g9240e0c-1
- some work on runall, can run optimized paths

* Wed Apr 12 2017 Jiri Jaburek <comps@nomail.dom> - 0.1.3.g196ab46-1
- further concept clarifications, typo fixes

* Wed Apr 12 2017 Jiri Jaburek <comps@nomail.dom> - 0.1.2.g228af4a-1
- expand on test arguments/parameters

* Wed Apr 12 2017 Jiri Jaburek <comps@nomail.dom> - 0.1.1.g63ac5cd-1
- describe the concept basics

* Fri Nov 22 2013 Jiri Jaburek <comps@nomail.dom> - 0.1.0.gcd80150-1
- init

%prep
%setup

%build
# -Wno-unused-result
#   we intentionally discard writev() result as it's used only for debugging,
#   unfortunately, there's no __attribute__ that could create an exception,
#   and (void) also doesn't silence it, so just disable it globally
make \
	CFLAGS="${RPM_OPT_FLAGS} -Wno-unused-result -Wextra" \
	LDFLAGS="${RPM_LD_FLAGS}"

%if %{running_on_native} && 0%{?!skip_tests:1}
%check
# testing is destructive since it re-builds binaries
# with several different CFLAGS, so back-up original outputs
rm -rf src-backup
mv src src-backup
cp -a src-backup src
# if building 32bit on 64bit, do only minimal testing:
# - 64bit bash/python would link .so against 64bit interpreter
# - valgrind would need a 32bit memcheck tool
%if "%{_host_cpu}" != "%{_target_cpu}"
export TEST_VARIANTS="/cli"
%endif
TEST_PRINT_LOGS=1 make test \
	CFLAGS="${RPM_OPT_FLAGS} -Wno-unused-result -Wextra" \
	LDFLAGS="${RPM_LD_FLAGS}"
rm -rf src
mv src-backup src
%endif

%install
%make_install \
	bindir="%{_bindir}" \
	libdir="%{_libdir}" \
	includedir="%{_includedir}" \
	datadir="%{_datadir}" \
	docdir="%{_docdir}" \
	mandir="%{_mandir}" \
	python3_sitelib="%{python3_sitelib}"

%files
%license LICENSE
%attr(755,root,root) %{_bindir}/ptef-runner
%attr(755,root,root) %{_bindir}/ptef-report
%attr(755,root,root) %{_bindir}/ptef-mklog
%attr(755,root,root) %{_libdir}/libptef.so.0.0
%{_libdir}/libptef.so.0
%{_libdir}/libptef.so
%attr(644,root,root) %{_includedir}/ptef.h
%attr(755,root,root) %{_libdir}/libptef-bash.so
%attr(755,root,root) %dir %{_datadir}/ptef
%attr(644,root,root) %{_datadir}/ptef/builtins.bash
%attr(644,root,root) %{_mandir}/man3/ptef_runner.3*
%attr(644,root,root) %{_mandir}/man3/ptef_report.3*
%attr(644,root,root) %{_mandir}/man3/ptef_mklog.3*
%attr(755,root,root) %dir %{_docdir}/ptef
%attr(644,root,root) %{_docdir}/ptef/ptef.adoc
%attr(644,root,root) %{_docdir}/ptef/ptef.html
%pycached %{python3_sitelib}/ptef.py