From patchwork Mon Jul 22 16:28:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Wakely X-Patchwork-Id: 1963332 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=RfN9fI5S; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4WSQlZ2ygkz1yZ7 for ; Tue, 23 Jul 2024 02:31:38 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9F964386181F for ; Mon, 22 Jul 2024 16:31:36 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 758553858416 for ; Mon, 22 Jul 2024 16:30:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 758553858416 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 758553858416 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1721665831; cv=none; b=KuRbCRDb/uFkYIXHJEHj7X/DuECih/uN3YDyot2LuE6XHjQ+UAQQfyEetf8ctcjHglBL5cpYa/3X0UC87LaqxdJaf0JokE2xioSDhJfPfsRVwyKN7eRzbR8QoRt8mCTvRjhCAuVeuWrv+JEOfmyNom3PFainyE8ePDkdEeHEhD8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1721665831; c=relaxed/simple; bh=U9sBxZsl1jxxFBh9tcFQa0z0TBzxjZjifb6pyuX5Bng=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=uj6/MBLbS9PpsA91c8z6/7v6K8nxokP55l6m6jRIis/t9EofA4zuVT4jR0oIP2Jq8yEeuQZwHqSS28Dto/4a9nTa5ulHA4msmRPCsUAh2CZPhDLgwmaoZwzVBBR1QpbBV7JxfBm+BvQCYQKF8MBgHV3F57JEW0oG297Dr6dtnoU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1721665826; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=271orfWAd1ULZu4cQbIE5KQJ8Fjua11gZX0h19w01Po=; b=RfN9fI5SQgzLTQ5FsgbWWk0/fMgtzyHexCBuUym9FWBDymlSbchztcqQZhxvb6E+HCILQA 7VRHkyQJqz7ROAjeo7qvhRJ4QeECcm634Flsv4ufzgKH5h4AIAHE+OfnFBcWQ7d4O05ruH Nnt84AxzV3kIPPDvWfAMA0f5crJ2lWk= Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-458-xdJIzQR8O0GFGOZIDNwriA-1; Mon, 22 Jul 2024 12:30:22 -0400 X-MC-Unique: xdJIzQR8O0GFGOZIDNwriA-1 Received: from mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A036C1955BED; Mon, 22 Jul 2024 16:30:21 +0000 (UTC) Received: from localhost (unknown [10.42.28.14]) by mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0978F1955D44; Mon, 22 Jul 2024 16:30:20 +0000 (UTC) From: Jonathan Wakely To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [PATCH 4/8] libstdc++: Add file-io-diff to replace @diff@ markup in I/O tests Date: Mon, 22 Jul 2024 17:28:38 +0100 Message-ID: <20240722163010.3508334-4-jwakely@redhat.com> In-Reply-To: <20240722163010.3508334-1-jwakely@redhat.com> References: <20240722163010.3508334-1-jwakely@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org Tested x86_64-linux. -- >8 -- This adds a new dg-final action to compare two files after a test has run, so that we can verify that fstream operations produce the expected results. With this change, all uses of @diff@ that seem potentially useful have been converted to actually compare the files and FAIL if they differ. The file-io-diff action can take two arguments naming the files to be compared, or for convenience it can take a single string and will compare STR.tst and STR.txt, as that's how it's commonly used. Additionally, all remaining uses of @require@ are converted to dg-additional-files directives, so that the TODO in libstdc++.exp can be resolved. libstdc++-v3/ChangeLog: * testsuite/27_io/basic_filebuf/close/char/1.cc: Remove @require@ and @diff@. Use dg-final file-io-diff action. * testsuite/27_io/basic_istream/extractors_other/char/2.cc: Likewise. * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc: Likewise. * testsuite/27_io/basic_istream/get/char/2.cc: Likewise. * testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise. * testsuite/27_io/basic_istream/ignore/char/3.cc: Likewise. * testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise. * testsuite/27_io/basic_istream/peek/char/6414.cc: Likewise. * testsuite/27_io/basic_istream/peek/wchar_t/6414.cc: Likewise. * testsuite/27_io/basic_istream/seekg/char/fstream.cc: Likewise. * testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc: Likewise. * testsuite/27_io/basic_istream/tellg/char/fstream.cc: Likewise. * testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc: Likewise. * testsuite/27_io/basic_ofstream/open/char/1.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/char/1.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc: Likewise. * testsuite/27_io/ios_base/sync_with_stdio/1.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/char/2.cc: Likewise. Check file positions. * testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc: Likewise. * testsuite/lib/libstdc++.exp (file-io-diff): New proc. --- .../27_io/basic_filebuf/close/char/1.cc | 6 ++-- .../basic_istream/extractors_other/char/2.cc | 9 ++++-- .../extractors_other/wchar_t/2.cc | 9 ++++-- .../27_io/basic_istream/get/char/2.cc | 8 +++-- .../27_io/basic_istream/get/wchar_t/2.cc | 8 +++-- .../27_io/basic_istream/ignore/char/3.cc | 8 +++-- .../27_io/basic_istream/ignore/wchar_t/3.cc | 8 +++-- .../27_io/basic_istream/peek/char/6414.cc | 9 ++++-- .../27_io/basic_istream/peek/wchar_t/6414.cc | 9 ++++-- .../27_io/basic_istream/seekg/char/fstream.cc | 10 ++++-- .../basic_istream/seekg/wchar_t/fstream.cc | 10 ++++-- .../27_io/basic_istream/tellg/char/fstream.cc | 10 ++++-- .../basic_istream/tellg/wchar_t/fstream.cc | 10 ++++-- .../27_io/basic_ofstream/open/char/1.cc | 5 ++- .../basic_ostream/inserters_other/char/1.cc | 8 +++-- .../basic_ostream/inserters_other/char/2.cc | 7 ++-- .../inserters_other/wchar_t/1.cc | 8 +++-- .../inserters_other/wchar_t/2.cc | 7 ++-- .../27_io/ios_base/sync_with_stdio/1.cc | 5 +-- libstdc++-v3/testsuite/lib/libstdc++.exp | 32 +++++++++++++++++++ 20 files changed, 130 insertions(+), 56 deletions(-) diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc index e2b336a711d..d9e9c53e3e6 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc @@ -15,14 +15,14 @@ // with this library; see the file COPYING3. If not see // . -// 27.8.1.3 filebuf member functions -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.8.1.3 filebuf member functions // various tests for filebuf::open() and filebuf::close() including // the non-portable functionality in the libstdc++-v3 IO library // { dg-require-fileio "" } +// { dg-additional-files "filebuf_members-1.tst filebuf_members-1.txt" } +// { dg-final { file-io-diff "filebuf_members-1" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc index 589402308c3..77543310caa 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc @@ -17,11 +17,14 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.2.3 basic_istream::operator>> -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.1.2.3 basic_istream::operator>> // { dg-require-fileio "" } +// { dg-additional-files "istream_extractor_other-1.tst" } +// { dg-additional-files "istream_extractor_other-1.txt" } +// { dg-additional-files "istream_extractor_other-2.tst" } +// { dg-final { file-io-diff "istream_extractor_other-1" } } +// { dg-final { file-io-diff "istream_extractor_other-2" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc index b50dd26513a..82df1a17149 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc @@ -15,11 +15,14 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.2.3 basic_istream::operator>> -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.1.2.3 basic_istream::operator>> // { dg-require-fileio "" } +// { dg-additional-files "wistream_extractor_other-1.tst" } +// { dg-additional-files "wistream_extractor_other-1.txt" } +// { dg-additional-files "wistream_extractor_other-2.tst" } +// { dg-final { file-io-diff "wistream_extractor_other-1" } } +// { dg-final { file-io-diff "wistream_extractor_other-2" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc index cf646f379ef..95bad8badb9 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc @@ -17,11 +17,13 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.3 unformatted input functions -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.1.3 unformatted input functions // { dg-require-fileio "" } +// { dg-additional-files "istream_unformatted-1.tst" } +// { dg-additional-files "istream_unformatted-1.txt" } +// Reading the .txt file should not alter it: +// { dg-final { file-io-diff "istream_unformatted-1" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc index 0ea162d8171..c155e402e2c 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc @@ -15,11 +15,13 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.3 unformatted input functions -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.1.3 unformatted input functions // { dg-require-fileio "" } +// { dg-additional-files "istream_unformatted-1.tst" } +// { dg-additional-files "istream_unformatted-1.txt" } +// Reading the .txt file should not alter it: +// { dg-final { file-io-diff "istream_unformatted-1" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc b/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc index 222e450e9c8..acfafbcd83b 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc @@ -17,11 +17,13 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.3 unformatted input functions -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.1.3 unformatted input functions // { dg-require-fileio "" } +// { dg-additional-files "istream_unformatted-1.tst" } +// { dg-additional-files "istream_unformatted-1.txt" } +// Reading the .txt file should not alter it: +// { dg-final { file-io-diff "istream_unformatted-1" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc b/libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc index c9e942a712c..60c2655b606 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc @@ -15,11 +15,13 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.3 unformatted input functions -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.1.3 unformatted input functions // { dg-require-fileio "" } +// { dg-additional-files "istream_unformatted-1.tst" } +// { dg-additional-files "istream_unformatted-1.txt" } +// Reading the .txt file should not alter it: +// { dg-final { file-io-diff "istream_unformatted-1" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc b/libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc index 0e0b44153a8..ffa0e88d8eb 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc @@ -17,10 +17,13 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.3 unformatted input functions +// C++98 27.6.1.3 unformatted input functions // NB: ostream has a particular "seeks" category. Adopt this for istreams too. -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt + +// { dg-additional-files "istream_seeks-1.tst" } +// { dg-additional-files "istream_seeks-1.txt" } +// Reading the .txt file should not alter it: +// { dg-final { file-io-diff "istream_seeks-1" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc b/libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc index fbfbfbb2781..0d2172fe85d 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc @@ -15,10 +15,13 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.3 unformatted input functions +// C++98 27.6.1.3 unformatted input functions // NB: ostream has a particular "seeks" category. Adopt this for istreams too. -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt + +// { dg-additional-files "wistream_seeks-1.tst" } +// { dg-additional-files "wistream_seeks-1.txt" } +// Reading the .txt file should not alter it: +// { dg-final { file-io-diff "wistream_seeks-1" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc index 0fa91a2716b..52401ca88fd 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc @@ -17,12 +17,16 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.3 unformatted input functions +// C++98 27.6.1.3 unformatted input functions // NB: ostream has a particular "seeks" category. Adopt this for istreams too. -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt // { dg-require-fileio "" } +// { dg-additional-files "istream_seeks-1.tst" } +// { dg-additional-files "istream_seeks-1.txt" } +// { dg-additional-files "istream_seeks-2.tst" } +// Do not create istream_seeks-2.txt, we want it to be created as empty. +// { dg-final { file-io-diff "istream_seeks-1" } } +// { dg-final { file-io-diff "istream_seeks-2" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc index b792c8bc5cc..6dc69d57516 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc @@ -16,11 +16,15 @@ // . // { dg-require-fileio "" } +// { dg-additional-files "wistream_seeks-1.tst" } +// { dg-additional-files "wistream_seeks-1.txt" } +// { dg-additional-files "wistream_seeks-2.tst" } +// Do not create wistream_seeks-2.txt, we want it to be created as empty. +// { dg-final { file-io-diff "wistream_seeks-1" } } +// { dg-final { file-io-diff "wistream_seeks-2" } } -// 27.6.1.3 unformatted input functions +// C++98 27.6.1.3 unformatted input functions // NB: ostream has a particular "seeks" category. Adopt this for istreams too. -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc index a1eabd6abb4..8ab130a0a71 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc @@ -17,12 +17,16 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.1.3 unformatted input functions +// C++98 27.6.1.3 unformatted input functions // NB: ostream has a particular "seeks" category. Adopt this for istreams too. -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt // { dg-require-fileio "" } +// { dg-additional-files "istream_seeks-1.tst" } +// { dg-additional-files "istream_seeks-1.txt" } +// { dg-additional-files "istream_seeks-2.tst" } +// Do not create istream_seeks-2.txt, we want it to be created as empty. +// { dg-final { file-io-diff "istream_seeks-1" } } +// { dg-final { file-io-diff "istream_seeks-2" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc index 636193af7e3..b22871f0d7d 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc @@ -16,11 +16,15 @@ // . // { dg-require-fileio "" } +// { dg-additional-files "wistream_seeks-1.tst" } +// { dg-additional-files "wistream_seeks-1.txt" } +// { dg-additional-files "wistream_seeks-2.tst" } +// Do not create wistream_seeks-2.txt, we want it to be created as empty. +// { dg-final { file-io-diff "wistream_seeks-1" } } +// { dg-final { file-io-diff "wistream_seeks-2" } } -// 27.6.1.3 unformatted input functions +// C++98 27.6.1.3 unformatted input functions // NB: ostream has a particular "seeks" category. Adopt this for istreams too. -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc index 45227107cbd..a9086a595cb 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc @@ -17,10 +17,9 @@ // C++98 27.8.1.10 ofstream member functions -// { dg-additional-files "ofstream_members-1.tst" } -// @diff@ %-*.tst %-*.txt - // { dg-require-fileio "" } +// { dg-additional-files "ofstream_members-1.tst" } +// { dg-final { file-io-diff "ofstream_members-1" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc index 6d30d0ce94f..86a0ee8e77d 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc @@ -18,11 +18,13 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.2.5.4 basic_ostream character inserters -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.2.5.3 basic_ostream inserters // { dg-require-fileio "" } +// { dg-additional-files "ostream_inserter_other-1.tst" } +// { dg-additional-files "ostream_inserter_other-2.tst" } +// { dg-final { file-io-diff "ostream_inserter_other-1" } } +// { dg-final { file-io-diff "ostream_inserter_other-2" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc index 15f0d5f7b0b..735f2e20e9c 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc @@ -18,9 +18,9 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.2.5.4 basic_ostream character inserters -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.2.5.3 basic_ostream inserters + +// { dg-final { file-io-diff "ostream_inserter_other_in" "ostream_inserter_other_out" } } #include #include @@ -56,6 +56,7 @@ test03(void) out.seekp(0, ios_base::end); i_read = in.tellg() - rs; i_wrote = out.tellp() - ws; + VERIFY( i_read == i_wrote ); in.close(); out.close(); } diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc index 7692637e16d..1aecfa4f0e9 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc @@ -15,11 +15,13 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.2.5.4 basic_ostream character inserters -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.2.5.3 basic_ostream inserters // { dg-require-fileio "" } +// { dg-additional-files "wostream_inserter_other-1.tst" } +// { dg-additional-files "wostream_inserter_other-2.tst" } +// { dg-final { file-io-diff "wostream_inserter_other-1" } } +// { dg-final { file-io-diff "wostream_inserter_other-2" } } #include #include diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc index 856af56011a..663539a5b19 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc @@ -15,9 +15,9 @@ // with this library; see the file COPYING3. If not see // . -// 27.6.2.5.4 basic_ostream character inserters -// @require@ %-*.tst %-*.txt -// @diff@ %-*.tst %-*.txt +// C++98 27.6.2.5.3 basic_ostream inserters + +// { dg-final { file-io-diff "wostream_inserter_other_in.txt" "wostream_inserter_other_out.txt" } } #include #include @@ -53,6 +53,7 @@ test03(void) out.seekp(0, ios_base::end); i_read = in.tellg() - rs; i_wrote = out.tellp() - ws; + VERIFY( i_read == i_wrote ); in.close(); out.close(); } diff --git a/libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc b/libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc index 4f9f7c3e554..20cbc1e08cd 100644 --- a/libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc +++ b/libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc @@ -20,8 +20,9 @@ // . // 27.4.2.4 ios_base static members -// @require@ %-*.tst -// @diff@ %-*.tst %-*.txt + +// { dg-additional-files "ios_base_members_static-1.tst" } +// { dg-final { file-io-diff "ios_base_members_static-1" } } #include #include diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index 8efc6f7f089..ef511949c7b 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -1674,3 +1674,35 @@ if { [info exists env(GCC_RUNTEST_PARALLELIZE_DIR)] \ } } + +# Compare output file written by test to expected result. +# With two arguments the comparison is done via 'diff arg1 arg2'. +# With one argument the comparison is done via 'diff arg1.tst arg1.txt'. +proc file-io-diff { args } { + set nargs [llength $args] + if { $nargs < 1 } { + error "too few arguments to file-io-diff" + } + if { $nargs > 2 } { + error "too many arguments to file-io-diff" + } + if { $nargs == 1 } { + set file1 [lindex $args 0] + set file2 "${file1}.txt" + append file1 ".tst" + } else { + set file1 [lindex $args 0] + set file2 [lindex $args 1] + } + + spawn -noecho diff -u $file1 $file2 + expect { + -re ".+" { + set msg "files differ\n" + append msg $expect_out(0,string) + fail $msg + exp_continue + } + } + return +}