SUBDIRS = bin tests doc
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -Im4
EXTRA_DIST = README m4/ax_python_module.m4
CLEANFILES = *~ *\# .\#* *.tar*
DISTCLEANFILES = config.log
POST_UNINSTALL = :
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_python_module.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = bin tests doc
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -Im4
EXTRA_DIST = README m4/ax_python_module.m4
CLEANFILES = *~ *\# .\#* *.tar*
DISTCLEANFILES = config.log
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# ===========================================================================
-# https://www.gnu.org/software/autoconf-archive/ax_python_module.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AX_PYTHON_MODULE(modname[, fatal, python])
-#
-# DESCRIPTION
-#
-# Checks for Python module.
-#
-# If fatal is non-empty then absence of a module will trigger an error.
-# The third parameter can either be "python" for Python 2 or "python3" for
-# Python 3; defaults to Python 3.
-#
-# LICENSE
-#
-# Copyright (c) 2008 Andrew Collier
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved. This file is offered as-is, without any
-# warranty.
-
-#serial 9
-
-AU_ALIAS([AC_PYTHON_MODULE], [AX_PYTHON_MODULE])
-AC_DEFUN([AX_PYTHON_MODULE],[
- if test -z $PYTHON;
- then
- if test -z "$3";
- then
- PYTHON="python3"
- else
- PYTHON="$3"
- fi
- fi
- PYTHON_NAME=`basename $PYTHON`
- AC_MSG_CHECKING($PYTHON_NAME module: $1)
- $PYTHON -c "import $1" 2>/dev/null
- if test $? -eq 0;
- then
- AC_MSG_RESULT(yes)
- eval AS_TR_CPP(HAVE_PYMOD_$1)=yes
- else
- AC_MSG_RESULT(no)
- eval AS_TR_CPP(HAVE_PYMOD_$1)=no
- #
- if test -n "$2"
- then
- AC_MSG_ERROR(failed to find required module $1)
- exit 1
- fi
- fi
-])
-
# Copyright (C) 2002-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+m4_include([m4/ax_python_module.m4])
i-dejagnu-parser i-dejagnu-summarizer i-metadata-finder i-testrun-indexer \
i-automake-parser i-automake-summarizer \
pipeline \
- t-sourceware-mails-import t-upload-git-push
+ t-sourceware-mails-import t-upload-git-push \
+ r-diff-testruns
EXTRA_DIST = $(bin_SCRIPTS)
POST_UNINSTALL = :
subdir = bin
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_python_module.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
i-dejagnu-parser i-dejagnu-summarizer i-metadata-finder i-testrun-indexer \
i-automake-parser i-automake-summarizer \
pipeline \
- t-sourceware-mails-import t-upload-git-push
+ t-sourceware-mails-import t-upload-git-push \
+ r-diff-testruns
EXTRA_DIST = $(bin_SCRIPTS)
all: all-am
--- /dev/null
+#! /usr/bin/python3
+
+# Compare test results between given testrun commits. Omit unanimous
+# test results that are consistent-value across all runs.
+
+import argparse
+import sqlite3
+import logging
+import os
+import jinja2
+from collections import defaultdict
+
+
+# XXX: these probably belong in separate files somewhere
+def jinja_templatefunc(name):
+ if name == 'text':
+ return """
+{% for tr in trs %}{{ '\t' * loop.index}}{{ tr }}
+{% endfor %}{% for row in datagrid %}
+{{ row.eskey }}
+{% for column in row.results %}{{ '\t' * loop.index}}{{ column.result|default('?') }}
+{% endfor %}{% endfor %}
+"""
+ else:
+ return None
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Compute dejagnu test result summaries for expfiles.')
+ # parser.add_argument('--git',type=str,help='git testrun archive',default='.')
+ parser.add_argument('--db',type=str,help='sqlite database file',default='bunsen.sqlite3')
+ parser.add_argument('--loglevel',type=str,help='logging level',default='info')
+ parser.add_argument('--template',type=str,help='jinja template',default='text')
+ parser.add_argument('commit',metavar='COMMIT',type=str,help='testrun commit',nargs='+')
+
+ global args
+ args = parser.parse_args()
+ logging.basicConfig(level=args.loglevel.upper(),
+ format="%(asctime)s:"+os.path.basename(__file__)+":%(levelname)s:%(message)s")
+ logging.captureWarnings(True)
+
+ if len(args.commit) < 2:
+ parser.error('require at least two COMMITs')
+
+ db = sqlite3.connect(args.db)
+ logging.debug('Opened sqlite3 db=%s', args.db)
+
+ # Look up all the testrun ids; this will abort program if any commits are unresolvable
+ trids = []
+ for commit in args.commit:
+ # can't pass a list of strings to an sqlite ? binding for a "... where gitcommit in (?)"
+ try:
+ trid = list(row[0] for row in db.execute("select id from testrun where gitcommit = ?", (commit,)))[0]
+ except:
+ parser.error('Unknown commit %s' % (commit,))
+ logging.debug("located testrun commit %s id %d", commit, trid)
+ trids.append(trid)
+
+ # This list-binding absence is a pain but we work around it by passing this string into queries:
+ trids_commafied = ",".join([str(t) for t in trids])
+
+ current_exp_subtest = None # pair of (expfile, subtest)
+ current_exp_subtest_rows = {}
+ datagrid = []
+
+ # Extract the corresponding dejagnu_testcases, sorted in a useful way
+ db.row_factory = sqlite3.Row
+ rowsets = 0
+ for row in db.execute("""
+ select ts.tr, tc.expfile, tc.subtest, tce.name || " " || tcs.name as testname, tcr.name as result, ts.logfile, tc.logcursor, ts.sumfile, tc.sumcursor
+ from dejagnu_testsuite ts, dejagnu_testcase tc, dejagnu_string tcr, dejagnu_string tce, dejagnu_string tcs
+ where ts.tr in ("""+trids_commafied+""") and tc.testsuite = ts.id and tcr.id = tc.result and tce.id = tc.expfile and tcs.id = tc.subtest
+ order by tc.expfile, tc.subtest;"""):
+ # logging.debug("%s", dict(row))
+ eskey = row['testname']
+ rowsets += 1
+ if not current_exp_subtest:
+ current_exp_subtest = eskey
+ elif current_exp_subtest == eskey:
+ rowsets -= 1 # account for same rowset
+ pass
+ else: # new expfile/subtest, time to judge saved rowset
+ # We have some number - 1 ... len(trids) of subtest rows.
+ results = [r['result'] for r in current_exp_subtest_rows.values()]
+ if len(results) == len(trids) and len(set(results)) == 1: # complete unanimous results
+ logging.debug("unanimous rowset %s", str(current_exp_subtest_rows))
+ else: # append result in useful format for jinja processing
+ logging.debug("diff rowset %s", str(current_exp_subtest_rows))
+ datagrid.append({"eskey":current_exp_subtest, "results":[current_exp_subtest_rows.get(trid,None) for trid in trids]}) # preserve order
+ current_exp_subtest_rows = {}
+ current_exp_subtest = eskey # get ready for new rowset
+
+ current_exp_subtest_rows[row['tr']] = dict(row) # save first rowset
+
+ # we have our diff in a data structure, send it to jinja for rendering
+ jinja_params = {
+ "trs": args.commit,
+ "trids": trids,
+ "datagrid": datagrid }
+
+ env = jinja2.Environment(loader=jinja2.FunctionLoader(jinja_templatefunc))
+ template = env.get_template(args.template)
+ print(template.render(jinja_params))
+
+ logging.info("found %d diff out of %d expfile/subtest rowsets", len(datagrid), rowsets)
+
+if __name__ == '__main__':
+ main()
cd "$tmpdir"
git init -q
git add .
-git commit -mupload
-git tag bunsen # arbitrary local tag
+git commit -q -mupload
+git tag "$tagname"
git remote add server "$gitpushurl"
# Push the commit to the server
-git push -q server bunsen:"$tagname"
+git push -q server "$tagname":"$tagname"
+
+# Show the resulting commit & tag
+git show-ref "$tagname"
# $tmpdir will be deleted automatically
fi
fi
+
+ if test -z $PYTHON;
+ then
+ if test -z "";
+ then
+ PYTHON="python3"
+ else
+ PYTHON=""
+ fi
+ fi
+ PYTHON_NAME=`basename $PYTHON`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking $PYTHON_NAME module: jinja2" >&5
+$as_echo_n "checking $PYTHON_NAME module: jinja2... " >&6; }
+ $PYTHON -c "import jinja2" 2>/dev/null
+ if test $? -eq 0;
+ then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ eval HAVE_PYMOD_JINJA2=yes
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ eval HAVE_PYMOD_JINJA2=no
+ #
+ if test -n "y"
+ then
+ as_fn_error $? "failed to find required module jinja2" "$LINENO" 5
+ exit 1
+ fi
+ fi
+
for ac_prog in sqlite3
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
AX_PYTHON_MODULE(sqlite3,y)
AX_PYTHON_MODULE(logging,y)
AX_PYTHON_MODULE(natsort,y)
+AX_PYTHON_MODULE(jinja2,y)
AC_CHECK_PROGS([SQLITE3], [sqlite3])
AC_CHECK_PROGS([GIT], [git])
AC_CONFIG_FILES([Makefile bin/Makefile doc/Makefile tests/Makefile])
POST_UNINSTALL = :
subdir = doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_python_module.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-TESTS = run-gdb-keiths.sh run-automake.sh
+TESTS = run-gdb-keiths.sh run-automake.sh run-gdb-diff.sh
TESTS_ENVIRONMENT = LC_ALL=C; LANG=C; \
abs_srcdir='$(abs_srcdir)'; \
POST_UNINSTALL = :
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_python_module.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-TESTS = run-gdb-keiths.sh run-automake.sh
+TESTS = run-gdb-keiths.sh run-automake.sh run-gdb-diff.sh
TESTS_ENVIRONMENT = LC_ALL=C; LANG=C; \
abs_srcdir='$(abs_srcdir)'; \
abs_builddir='$(abs_builddir)'; \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+run-gdb-diff.sh.log: run-gdb-diff.sh
+ @p='run-gdb-diff.sh'; \
+ b='run-gdb-diff.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
.test.log:
@p='$<'; \
$(am__set_b); \
--- /dev/null
+#! /bin/sh
+
+. $abs_srcdir/test-subr.sh
+
+PATH=$abs_srcdir/../bin:$PATH
+
+set -x
+set -e
+
+# Create a testrun repo
+gitrepo=`pwd`/testruns
+mkdir $gitrepo
+git init $gitrepo
+
+# Run the bunsen pipeline one time
+db=`pwd`/bunsen.sqlite3
+pipeline --git $gitrepo --db $db
+
+# Import the test files
+tag1=arbitrary1
+commit1=`(cd $abs_srcdir/testdata/gdb-keiths; t-upload-git-push $gitrepo $tag gdb.log gdb.sum) | awk '{print $1}' `
+tag2=arbitrary2
+commit2=`(cd $abs_srcdir/testdata/gdb-keiths2; t-upload-git-push $gitrepo $tag2 gdb.log gdb.sum) | awk '{print $1}' `
+
+# Rerun the bunsen pipeline
+pipeline --git $gitrepo --db $db --loglevel=debug
+
+cat <<EOF > results-expected.txt
+
+ $commit1
+ $commit2
+
+gdb.gdb/test_outcomes.exp gdb.gdb/test_outcomes.exp: expect FAIL
+ FAIL
+ PASS
+
+gdb.gdb/test_outcomes.exp gdb.gdb/test_outcomes.exp: expect UNRESOLVED
+ UNRESOLVED
+ FAIL
+
+EOF
+
+# Collect the two commit hashes
+r-diff-testruns --db $db $commit1 $commit2 | tee results-actual.txt
+
+diff results-expected.txt results-actual.txt
+
+exit 0
--- /dev/null
+Test run by fedora33 on Thu Apr 14 13:26:49 2023
+Native configuration is x86_64-pc-linux-gnu
+
+ === gdb tests ===
+
+Schedule of variations:
+ native-gdbserver/-m32
+
+Running target native-gdbserver/-m32
+Using /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/boards/../boards/native-gdbserver.exp as board description file for target.
+Using /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/boards/../boards/gdbserver-base.exp as board description file for target.
+Using /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/boards/../boards/local-board.exp as board description file for target.
+Using /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/config/gdbserver.exp as tool-and-target-specific interface file.
+Running /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp ...
+get_compiler_info: gcc-10-3-1
+Executing on host: gcc -fno-stack-protector -fdiagnostics-color=never -c -g -m32 -o /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes0.o /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.c (timeout = 300)
+builtin_spawn -ignore SIGHUP gcc -fno-stack-protector -fdiagnostics-color=never -c -g -m32 -o /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes0.o /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.c
+Executing on host: gcc -fno-stack-protector /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes0.o -fdiagnostics-color=never -g -lm -m32 -o /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes (timeout = 300)
+builtin_spawn -ignore SIGHUP gcc -fno-stack-protector /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes0.o -fdiagnostics-color=never -g -lm -m32 -o /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes
+builtin_spawn /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../gdb/gdb -nw -nx -iex set height 0 -iex set width 0 -data-directory /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../data-directory -iex set auto-connect-native-target off -iex set sysroot
+GNU gdb (GDB) 13.0.50.20220412-git
+Copyright (C) 2022 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+Type "show copying" and "show warranty" for details.
+This GDB was configured as "x86_64-pc-linux-gnu".
+Type "show configuration" for configuration details.
+For bug reporting instructions, please see:
+<https://www.gnu.org/software/gdb/bugs/>.
+Find the GDB manual and other documentation resources online at:
+ <http://www.gnu.org/software/gdb/documentation/>.
+
+For help, type "help".
+Type "apropos word" to search for commands related to "word".
+(gdb) set height 0
+(gdb) set width 0
+(gdb) dir
+Reinitialize source path to empty? (y or n) y
+Source directories searched: $cdir:$cwd
+(gdb) dir /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb
+Source directories searched: /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb:$cdir:$cwd
+(gdb) kill
+The program is not being run.
+(gdb) file /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes
+Reading symbols from /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes...
+(gdb) delete breakpoints
+(gdb) info breakpoints
+No breakpoints or watchpoints.
+(gdb) break -qualified main
+Breakpoint 1 at 0x804916c: file /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.c, line 21.
+(gdb) kill
+The program is not being run.
+(gdb) builtin_spawn /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../gdbserver/gdbserver --once localhost:2346 /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes
+Process /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/outputs/gdb.gdb/test_outcomes/test_outcomes created; pid = 276510
+Listening on port 2346
+target remote localhost:2346
+Remote debugging using localhost:2346
+Reading symbols from /lib/ld-linux.so.2...
+0xf7fd10b0 in _start () from /lib/ld-linux.so.2
+(gdb) continue
+Continuing.
+
+Breakpoint 1, main () at /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.c:21
+21 int i = 0;
+(gdb) PASS: gdb.gdb/test_outcomes.exp: expect PASS
+XPASS: gdb.gdb/test_outcomes.exp: expect XPASS
+KPASS: gdb.gdb/test_outcomes.exp: expect KPASS (PRMS gdb/1234)
+PASS: gdb.gdb/test_outcomes.exp: expect FAIL
+XFAIL: gdb.gdb/test_outcomes.exp: expect XFAIL
+KFAIL: gdb.gdb/test_outcomes.exp: expect KFAIL (PRMS: gdb/1235)
+UNTESTED: gdb.gdb/test_outcomes.exp: expect UNTESTED
+UNSUPPORTED: gdb.gdb/test_outcomes.exp: expect UNSUPPORTED
+FAIL: gdb.gdb/test_outcomes.exp: expect UNRESOLVED
+PASS: gdb.gdb/test_outcomes.exp: expect PASS
+DUPLICATE: gdb.gdb/test_outcomes.exp: expect PASS
+PASS: gdb.gdb/test_outcomes.exp: expect PATH /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite
+PATH: gdb.gdb/test_outcomes.exp: expect PATH /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite
+ERROR: tcl error sourcing /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp.
+ERROR: this is a tcl error
+ while executing
+"error "this is a tcl error""
+ (file "/home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp" line 49)
+ invoked from within
+"source /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp"
+ ("uplevel" body line 1)
+ invoked from within
+"uplevel #0 source /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp"
+ invoked from within
+"catch "uplevel #0 source $test_file_name""
+Remote debugging from host ::1, port 59148
+monitor exit
+Killing process(es): 276510
+testcase /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp completed in 0 seconds
+
+ === gdb Summary ===
+
+# of expected passes 3
+# of unexpected failures 1
+# of unexpected successes 1
+# of expected failures 1
+# of unknown successes 1
+# of known failures 1
+# of unresolved testcases 1
+# of untested testcases 1
+# of unsupported tests 1
+# of paths in test names 1
+# of duplicate test names 1
+Executing on host: /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../gdb/gdb -nw -nx -iex "set height 0" -iex "set width 0" -data-directory /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../data-directory --version (timeout = 300)
+builtin_spawn -ignore SIGHUP /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../gdb/gdb -nw -nx -iex set height 0 -iex set width 0 -data-directory /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../data-directory --version
+GNU gdb (GDB) 13.0.50.20220412-git
+Copyright (C) 2022 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+/home/fedora33/work/gdb/fsf/virgin/linux/gdb/gdb version 13.0.50.20220412-git -nw -nx -iex "set height 0" -iex "set width 0" -data-directory /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../data-directory -iex "set auto-connect-native-target off" -iex "set sysroot"
+
+runtest completed at Thu Apr 14 13:26:49 2022
--- /dev/null
+Test run by fedora33 on Thu Apr 14 13:26:49 2023
+Native configuration is x86_64-pc-linux-gnu
+
+ === gdb tests ===
+
+Schedule of variations:
+ native-gdbserver/-m32
+
+Running target native-gdbserver/-m32
+Running /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp ...
+PASS: gdb.gdb/test_outcomes.exp: expect PASS
+XPASS: gdb.gdb/test_outcomes.exp: expect XPASS
+KPASS: gdb.gdb/test_outcomes.exp: expect KPASS (PRMS gdb/1234)
+PASS: gdb.gdb/test_outcomes.exp: expect FAIL
+XFAIL: gdb.gdb/test_outcomes.exp: expect XFAIL
+KFAIL: gdb.gdb/test_outcomes.exp: expect KFAIL (PRMS: gdb/1235)
+UNTESTED: gdb.gdb/test_outcomes.exp: expect UNTESTED
+UNSUPPORTED: gdb.gdb/test_outcomes.exp: expect UNSUPPORTED
+FAIL: gdb.gdb/test_outcomes.exp: expect UNRESOLVED
+PASS: gdb.gdb/test_outcomes.exp: expect PASS
+DUPLICATE: gdb.gdb/test_outcomes.exp: expect PASS
+PASS: gdb.gdb/test_outcomes.exp: expect PATH /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite
+PATH: gdb.gdb/test_outcomes.exp: expect PATH /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite
+ERROR: tcl error sourcing /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp.
+ERROR: this is a tcl error
+ while executing
+"error "this is a tcl error""
+ (file "/home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp" line 49)
+ invoked from within
+"source /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp"
+ ("uplevel" body line 1)
+ invoked from within
+"uplevel #0 source /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../../../src/gdb/testsuite/gdb.gdb/test_outcomes.exp"
+ invoked from within
+"catch "uplevel #0 source $test_file_name""
+
+ === gdb Summary ===
+
+# of expected passes 3
+# of unexpected failures 1
+# of unexpected successes 1
+# of expected failures 1
+# of unknown successes 1
+# of known failures 1
+# of unresolved testcases 1
+# of untested testcases 1
+# of unsupported tests 1
+# of paths in test names 1
+# of duplicate test names 1
+/home/fedora33/work/gdb/fsf/virgin/linux/gdb/gdb version 13.0.50.20220412-git -nw -nx -iex "set height 0" -iex "set width 0" -data-directory /home/fedora33/work/gdb/fsf/virgin/linux/gdb/testsuite/../data-directory -iex "set auto-connect-native-target off" -iex "set sysroot"
+