From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-3.8 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 992B21F47C for ; Thu, 12 Jan 2023 11:42:22 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=clisp.org header.i=@clisp.org header.a=rsa-sha256 header.s=strato-dkim-0002 header.b=D8GoC29n; dkim-atps=neutral Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pFvyF-00056d-Lf; Thu, 12 Jan 2023 06:42:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pFvyD-0004uk-4g for bug-gnulib@gnu.org; Thu, 12 Jan 2023 06:42:09 -0500 Received: from mo4-p00-ob.smtp.rzone.de ([85.215.255.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pFvy9-0007aM-M3 for bug-gnulib@gnu.org; Thu, 12 Jan 2023 06:42:08 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1673523721; cv=none; d=strato.com; s=strato-dkim-0002; b=Cu7Pq69WkxQyZHBfBQBZiuqvdR7N5SOOm1cP54luM6yqWo7hjFf8pWnGT9ky0Rdw0L OYLTBtyFlcEfBFGmdDvYYv5mwmnvXAybAiWBM45U6bioDLatbaHXOoRQ4+BV2C//cKWF ElDIqdDMzuRvdbqimIOIVbZ/est86VGPhv73Zy+FBsnAM+uLsGNPhQ0zUw3FJqJ8CsSV HgsqrkdBkSmprJBXBOqdLxMwVRW6TfHbSd2USUhbfP1sk5IUYfkFbeh9ZDn4N/Fy4qkl fPuEv4eFOTqj6IXPai/RLuP2zD9BfbzuA4Xr7iaxn8Q7ZxAgthdYcrE0t/qU+pAipFu7 6Y4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1673523721; s=strato-dkim-0002; d=strato.com; h=Message-ID:Date:Subject:To:From:Cc:Date:From:Subject:Sender; bh=ySaqzaSedVQViDLZaJ3dse5+AeWp2Eq/0OSKlpy6YsQ=; b=Y/ExpPIPwtzI/q1od0W1df7xHvGy8QHWUQCDX+Y8sAHDL6rvRdeXmxk/TDAfnLr8VK sQHab5VcJwQ9ONLgfJkMrgTk5blRtaXwOpJOz65um2BUFW5laXxNTPZi2tZLKeLFGXwt GPzR1XtMOnygh50XDkdP89H14UDIOnJN0wILq/WzITjLfLdEehtuMr5Rq87yNrVm7+3n /RpEIs3zPWfJ7dgIAU30zpQsfL16kqJsgEV1e6zAmNnYRlmCNFblKZWmX+jlwQB/QEqf DR4LzDefqSYk/PUCXHVY+nwTDGKZDrk+NboKP/aTb0f/vfkn8MGb8cVpJIjnnD13k7OX wQpQ== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1673523721; s=strato-dkim-0002; d=clisp.org; h=Message-ID:Date:Subject:To:From:Cc:Date:From:Subject:Sender; bh=ySaqzaSedVQViDLZaJ3dse5+AeWp2Eq/0OSKlpy6YsQ=; b=D8GoC29niVEnDg9yWzNkQrjVL0QCIE+05otgSc12pgcH7/nIM6MEVJKOxjACLxyWFs A56UMJIz5isDNHkKAxKjwG89Xhb1z9ijAgphJc1kUe226ULKgvuUzUsXwc2KRyVuv2SI J7TuBtcZp1vnPOCaJGEB3oxI+RdwP50xRLyCwTXxFR3u7K0F3mAPCQtT26YXYEwb/GNl Bf+tzMOCroZpHTNWoD7Xj/doA+GuaIEbYkjs0oTNdioUabcsbxZs2t4hIfVPU1QFfkFi mNmMe4HCh21ZytyT+x0bBObjWjwyFS7qC8C8ts5St4r6szZYa6BlpRnuvvTf/laiwKtK Ipcg== X-RZG-AUTH: ":Ln4Re0+Ic/6oZXR1YgKryK8brlshOcZlIWs+iCP5vnk6shH0WWb0LN8XZoH94zq68+3cfpOV1KfevSn/sVBN8TS9zA9aoIqWAw==" Received: from nimes.localnet by smtp.strato.de (RZmta 48.6.2 AUTH) with ESMTPSA id I8f358z0CBg165t (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Thu, 12 Jan 2023 12:42:01 +0100 (CET) From: Bruno Haible To: bug-gnulib@gnu.org Subject: error, verror: Add tests Date: Thu, 12 Jan 2023 12:42:01 +0100 Message-ID: <3640038.8FI41Ny9JD@nimes> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart2086692.CLbsiaQdQ3" Content-Transfer-Encoding: 7Bit Received-SPF: none client-ip=85.215.255.23; envelope-from=bruno@clisp.org; helo=mo4-p00-ob.smtp.rzone.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org This is a multi-part message in MIME format. --nextPart2086692.CLbsiaQdQ3 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" In a testdir on Android 11, I am seeing these test failures: FAIL: test-xstrtoimax.sh ======================== --- exp 2023-01-10 14:13:27.438800298 +0100 +++ out 2023-01-10 14:13:27.388800678 +0100 @@ -1,9 +1,9 @@ 1->1 () -1->-1 () 1k->1024 () -invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' -X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large -invalid X argument 'x' -invalid suffix in X argument '9x' + invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' + X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large + invalid X argument 'x' + invalid suffix in X argument '9x' 010->8 () MiB->1048576 () FAIL test-xstrtoimax.sh (exit status: 1) FAIL: test-xstrtol.sh ===================== --- expected 2023-01-10 14:13:28.422126166 +0100 +++ out 2023-01-10 14:13:28.378793162 +0100 @@ -1,20 +1,20 @@ 1->1 () -1->-1 () 1k->1024 () -invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' -X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large -invalid X argument 'x' -invalid suffix in X argument '9x' + invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' + X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large + invalid X argument 'x' + invalid suffix in X argument '9x' 010->8 () MiB->1048576 () -invalid suffix in X argument '1bB' + invalid suffix in X argument '1bB' 1->1 () -invalid X argument '-1' + invalid X argument '-1' 1k->1024 () -invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' -X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large -invalid X argument 'x' -invalid suffix in X argument '9x' + invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' + X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large + invalid X argument 'x' + invalid suffix in X argument '9x' 010->8 () MiB->1048576 () -invalid suffix in X argument '1bB' + invalid suffix in X argument '1bB' FAIL test-xstrtol.sh (exit status: 1) FAIL: test-xstrtoll.sh ====================== --- expected 2023-01-10 14:13:29.378785569 +0100 +++ out 2023-01-10 14:13:29.328785949 +0100 @@ -1,18 +1,18 @@ 1->1 () -1->-1 () 1k->1024 () -invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' -X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large -invalid X argument 'x' -invalid suffix in X argument '9x' + invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' + X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large + invalid X argument 'x' + invalid suffix in X argument '9x' 010->8 () MiB->1048576 () 1->1 () -invalid X argument '-1' + invalid X argument '-1' 1k->1024 () -invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' -X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large -invalid X argument 'x' -invalid suffix in X argument '9x' + invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' + X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large + invalid X argument 'x' + invalid suffix in X argument '9x' 010->8 () MiB->1048576 () FAIL test-xstrtoll.sh (exit status: 1) FAIL: test-xstrtoumax.sh ======================== --- exp 2023-01-10 14:13:30.125446567 +0100 +++ out 2023-01-10 14:13:30.082113563 +0100 @@ -1,9 +1,9 @@ 1->1 () -invalid X argument '-1' + invalid X argument '-1' 1k->1024 () -invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' -X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large -invalid X argument 'x' -invalid suffix in X argument '9x' + invalid suffix in X argument '99999999999999999999999999999999999999999999999999999999999999999999h' + X argument '99999999999999999999999999999999999999999999999999999999999999999999' too large + invalid X argument 'x' + invalid suffix in X argument '9x' 010->8 () MiB->1048576 () FAIL test-xstrtoumax.sh (exit status: 1) Looking at the code of xstrtol-error, this seems to indicate that the error() functions inserts an additional space where it shouldn't. So, as a first step, let me add a unit test for the 'error' module. And, while at it, also one for the 'verror' module. 2023-01-12 Bruno Haible verror: Add tests. * tests/test-verror.sh: New file, based on tests/test-error.sh. * tests/test-verror.c: New file, based on tests/test-error.c. * modules/verror-tests: New file. 2023-01-12 Bruno Haible error: Add tests. * tests/test-error.sh: New file. * tests/test-error.c: New file. * modules/error-tests: New file. --nextPart2086692.CLbsiaQdQ3 Content-Disposition: attachment; filename="0001-error-Add-tests.patch" Content-Transfer-Encoding: quoted-printable Content-Type: text/x-patch; charset="UTF-8"; name="0001-error-Add-tests.patch" =46rom 4545825d5a650954c4885460b719e0978f8a214d Mon Sep 17 00:00:00 2001 =46rom: Bruno Haible Date: Thu, 12 Jan 2023 11:48:27 +0100 Subject: [PATCH 1/2] error: Add tests. * tests/test-error.sh: New file. * tests/test-error.c: New file. * modules/error-tests: New file. =2D-- ChangeLog | 7 ++++ modules/error-tests | 12 +++++++ tests/test-error.c | 84 +++++++++++++++++++++++++++++++++++++++++++++ tests/test-error.sh | 36 +++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 modules/error-tests create mode 100644 tests/test-error.c create mode 100755 tests/test-error.sh diff --git a/ChangeLog b/ChangeLog index da069889d2..841d6e818e 100644 =2D-- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2023-01-12 Bruno Haible + + error: Add tests. + * tests/test-error.sh: New file. + * tests/test-error.c: New file. + * modules/error-tests: New file. + 2023-01-11 Bruno Haible =20 xstrtol-error: Improve comments. diff --git a/modules/error-tests b/modules/error-tests new file mode 100644 index 0000000000..c0cef0f9b6 =2D-- /dev/null +++ b/modules/error-tests @@ -0,0 +1,12 @@ +Files: +tests/test-error.sh +tests/test-error.c +tests/macros.h + +Depends-on: + +configure.ac: + +Makefile.am: +TESTS +=3D test-error.sh +check_PROGRAMS +=3D test-error diff --git a/tests/test-error.c b/tests/test-error.c new file mode 100644 index 0000000000..67600d34f9 =2D-- /dev/null +++ b/tests/test-error.c @@ -0,0 +1,84 @@ +/* Test of error.h functions. + Copyright (C) 2023 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . = */ + +/* Written by Bruno Haible , 2023. */ + +#include + +#include "error.h" + +#include + +#include "macros.h" + +/* Custom function to not show the program name in error messages. */ +static void +print_no_progname (void) +{ +} + +int +main (int argc, char *argv[]) +{ + /* Test error() function with zero STATUS and zero ERRNUM. */ + error (0, 0, "bummer"); + /* With format string arguments. */ + errno =3D EINVAL; /* should be ignored */ + error (0, 0, "Zonk %d%d%d is too large", 1, 2, 3); + /* With non-ASCII characters. */ + error (0, 0, "Pok=C3=A9mon started"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 3); + + /* Test error_at_line() function with zero STATUS and zero ERRNUM. */ + error_at_line (0, 0, "d1/foo.c", 10, "invalid blub"); + error_at_line (0, 0, "d1/foo.c", 10, "invalid blarn"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 5); + + /* Test error_one_per_line. */ + error_one_per_line =3D 1; + error_at_line (0, 0, "d1/foo.c", 10, "unsupported glink"); + /* Another line number. */ + error_at_line (0, 0, "d1/foo.c", 13, "invalid brump"); + /* Another file name. */ + error_at_line (0, 0, "d2/foo.c", 13, "unsupported flinge"); + /* Same file name and same line number =3D> message not shown. */ + error_at_line (0, 0, "d2/foo.c", 13, "invalid bark"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 8); + error_one_per_line =3D 0; + + /* Test error_print_progname. */ + error_print_progname =3D print_no_progname; + error (0, 0, "hammer"); + error (0, 0, "boing %d%d%d is too large", 1, 2, 3); + error_at_line (0, 0, "d2/bar.c", 11, "bark too loud"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 11); + error_print_progname =3D NULL; + + /* Test error() function with nonzero ERRNUM. */ + errno =3D EINVAL; /* should be ignored */ + error (0, EACCES, "can't steal"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 12); + + /* Test error() function with nonzero STATUS. */ + error (4, 0, "fatal error"); + + return 0; +} diff --git a/tests/test-error.sh b/tests/test-error.sh new file mode 100755 index 0000000000..d173e183f4 =2D-- /dev/null +++ b/tests/test-error.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# Test of the 'error' module. + +. "${srcdir=3D.}/init.sh"; path_prepend_ . + +${CHECKER} test-error${EXEEXT} > out 2> err +# Verify the exit code. +case $? in + 4) ;; + *) Exit 1;; +esac + +# Normalize the stderr output on Windows platforms. +tr -d '\015' < err | sed 's,.*test-error[.ex]*:,test-error:,' > err2 || Ex= it 1 + +# Verify the stderr output. +compare - err2 <<\EOF || Exit 1 +test-error: bummer +test-error: Zonk 123 is too large +test-error: Pok=C3=A9mon started +test-error:d1/foo.c:10: invalid blub +test-error:d1/foo.c:10: invalid blarn +test-error:d1/foo.c:10: unsupported glink +test-error:d1/foo.c:13: invalid brump +test-error:d2/foo.c:13: unsupported flinge +hammer +boing 123 is too large +d2/bar.c:11: bark too loud +test-error: can't steal: Permission denied +test-error: fatal error +EOF + +# Verify the stdout output. +test -s out && Exit 1 + +Exit 0 =2D-=20 2.34.1 --nextPart2086692.CLbsiaQdQ3 Content-Disposition: attachment; filename="0002-verror-Add-tests.patch" Content-Transfer-Encoding: quoted-printable Content-Type: text/x-patch; charset="UTF-8"; name="0002-verror-Add-tests.patch" =46rom c621f9452f0a4a16a52295ee867cae2b0461b949 Mon Sep 17 00:00:00 2001 =46rom: Bruno Haible Date: Thu, 12 Jan 2023 12:34:43 +0100 Subject: [PATCH 2/2] verror: Add tests. * tests/test-verror.sh: New file, based on tests/test-error.sh. * tests/test-verror.c: New file, based on tests/test-error.c. * modules/verror-tests: New file. =2D-- ChangeLog | 7 +++ modules/verror-tests | 12 ++++ tests/test-verror.c | 127 +++++++++++++++++++++++++++++++++++++++++++ tests/test-verror.sh | 36 ++++++++++++ 4 files changed, 182 insertions(+) create mode 100644 modules/verror-tests create mode 100644 tests/test-verror.c create mode 100755 tests/test-verror.sh diff --git a/ChangeLog b/ChangeLog index 841d6e818e..07f525af08 100644 =2D-- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2023-01-12 Bruno Haible + + verror: Add tests. + * tests/test-verror.sh: New file, based on tests/test-error.sh. + * tests/test-verror.c: New file, based on tests/test-error.c. + * modules/verror-tests: New file. + 2023-01-12 Bruno Haible =20 error: Add tests. diff --git a/modules/verror-tests b/modules/verror-tests new file mode 100644 index 0000000000..e02309658a =2D-- /dev/null +++ b/modules/verror-tests @@ -0,0 +1,12 @@ +Files: +tests/test-verror.sh +tests/test-verror.c +tests/macros.h + +Depends-on: + +configure.ac: + +Makefile.am: +TESTS +=3D test-verror.sh +check_PROGRAMS +=3D test-verror diff --git a/tests/test-verror.c b/tests/test-verror.c new file mode 100644 index 0000000000..c5a62cddec =2D-- /dev/null +++ b/tests/test-verror.c @@ -0,0 +1,127 @@ +/* Test of verror.h functions. + Copyright (C) 2023 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . = */ + +/* Written by Bruno Haible , 2023. */ + +#include + +#include "verror.h" + +#include +#include + +#include "error.h" +#include "macros.h" + +/* Custom function to not show the program name in error messages. */ +static void +print_no_progname (void) +{ +} + +static void +test_zero (const char *format, ...) +{ + va_list args; + + va_start (args, format); + verror (0, 0, format, args); + va_end (args); +} + +static void +test_zero_at_line (const char *filename, unsigned int lineno, + const char *format, ...) +{ + va_list args; + + va_start (args, format); + verror_at_line (0, 0, filename, lineno, format, args); + va_end (args); +} + +static void +test_errnum (const char *format, ...) +{ + va_list args; + + va_start (args, format); + verror (0, EACCES, format, args); + va_end (args); +} + +static void +test_fatal (const char *format, ...) +{ + va_list args; + + va_start (args, format); + verror (4, 0, format, args); + va_end (args); +} + +int +main (int argc, char *argv[]) +{ + /* Test verror() function with zero STATUS and zero ERRNUM. */ + test_zero ("bummer"); + /* With format string arguments. */ + errno =3D EINVAL; /* should be ignored */ + test_zero ("Zonk %d%d%d is too large", 1, 2, 3); + /* With non-ASCII characters. */ + test_zero ("Pok=C3=A9mon started"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 3); + + /* Test verror_at_line() function with zero STATUS and zero ERRNUM. */ + test_zero_at_line ("d1/foo.c", 10, "invalid blub"); + test_zero_at_line ("d1/foo.c", 10, "invalid blarn"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 5); + + /* Test error_one_per_line. */ + error_one_per_line =3D 1; + test_zero_at_line ("d1/foo.c", 10, "unsupported glink"); + /* Another line number. */ + test_zero_at_line ("d1/foo.c", 13, "invalid brump"); + /* Another file name. */ + test_zero_at_line ("d2/foo.c", 13, "unsupported flinge"); + /* Same file name and same line number =3D> message not shown. */ + test_zero_at_line ("d2/foo.c", 13, "invalid bark"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 8); + error_one_per_line =3D 0; + + /* Test error_print_progname. */ + error_print_progname =3D print_no_progname; + test_zero ("hammer"); + test_zero ("boing %d%d%d is too large", 1, 2, 3); + test_zero_at_line ("d2/bar.c", 11, "bark too loud"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 11); + error_print_progname =3D NULL; + + /* Test verror() function with nonzero ERRNUM. */ + errno =3D EINVAL; /* should be ignored */ + test_errnum ("can't steal"); + /* Verify error_message_count. */ + ASSERT (error_message_count =3D=3D 12); + + /* Test verror() function with nonzero STATUS. */ + test_fatal ("fatal error"); + + return 0; +} diff --git a/tests/test-verror.sh b/tests/test-verror.sh new file mode 100755 index 0000000000..3652437e94 =2D-- /dev/null +++ b/tests/test-verror.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# Test of the 'verror' module. + +. "${srcdir=3D.}/init.sh"; path_prepend_ . + +${CHECKER} test-verror${EXEEXT} > out 2> err +# Verify the exit code. +case $? in + 4) ;; + *) Exit 1;; +esac + +# Normalize the stderr output on Windows platforms. +tr -d '\015' < err | sed 's,.*test-verror[.ex]*:,test-verror:,' > err2 || = Exit 1 + +# Verify the stderr output. +compare - err2 <<\EOF || Exit 1 +test-verror: bummer +test-verror: Zonk 123 is too large +test-verror: Pok=C3=A9mon started +test-verror:d1/foo.c:10: invalid blub +test-verror:d1/foo.c:10: invalid blarn +test-verror:d1/foo.c:10: unsupported glink +test-verror:d1/foo.c:13: invalid brump +test-verror:d2/foo.c:13: unsupported flinge +hammer +boing 123 is too large +d2/bar.c:11: bark too loud +test-verror: can't steal: Permission denied +test-verror: fatal error +EOF + +# Verify the stdout output. +test -s out && Exit 1 + +Exit 0 =2D-=20 2.34.1 --nextPart2086692.CLbsiaQdQ3--