/tap-plugin

Test Anything Protocol (TAP) plugin for Kiwi TCMS

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Test Anything Protocol (TAP) plugin for Kiwi TCMS

PyPI version Travis CI Code coverage Python updates TP for kiwitcms/tap-plugin (master) Tidelift Become a sponsor Kiwi TCMS on Twitter

This package allows you to read Test Anything Protocol (TAP) files and send the results to Kiwi TCMS.

Installation

pip install kiwitcms-tap-plugin

Note: this plugin should be installed on the system executing your automated tests or a separate system whose task is to parse the results and import them into Kiwi TCMS. This is usually not your Kiwi TCMS container!

Configuration and environment

Minimal config file ~/.tcms.conf:

[tcms]
url = https://tcms.server/xml-rpc/
username = your-username
password = your-password

For more info see tcms-api docs.

This plugin is only concerned with parsing the TAP format and executing tcms-api functions which will create/reuse test cases, test plans and test runs. tcms-api behavior is controlled via environment variables.

For example inside .github/workflows/testing.yml this looks like:

export TCMS_PRODUCT=$GITHUB_REPOSITORY
export TCMS_PRODUCT_VERSION=$(echo $GITHUB_REF | sed "s|refs/heads/||" | sed "s|refs/||" | sed "s|/merge||")
export TCMS_BUILD=$(echo $GITHUB_SHA | cut -c1-7)

Further documentation and behavior specification can be found here.

The above configuration creates a separate TestPlan for each branch, for example TP-6: [TAP] Plan for kiwitcms/tap-plugin (master), a separate TestPlan for each pull request (recording possible multiple test runs) and separate TestPlan and TestRun for each tag on GitHub! tcms-api has default behavior for Travis CI and Jenkins and allows endless configuration via environment variables.

Usage

# define environment variables
tcms-tap-plugin /path/to/results.tap

Changelog

v12.8.1 (22 Dec 2023)

  • Update tcms-api from 12.7 to 12.8.1
  • Relax dependency requirement towards tcms-api for easier upgrade

v12.7 (11 Dec 2023)

  • Update tcms-api from 11.3 to 12.7
  • Update README to avoid confusions where to install this package. Closes Issue #62
  • Build and test with Python 3.11
  • Reformat source code with Black
  • Enable CodeQL for code scanning
  • Small refactoring internally

v11.3 (17 May 2022)

  • Update tcms-api from 11.2 to 11.3
  • Print information about created recrods if -v or --verbose is specified on the command line
  • Allow multiple TAP files to be specified on the command line. Fixes Issue #57

v11.2 (15 May 2022)

  • Update tap.py from 3.0 to 3.1
  • Update tcms-api from 11.0 to 11.2. Closes Issue #5 and Issue #13
  • Fix bug with traceback not being posted as comment. Issue #48

v11.0 (05 Dec 2021)

  • Future compatible with upcoming Kiwi TCMS v11.0
  • Update tcms-api from 10.0 to 11.0
  • Pylint fixes

v10.0 (02 Mar 2021)

  • Compatible with Kiwi TCMS v10.0
  • Update tcms-api to 10.0

v9.0 (13 Jan 2021)

  • Compatible with Kiwi TCMS v9.0
  • Update tcms-api to 9.0
  • Resolve a dependency issue in tests

v8.4 (28 Oct 2020)

  • Update tcms-api to 8.6.0

v8.3 (10 Apr 2020)

  • Update to tcms-api v8.3.0 which uses gssapi for Kerberos
  • Requires MIT Kerberos for Windows if installed on Windows

v8.2 (03 Apr 2020)

This version works only with Kiwi TCMS v8.2 or later!

  • Update to tcms-api==8.2.0
  • Patch for changed return value in plugin_helpers.Backend.test_case_get_or_create()
  • Call plugin_helpers.backend.finish_test_run() when done. Fixes Issue #9

v8.0.1 (10 February 2020)

This version works only with Kiwi TCMS v8.0 or later!

  • Update to tcms-api==8.0.1

v8.0 (09 February 2020)

This version works only with Kiwi TCMS v8.0 or later!

  • Adjust plugin due to API changes in Kiwi TCMS v8.0
  • Update tap.py from 2.6.2 to 3.0
  • Require tcms-api>=8.0

v0.5 (07 January 2020)

  • Update tap.py dependency from 2.6.1 to 2.6.2

v0.4 (23 September 2019)

  • Include traceback from TAP file as TE comment. Fixes Issue #7 (Christophe CHAUVET)

v0.3 (10 April 2019)

  • Works with Kiwi TCMS v6.7 or newer
  • Uses new names of API methods