1*6a91769bSnakayama# $NetBSD: t_mtree.sh,v 1.8 2017/09/07 04:05:21 nakayama Exp $ 2e592667bSjruoho# 393656a36Sjruoho# Copyright (c) 2009, 2012 The NetBSD Foundation, Inc. 4e592667bSjruoho# All rights reserved. 5e592667bSjruoho# 6e592667bSjruoho# Redistribution and use in source and binary forms, with or without 7e592667bSjruoho# modification, are permitted provided that the following conditions 8e592667bSjruoho# are met: 9e592667bSjruoho# 1. Redistributions of source code must retain the above copyright 10e592667bSjruoho# notice, this list of conditions and the following disclaimer. 11e592667bSjruoho# 2. Redistributions in binary form must reproduce the above copyright 12e592667bSjruoho# notice, this list of conditions and the following disclaimer in the 13e592667bSjruoho# documentation and/or other materials provided with the distribution. 14e592667bSjruoho# 15e592667bSjruoho# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16e592667bSjruoho# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17e592667bSjruoho# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18e592667bSjruoho# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19e592667bSjruoho# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20e592667bSjruoho# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21e592667bSjruoho# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22e592667bSjruoho# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23e592667bSjruoho# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24e592667bSjruoho# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25e592667bSjruoho# POSSIBILITY OF SUCH DAMAGE. 26e592667bSjruoho# 27e592667bSjruoho 28e592667bSjruoho# Postprocess mtree output, canonicalising portions that 29e592667bSjruoho# are expected to differ from one run to another. 304f171fb5Sjruoho# 314606ac87Schristos 32e592667bSjruohoh_postprocess() 33e592667bSjruoho{ 34e592667bSjruoho sed -e ' 35e592667bSjruoho /^# user: /s/:.*/: x/ 36e592667bSjruoho /^# machine: /s/:.*/: x/ 37e592667bSjruoho /^# tree: /s/:.*/: x/ 38e592667bSjruoho /^# date: /s/:.*/: x/ 39f39efc28Schristos ' \ 40f39efc28Schristos -e '/type=dir/s/ size=[0-9]*//' 41e592667bSjruoho} 42e592667bSjruoho 43e592667bSjruohoh_check() 44e592667bSjruoho{ 45e592667bSjruoho diff -Nru "$1" "$2" || atf_fail "files $1 and $2 differ" 46e592667bSjruoho} 47e592667bSjruoho 484606ac87Schristos 494606ac87Schristosatf_test_case mtree_create 504606ac87Schristosatf_test_case netbsd6_create 51e592667bSjruohocreate_head() 52e592667bSjruoho{ 53e592667bSjruoho atf_set "descr" "Create a specfile describing a directory tree" 54e592667bSjruoho} 5593656a36Sjruoho 56e592667bSjruohocreate_setup() 57e592667bSjruoho{ 58e592667bSjruoho # create some directories 594606ac87Schristos rm -fr create 60e592667bSjruoho mkdir -p create/a/1 create/a/2 create/b 61e592667bSjruoho # create some files 62e592667bSjruoho for file in create/top.file.1 \ 63e592667bSjruoho create/a/a.file.1 \ 64e592667bSjruoho create/a/a.file.2 \ 65e592667bSjruoho create/a/1/a1.file.1 \ 66e592667bSjruoho create/b/b.file.1 \ 67e592667bSjruoho create/b/b.file.2 68e592667bSjruoho do 69e592667bSjruoho echo "$file" >$file 70e592667bSjruoho done 71e592667bSjruoho # hard link to file in same dir 72e592667bSjruoho ln create/b/b.file.1 create/b/b.hardlink.1 73e592667bSjruoho # hard link to file in another dir 74e592667bSjruoho ln create/b/b.file.2 create/a/a.hardlink.b2 75e592667bSjruoho # symlink to file 76e592667bSjruoho ln -s a.file.1 create/a.symlink.1 77e592667bSjruoho # symlink to dir 78e592667bSjruoho ln -s b create/top.symlink.b 79e592667bSjruoho # dangling symlink 80e592667bSjruoho ln -s nonexistent create/top.dangling 81e592667bSjruoho} 8293656a36Sjruoho 83e592667bSjruohocreate_body() 84e592667bSjruoho{ 85e592667bSjruoho create_setup 86e592667bSjruoho 87e592667bSjruoho # run mtree and check output 884606ac87Schristos ( cd create && mtree -F ${FLAVOR} -c -k type,nlink,link,size,sha256 ) >output.raw \ 89e592667bSjruoho || atf_fail "mtree exit status $?" 90e592667bSjruoho h_postprocess <output.raw >output 914606ac87Schristos h_check "$(atf_get_srcdir)/${FLAVOR}_d_create.out" output 92e592667bSjruoho} 93e592667bSjruoho 944606ac87Schristosmtree_create_head() 954606ac87Schristos{ 964606ac87Schristos FLAVOR=mtree create_head 974606ac87Schristos} 984606ac87Schristosnetbsd6_create_head() 994606ac87Schristos{ 1004606ac87Schristos FLAVOR=netbsd6 create_head 1014606ac87Schristos} 1024606ac87Schristos 1034606ac87Schristosmtree_create_body() 1044606ac87Schristos{ 1054606ac87Schristos FLAVOR=mtree create_body 1064606ac87Schristos} 1074606ac87Schristosnetbsd6_create_body() 1084606ac87Schristos{ 1094606ac87Schristos FLAVOR=netbsd6 create_body 1104606ac87Schristos} 1114606ac87Schristos 1124606ac87Schristos 1134606ac87Schristosatf_test_case mtree_check 1144606ac87Schristosatf_test_case netbsd6_check 115e592667bSjruohocheck_head() 116e592667bSjruoho{ 117e592667bSjruoho atf_set "descr" "Check a directory tree against a specfile" 118e592667bSjruoho} 11993656a36Sjruoho 120e592667bSjruohocheck_body() 121e592667bSjruoho{ 122e592667bSjruoho # we use the same directory tree and specfile as in the "create" test 123e592667bSjruoho create_setup 124e592667bSjruoho 125e592667bSjruoho # run mtree and check output 1264606ac87Schristos ( cd create && mtree -F ${FLAVOR} ) <"$(atf_get_srcdir)/${FLAVOR}_d_create.out" >output \ 127e592667bSjruoho || atf_fail "mtree exit status $?" 128e592667bSjruoho h_check /dev/null output 129e592667bSjruoho} 130e592667bSjruoho 1314606ac87Schristosmtree_check_head() 1324606ac87Schristos{ 1334606ac87Schristos FLAVOR=mtree check_head 1344606ac87Schristos} 1354606ac87Schristosnetbsd6_check_head() 1364606ac87Schristos{ 1374606ac87Schristos FLAVOR=netbsd6 check_head 1384606ac87Schristos} 1394606ac87Schristos 1404606ac87Schristosmtree_check_body() 1414606ac87Schristos{ 1424606ac87Schristos FLAVOR=mtree check_body 1434606ac87Schristos} 1444606ac87Schristosnetbsd6_check_body() 1454606ac87Schristos{ 1464606ac87Schristos FLAVOR=netbsd6 check_body 1474606ac87Schristos} 1484606ac87Schristos 1494606ac87Schristos 1504606ac87Schristosatf_test_case mtree_convert_C 1514606ac87Schristosatf_test_case netbsd6_convert_C 152e592667bSjruohoconvert_C_head() 153e592667bSjruoho{ 154e592667bSjruoho atf_set "descr" "Convert a specfile to mtree -C format, unsorted" 155e592667bSjruoho} 15693656a36Sjruoho 157e592667bSjruohoconvert_C_body() 158e592667bSjruoho{ 1594606ac87Schristos mtree -F ${FLAVOR} -C -K all <"$(atf_get_srcdir)/d_convert.in" >output 160e592667bSjruoho h_check "$(atf_get_srcdir)/d_convert_C.out" output 161e592667bSjruoho} 162e592667bSjruoho 1634606ac87Schristosmtree_convert_C_head() 1644606ac87Schristos{ 1654606ac87Schristos FLAVOR=mtree convert_C_head 1664606ac87Schristos} 1674606ac87Schristosnetbsd6_convert_C_head() 1684606ac87Schristos{ 1694606ac87Schristos FLAVOR=netbsd6 convert_C_head 1704606ac87Schristos} 1714606ac87Schristos 1724606ac87Schristosmtree_convert_C_body() 1734606ac87Schristos{ 1744606ac87Schristos FLAVOR=mtree convert_C_body 1754606ac87Schristos} 1764606ac87Schristosnetbsd6_convert_C_body() 1774606ac87Schristos{ 1784606ac87Schristos FLAVOR=netbsd6 convert_C_body 1794606ac87Schristos} 1804606ac87Schristos 1814606ac87Schristos 1824606ac87Schristosatf_test_case mtree_convert_C_S 1834606ac87Schristosatf_test_case netbsd6_convert_C_S 184e592667bSjruohoconvert_C_S_head() 185e592667bSjruoho{ 186e592667bSjruoho atf_set "descr" "Convert a specfile to mtree -C format, sorted" 187e592667bSjruoho} 18893656a36Sjruoho 189e592667bSjruohoconvert_C_S_body() 190e592667bSjruoho{ 1914606ac87Schristos mtree -F ${FLAVOR} -C -S -K all <"$(atf_get_srcdir)/d_convert.in" >output 192e592667bSjruoho h_check "$(atf_get_srcdir)/d_convert_C_S.out" output 193e592667bSjruoho} 194e592667bSjruoho 1954606ac87Schristosmtree_convert_C_S_head() 1964606ac87Schristos{ 1974606ac87Schristos FLAVOR=mtree convert_C_S_head 1984606ac87Schristos} 1994606ac87Schristosnetbsd6_convert_C_S_head() 2004606ac87Schristos{ 2014606ac87Schristos FLAVOR=netbsd6 convert_C_S_head 2024606ac87Schristos} 2034606ac87Schristos 2044606ac87Schristosmtree_convert_C_S_body() 2054606ac87Schristos{ 2064606ac87Schristos FLAVOR=mtree convert_C_S_body 2074606ac87Schristos} 2084606ac87Schristosnetbsd6_convert_C_S_body() 2094606ac87Schristos{ 2104606ac87Schristos FLAVOR=netbsd6 convert_C_S_body 2114606ac87Schristos} 2124606ac87Schristos 2134606ac87Schristos 2144606ac87Schristosatf_test_case mtree_convert_D 2154606ac87Schristosatf_test_case netbsd6_convert_D 216e592667bSjruohoconvert_D_head() 217e592667bSjruoho{ 218e592667bSjruoho atf_set "descr" "Convert a specfile to mtree -D format, unsorted" 219e592667bSjruoho} 22093656a36Sjruoho 221e592667bSjruohoconvert_D_body() 222e592667bSjruoho{ 2234606ac87Schristos mtree -F ${FLAVOR} -D -K all <"$(atf_get_srcdir)/d_convert.in" >output 224e592667bSjruoho h_check "$(atf_get_srcdir)/d_convert_D.out" output 225e592667bSjruoho} 226e592667bSjruoho 2274606ac87Schristosmtree_convert_D_head() 2284606ac87Schristos{ 2294606ac87Schristos FLAVOR=mtree convert_D_head 2304606ac87Schristos} 2314606ac87Schristosnetbsd6_convert_D_head() 2324606ac87Schristos{ 2334606ac87Schristos FLAVOR=netbsd6 convert_D_head 2344606ac87Schristos} 2354606ac87Schristos 2364606ac87Schristosmtree_convert_D_body() 2374606ac87Schristos{ 2384606ac87Schristos FLAVOR=mtree convert_D_body 2394606ac87Schristos} 2404606ac87Schristosnetbsd6_convert_D_body() 2414606ac87Schristos{ 2424606ac87Schristos FLAVOR=netbsd6 convert_D_body 2434606ac87Schristos} 2444606ac87Schristos 2454606ac87Schristos 2464606ac87Schristosatf_test_case mtree_convert_D_S 2474606ac87Schristosatf_test_case netbsd6_convert_D_S 248e592667bSjruohoconvert_D_S_head() 249e592667bSjruoho{ 250e592667bSjruoho atf_set "descr" "Convert a specfile to mtree -D format, sorted" 251e592667bSjruoho} 25293656a36Sjruoho 253e592667bSjruohoconvert_D_S_body() 254e592667bSjruoho{ 2554606ac87Schristos mtree -F ${FLAVOR} -D -S -K all <"$(atf_get_srcdir)/d_convert.in" >output 256e592667bSjruoho h_check "$(atf_get_srcdir)/d_convert_D_S.out" output 257e592667bSjruoho} 258e592667bSjruoho 2594606ac87Schristosmtree_convert_D_S_head() 2604606ac87Schristos{ 2614606ac87Schristos FLAVOR=mtree convert_D_S_head 2624606ac87Schristos} 2634606ac87Schristosnetbsd6_convert_D_S_head() 2644606ac87Schristos{ 2654606ac87Schristos FLAVOR=netbsd6 convert_D_S_head 2664606ac87Schristos} 2674606ac87Schristos 2684606ac87Schristosmtree_convert_D_S_body() 2694606ac87Schristos{ 2704606ac87Schristos FLAVOR=mtree convert_D_S_body 2714606ac87Schristos} 2724606ac87Schristosnetbsd6_convert_D_S_body() 2734606ac87Schristos{ 2744606ac87Schristos FLAVOR=netbsd6 convert_D_S_body 2754606ac87Schristos} 2764606ac87Schristos 2774606ac87Schristos 2784606ac87Schristosatf_test_case mtree_ignore 2794606ac87Schristosatf_test_case netbs6_ignore 28093656a36Sjruohoignore_head() 28193656a36Sjruoho{ 28293656a36Sjruoho atf_set "descr" "Test that -d ignores symlinks (PR bin/41061)" 28393656a36Sjruoho} 28493656a36Sjruoho 28593656a36Sjruohoignore_body() 28693656a36Sjruoho{ 287f273c8a6Schristos # Kyua 0.11 and above point TMPDIR to our work directory and atf-check 288f273c8a6Schristos # generates a temporary file, which confuses mtree. Put the mtree files 289f273c8a6Schristos # into a subdirectory. 290f273c8a6Schristos # 291f273c8a6Schristos # See https://github.com/jmmv/kyua/issues/133 for details. 292f273c8a6Schristos mkdir root && cd root 293f273c8a6Schristos 29493656a36Sjruoho mkdir newdir 2954606ac87Schristos mtree -F ${FLAVOR} -c | mtree -F ${FLAVOR} -Ck uid,gid,mode > mtree.spec 29693656a36Sjruoho ln -s newdir otherdir 29793656a36Sjruoho 29893656a36Sjruoho # This yields "extra: otherdir" even with -d. 29902b2b123Schristos # (PR bin/41061) 3004606ac87Schristos atf_check -s ignore -o empty -e empty -x "mtree -F ${FLAVOR} -d < mtree.spec" 30193656a36Sjruoho 30293656a36Sjruoho # Delete the symlink and re-verify. 30393656a36Sjruoho # 30493656a36Sjruoho rm otherdir 3054606ac87Schristos atf_check -s ignore -o empty -e empty -x "mtree -F ${FLAVOR} -d < mtree.spec" 30693656a36Sjruoho} 30793656a36Sjruoho 3084606ac87Schristosmtree_ignore_head() 3094606ac87Schristos{ 3104606ac87Schristos FLAVOR=mtree ignore_head 3114606ac87Schristos} 3124606ac87Schristosnetbsd6_ignore_head() 3134606ac87Schristos{ 3144606ac87Schristos FLAVOR=netbsd6 ignore_head 3154606ac87Schristos} 3164606ac87Schristos 3174606ac87Schristosmtree_ignore_body() 3184606ac87Schristos{ 3194606ac87Schristos FLAVOR=mtree ignore_body 3204606ac87Schristos} 3214606ac87Schristosnetbsd6_ignore_body() 3224606ac87Schristos{ 323f273c8a6Schristos # Kyua 0.11 and above point TMPDIR to our work directory and atf-check 324f273c8a6Schristos # generates a temporary file, which confuses mtree. Put the mtree files 325f273c8a6Schristos # into a subdirectory. 326f273c8a6Schristos # 327f273c8a6Schristos # See https://github.com/jmmv/kyua/issues/133 for details. 328f273c8a6Schristos mkdir root && cd root 329f273c8a6Schristos 3304606ac87Schristos FLAVOR=netbsd6 ignore_body 3314606ac87Schristos} 3324606ac87Schristos 3334606ac87Schristos 3344606ac87Schristosatf_test_case mtree_merge 3354606ac87Schristosatf_test_case netbsd6_merge 336e592667bSjruohomerge_head() 337e592667bSjruoho{ 338e592667bSjruoho atf_set "descr" "Merge records of different type" 339e592667bSjruoho} 34093656a36Sjruoho 341e592667bSjruohomerge_body() 342e592667bSjruoho{ 3434606ac87Schristos mtree -F ${FLAVOR} -C -M -K all <"$(atf_get_srcdir)/d_merge.in" >output 344e592667bSjruoho h_check "$(atf_get_srcdir)/d_merge_C_M.out" output 345e592667bSjruoho # same again, with sorting 3464606ac87Schristos mtree -F ${FLAVOR} -C -M -S -K all <"$(atf_get_srcdir)/d_merge.in" >output 347e592667bSjruoho h_check "$(atf_get_srcdir)/d_merge_C_M_S.out" output 348e592667bSjruoho} 349e592667bSjruoho 3504606ac87Schristosmtree_merge_head() 3514606ac87Schristos{ 3524606ac87Schristos FLAVOR=mtree merge_head 3534606ac87Schristos} 3544606ac87Schristosnetbsd6_merge_head() 3554606ac87Schristos{ 3564606ac87Schristos FLAVOR=netbsd6 merge_head 3574606ac87Schristos} 3584606ac87Schristos 3594606ac87Schristosmtree_merge_body() 3604606ac87Schristos{ 3614606ac87Schristos FLAVOR=mtree merge_body 3624606ac87Schristos} 3634606ac87Schristosnetbsd6_merge_body() 3644606ac87Schristos{ 3654606ac87Schristos FLAVOR=netbsd6 merge_body 3664606ac87Schristos} 3674606ac87Schristos 3684606ac87Schristos 3694606ac87Schristosatf_test_case mtree_nonemptydir 3704606ac87Schristosatf_test_case netbsd6_nonemptydir 37193656a36Sjruohononemptydir_head() 37293656a36Sjruoho{ 3734f171fb5Sjruoho atf_set "descr" "Test that new non-empty " \ 3744f171fb5Sjruoho "directories are recorded (PR bin/25693)" 3754f171fb5Sjruoho} 3764f171fb5Sjruoho 37793656a36Sjruohononemptydir_body() 37893656a36Sjruoho{ 3794f171fb5Sjruoho mkdir testdir 3804f171fb5Sjruoho cd testdir 3814f171fb5Sjruoho 3824606ac87Schristos mtree -F ${FLAVOR} -c > mtree.spec 3834f171fb5Sjruoho 3844f171fb5Sjruoho if [ ! -f mtree.spec ]; then 3854f171fb5Sjruoho atf_fail "mtree failed" 3864f171fb5Sjruoho fi 3874f171fb5Sjruoho 3884f171fb5Sjruoho touch bar 3894606ac87Schristos atf_check -s ignore -o save:output -x "mtree -F ${FLAVOR} -f mtree.spec" 3904f171fb5Sjruoho 3914f171fb5Sjruoho if [ ! -n "$(egrep "extra: bar" output)" ]; then 3924f171fb5Sjruoho atf_fail "mtree did not record changes (PR bin/25693)" 3934f171fb5Sjruoho fi 3944f171fb5Sjruoho} 3954f171fb5Sjruoho 3964606ac87Schristosmtree_nonemptydir_head() 3974606ac87Schristos{ 3984606ac87Schristos FLAVOR=mtree nonemptydir_head 3994606ac87Schristos} 4004606ac87Schristosnetbsd6_nonemptydir_head() 4014606ac87Schristos{ 4024606ac87Schristos FLAVOR=netbsd6 nonemptydir_head 4034606ac87Schristos} 4044606ac87Schristos 4054606ac87Schristosmtree_nonemptydir_body() 4064606ac87Schristos{ 4074606ac87Schristos FLAVOR=mtree nonemptydir_body 4084606ac87Schristos} 4094606ac87Schristosnetbsd6_nonemptydir_body() 4104606ac87Schristos{ 4114606ac87Schristos FLAVOR=netbsd6 nonemptydir_body 4124606ac87Schristos} 4134606ac87Schristos 4144606ac87Schristos 415*6a91769bSnakayamaatf_test_case mtree_onlyfile 416*6a91769bSnakayamaatf_test_case netbsd6_onlyfile 417*6a91769bSnakayamaonlyfile_head() 418*6a91769bSnakayama{ 419*6a91769bSnakayama atf_set "descr" "Test -O with same hash value in directory and leaf" 420*6a91769bSnakayama} 421*6a91769bSnakayama 422*6a91769bSnakayamaonlyfile_body() 423*6a91769bSnakayama{ 424*6a91769bSnakayama mkdir -p ab/no 425*6a91769bSnakayama echo ./ab/no >onlyfile 426*6a91769bSnakayama mtree -F ${FLAVOR} -c -n -O onlyfile >output 427*6a91769bSnakayama if [ ! -s output ]; then 428*6a91769bSnakayama atf_fail "mtree did not find path in onlyfile" 429*6a91769bSnakayama fi 430*6a91769bSnakayama} 431*6a91769bSnakayama 432*6a91769bSnakayamamtree_onlyfile_head() 433*6a91769bSnakayama{ 434*6a91769bSnakayama FLAVOR=mtree onlyfile_head 435*6a91769bSnakayama} 436*6a91769bSnakayamanetbsd6_onlyfile_head() 437*6a91769bSnakayama{ 438*6a91769bSnakayama FLAVOR=netbsd6 onlyfile_head 439*6a91769bSnakayama} 440*6a91769bSnakayama 441*6a91769bSnakayamamtree_onlyfile_body() 442*6a91769bSnakayama{ 443*6a91769bSnakayama FLAVOR=mtree onlyfile_body 444*6a91769bSnakayama} 445*6a91769bSnakayamanetbsd6_onlyfile_body() 446*6a91769bSnakayama{ 447*6a91769bSnakayama FLAVOR=netbsd6 onlyfile_body 448*6a91769bSnakayama} 449*6a91769bSnakayama 450*6a91769bSnakayama 451e592667bSjruohoatf_init_test_cases() 452e592667bSjruoho{ 4534606ac87Schristos atf_add_test_case mtree_create 4544606ac87Schristos atf_add_test_case mtree_check 4554606ac87Schristos atf_add_test_case mtree_convert_C 4564606ac87Schristos atf_add_test_case mtree_convert_C_S 4574606ac87Schristos atf_add_test_case mtree_convert_D 4584606ac87Schristos atf_add_test_case mtree_convert_D_S 4594606ac87Schristos atf_add_test_case mtree_ignore 4604606ac87Schristos atf_add_test_case mtree_merge 4614606ac87Schristos atf_add_test_case mtree_nonemptydir 462*6a91769bSnakayama atf_add_test_case mtree_onlyfile 4634606ac87Schristos 4644606ac87Schristos atf_add_test_case netbsd6_create 4654606ac87Schristos atf_add_test_case netbsd6_check 4664606ac87Schristos atf_add_test_case netbsd6_convert_C 4674606ac87Schristos atf_add_test_case netbsd6_convert_C_S 4684606ac87Schristos atf_add_test_case netbsd6_convert_D 4694606ac87Schristos atf_add_test_case netbsd6_convert_D_S 4704606ac87Schristos atf_add_test_case netbsd6_ignore 4714606ac87Schristos atf_add_test_case netbsd6_merge 4724606ac87Schristos atf_add_test_case netbsd6_nonemptydir 473*6a91769bSnakayama atf_add_test_case netbsd6_onlyfile 474e592667bSjruoho} 475