mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #27825 from freehan/jenkinjunit
Automatic merge from submit-queue introduce shell2junit fork shell2junit from https://github.com/manolo/shell2junit
This commit is contained in:
commit
0742bc058c
172
third_party/forked/shell2junit/LICENSE
vendored
Normal file
172
third_party/forked/shell2junit/LICENSE
vendored
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
Shell2Junit License Information
|
||||||
|
|
||||||
|
Feb, 2010
|
||||||
|
|
||||||
|
shell2junit library and sample code is licensed under Apache License, v.2.0.
|
||||||
|
|
||||||
|
(c) 2009 Manolo Carrasco (Manuel Carrasco Moñino)
|
||||||
|
|
||||||
|
=====
|
||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction, and
|
||||||
|
distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by the
|
||||||
|
copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all other
|
||||||
|
entities that control, are controlled by, or are under common control with
|
||||||
|
that entity. For the purposes of this definition, "control" means (i) the
|
||||||
|
power, direct or indirect, to cause the direction or management of such
|
||||||
|
entity, whether by contract or otherwise, or (ii) ownership of fifty percent
|
||||||
|
(50%) or more of the outstanding shares, or (iii) beneficial ownership of
|
||||||
|
such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity exercising
|
||||||
|
permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation source, and
|
||||||
|
configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical transformation
|
||||||
|
or translation of a Source form, including but not limited to compiled
|
||||||
|
object code, generated documentation, and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or Object form,
|
||||||
|
made available under the License, as indicated by a copyright notice that is
|
||||||
|
included in or attached to the work (an example is provided in the Appendix
|
||||||
|
below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object form,
|
||||||
|
that is based on (or derived from) the Work and for which the editorial
|
||||||
|
revisions, annotations, elaborations, or other modifications represent, as a
|
||||||
|
whole, an original work of authorship. For the purposes of this License,
|
||||||
|
Derivative Works shall not include works that remain separable from, or
|
||||||
|
merely link (or bind by name) to the interfaces of, the Work and Derivative
|
||||||
|
Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including the original
|
||||||
|
version of the Work and any modifications or additions to that Work or
|
||||||
|
Derivative Works thereof, that is intentionally submitted to Licensor for
|
||||||
|
inclusion in the Work by the copyright owner or by an individual or Legal
|
||||||
|
Entity authorized to submit on behalf of the copyright owner. For the
|
||||||
|
purposes of this definition, "submitted" means any form of electronic,
|
||||||
|
verbal, or written communication sent to the Licensor or its
|
||||||
|
representatives, including but not limited to communication on electronic
|
||||||
|
mailing lists, source code control systems, and issue tracking systems that
|
||||||
|
are managed by, or on behalf of, the Licensor for the purpose of discussing
|
||||||
|
and improving the Work, but excluding communication that is conspicuously
|
||||||
|
marked or otherwise designated in writing by the copyright owner as "Not a
|
||||||
|
Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity on
|
||||||
|
behalf of whom a Contribution has been received by Licensor and subsequently
|
||||||
|
incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||||
|
License, each Contributor hereby grants to You a perpetual, worldwide,
|
||||||
|
non-exclusive, no-charge, royalty-free, irrevocable copyright license to
|
||||||
|
reproduce, prepare Derivative Works of, publicly display, publicly perform,
|
||||||
|
sublicense, and distribute the Work and such Derivative Works in Source or
|
||||||
|
Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of this
|
||||||
|
License, each Contributor hereby grants to You a perpetual, worldwide,
|
||||||
|
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in
|
||||||
|
this section) patent license to make, have made, use, offer to sell, sell,
|
||||||
|
import, and otherwise transfer the Work, where such license applies only to
|
||||||
|
those patent claims licensable by such Contributor that are necessarily
|
||||||
|
infringed by their Contribution(s) alone or by combination of their
|
||||||
|
Contribution(s) with the Work to which such Contribution(s) was submitted.
|
||||||
|
If You institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
||||||
|
Contribution incorporated within the Work constitutes direct or contributory
|
||||||
|
patent infringement, then any patent licenses granted to You under this
|
||||||
|
License for that Work shall terminate as of the date such litigation is
|
||||||
|
filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the Work or
|
||||||
|
Derivative Works thereof in any medium, with or without modifications, and
|
||||||
|
in Source or Object form, provided that You meet the following conditions:
|
||||||
|
|
||||||
|
a. You must give any other recipients of the Work or Derivative Works a copy
|
||||||
|
of this License; and
|
||||||
|
|
||||||
|
b. You must cause any modified files to carry prominent notices stating that
|
||||||
|
You changed the files; and
|
||||||
|
|
||||||
|
c. You must retain, in the Source form of any Derivative Works that You
|
||||||
|
distribute, all copyright, patent, trademark, and attribution notices from
|
||||||
|
the Source form of the Work, excluding those notices that do not pertain to
|
||||||
|
any part of the Derivative Works; and
|
||||||
|
|
||||||
|
d. If the Work includes a "NOTICE" text file as part of its distribution,
|
||||||
|
then any Derivative Works that You distribute must include a readable copy
|
||||||
|
of the attribution notices contained within such NOTICE file, excluding
|
||||||
|
those notices that do not pertain to any part of the Derivative Works, in at
|
||||||
|
least one of the following places: within a NOTICE text file distributed as
|
||||||
|
part of the Derivative Works; within the Source form or documentation, if
|
||||||
|
provided along with the Derivative Works; or, within a display generated by
|
||||||
|
the Derivative Works, if and wherever such third-party notices normally
|
||||||
|
appear. The contents of the NOTICE file are for informational purposes only
|
||||||
|
and do not modify the License. You may add Your own attribution notices
|
||||||
|
within Derivative Works that You distribute, alongside or as an addendum to
|
||||||
|
the NOTICE text from the Work, provided that such additional attribution
|
||||||
|
notices cannot be construed as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and may
|
||||||
|
provide additional or different license terms and conditions for use,
|
||||||
|
reproduction, or distribution of Your modifications, or for any such
|
||||||
|
Derivative Works as a whole, provided Your use, reproduction, and
|
||||||
|
distribution of the Work otherwise complies with the conditions stated in
|
||||||
|
this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise, any
|
||||||
|
Contribution intentionally submitted for inclusion in the Work by You to the
|
||||||
|
Licensor shall be under the terms and conditions of this License, without
|
||||||
|
any additional terms or conditions. Notwithstanding the above, nothing
|
||||||
|
herein shall supersede or modify the terms of any separate license agreement
|
||||||
|
you may have executed with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor, except
|
||||||
|
as required for reasonable and customary use in describing the origin of the
|
||||||
|
Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
|
||||||
|
writing, Licensor provides the Work (and each Contributor provides its
|
||||||
|
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied, including, without limitation, any
|
||||||
|
warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining
|
||||||
|
the appropriateness of using or redistributing the Work and assume any risks
|
||||||
|
associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory, whether
|
||||||
|
in tort (including negligence), contract, or otherwise, unless required by
|
||||||
|
applicable law (such as deliberate and grossly negligent acts) or agreed to
|
||||||
|
in writing, shall any Contributor be liable to You for damages, including
|
||||||
|
any direct, indirect, special, incidental, or consequential damages of any
|
||||||
|
character arising as a result of this License or out of the use or inability
|
||||||
|
to use the Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all other
|
||||||
|
commercial damages or losses), even if such Contributor has been advised of
|
||||||
|
the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing the Work
|
||||||
|
or Derivative Works thereof, You may choose to offer, and charge a fee for,
|
||||||
|
acceptance of support, warranty, indemnity, or other liability obligations
|
||||||
|
and/or rights consistent with this License. However, in accepting such
|
||||||
|
obligations, You may act only on Your own behalf and on Your sole
|
||||||
|
responsibility, not on behalf of any other Contributor, and only if You
|
||||||
|
agree to indemnify, defend, and hold each Contributor harmless for any
|
||||||
|
liability incurred by, or claims asserted against, such Contributor by
|
||||||
|
reason of your accepting any such warranty or additional liability.
|
||||||
|
|
177
third_party/forked/shell2junit/sh2ju.sh
vendored
Executable file
177
third_party/forked/shell2junit/sh2ju.sh
vendored
Executable file
@ -0,0 +1,177 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
### Copyright 2010 Manuel Carrasco Moñino. (manolo at apache.org)
|
||||||
|
###
|
||||||
|
### Licensed under the Apache License, Version 2.0.
|
||||||
|
### You may obtain a copy of it at
|
||||||
|
### http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
###
|
||||||
|
### A library for shell scripts which creates reports in jUnit format.
|
||||||
|
### These reports can be used in Jenkins, or any other CI.
|
||||||
|
###
|
||||||
|
### Usage:
|
||||||
|
### - Include this file in your shell script
|
||||||
|
### - Use juLog to call your command any time you want to produce a new report
|
||||||
|
### Usage: juLog <options> command arguments
|
||||||
|
### options:
|
||||||
|
### -class="MyClass" : a class name which will be shown in the junit report
|
||||||
|
### -name="TestName" : the test name which will be shown in the junit report
|
||||||
|
### -error="RegExp" : a regexp which sets the test as failure when the output matches it
|
||||||
|
### -ierror="RegExp" : same as -error but case insensitive
|
||||||
|
### -output="Path" : path to output directory, defaults to "./results"
|
||||||
|
### - Junit reports are left in the folder 'result' under the directory where the script is executed.
|
||||||
|
### - Configure Jenkins to parse junit files from the generated folder
|
||||||
|
###
|
||||||
|
|
||||||
|
asserts=00; errors=0; total=0; content=""
|
||||||
|
date=`which gdate 2>/dev/null || which date`
|
||||||
|
|
||||||
|
# default output folder
|
||||||
|
juDIR=`pwd`/results
|
||||||
|
|
||||||
|
# The name of the suite is calculated based in your script name
|
||||||
|
suite=""
|
||||||
|
|
||||||
|
# A wrapper for the eval method witch allows catching seg-faults and use tee
|
||||||
|
errfile=/tmp/evErr.$$.log
|
||||||
|
function eVal() {
|
||||||
|
(eval "$1")
|
||||||
|
# stdout and stderr may currently be inverted (see below) so echo may write to stderr
|
||||||
|
echo $? 2>&1 | tr -d "\n" > $errfile
|
||||||
|
}
|
||||||
|
|
||||||
|
# Method to clean old tests
|
||||||
|
function juLogClean() {
|
||||||
|
echo "+++ Removing old junit reports from: $juDIR "
|
||||||
|
rm -f "$juDIR"/TEST-*
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execute a command and record its results
|
||||||
|
function juLog() {
|
||||||
|
suite="";
|
||||||
|
errfile=/tmp/evErr.$$.log
|
||||||
|
date=`which gdate || which date`
|
||||||
|
asserts=00; errors=0; total=0; content=""
|
||||||
|
|
||||||
|
# parse arguments
|
||||||
|
ya=""; icase=""
|
||||||
|
while [ -z "$ya" ]; do
|
||||||
|
case "$1" in
|
||||||
|
-name=*) name=`echo "$1" | sed -e 's/-name=//'`; shift;;
|
||||||
|
-class=*) class=`echo "$1" | sed -e 's/-class=//'`; shift;;
|
||||||
|
-ierror=*) ereg=`echo "$1" | sed -e 's/-ierror=//'`; icase="-i"; shift;;
|
||||||
|
-error=*) ereg=`echo "$1" | sed -e 's/-error=//'`; shift;;
|
||||||
|
-output=*) juDIR=`echo "$1" | sed -e 's/-output=//'`; shift;;
|
||||||
|
*) ya=1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# create output directory
|
||||||
|
mkdir -p "$juDIR" || exit
|
||||||
|
# use first arg as name if it was not given
|
||||||
|
if [ -z "$name" ]; then
|
||||||
|
name="$asserts-$1"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$class" = "" ]]; then
|
||||||
|
class="default"
|
||||||
|
fi
|
||||||
|
|
||||||
|
suite=$class
|
||||||
|
|
||||||
|
# calculate command to eval
|
||||||
|
[ -z "$1" ] && return
|
||||||
|
cmd="$1"; shift
|
||||||
|
while [ -n "$1" ]
|
||||||
|
do
|
||||||
|
cmd="$cmd \"$1\""
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# eval the command sending output to a file
|
||||||
|
outf=/var/tmp/ju$$.txt
|
||||||
|
errf=/var/tmp/ju$$-err.txt
|
||||||
|
>$outf
|
||||||
|
echo "" | tee -a $outf
|
||||||
|
echo "+++ Running case: $class.$name " | tee -a $outf
|
||||||
|
echo "+++ working dir: "`pwd` | tee -a $outf
|
||||||
|
echo "+++ command: $cmd" | tee -a $outf
|
||||||
|
ini=`$date +%s.%N`
|
||||||
|
# execute the command, temporarily swapping stderr and stdout so they can be tee'd to separate files,
|
||||||
|
# then swapping them back again so that the streams are written correctly for the invoking process
|
||||||
|
( (eVal "$cmd" | tee -a $outf) 3>&1 1>&2 2>&3 | tee $errf) 3>&1 1>&2 2>&3
|
||||||
|
evErr=`cat $errfile`
|
||||||
|
rm -f $errfile
|
||||||
|
end=`$date +%s.%N`
|
||||||
|
echo "+++ exit code: $evErr" | tee -a $outf
|
||||||
|
|
||||||
|
# set the appropriate error, based in the exit code and the regex
|
||||||
|
[ $evErr != 0 ] && err=1 || err=0
|
||||||
|
out=`cat $outf | sed -e 's/^\([^+]\)/| \1/g'`
|
||||||
|
if [ $err = 0 -a -n "$ereg" ]; then
|
||||||
|
H=`echo "$out" | egrep $icase "$ereg"`
|
||||||
|
[ -n "$H" ] && err=1
|
||||||
|
fi
|
||||||
|
echo "+++ error: $err" | tee -a $outf
|
||||||
|
rm -f $outf
|
||||||
|
|
||||||
|
errMsg=`cat $errf`
|
||||||
|
rm -f $errf
|
||||||
|
# calculate vars
|
||||||
|
asserts=$(($asserts+1))
|
||||||
|
errors=$(($errors+$err))
|
||||||
|
time=`echo "$end - $ini" | bc -l`
|
||||||
|
total=`echo "$total + $time" | bc -l`
|
||||||
|
|
||||||
|
# write the junit xml report
|
||||||
|
## failure tag
|
||||||
|
[ $err = 0 ] && failure="" || failure="
|
||||||
|
<failure type=\"ScriptError\" message=\"Script Error\">
|
||||||
|
<![CDATA[
|
||||||
|
$errMsg
|
||||||
|
]]>
|
||||||
|
</failure>
|
||||||
|
"
|
||||||
|
## testcase tag
|
||||||
|
content="$content
|
||||||
|
<testcase assertions=\"1\" name=\"$name\" time=\"$time\" classname=\"$class\">
|
||||||
|
$failure
|
||||||
|
<system-out>
|
||||||
|
<![CDATA[
|
||||||
|
$out
|
||||||
|
]]>
|
||||||
|
</system-out>
|
||||||
|
<system-err>
|
||||||
|
<![CDATA[
|
||||||
|
$errMsg
|
||||||
|
]]>
|
||||||
|
</system-err>
|
||||||
|
</testcase>
|
||||||
|
"
|
||||||
|
## testsuite block
|
||||||
|
|
||||||
|
if [[ -e "$juDIR/TEST-$suite.xml" ]]; then
|
||||||
|
# file exists. first update the failures count
|
||||||
|
failCount=`sed -n "s/.*testsuite.*failures=\"\([0-9]*\)\".*/\1/p" "$juDIR/TEST-$suite.xml"`
|
||||||
|
errors=$(($failCount+$errors))
|
||||||
|
sed -i "0,/failures=\"$failCount\"/ s/failures=\"$failCount\"/failures=\"$errors\"/" "$juDIR/TEST-$suite.xml"
|
||||||
|
sed -i "0,/errors=\"$failCount\"/ s/errors=\"$failCount\"/errors=\"$errors\"/" "$juDIR/TEST-$suite.xml"
|
||||||
|
|
||||||
|
# file exists. Need to append to it. If we remove the testsuite end tag, we can just add it in after.
|
||||||
|
sed -i "s^</testsuite>^^g" $juDIR/TEST-$suite.xml ## remove testSuite so we can add it later
|
||||||
|
cat <<EOF >> "$juDIR/TEST-$suite.xml"
|
||||||
|
$content
|
||||||
|
</testsuite>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
else
|
||||||
|
# no file exists. Adding a new file
|
||||||
|
cat <<EOF > "$juDIR/TEST-$suite.xml"
|
||||||
|
<testsuite failures="$errors" assertions="$assertions" name="$suite" tests="1" errors="$errors" time="$total">
|
||||||
|
$content
|
||||||
|
</testsuite>
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user