Merge branch '1441-1619-deprecate-gtester' into 'master'

Deprecate gtester and use TAP output for tests by default

Closes #1619 and #1441

See merge request GNOME/glib!842
This commit is contained in:
Philip Withnall 2019-05-17 12:12:53 +00:00
commit 522e74982e
12 changed files with 51 additions and 16 deletions

View File

@ -136,6 +136,10 @@
<chapter id="tools">
<title>GLib Tools</title>
<xi:include href="glib-gettextize.xml" />
</chapter>
<chapter id="deprecated-tools">
<title>Deprecated Tools</title>
<xi:include href="gtester.xml" />
<xi:include href="gtester-report.xml" />
</chapter>

View File

@ -35,6 +35,9 @@
<para><command>gtester-report</command> is a script which converts
the XML output generated by gtester into HTML.
</para>
<para>Since GLib 2.62, <command>gtester-report</command> is deprecated. Use
TAP for reporting test results instead, and feed it to the test harness provided
by your build system.</para>
</refsect1>
<refsect1><title>Options</title>

View File

@ -40,6 +40,9 @@
<para><command>gtester</command> is a utility to run unit tests that have
been written using the GLib test framework.
</para>
<para>Since GLib 2.62, <command>gtester-report</command> is deprecated. Use
TAP for reporting test results instead, and feed it to the test harness provided
by your build system.</para>
<para>
When called with the <option>-o</option> option, <command>gtester</command>
writes an XML report of the test results, which can be converted

View File

@ -678,7 +678,6 @@ foreach test_name, extra_args : gio_tests
env : local_test_env,
timeout : timeout,
suite : suite,
args : ['--tap'],
is_parallel : extra_args.get('is_parallel', true),
depends : extra_args.get('depends', []),
)

View File

@ -15,6 +15,10 @@
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, see <http://www.gnu.org/licenses/>.
# Deprecated: Since GLib 2.62, gtester and gtester-report have been deprecated
# in favour of TAP.
import datetime
import optparse
import sys, re, xml.dom.minidom
@ -343,6 +347,9 @@ class HTMLReportWriter(ReportWriter):
self.oprint ('<body>\n')
self.oprint ('<h2>GTester Unit Test Report</h2>\n')
self.handle_info ()
self.oprint ('<p style="color:red;font-weight:bold"><blink>'
'Deprecated: Since GLib 2.62, gtester and gtester-report are '
'deprecated. Port to TAP.</blink></p>\n');
self.oprint ('<table id="ResultTable" width="100%" border="1">\n<tr>\n')
self.oprint ('<th>Program / Testcase </th>\n')
self.oprint ('<th style="width:8em">Duration (sec)</th>\n')
@ -474,6 +481,10 @@ def main():
options, files = parse_opts()
if options is None:
return 0
print("Deprecated: Since GLib 2.62, gtester and gtester-report are "
"deprecated. Port to TAP.", file=sys.stderr)
xd = xml.dom.minidom.parse (files[0])
rr = ReportReader()
rr.trampoline (xd)

View File

@ -43,6 +43,7 @@ static gboolean gtester_quiet = FALSE;
static gboolean gtester_verbose = FALSE;
static gboolean gtester_list_tests = FALSE;
static gboolean gtester_selftest = FALSE;
static gboolean gtester_ignore_deprecation = FALSE;
static gboolean subtest_running = FALSE;
static gint subtest_exitstatus = 0;
static gboolean subtest_io_pending = FALSE;
@ -660,6 +661,11 @@ parse_args (gint *argc_p,
}
argv[i] = NULL;
}
else if (strcmp ("--i-know-this-is-deprecated", argv[i]) == 0)
{
gtester_ignore_deprecation = TRUE;
argv[i] = NULL;
}
}
/* collapse argv */
e = 1;
@ -690,6 +696,10 @@ main (int argc,
return 1;
}
if (!gtester_ignore_deprecation)
g_warning ("Deprecated: Since GLib 2.62, gtester and gtester-report are "
"deprecated. Port to TAP.");
if (output_filename)
{
int errsv;
@ -700,6 +710,8 @@ main (int argc,
}
test_log_printfe ("<?xml version=\"1.0\"?>\n");
test_log_printfe ("<!-- Deprecated: Since GLib 2.62, gtester and "
"gtester-report are deprecated. Port to TAP. -->\n");
test_log_printfe ("%s<gtester>\n", sindent (log_indent));
log_indent += 2;
for (ui = 1; ui < argc; ui++)

View File

@ -60,7 +60,6 @@
* SECTION:testing
* @title: Testing
* @short_description: a test framework
* @see_also: [gtester][gtester], [gtester-report][gtester-report]
*
* GLib provides a framework for writing and maintaining unit tests
* in parallel to the code they are testing. The API is designed according
@ -235,7 +234,10 @@
* If you don't have access to the Autotools TAP harness, you can use the
* [gtester][gtester] and [gtester-report][gtester-report] tools, and use
* the [glib.mk](https://gitlab.gnome.org/GNOME/glib/blob/glib-2-58/glib.mk)
* Automake template provided by GLib.
* Automake template provided by GLib. Note, however, that since GLib 2.62,
* [gtester][gtester] and [gtester-report][gtester-report] have been deprecated
* in favour of using TAP. The `--tap` argument to tests is enabled by default
* as of GLib 2.62.
*/
/**
@ -832,7 +834,7 @@ static char *test_trap_last_stdout = NULL;
static char *test_trap_last_stderr = NULL;
static char *test_uri_base = NULL;
static gboolean test_debug_log = FALSE;
static gboolean test_tap_log = FALSE;
static gboolean test_tap_log = TRUE; /* default to TAP as of GLib 2.62; see #1619; the non-TAP output mode is deprecated */
static gboolean test_nonfatal_assertions = FALSE;
static DestroyEntry *test_destroy_queue = NULL;
static char *test_argv0 = NULL;
@ -1108,6 +1110,9 @@ parse_args (gint *argc_p,
test_log_fd = g_ascii_strtoull (argv[i], NULL, 0);
}
argv[i] = NULL;
/* Force non-TAP output when using gtester */
test_tap_log = FALSE;
}
else if (strcmp ("--GTestSkipCount", argv[i]) == 0 || strncmp ("--GTestSkipCount=", argv[i], 17) == 0)
{
@ -1135,6 +1140,10 @@ parse_args (gint *argc_p,
}
#endif
argv[i] = NULL;
/* Force non-TAP output when spawning a subprocess, since people often
* test the stdout/stderr of the subprocess strictly */
test_tap_log = FALSE;
}
else if (strcmp ("-p", argv[i]) == 0 || strncmp ("-p=", argv[i], 3) == 0)
{

View File

@ -204,8 +204,7 @@ foreach test_name, extra_args : glib_tests
suite = ['glib'] + extra_args.get('suite', [])
timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
test(test_name, exe, env : test_env, timeout : timeout, suite : suite,
args : ['--tap'])
test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
endforeach
# test-spawn-echo helper binary required by the spawn tests above
@ -229,7 +228,7 @@ if not meson.is_cross_build() and host_system != 'windows'
if xmllint.found()
tmpsample_xml = custom_target('tmpsample.xml',
output : 'tmpsample.xml',
command : [ gtester, '-k', '--quiet', '-o', '@OUTPUT@',
command : [ gtester, '-k', '--quiet', '--i-know-this-is-deprecated', '-o', '@OUTPUT@',
'--test-arg=--gtester-selftest', gtester])
test('gtester-xmllint-check', xmllint,

View File

@ -103,8 +103,7 @@ foreach test_name, extra_args : gobject_tests
timeout = timeout * 10
endif
test(test_name, exe, env : test_env, timeout : timeout, suite : suite,
args: ['--tap'])
test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
endforeach
test(

View File

@ -1,4 +1,4 @@
[Test]
Type=session
Exec=@env@@installed_tests_dir@/@program@ --tap
Exec=@env@@installed_tests_dir@/@program@
Output=TAP

View File

@ -60,7 +60,6 @@ foreach test_name, extra_args : gobject_tests
extra_sources = extra_args.get('extra_sources', [])
install = installed_tests_enabled and extra_args.get('install', true)
template = extra_args.get('tap', false) ? installed_tests_template_tap : installed_tests_template
test_command_args = extra_args.get('tap', false) ? ['--tap'] : []
if install
test_conf = configuration_data()
@ -86,8 +85,7 @@ foreach test_name, extra_args : gobject_tests
suite = ['gobject'] + extra_args.get('suite', [])
timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
# FIXME? TESTS_ENVIRONMENT = LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset
test(test_name, exe, env : test_env, timeout : timeout, suite : suite,
args : test_command_args)
test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
endforeach
# Don't install these ones, and keep them out of 'make check' because they take too long...

View File

@ -103,7 +103,6 @@ foreach test_name, extra_args : tests
extra_sources = extra_args.get('extra_sources', [])
install = installed_tests_enabled and extra_args.get('install', true)
template = extra_args.get('tap', false) ? installed_tests_template_tap : installed_tests_template
test_command_args = extra_args.get('tap', false) ? ['--tap'] : []
if install
test_conf = configuration_data()
@ -131,8 +130,7 @@ foreach test_name, extra_args : tests
suite = ['glib'] + extra_args.get('suite', [])
timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
# FIXME? TESTS_ENVIRONMENT = LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset
test(test_name, exe, env : test_env, timeout : timeout, suite : suite,
args : test_command_args)
test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
endforeach
foreach program_name, extra_args : test_extra_programs