commit:     4966606902ab3eab35872fe5996a76cba5f73710
Author:     Alfred Wingate <parona <AT> protonmail <DOT> com>
AuthorDate: Tue Feb 18 01:50:01 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Feb 18 10:21:34 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=49666069

dev-python/pycotap: new package, add 1.3.1

Signed-off-by: Alfred Wingate <parona <AT> protonmail.com>
Closes: https://github.com/gentoo/gentoo/pull/40630
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/pycotap/Manifest                        |   1 +
 .../files/pycotap-1.3.1-fix-python3.13-tests.patch | 213 +++++++++++++++++++++
 dev-python/pycotap/metadata.xml                    |  20 ++
 dev-python/pycotap/pycotap-1.3.1.ebuild            |  38 ++++
 4 files changed, 272 insertions(+)

diff --git a/dev-python/pycotap/Manifest b/dev-python/pycotap/Manifest
new file mode 100644
index 000000000000..65456091ec76
--- /dev/null
+++ b/dev-python/pycotap/Manifest
@@ -0,0 +1 @@
+DIST pycotap-1.3.1.tar.gz 7534 BLAKE2B 
1566179908dc6fb318632a3e76193b86ec08a560040e1f241195796d0ec3c63a84330be90c05deaff001cb64bc4b5c82e0f1124db442fb0f1982323d21d183f0
 SHA512 
e7d50340fb4e3f55037a96aaaba419e6753d4499564339b6562317455ed223c3fd93bf41d0bd9654c03a4bea09377daa192ca985bafc96983e4a2261dde348b8

diff --git a/dev-python/pycotap/files/pycotap-1.3.1-fix-python3.13-tests.patch 
b/dev-python/pycotap/files/pycotap-1.3.1-fix-python3.13-tests.patch
new file mode 100644
index 000000000000..7d2943c84751
--- /dev/null
+++ b/dev-python/pycotap/files/pycotap-1.3.1-fix-python3.13-tests.patch
@@ -0,0 +1,213 @@
+https://github.com/remko/pycotap/pull/14
+
+From 514a991fb622c2db2ffcede93d99776cc322c019 Mon Sep 17 00:00:00 2001
+From: Alfred Wingate <[email protected]>
+Date: Tue, 18 Feb 2025 03:02:23 +0200
+Subject: [PATCH] Adjust tests for python3.13 error message changes
+
+Signed-off-by: Alfred Wingate <[email protected]>
+--- a/test/test.py
++++ b/test/test.py
+@@ -73,14 +73,17 @@ class TAPTestRunnerTest(unittest.TestCase):
+     )
+     self.assertEqual(
+       self.process_output(self.output_stream.getvalue()), (
+-        "TAP version 13\n"
+-        "not ok 1 
__main__.TAPTestRunnerTest.test_all_test_outcomes.<locals>.Test.test_failing\n"
+-        "# Traceback (most recent call last):\n"
+-        "#   File \"test.py\", line X, in test_failing\n"
+-        "#     self.assertEqual(1, 2)\n"
+-        "# AssertionError: 1 != 2\n"
+-        "ok 2 
__main__.TAPTestRunnerTest.test_all_test_outcomes.<locals>.Test.test_passing\n"
+-        "ok 3 
__main__.TAPTestRunnerTest.test_all_test_outcomes.<locals>.Test.test_skipped # 
SKIP Not finished yet\n"
++        "TAP version 13\n" +
++        "not ok 1 
__main__.TAPTestRunnerTest.test_all_test_outcomes.<locals>.Test.test_failing\n" 
+
++        "# Traceback (most recent call last):\n" +
++        "#   File \"test.py\", line X, in test_failing\n" +
++        "#     self.assertEqual(1, 2)\n" +
++        (
++        "#     ~~~~~~~~~~~~~~~~^^^^^^\n" if sys.version_info >= (3,13,) else 
""
++        ) +
++        "# AssertionError: 1 != 2\n" +
++        "ok 2 
__main__.TAPTestRunnerTest.test_all_test_outcomes.<locals>.Test.test_passing\n" 
+
++        "ok 3 
__main__.TAPTestRunnerTest.test_all_test_outcomes.<locals>.Test.test_skipped # 
SKIP Not finished yet\n" +
+         "1..3\n"
+       )
+     )
+@@ -152,17 +155,20 @@ class TAPTestRunnerTest(unittest.TestCase):
+     )
+     self.assertEqual(
+       self.process_output(self.output_stream.getvalue()), (
+-        "TAP version 13\n"
+-        "not ok 1 __main__.TAPTestRunnerTest.OutputTest.test_failing\n"
+-        "# Foo\n"
+-        "# Traceback (most recent call last):\n"
+-        "#   File \"test.py\", line X, in test_failing\n"
+-        "#     self.assertEqual(1, 2)\n"
+-        "# AssertionError: 1 != 2\n"
+-        "ok 2 __main__.TAPTestRunnerTest.OutputTest.test_passing\n"
+-        "# Foo\n"
+-        "# Baz\n"
+-        "# Bar\n"
++        "TAP version 13\n" +
++        "not ok 1 __main__.TAPTestRunnerTest.OutputTest.test_failing\n" +
++        "# Foo\n" +
++        "# Traceback (most recent call last):\n" +
++        "#   File \"test.py\", line X, in test_failing\n" +
++        "#     self.assertEqual(1, 2)\n" +
++        (
++        "#     ~~~~~~~~~~~~~~~~^^^^^^\n" if sys.version_info >= (3,13,) else 
""
++        ) +
++        "# AssertionError: 1 != 2\n" +
++        "ok 2 __main__.TAPTestRunnerTest.OutputTest.test_passing\n" +
++        "# Foo\n" +
++        "# Baz\n" +
++        "# Bar\n" +
+         "1..2\n"
+       )
+     )
+@@ -176,23 +182,26 @@ class TAPTestRunnerTest(unittest.TestCase):
+     )
+     self.assertEqual(
+       self.process_output(self.output_stream.getvalue()), (
+-        "TAP version 13\n"
+-        "not ok 1 __main__.TAPTestRunnerTest.OutputTest.test_failing\n"
+-        "  ---\n"
+-        "    output: |\n"
+-        "      Foo\n"
+-        "      Traceback (most recent call last):\n"
+-        "        File \"test.py\", line X, in test_failing\n"
+-        "          self.assertEqual(1, 2)\n"
+-        "      AssertionError: 1 != 2\n"
+-        "  ...\n"
+-        "ok 2 __main__.TAPTestRunnerTest.OutputTest.test_passing\n"
+-        "  ---\n"
+-        "    output: |\n"
+-        "      Foo\n"
+-        "      Baz\n"
+-        "      Bar\n"
+-        "  ...\n"
++        "TAP version 13\n" +
++        "not ok 1 __main__.TAPTestRunnerTest.OutputTest.test_failing\n" +
++        "  ---\n" +
++        "    output: |\n" +
++        "      Foo\n" +
++        "      Traceback (most recent call last):\n" +
++        "        File \"test.py\", line X, in test_failing\n" +
++        "          self.assertEqual(1, 2)\n" +
++        (
++        "          ~~~~~~~~~~~~~~~~^^^^^^\n" if sys.version_info >= (3,13,) 
else ""
++        ) +
++        "      AssertionError: 1 != 2\n" +
++        "  ...\n" +
++        "ok 2 __main__.TAPTestRunnerTest.OutputTest.test_passing\n" +
++        "  ---\n" +
++        "    output: |\n" +
++        "      Foo\n" +
++        "      Baz\n" +
++        "      Bar\n" +
++        "  ...\n" +
+         "1..2\n"
+       )
+     )
+@@ -243,14 +252,17 @@ class TAPTestRunnerTest(unittest.TestCase):
+     )
+     self.assertEqual(
+       self.process_output(self.error_stream.getvalue()), (
+-        "Foo\n"
+-        "Traceback (most recent call last):\n"
+-        "  File \"test.py\", line X, in test_failing\n"
+-        "    self.assertEqual(1, 2)\n"
+-        "AssertionError: 1 != 2\n"
+-        "\n"
+-        "Foo\n"
+-        "Baz\n"
++        "Foo\n" +
++        "Traceback (most recent call last):\n" +
++        "  File \"test.py\", line X, in test_failing\n" +
++        "    self.assertEqual(1, 2)\n" +
++        (
++        "    ~~~~~~~~~~~~~~~~^^^^^^\n" if sys.version_info >= (3,13,) else ""
++        ) +
++        "AssertionError: 1 != 2\n" +
++        "\n" +
++        "Foo\n" +
++        "Baz\n" +
+         "Bar\n"
+       )
+     )
+@@ -264,18 +276,21 @@ class TAPTestRunnerTest(unittest.TestCase):
+     )
+     self.assertEqual(
+       self.process_output(self.output_stream.getvalue()), (
+-        "TAP version 13\n"
+-        "Foo\n"
+-        "Traceback (most recent call last):\n"
+-        "  File \"test.py\", line X, in test_failing\n"
+-        "    self.assertEqual(1, 2)\n"
+-        "AssertionError: 1 != 2\n"
+-        "\n"
+-        "not ok 1 __main__.TAPTestRunnerTest.OutputTest.test_failing\n"
+-        "Foo\n"
+-        "Baz\n"
+-        "Bar\n"
+-        "ok 2 __main__.TAPTestRunnerTest.OutputTest.test_passing\n"
++        "TAP version 13\n" +
++        "Foo\n" +
++        "Traceback (most recent call last):\n" +
++        "  File \"test.py\", line X, in test_failing\n" +
++        "    self.assertEqual(1, 2)\n" +
++        (
++        "    ~~~~~~~~~~~~~~~~^^^^^^\n" if sys.version_info >= (3,13,) else ""
++        ) +
++        "AssertionError: 1 != 2\n" +
++        "\n" +
++        "not ok 1 __main__.TAPTestRunnerTest.OutputTest.test_failing\n" +
++        "Foo\n" +
++        "Baz\n" +
++        "Bar\n" +
++        "ok 2 __main__.TAPTestRunnerTest.OutputTest.test_passing\n" +
+         "1..2\n"
+       )
+     )
+@@ -288,20 +303,23 @@ class TAPTestRunnerTest(unittest.TestCase):
+     )
+     self.assertEqual(
+       self.process_output(self.output_stream.getvalue()), (
+-        "TAP version 13\n"
+-        "not ok 1 __main__.TAPTestRunnerTest.OutputTest.test_failing\n"
+-        "# Foo\n"
+-        "  ---\n"
+-        "    message: |\n"
+-        "      Traceback (most recent call last):\n"
+-        "        File \"test.py\", line X, in test_failing\n"
+-        "          self.assertEqual(1, 2)\n"
+-        "      AssertionError: 1 != 2\n"
+-        "  ...\n"
+-        "ok 2 __main__.TAPTestRunnerTest.OutputTest.test_passing\n"
+-        "# Foo\n"
+-        "# Baz\n"
+-        "# Bar\n"
++        "TAP version 13\n" +
++        "not ok 1 __main__.TAPTestRunnerTest.OutputTest.test_failing\n" +
++        "# Foo\n" +
++        "  ---\n" +
++        "    message: |\n" +
++        "      Traceback (most recent call last):\n" +
++        "        File \"test.py\", line X, in test_failing\n" +
++        "          self.assertEqual(1, 2)\n" +
++        (
++        "          ~~~~~~~~~~~~~~~~^^^^^^\n" if sys.version_info >= (3,13,) 
else ""
++        ) +
++        "      AssertionError: 1 != 2\n" +
++        "  ...\n" +
++        "ok 2 __main__.TAPTestRunnerTest.OutputTest.test_passing\n" +
++        "# Foo\n" +
++        "# Baz\n" +
++        "# Bar\n" +
+         "1..2\n"
+       )
+     )
+-- 
+2.48.1
+

diff --git a/dev-python/pycotap/metadata.xml b/dev-python/pycotap/metadata.xml
new file mode 100644
index 000000000000..dfbdfa5c9fdb
--- /dev/null
+++ b/dev-python/pycotap/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="project">
+               <email>[email protected]</email>
+       </maintainer>
+       <maintainer type="person" proxied="yes">
+               <email>[email protected]</email>
+               <name>Alfred Wingate</name>
+       </maintainer>
+       <maintainer type="project" proxied="proxy">
+               <email>[email protected]</email>
+               <name>Proxy Maintainers</name>
+       </maintainer>
+       <stabilize-allarches/>
+       <upstream>
+               <remote-id type="github">remko/pycotap</remote-id>
+               <remote-id type="pypi">pycotap</remote-id>
+       </upstream>
+</pkgmetadata>

diff --git a/dev-python/pycotap/pycotap-1.3.1.ebuild 
b/dev-python/pycotap/pycotap-1.3.1.ebuild
new file mode 100644
index 000000000000..d959a7b79246
--- /dev/null
+++ b/dev-python/pycotap/pycotap-1.3.1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A tiny test runner that outputs TAP results to standard output"
+HOMEPAGE="
+       https://github.com/remko/pycotap/
+       https://pypi.org/project/pycotap/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+PATCHES=(
+       "${FILESDIR}"/pycotap-1.3.1-fix-python3.13-tests.patch
+)
+
+distutils_enable_tests unittest
+
+python_prepare_all() {
+       distutils-r1_python_prepare_all
+
+       sed -i -e "/data_files =/d" setup.py || die
+
+       # Fixup test output assumptions for unittest
+       sed -i -e 's/__main__\.TAPTestRunnerTest/test.TAPTestRunnerTest/' 
test/test.py || die
+}
+
+python_test() {
+       eunittest test
+}

Reply via email to