Skip to content

Reporting test cases marked with "pending" Kaocha tag as "skipped" in JUnit XML output #20

@samcarver4

Description

@samcarver4

Background

Kaocha allows tests to be marked with a pending tag. This allows tests to be filtered when running tests using Kaocha but still have the data reported in the output. This is useful for building a suite of tests for a pending, yet-to-be-implemented feature. The following is an example of a simple test marked with this tag:

(ns sample.project.sample-test
  (:require [clojure.test :refer [deftest is]]))

(deftest ^:kaocha/pending pending-test  
  (is (= 1 1)  
      "This should be marked as 'skipped' by JUnit!"))

I am working in a Polylith codebase using polylith-kaocha as the test runner Running tests yield the following output:

1 test, 0 assertions, 1 pending, 0 failures.

PENDING sample.project.pending-test (:)

We've configured our polylith-kaocha tests to generate JUnit XML test results using this plugin in our Kaocha config. This is being generated however we're hitting a snag because the pending tests aren't actually running (as expected), but in the JUnit XML test results they look like they are running and passing:

  1. Run the sample-test suite
    clj -M:poly test
  2. Open the generated JUnit XML test report:
<?xml version='1.0' encoding='UTF-8'?>  
<testsuites>  
  <testsuite errors="0" package="" tests="1" name="sample-test" time="0.545124"    hostname="localhost" id="0" timestamp="2025-11-11T10:51:50" failures="0">  
    <properties/>  
    <testcase name="sample.project.sample-test/pending-test"         classname="sample.project.sample-test" time="0.000000" line="4" column="1" file="/sample/project/sample_test.clj">  
    </testcase>  
  <system-out/>  
  <system-err/>  
</testsuites>
  1. Note the pending-test result in the JUnit XML test report is missing the <skipped /> element that would usually be nested within <testcase> element to indicate that the test has been skipped.

Desired behaviour

  1. Run the sample-test suite
    clj -M:poly test
  2. Open the generated JUnit XML test report:
<?xml version='1.0' encoding='UTF-8'?>  
<testsuites>  
  <testsuite errors="0" package="" tests="1" name="sample-test" time="0.545124"    hostname="localhost" id="0" timestamp="2025-11-11T10:51:50" failures="0">  
    <properties/>  
    <testcase name="sample.project.sample-test/pending-test"         classname="sample.project.sample-test" time="0.000000" line="4" column="1" file="/sample/project/sample_test.clj">  
      <skipped/>
    </testcase>  
  <system-out/>  
  <system-err/>  
</testsuites>
  1. Observe the test result for sample-test is correctly tagged as skipped

Please let me know if I can provide any more detail, as this is my first time raising an issue on GitHub. Thanks in advance for any help you can provide!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions