Home | History | Annotate | Line # | Download | only in mtree
      1  1.10  christos # $NetBSD: t_mtree.sh,v 1.10 2023/12/02 16:18:17 christos Exp $
      2   1.1    jruoho #
      3   1.3    jruoho # Copyright (c) 2009, 2012 The NetBSD Foundation, Inc.
      4   1.1    jruoho # All rights reserved.
      5   1.1    jruoho #
      6   1.1    jruoho # Redistribution and use in source and binary forms, with or without
      7   1.1    jruoho # modification, are permitted provided that the following conditions
      8   1.1    jruoho # are met:
      9   1.1    jruoho # 1. Redistributions of source code must retain the above copyright
     10   1.1    jruoho #    notice, this list of conditions and the following disclaimer.
     11   1.1    jruoho # 2. Redistributions in binary form must reproduce the above copyright
     12   1.1    jruoho #    notice, this list of conditions and the following disclaimer in the
     13   1.1    jruoho #    documentation and/or other materials provided with the distribution.
     14   1.1    jruoho #
     15   1.1    jruoho # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16   1.1    jruoho # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17   1.1    jruoho # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18   1.1    jruoho # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19   1.1    jruoho # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20   1.1    jruoho # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21   1.1    jruoho # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22   1.1    jruoho # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23   1.1    jruoho # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24   1.1    jruoho # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25   1.1    jruoho # POSSIBILITY OF SUCH DAMAGE.
     26   1.1    jruoho #
     27   1.1    jruoho 
     28   1.1    jruoho # Postprocess mtree output, canonicalising portions that
     29   1.1    jruoho # are expected to differ from one run to another.
     30   1.2    jruoho #
     31   1.5  christos 
     32   1.1    jruoho h_postprocess()
     33   1.1    jruoho {
     34   1.1    jruoho 	sed -e '
     35   1.1    jruoho 		/^#	   user: /s/:.*/: x/
     36   1.1    jruoho 		/^#	machine: /s/:.*/: x/
     37   1.1    jruoho 		/^#	   tree: /s/:.*/: x/
     38   1.1    jruoho 		/^#	   date: /s/:.*/: x/
     39   1.6  christos 		' \
     40   1.6  christos 	    -e '/type=dir/s/ size=[0-9]*//'
     41   1.1    jruoho }
     42   1.1    jruoho 
     43   1.1    jruoho h_check()
     44   1.1    jruoho {
     45   1.1    jruoho         diff -Nru "$1" "$2" || atf_fail "files $1 and $2 differ"
     46   1.1    jruoho }
     47   1.1    jruoho 
     48   1.5  christos 
     49   1.5  christos atf_test_case mtree_create
     50   1.5  christos atf_test_case netbsd6_create
     51   1.1    jruoho create_head()
     52   1.1    jruoho {
     53   1.1    jruoho 	atf_set "descr" "Create a specfile describing a directory tree"
     54   1.1    jruoho }
     55   1.3    jruoho 
     56   1.1    jruoho create_setup()
     57   1.1    jruoho {
     58   1.1    jruoho 	# create some directories
     59   1.5  christos 	rm -fr create
     60   1.1    jruoho 	mkdir -p create/a/1 create/a/2 create/b
     61   1.1    jruoho 	# create some files
     62   1.1    jruoho 	for file in create/top.file.1 \
     63   1.1    jruoho 		    create/a/a.file.1 \
     64   1.1    jruoho 		    create/a/a.file.2 \
     65   1.1    jruoho 		    create/a/1/a1.file.1 \
     66   1.1    jruoho 		    create/b/b.file.1 \
     67   1.1    jruoho 		    create/b/b.file.2
     68   1.1    jruoho 	do
     69   1.1    jruoho 		echo "$file" >$file
     70   1.1    jruoho 	done
     71   1.1    jruoho 	# hard link to file in same dir
     72   1.1    jruoho 	ln create/b/b.file.1 create/b/b.hardlink.1
     73   1.1    jruoho 	# hard link to file in another dir
     74   1.1    jruoho 	ln create/b/b.file.2 create/a/a.hardlink.b2
     75   1.1    jruoho 	# symlink to file
     76   1.1    jruoho 	ln -s a.file.1 create/a.symlink.1
     77   1.1    jruoho 	# symlink to dir
     78   1.1    jruoho 	ln -s b create/top.symlink.b
     79   1.1    jruoho 	# dangling symlink
     80   1.1    jruoho 	ln -s nonexistent create/top.dangling
     81   1.1    jruoho }
     82   1.3    jruoho 
     83   1.1    jruoho create_body()
     84   1.1    jruoho {
     85   1.1    jruoho 	create_setup
     86   1.1    jruoho 
     87   1.1    jruoho 	# run mtree and check output
     88   1.5  christos 	( cd create && mtree -F ${FLAVOR} -c -k type,nlink,link,size,sha256 ) >output.raw \
     89   1.1    jruoho 	|| atf_fail "mtree exit status $?"
     90   1.1    jruoho 	h_postprocess <output.raw >output
     91   1.5  christos 	h_check "$(atf_get_srcdir)/${FLAVOR}_d_create.out" output
     92   1.5  christos }
     93   1.5  christos 
     94   1.5  christos mtree_create_head() 
     95   1.5  christos {
     96   1.5  christos 	FLAVOR=mtree create_head
     97   1.5  christos }
     98   1.5  christos netbsd6_create_head() 
     99   1.5  christos {
    100   1.5  christos 	FLAVOR=netbsd6 create_head
    101   1.1    jruoho }
    102   1.1    jruoho 
    103   1.5  christos mtree_create_body() 
    104   1.5  christos {
    105   1.5  christos 	FLAVOR=mtree create_body
    106   1.5  christos }
    107   1.5  christos netbsd6_create_body() 
    108   1.5  christos {
    109   1.5  christos 	FLAVOR=netbsd6 create_body
    110   1.5  christos }
    111   1.5  christos 
    112   1.5  christos 
    113   1.5  christos atf_test_case mtree_check
    114   1.5  christos atf_test_case netbsd6_check
    115   1.1    jruoho check_head()
    116   1.1    jruoho {
    117   1.1    jruoho 	atf_set "descr" "Check a directory tree against a specfile"
    118   1.1    jruoho }
    119   1.3    jruoho 
    120   1.1    jruoho check_body()
    121   1.1    jruoho {
    122   1.1    jruoho 	# we use the same directory tree and specfile as in the "create" test
    123   1.1    jruoho 	create_setup
    124   1.1    jruoho 
    125   1.1    jruoho 	# run mtree and check output
    126   1.5  christos 	( cd create && mtree -F ${FLAVOR}  ) <"$(atf_get_srcdir)/${FLAVOR}_d_create.out" >output \
    127   1.1    jruoho 	|| atf_fail "mtree exit status $?"
    128   1.1    jruoho 	h_check /dev/null output
    129   1.1    jruoho }
    130   1.1    jruoho 
    131   1.5  christos mtree_check_head() 
    132   1.5  christos {
    133   1.5  christos 	FLAVOR=mtree check_head
    134   1.5  christos }
    135   1.5  christos netbsd6_check_head() 
    136   1.5  christos {
    137   1.5  christos 	FLAVOR=netbsd6 check_head
    138   1.5  christos }
    139   1.5  christos 
    140   1.5  christos mtree_check_body() 
    141   1.5  christos {
    142   1.5  christos 	FLAVOR=mtree check_body
    143   1.5  christos }
    144   1.5  christos netbsd6_check_body() 
    145   1.5  christos {
    146   1.5  christos 	FLAVOR=netbsd6 check_body
    147   1.5  christos }
    148   1.5  christos 
    149   1.5  christos 
    150   1.5  christos atf_test_case mtree_convert_C
    151   1.5  christos atf_test_case netbsd6_convert_C
    152   1.1    jruoho convert_C_head()
    153   1.1    jruoho {
    154   1.1    jruoho 	atf_set "descr" "Convert a specfile to mtree -C format, unsorted"
    155   1.1    jruoho }
    156   1.3    jruoho 
    157   1.1    jruoho convert_C_body()
    158   1.1    jruoho {
    159   1.5  christos 	mtree -F ${FLAVOR} -C -K all <"$(atf_get_srcdir)/d_convert.in" >output
    160   1.1    jruoho 	h_check "$(atf_get_srcdir)/d_convert_C.out" output
    161   1.1    jruoho }
    162   1.1    jruoho 
    163   1.5  christos mtree_convert_C_head() 
    164   1.5  christos {
    165   1.5  christos 	FLAVOR=mtree convert_C_head
    166   1.5  christos }
    167   1.5  christos netbsd6_convert_C_head() 
    168   1.5  christos {
    169   1.5  christos 	FLAVOR=netbsd6 convert_C_head
    170   1.5  christos }
    171   1.5  christos 
    172   1.5  christos mtree_convert_C_body() 
    173   1.5  christos {
    174   1.5  christos 	FLAVOR=mtree convert_C_body
    175   1.5  christos }
    176   1.5  christos netbsd6_convert_C_body() 
    177   1.5  christos {
    178   1.5  christos 	FLAVOR=netbsd6 convert_C_body
    179   1.5  christos }
    180   1.5  christos 
    181   1.5  christos 
    182   1.5  christos atf_test_case mtree_convert_C_S
    183   1.5  christos atf_test_case netbsd6_convert_C_S
    184   1.1    jruoho convert_C_S_head()
    185   1.1    jruoho {
    186   1.1    jruoho 	atf_set "descr" "Convert a specfile to mtree -C format, sorted"
    187   1.1    jruoho }
    188   1.3    jruoho 
    189   1.1    jruoho convert_C_S_body()
    190   1.1    jruoho {
    191   1.5  christos 	mtree -F ${FLAVOR} -C -S -K all <"$(atf_get_srcdir)/d_convert.in" >output
    192   1.1    jruoho 	h_check "$(atf_get_srcdir)/d_convert_C_S.out" output
    193   1.1    jruoho }
    194   1.1    jruoho 
    195   1.5  christos mtree_convert_C_S_head() 
    196   1.5  christos {
    197   1.5  christos 	FLAVOR=mtree convert_C_S_head
    198   1.5  christos }
    199   1.5  christos netbsd6_convert_C_S_head() 
    200   1.5  christos {
    201   1.5  christos 	FLAVOR=netbsd6 convert_C_S_head
    202   1.5  christos }
    203   1.5  christos 
    204   1.5  christos mtree_convert_C_S_body() 
    205   1.5  christos {
    206   1.5  christos 	FLAVOR=mtree convert_C_S_body
    207   1.5  christos }
    208   1.5  christos netbsd6_convert_C_S_body() 
    209   1.5  christos {
    210   1.5  christos 	FLAVOR=netbsd6 convert_C_S_body
    211   1.5  christos }
    212   1.5  christos 
    213   1.5  christos 
    214   1.5  christos atf_test_case mtree_convert_D
    215   1.5  christos atf_test_case netbsd6_convert_D
    216   1.1    jruoho convert_D_head()
    217   1.1    jruoho {
    218   1.1    jruoho 	atf_set "descr" "Convert a specfile to mtree -D format, unsorted"
    219   1.1    jruoho }
    220   1.3    jruoho 
    221   1.1    jruoho convert_D_body()
    222   1.1    jruoho {
    223   1.5  christos 	mtree -F ${FLAVOR} -D -K all <"$(atf_get_srcdir)/d_convert.in" >output
    224   1.1    jruoho 	h_check "$(atf_get_srcdir)/d_convert_D.out" output
    225   1.1    jruoho }
    226   1.1    jruoho 
    227   1.5  christos mtree_convert_D_head() 
    228   1.5  christos {
    229   1.5  christos 	FLAVOR=mtree convert_D_head
    230   1.5  christos }
    231   1.5  christos netbsd6_convert_D_head() 
    232   1.5  christos {
    233   1.5  christos 	FLAVOR=netbsd6 convert_D_head
    234   1.5  christos }
    235   1.5  christos 
    236   1.5  christos mtree_convert_D_body() 
    237   1.5  christos {
    238   1.5  christos 	FLAVOR=mtree convert_D_body
    239   1.5  christos }
    240   1.5  christos netbsd6_convert_D_body() 
    241   1.5  christos {
    242   1.5  christos 	FLAVOR=netbsd6 convert_D_body
    243   1.5  christos }
    244   1.5  christos 
    245   1.5  christos 
    246   1.5  christos atf_test_case mtree_convert_D_S
    247   1.5  christos atf_test_case netbsd6_convert_D_S
    248   1.1    jruoho convert_D_S_head()
    249   1.1    jruoho {
    250   1.1    jruoho 	atf_set "descr" "Convert a specfile to mtree -D format, sorted"
    251   1.1    jruoho }
    252   1.3    jruoho 
    253   1.1    jruoho convert_D_S_body()
    254   1.1    jruoho {
    255   1.5  christos 	mtree -F ${FLAVOR} -D -S -K all <"$(atf_get_srcdir)/d_convert.in" >output
    256   1.1    jruoho 	h_check "$(atf_get_srcdir)/d_convert_D_S.out" output
    257   1.1    jruoho }
    258   1.1    jruoho 
    259   1.5  christos mtree_convert_D_S_head() 
    260   1.5  christos {
    261   1.5  christos 	FLAVOR=mtree convert_D_S_head
    262   1.5  christos }
    263   1.5  christos netbsd6_convert_D_S_head() 
    264   1.5  christos {
    265   1.5  christos 	FLAVOR=netbsd6 convert_D_S_head
    266   1.5  christos }
    267   1.5  christos 
    268   1.5  christos mtree_convert_D_S_body() 
    269   1.5  christos {
    270   1.5  christos 	FLAVOR=mtree convert_D_S_body
    271   1.5  christos }
    272   1.5  christos netbsd6_convert_D_S_body() 
    273   1.5  christos {
    274   1.5  christos 	FLAVOR=netbsd6 convert_D_S_body
    275   1.5  christos }
    276   1.5  christos 
    277   1.5  christos 
    278   1.5  christos atf_test_case mtree_ignore
    279   1.5  christos atf_test_case netbs6_ignore
    280   1.3    jruoho ignore_head()
    281   1.3    jruoho {
    282   1.3    jruoho 	atf_set "descr" "Test that -d ignores symlinks (PR bin/41061)"
    283   1.3    jruoho }
    284   1.3    jruoho 
    285   1.3    jruoho ignore_body()
    286   1.3    jruoho {
    287   1.7  christos 	# Kyua 0.11 and above point TMPDIR to our work directory and atf-check
    288   1.7  christos 	# generates a temporary file, which confuses mtree.  Put the mtree files
    289   1.7  christos 	# into a subdirectory.
    290   1.7  christos 	#
    291   1.7  christos 	# See https://github.com/jmmv/kyua/issues/133 for details.
    292   1.7  christos 	mkdir root && cd root
    293   1.7  christos 
    294   1.3    jruoho 	mkdir newdir
    295   1.5  christos 	mtree -F ${FLAVOR} -c | mtree -F ${FLAVOR} -Ck uid,gid,mode > mtree.spec
    296   1.3    jruoho 	ln -s newdir otherdir
    297   1.3    jruoho 
    298   1.3    jruoho 	# This yields "extra: otherdir" even with -d.
    299   1.4  christos 	# (PR bin/41061)
    300   1.5  christos 	atf_check -s ignore -o empty -e empty -x "mtree -F ${FLAVOR} -d < mtree.spec"
    301   1.3    jruoho 
    302   1.3    jruoho 	# Delete the symlink and re-verify.
    303   1.3    jruoho 	#
    304   1.3    jruoho 	rm otherdir
    305   1.5  christos 	atf_check -s ignore -o empty -e empty -x "mtree -F ${FLAVOR} -d < mtree.spec"
    306   1.5  christos }
    307   1.5  christos 
    308   1.5  christos mtree_ignore_head() 
    309   1.5  christos {
    310   1.5  christos 	FLAVOR=mtree ignore_head
    311   1.5  christos }
    312   1.5  christos netbsd6_ignore_head() 
    313   1.5  christos {
    314   1.5  christos 	FLAVOR=netbsd6 ignore_head
    315   1.5  christos }
    316   1.5  christos 
    317   1.5  christos mtree_ignore_body() 
    318   1.5  christos {
    319   1.5  christos 	FLAVOR=mtree ignore_body
    320   1.5  christos }
    321   1.5  christos netbsd6_ignore_body() 
    322   1.5  christos {
    323   1.7  christos 	# Kyua 0.11 and above point TMPDIR to our work directory and atf-check
    324   1.7  christos 	# generates a temporary file, which confuses mtree.  Put the mtree files
    325   1.7  christos 	# into a subdirectory.
    326   1.7  christos 	#
    327   1.7  christos 	# See https://github.com/jmmv/kyua/issues/133 for details.
    328   1.7  christos 	mkdir root && cd root
    329   1.7  christos 
    330   1.5  christos 	FLAVOR=netbsd6 ignore_body
    331   1.3    jruoho }
    332   1.3    jruoho 
    333   1.5  christos 
    334   1.5  christos atf_test_case mtree_merge
    335   1.5  christos atf_test_case netbsd6_merge
    336   1.1    jruoho merge_head()
    337   1.1    jruoho {
    338   1.1    jruoho 	atf_set "descr" "Merge records of different type"
    339   1.1    jruoho }
    340   1.3    jruoho 
    341   1.1    jruoho merge_body()
    342   1.1    jruoho {
    343   1.5  christos 	mtree -F ${FLAVOR} -C -M -K all <"$(atf_get_srcdir)/d_merge.in" >output
    344   1.1    jruoho 	h_check "$(atf_get_srcdir)/d_merge_C_M.out" output
    345   1.1    jruoho 	# same again, with sorting
    346   1.5  christos 	mtree -F ${FLAVOR} -C -M -S -K all <"$(atf_get_srcdir)/d_merge.in" >output
    347   1.1    jruoho 	h_check "$(atf_get_srcdir)/d_merge_C_M_S.out" output
    348   1.1    jruoho }
    349   1.1    jruoho 
    350   1.5  christos mtree_merge_head() 
    351   1.5  christos {
    352   1.5  christos 	FLAVOR=mtree merge_head
    353   1.5  christos }
    354   1.5  christos netbsd6_merge_head() 
    355   1.5  christos {
    356   1.5  christos 	FLAVOR=netbsd6 merge_head
    357   1.5  christos }
    358   1.5  christos 
    359   1.5  christos mtree_merge_body() 
    360   1.5  christos {
    361   1.5  christos 	FLAVOR=mtree merge_body
    362   1.5  christos }
    363   1.5  christos netbsd6_merge_body() 
    364   1.5  christos {
    365   1.5  christos 	FLAVOR=netbsd6 merge_body
    366   1.5  christos }
    367   1.5  christos 
    368   1.5  christos 
    369   1.5  christos atf_test_case mtree_nonemptydir
    370   1.5  christos atf_test_case netbsd6_nonemptydir
    371   1.3    jruoho nonemptydir_head()
    372   1.3    jruoho {
    373   1.2    jruoho 	atf_set "descr" "Test that new non-empty " \
    374   1.2    jruoho 			"directories are recorded (PR bin/25693)"
    375   1.2    jruoho }
    376   1.2    jruoho 
    377   1.3    jruoho nonemptydir_body()
    378   1.3    jruoho {
    379   1.2    jruoho 	mkdir testdir
    380   1.2    jruoho 	cd testdir
    381   1.2    jruoho 
    382   1.5  christos 	mtree -F ${FLAVOR} -c > mtree.spec
    383   1.2    jruoho 
    384   1.2    jruoho 	if [ ! -f mtree.spec ]; then
    385   1.2    jruoho 		atf_fail "mtree failed"
    386   1.2    jruoho 	fi
    387   1.2    jruoho 
    388   1.2    jruoho 	touch bar
    389   1.5  christos 	atf_check -s ignore -o save:output -x "mtree -F ${FLAVOR} -f mtree.spec"
    390   1.2    jruoho 
    391   1.2    jruoho 	if [ ! -n "$(egrep "extra: bar" output)" ]; then
    392   1.2    jruoho 		atf_fail "mtree did not record changes (PR bin/25693)"
    393   1.2    jruoho 	fi
    394   1.2    jruoho }
    395   1.2    jruoho 
    396   1.5  christos mtree_nonemptydir_head() 
    397   1.5  christos {
    398   1.5  christos 	FLAVOR=mtree nonemptydir_head
    399   1.5  christos }
    400   1.5  christos netbsd6_nonemptydir_head() 
    401   1.5  christos {
    402   1.5  christos 	FLAVOR=netbsd6 nonemptydir_head
    403   1.5  christos }
    404   1.5  christos 
    405   1.5  christos mtree_nonemptydir_body() 
    406   1.5  christos {
    407   1.5  christos 	FLAVOR=mtree nonemptydir_body
    408   1.5  christos }
    409   1.5  christos netbsd6_nonemptydir_body() 
    410   1.5  christos {
    411   1.5  christos 	FLAVOR=netbsd6 nonemptydir_body
    412   1.5  christos }
    413   1.5  christos 
    414   1.9  christos atf_test_case mtree_specspec_type
    415   1.9  christos mtree_specspec_type_head()
    416   1.9  christos {
    417   1.9  christos 	atf_set "descr" "Test that spec comparisons detect type changes"
    418   1.9  christos }
    419   1.9  christos 
    420   1.9  christos mtree_specspec_type_body()
    421   1.9  christos {
    422   1.9  christos 	mkdir testdir
    423   1.9  christos 
    424   1.9  christos 	touch testdir/bar
    425   1.9  christos 	mtree -c -p testdir > mtree1.spec
    426   1.9  christos 
    427   1.9  christos 	if [ ! -f mtree1.spec ]; then
    428   1.9  christos 		atf_fail "mtree failed"
    429   1.9  christos 	fi
    430   1.9  christos 
    431   1.9  christos 	rm -f testdir/bar
    432   1.9  christos 	ln -s foo testdir/bar
    433   1.9  christos 	# uid change is expected to be ignored as done in -C
    434   1.9  christos 	chown -h operator testdir/bar
    435   1.9  christos 	mtree -c -p testdir > mtree2.spec
    436   1.9  christos 
    437   1.9  christos 	if [ ! -f mtree2.spec ]; then
    438   1.9  christos 		atf_fail "mtree failed"
    439   1.9  christos 	fi
    440   1.9  christos 
    441   1.9  christos 	atf_check -s ignore -o save:output \
    442   1.9  christos 	    -x "mtree -f mtree1.spec -f mtree2.spec"
    443   1.9  christos 
    444   1.9  christos 	if ! cut -f 3 output | egrep -q "bar file" || \
    445   1.9  christos 	    ! cut -f 3 output | egrep -q "bar link"; then
    446   1.9  christos 		atf_fail "mtree did not detect type change"
    447   1.9  christos 	fi
    448   1.9  christos }
    449   1.9  christos 
    450   1.8  nakayama atf_test_case mtree_onlyfile
    451   1.8  nakayama atf_test_case netbsd6_onlyfile
    452   1.8  nakayama onlyfile_head()
    453   1.8  nakayama {
    454   1.8  nakayama 	atf_set "descr" "Test -O with same hash value in directory and leaf"
    455   1.8  nakayama }
    456   1.8  nakayama 
    457   1.8  nakayama onlyfile_body()
    458   1.8  nakayama {
    459   1.8  nakayama 	mkdir -p ab/no
    460   1.8  nakayama 	echo ./ab/no >onlyfile
    461   1.8  nakayama 	mtree -F ${FLAVOR} -c -n -O onlyfile >output
    462   1.8  nakayama 	if [ ! -s output ]; then
    463   1.8  nakayama 		atf_fail "mtree did not find path in onlyfile"
    464   1.8  nakayama 	fi
    465   1.8  nakayama }
    466   1.8  nakayama 
    467   1.8  nakayama mtree_onlyfile_head()
    468   1.8  nakayama {
    469   1.8  nakayama 	FLAVOR=mtree onlyfile_head
    470   1.8  nakayama }
    471   1.8  nakayama netbsd6_onlyfile_head()
    472   1.8  nakayama {
    473   1.8  nakayama 	FLAVOR=netbsd6 onlyfile_head
    474   1.8  nakayama }
    475   1.8  nakayama 
    476   1.8  nakayama mtree_onlyfile_body()
    477   1.8  nakayama {
    478   1.8  nakayama 	FLAVOR=mtree onlyfile_body
    479   1.8  nakayama }
    480   1.8  nakayama netbsd6_onlyfile_body()
    481   1.8  nakayama {
    482   1.8  nakayama 	FLAVOR=netbsd6 onlyfile_body
    483   1.8  nakayama }
    484   1.8  nakayama 
    485   1.8  nakayama 
    486   1.1    jruoho atf_init_test_cases()
    487   1.1    jruoho {
    488   1.5  christos 	atf_add_test_case mtree_create
    489   1.5  christos 	atf_add_test_case mtree_check
    490   1.5  christos 	atf_add_test_case mtree_convert_C
    491   1.5  christos 	atf_add_test_case mtree_convert_C_S
    492   1.5  christos 	atf_add_test_case mtree_convert_D
    493   1.5  christos 	atf_add_test_case mtree_convert_D_S
    494   1.5  christos 	atf_add_test_case mtree_ignore
    495   1.5  christos 	atf_add_test_case mtree_merge
    496   1.5  christos 	atf_add_test_case mtree_nonemptydir
    497   1.9  christos 	atf_add_test_case mtree_specspec_type
    498   1.8  nakayama 	atf_add_test_case mtree_onlyfile
    499   1.5  christos 
    500   1.5  christos 	atf_add_test_case netbsd6_create
    501   1.5  christos 	atf_add_test_case netbsd6_check
    502   1.5  christos 	atf_add_test_case netbsd6_convert_C
    503   1.5  christos 	atf_add_test_case netbsd6_convert_C_S
    504   1.5  christos 	atf_add_test_case netbsd6_convert_D
    505   1.5  christos 	atf_add_test_case netbsd6_convert_D_S
    506   1.5  christos 	atf_add_test_case netbsd6_ignore
    507   1.5  christos 	atf_add_test_case netbsd6_merge
    508   1.5  christos 	atf_add_test_case netbsd6_nonemptydir
    509   1.8  nakayama 	atf_add_test_case netbsd6_onlyfile
    510   1.1    jruoho }
    511