From nobody Thu Feb 2 14:46:39 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P71nr1pp7z3fJxG; Thu, 2 Feb 2023 14:46:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P71nr12Xmz4fkC; Thu, 2 Feb 2023 14:46:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675349200; 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; bh=mAvyhJUOgDe2RWO7otur73dRMncgQFULO8WwxwNRNsM=; b=pIJok1rLYuKKMHSAcra0/YklDBeJWiXNOpY8pjteJh6izYETBA47EKVPPPSxViV9RxnBow 6FfSuNKG+TaNK4rueLZn2i3EgsWyUW8hEWRuq0aDeoEHcUxdzgatTFPkpkWNLzVzLEzaKS M11vDGWqMAZ2Qfxzo3+0G1XhNZvqf8rbkb2leLRlDbwW2Lya4NEVzvdzmoc91YSCcG4g6i YrCJrw1hocosi712FdYFIyDY+7EAOF/8oeo3XWZvbAx6uVtXYJlyOB/Q9WjbzzEDOX5GVt Oco3OSd6HZrSBT7Ogy2XZY4A7Tc1/9u6WwOzyK24z0xe2YO+U7xr6t9dutV5HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675349200; 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; bh=mAvyhJUOgDe2RWO7otur73dRMncgQFULO8WwxwNRNsM=; b=UhWBFbLa1MsJ0cq2ZEZmbIpASc34TLhisGLhhZognfwcpKnC8+hSeC4pkZ9E7SC6AeiTzX Ek1z3WU5dHK4sizrjWZwbf5hkyuPail6ULr5UtP4O9a6us4Mcgf0OEkpDF10F9A5IXOnN1 SCY+9JcWmoso6pnHhe65/ZNooNbJxDY/MOkjgEIIhGoWBguw5P9XH0pbWPAPSiJodNrwsD fsHYEd04CSQsFR5Pa6yHlAVNDjIcJqbQ5quZtnD5l1ELcrZVH+saPIiQSZ0Yq2fMOTXQSu uuya/n9iY2aGHHXft3IZtMgPDzi6zi5lXFiODDUMBpbSJ9lGNRufbJAtQVUqeQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675349200; a=rsa-sha256; cv=none; b=caaXHgASW2eDafKUJht80bt3blqKW5xrEkbBbnIxg6n/5G+neaTEdxxzkQcFCbTcalvClY LiI4caCjxZJNBGIyDV0Gq7hsq5q7PsMqpZ/SFie+5p164L6JRmTbS5qjWpv2v/M0cVFFEl fFSe6flGwPj0RQCS5HiGtcz1Q5z7nf9w/+xjAgid98SSK3L5tuun+ja0JRiOHCnQen8Xh8 Izis48FwOgs0MKdOt2KBOU/IQIljcE9u9gEPVFZFImukC8UQNu+WEWhm64nLWARaTth0k0 d0LlhmzzhT2ZbQplD0EYUGQw9QC7sVlpNmY7nfv4KmYg1/Jur5aEnn3TpG9xtA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P71nr043Qzy4m; Thu, 2 Feb 2023 14:46:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 312Ekdh5077209; Thu, 2 Feb 2023 14:46:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 312EkdBq077208; Thu, 2 Feb 2023 14:46:39 GMT (envelope-from git) Date: Thu, 2 Feb 2023 14:46:39 GMT Message-Id: <202302021446.312EkdBq077208@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Dag-Erling=20Sm=C3=B8rgrav?= Subject: git: 822fa7ae1e3e - main - cp: Add tests involving sparse files. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 822fa7ae1e3e7ed277e47e6de355387e524c6ee4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=822fa7ae1e3e7ed277e47e6de355387e524c6ee4 commit 822fa7ae1e3e7ed277e47e6de355387e524c6ee4 Author: Dag-Erling Smørgrav AuthorDate: 2023-02-01 20:06:24 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2023-02-02 14:45:55 +0000 cp: Add tests involving sparse files. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D38290 --- bin/cp/tests/cp_test.sh | 90 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/bin/cp/tests/cp_test.sh b/bin/cp/tests/cp_test.sh index 7362168d7303..932bd2221ba3 100755 --- a/bin/cp/tests/cp_test.sh +++ b/bin/cp/tests/cp_test.sh @@ -199,6 +199,91 @@ recursive_link_Lflag_body() '(' ! -L foo-mirror/foo/baz ')' } +file_is_sparse() +{ + atf_check test "$(stat -f "%b" "$1")" != "$(stat -f "%z" "$1")" +} + +files_are_equal() +{ + atf_check test "$(stat -f "%d %i" "$1")" != "$(stat -f "%d %i" "$2")" + atf_check cmp "$1" "$2" +} + +atf_test_case sparse_leading_hole +sparse_leading_hole_body() +{ + # A one-megabyte hole followed by one megabyte of data + truncate -s 1M foo + seq -f%015g 65536 >>foo + file_is_sparse foo + + atf_check cp foo bar + files_are_equal foo bar + file_is_sparse bar +} + +atf_test_case sparse_multiple_holes +sparse_multiple_holes_body() +{ + # Three one-megabyte blocks of data preceded, separated, and + # followed by one-megabyte holes + truncate -s 1M foo + seq -f%015g >>foo + truncate -s 3M foo + seq -f%015g >>foo + truncate -s 5M foo + seq -f%015g >>foo + truncate -s 7M foo + file_is_sparse foo + + atf_check cp foo bar + files_are_equal foo bar + file_is_sparse bar +} + +atf_test_case sparse_only_hole +sparse_only_hole_body() +{ + # A one-megabyte hole + truncate -s 1M foo + file_is_sparse foo + + atf_check cp foo bar + files_are_equal foo bar + file_is_sparse bar +} + +atf_test_case sparse_to_dev +sparse_to_dev_body() +{ + # Three one-megabyte blocks of data preceded, separated, and + # followed by one-megabyte holes + truncate -s 1M foo + seq -f%015g >>foo + truncate -s 3M foo + seq -f%015g >>foo + truncate -s 5M foo + seq -f%015g >>foo + truncate -s 7M foo + file_is_sparse foo + + atf_check -o file:foo cp foo /dev/stdout +} + +atf_test_case sparse_trailing_hole +sparse_trailing_hole_body() +{ + # One megabyte of data followed by a one-megabyte hole + seq -f%015g 65536 >foo + truncate -s 2M foo + file_is_sparse foo + + atf_check cp foo bar + files_are_equal foo bar + file_is_sparse bar +} + atf_test_case standalone_Pflag standalone_Pflag_body() { @@ -221,5 +306,10 @@ atf_init_test_cases() atf_add_test_case recursive_link_dflt atf_add_test_case recursive_link_Hflag atf_add_test_case recursive_link_Lflag + atf_add_test_case sparse_leading_hole + atf_add_test_case sparse_multiple_holes + atf_add_test_case sparse_only_hole + atf_add_test_case sparse_to_dev + atf_add_test_case sparse_trailing_hole atf_add_test_case standalone_Pflag }