merge in thead-V1.1.2 changes

Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
This commit is contained in:
Robert Nelson
2023-06-09 15:18:55 -05:00
parent c5668905a6
commit eb4da5a5c8
48 changed files with 1213 additions and 10 deletions

View File

@@ -0,0 +1,35 @@
SUMMARY = "Simple powerful teting with python"
HOMEPAGE = "http://pytest.org"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c39b24965f4aef64222cb35de9d47cc4"
SRC_URI[md5sum] = "1b83a25d45fad893f430fc5031653c56"
SRC_URI[sha256sum] = "117bad36c1a787e1a8a659df35de53ba05f9f3398fb9e4ac17e80ad5903eb8c5"
SRC_URI:append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch \
file://pytest_version_fix.patch "
inherit update-alternatives
RDEPENDS:${PN}:class-target += " \
${PYTHON_PN}-attrs \
${PYTHON_PN}-debugger \
${PYTHON_PN}-doctest \
${PYTHON_PN}-json \
${PYTHON_PN}-pluggy \
${PYTHON_PN}-py \
${PYTHON_PN}-setuptools \
${PYTHON_PN}-six \
"
FILESEXTRAPATHS:prepend := "${THISDIR}/python-pytest:"
ALTERNATIVE:${PN} += "py.test pytest"
NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,32 @@
From 24a901fd17926e8e05be4ed2e01b0113a2e3a852 Mon Sep 17 00:00:00 2001
From: Derek Straka <derek@asterius.io>
Date: Tue, 19 Dec 2017 11:36:39 -0500
Subject: [PATCH] [PATCH 1/1] setup.py: remove the setup_requires for
setuptools-scm
The setup_requires argument forces the download of the egg file for setuptools-scm
during the do_compile phase. This download is incompatible with the typical fetch
and mirror structure. The only usage of scm is the generation of the _version.py
file and in the release tarball it is already correctly created
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Derek Straka <derek@asterius.io>
---
setup.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/setup.py b/setup.py
index 3eb38ef..1163202 100644
--- a/setup.py
+++ b/setup.py
@@ -82,7 +82,6 @@ def main():
keywords="test unittest",
cmdclass={'test': PyTest},
# the following should be enabled for release
- setup_requires=['setuptools-scm'],
python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
install_requires=install_requires,
extras_require=extras_require,
--
2.7.4

View File

@@ -0,0 +1,51 @@
Upstream-Status: Inappropriate (OE specific)
python-pytest: remove fetch during do_compile phase
commit: c974fbf9ebf185552ab65301e07af44f36517abf
introduced an issue by making the version 0.0.0
this fixes that
Signed-off-by: Armin Kuster <akuster@mvista.com>
Index: pytest-3.2.2/setup.py
===================================================================
--- pytest-3.2.2.orig/setup.py
+++ pytest-3.2.2/setup.py
@@ -1,5 +1,6 @@
import os
import sys
+import re
import setuptools
import pkg_resources
from setuptools import setup, Command
@@ -22,6 +23,18 @@ classifiers = [
with open('README.rst') as fd:
long_description = fd.read()
+def read(*names, **kwargs):
+ with open(os.path.join( *names), 'r') as fp:
+ return fp.read()
+
+def find_version(*file_paths):
+ version_file = read(*file_paths)
+ version_match = re.search(r"^version = ['\']([^'\"]*)['\']",
+ version_file, re.M)
+
+ if version_match:
+ return version_match.group(1)
+ raise RuntimeError("Unable to find version string.")
def get_environment_marker_support_level():
"""
@@ -59,9 +72,7 @@ def main():
name='pytest',
description='pytest: simple powerful testing with Python',
long_description=long_description,
- use_scm_version={
- 'write_to': '_pytest/_version.py',
- },
+ version=find_version("_pytest", "_version.py"),
url='http://pytest.org',
license='MIT license',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],

View File

@@ -0,0 +1,11 @@
SUMMARY = "Aliyun Python SDK is the official software development kit. It makes things easy to integrate your Python application, library, or script with Aliyun services."
HOMEPAGE = "https://pypi.org/project/aliyun-python-sdk-core/"
SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fdec12b464a317e8c3aa36497bc97e8d"
SRC_URI[sha256sum] = "20bd54984fa316da700c7f355a51ab0b816690e2a0fcefb7b5ef013fed0da928"
inherit pypi setuptools3
RDEPENDS:${PN} += "python3-jmespath python3-cryptography"

View File

@@ -0,0 +1,11 @@
SUMMARY = "Aliyun Python SDK is the official software development kit. It makes things easy to integrate your Python application, library, or script with Aliyun services.."
HOMEPAGE = "https://pypi.org/project/aliyun-python-sdk-kms/"
SECTION = "devel/python"
LICENSE = "Apache"
LIC_FILES_CHKSUM = "file://LICENSE;md5=24b76166491e4a1f8ec8cf6c0b355baf"
SRC_URI[sha256sum] = "a372737715682014bace68bd40fe83332f4fd925009a3eb110d41bc66f270e7a"
inherit pypi setuptools3
RDEPENDS:${PN} += "python3-aliyun-python-sdk-core"

View File

@@ -0,0 +1,3 @@
#!/bin/sh
pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'

View File

@@ -0,0 +1,25 @@
DESCRIPTION = "Powerful Python library for atomic file writes"
HOMEPAGE = "https://github.com/untitaker/python-atomicwrites"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=91cc36cfafeefb7863673bcfcb1d4da4"
SRC_URI[md5sum] = "b5cc15c8f9f180a48665f9aacf91d817"
SRC_URI[sha256sum] = "ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"
inherit pypi setuptools3 ptest
SRC_URI += " \
file://run-ptest \
"
RDEPENDS:${PN}-ptest += " \
${PYTHON_PN}-pytest \
${PYTHON_PN}-unixadmin \
"
do_install_ptest() {
install -d ${D}${PTEST_PATH}/tests
cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
}
RDEPENDS:${PN} = "${PYTHON_PN}-misc"

View File

@@ -0,0 +1,20 @@
DESCRIPTION = "Classes Without Boilerplate"
HOMEPAGE = "http://www.attrs.org/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff"
SRC_URI[sha256sum] = "832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"
SRC_URI[md5sum] = "4fe38f89297b2b446d83190fce189f29"
inherit pypi setuptools3
RDEPENDS:${PN}:class-target += " \
${PYTHON_PN}-crypt \
${PYTHON_PN}-ctypes \
"
RDEPENDS:${PN}:class-nativesdk += " \
${PYTHON_PN}-crypt \
${PYTHON_PN}-ctypes \
"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,18 @@
DESCRIPTION = "Read metadata from Python packages"
HOMEPAGE = "https://pypi.org/project/importlib-metadata/"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e88ae122f3925d8bde8319060f2ddb8e"
inherit pypi setuptools3
SRC_URI = "https://files.pythonhosted.org/packages/56/1f/74c3e29389d34feea2d62ba3de1169efea2566eb22e9546d379756860525/importlib_metadata-2.0.0.tar.gz"
S = "${WORKDIR}/importlib_metadata-${PV}"
SRC_URI[md5sum] = "3dd91821c930a3c3633e99a7025aa9c2"
SRC_URI[sha256sum] = "77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da"
DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
RDEPENDS:${PN} += "${PYTHON_PN}-zipp ${PYTHON_PN}-pathlib2"
RDEPENDS:${PN}:append:class-target = " python3-misc"
RDEPENDS:${PN}:append:class-nativesdk = " python3-misc"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,9 @@
SUMMARY = "A small and simple INI-file parser module"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
SRC_URI[md5sum] = "0b7f3be87481211c183eae095bcea6f1"
SRC_URI[sha256sum] = "bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"
inherit pypi setuptools3

View File

@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2683790f5fabb41a3f75b70558799eb4"
SRC_URI[sha256sum] = "90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"
SRC_URI[sha256sum] = "b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9"
inherit pypi setuptools3

View File

@@ -0,0 +1,3 @@
#!/bin/sh
pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'

View File

@@ -0,0 +1,24 @@
DESCRIPTION = "More routines for operating on iterables, beyond itertools"
HOMEPAGE = "https://github.com/erikrose/more-itertools"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5"
SRC_URI[md5sum] = "2588b5a7042576b99574779582be9292"
SRC_URI[sha256sum] = "6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20"
inherit pypi setuptools3 ptest
BBCLASSEXTEND = "native nativesdk"
SRC_URI += " \
file://run-ptest \
"
RDEPENDS:${PN}-ptest += " \
${PYTHON_PN}-pytest \
"
do_install_ptest() {
install -d ${D}${PTEST_PATH}/tests
cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
}

View File

@@ -0,0 +1,11 @@
SUMMARY = "Alibaba Cloud Object Storage Python SDK 2.x. This version is not compatible with the previous version (Version 0.x). The package name is oss2 to avoid conflict with previous versions."
HOMEPAGE = "https://pypi.org/project/oss2/"
SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=6b3b4a911517b57999a946a456701c4f"
SRC_URI[sha256sum] = "335c52bec7d8f7ee05f3e816d18a125a86a0a6d014c9e9045ca3b91a2484bbd4"
inherit pypi setuptools3
RDEPENDS:${PN} += "python3-aliyun-python-sdk-kms"

View File

@@ -0,0 +1,14 @@
DESCRIPTION = "Core utilities for Python packages"
HOMEPAGE = "https://github.com/pypa/packaging"
LICENSE = "Apache-2.0 & BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=faadaedca9251a90b205c9167578ce91"
SRC_URI[md5sum] = "3208229da731c5d8e29d4d8941e75005"
SRC_URI[sha256sum] = "4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"
inherit pypi setuptools3
BBCLASSEXTEND = "native"
DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
RDEPENDS:${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-pyparsing"

View File

@@ -0,0 +1,13 @@
DESCRIPTION = "Object-oriented filesystem paths"
HOMEPAGE = "https://github.com/mcmtroffaes/pathlib2"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=042856c23a3e903b33bf361ea1cbe29a"
SRC_URI[md5sum] = "f2bd0a363eb0f8fa0556f35c1d9e66fb"
SRC_URI[sha256sum] = "6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868"
inherit pypi setuptools3
RDEPENDS:${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-ctypes"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,3 @@
#!/bin/sh
pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'

View File

@@ -0,0 +1,27 @@
SUMMARY = "Plugin and hook calling mechanisms for python"
HOMEPAGE = "https://github.com/pytest-dev/pluggy"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2"
SRC_URI[md5sum] = "7f610e28b8b34487336b585a3dfb803d"
SRC_URI[sha256sum] = "15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"
DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
RDEPENDS:${PN} += "${PYTHON_PN}-importlib-metadata \
${PYTHON_PN}-more-itertools \
"
inherit pypi ptest setuptools3
SRC_URI += " \
file://run-ptest \
"
RDEPENDS:${PN}-ptest += " \
${PYTHON_PN}-pytest \
"
do_install_ptest() {
install -d ${D}${PTEST_PATH}/testing
cp -rf ${S}/testing/* ${D}${PTEST_PATH}/testing/
}

View File

@@ -0,0 +1,15 @@
SUMMARY = "Library with cross-python path, ini-parsing, io, code, log facilities"
HOMEPAGE = "http://py.readthedocs.io/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
SRC_URI[md5sum] = "b80db4e61eef724f49feb4d20b649e62"
SRC_URI[sha256sum] = "9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"
DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
inherit pypi setuptools3
BBCLASSEXTEND = "native nativesdk"
RDEPENDS:${PN} += "${PYTHON_PN}-netclient"

View File

@@ -0,0 +1,36 @@
From ead04f2da75efeca3369feff6161ea4a8baecbc9 Mon Sep 17 00:00:00 2001
From: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
Date: Wed, 28 Aug 2019 16:12:27 +0900
Subject: [PATCH] setup.py: remove the setup_requires for setuptools-scm
The setup_requires argument forces the download of the egg file for setuptools-scm
during the do_compile phase. This download is incompatible with the typical fetch
and mirror structure. The only usage of scm is the generation of the _version.py
file and in the release tarball it is already correctly created
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Derek Straka <derek@asterius.io>
Signed-off-by: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
Rebase for pytest 6.1.0.
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
setup.cfg | 1 -
1 file changed, 1 deletion(-)
diff --git a/setup.cfg b/setup.cfg
index 6ed0792..0137090 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -53,7 +53,6 @@ package_dir =
=src
setup_requires =
setuptools>=>=42.0
- setuptools-scm>=3.4
zip_safe = no
[options.entry_points]

View File

@@ -0,0 +1,39 @@
SUMMARY = "Simple powerful testing with python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b"
SRC_URI:append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch "
SRC_URI[sha256sum] = "9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9"
inherit update-alternatives pypi setuptools3
RDEPENDS:${PN}:class-target += " \
${PYTHON_PN}-atomicwrites \
${PYTHON_PN}-attrs \
${PYTHON_PN}-debugger \
${PYTHON_PN}-doctest \
${PYTHON_PN}-importlib-metadata \
${PYTHON_PN}-iniconfig \
${PYTHON_PN}-json \
${PYTHON_PN}-more-itertools \
${PYTHON_PN}-packaging \
${PYTHON_PN}-pathlib2 \
${PYTHON_PN}-pluggy \
${PYTHON_PN}-py \
${PYTHON_PN}-setuptools \
${PYTHON_PN}-six \
${PYTHON_PN}-toml \
${PYTHON_PN}-wcwidth \
"
ALTERNATIVE:${PN} += "py.test pytest"
NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,21 @@
SUMMARY = "the blessed package to manage your versions by scm tags"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
SRC_URI[md5sum] = "e6c9fad17c90516d640868eb833d5150"
SRC_URI[sha256sum] = "a8994582e716ec690f33fec70cca0f85bd23ec974e3f783233e4879090a7faa8"
PYPI_PACKAGE = "setuptools_scm"
inherit pypi setuptools3
RDEPENDS:${PN} = "\
${PYTHON_PN}-debugger \
${PYTHON_PN}-json \
${PYTHON_PN}-py \
${PYTHON_PN}-setuptools \
"
RDEPENDS:${PN}:class-native = "\
${PYTHON_PN}-setuptools-native \
"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,15 @@
SUMMARY = "Python Library for Tom's Obvious, Minimal Language"
HOMEPAGE = "https://github.com/uiri/toml"
LICENSE = "MIT"
SECTION = "devel/python"
LIC_FILES_CHKSUM = "file://LICENSE;md5=16c77b2b1050d2f03cb9c2ed0edaf4f0"
SRC_URI[sha256sum] = "b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
inherit pypi setuptools3
BBCLASSEXTEND = "native nativesdk"
RDEPENDS:${PN} += " \
${PYTHON_PN}-misc \
"

View File

@@ -0,0 +1,3 @@
#!/bin/sh
pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'

View File

@@ -0,0 +1,25 @@
SUMMARY = "Library for building powerful interactive command lines in Python"
DESCRIPTION = "Measures the displayed width of unicode strings in a terminal"
HOMEPAGE = "https://github.com/jquast/wcwidth"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b15979c39a2543892fca8cd86b4b52cb"
SRC_URI[md5sum] = "a07a75f99d316e14838ac760c831ea37"
SRC_URI[sha256sum] = "c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
inherit pypi setuptools3 ptest
SRC_URI += " \
file://run-ptest \
"
RDEPENDS:${PN}-ptest += " \
${PYTHON_PN}-pytest \
"
do_install_ptest() {
install -d ${D}${PTEST_PATH}/tests
cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
}
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,19 @@
DESCRIPTION = "Backport of pathlib-compatible object wrapper for zip files"
HOMEPAGE = "https://github.com/jaraco/zipp"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
SRC_URI[md5sum] = "ae81f228995578b840d76d1b7d87fede"
SRC_URI[sha256sum] = "ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb"
DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
inherit pypi setuptools3
DEPENDS += "${PYTHON_PN}-toml-native"
RDEPENDS:${PN} += "${PYTHON_PN}-compression \
${PYTHON_PN}-math \
${PYTHON_PN}-more-itertools"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,3 @@
#!/bin/sh
python3 -m test -v | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -r -e '/\.\.\. (ERROR|FAIL)/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g'