Home | History | Annotate | Line # | Download | only in compress
t_pr_19722.sh revision 1.1
      1 #	$NetBSD: t_pr_19722.sh,v 1.1 2022/05/22 17:55:08 rillig Exp $
      2 #
      3 # Copyright (c) 2022 The NetBSD Foundation, Inc.
      4 # All rights reserved.
      5 #
      6 # Redistribution and use in source and binary forms, with or without
      7 # modification, are permitted provided that the following conditions
      8 # are met:
      9 # 1. Redistributions of source code must retain the above copyright
     10 #    notice, this list of conditions and the following disclaimer.
     11 # 2. Redistributions in binary form must reproduce the above copyright
     12 #    notice, this list of conditions and the following disclaimer in the
     13 #    documentation and/or other materials provided with the distribution.
     14 #
     15 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25 # POSSIBILITY OF SUCH DAMAGE.
     26 #
     27 
     28 # https://gnats.netbsd.org/19722
     29 #
     30 # Before TODO:rev from TODO:date, trying to uncompress a nonexistent or
     31 # malformed source file resulted in a truncated target file.
     32 
     33 
     34 atf_test_case 'no_source_no_target'
     35 no_source_no_target_body()
     36 {
     37 
     38 	atf_check \
     39 	    -s 'not-exit:0' \
     40 	    -e 'inline:uncompress: file.Z: No such file or directory\n' \
     41 	    uncompress -f 'file'
     42 
     43 	# FIXME: The target file must not be created.
     44 	atf_check cat 'file'
     45 	atf_check test ! -f 'nonexistent.Z'
     46 }
     47 
     48 
     49 atf_test_case 'no_source_existing_target'
     50 no_source_existing_target_body()
     51 {
     52 
     53 	echo 'before' > 'file'
     54 
     55 	atf_check \
     56 	    -s 'not-exit:0' \
     57 	    -e 'inline:uncompress: file.Z: No such file or directory\n' \
     58 	    uncompress -f 'file'
     59 
     60 	# FIXME: The target file must not be truncated.
     61 	atf_check cat 'file'
     62 }
     63 
     64 
     65 atf_test_case 'broken_source_existing_target'
     66 broken_source_existing_target_body()
     67 {
     68 	# If the source file is not compressed, preserve the target file.
     69 
     70 	echo 'broken' > 'file.Z'
     71 	echo 'before' > 'file'
     72 
     73 	atf_check \
     74 	    -s 'not-exit:0' \
     75 	    -e 'inline:uncompress: file.Z: Inappropriate file type or format\n' \
     76 	    uncompress -f 'file.Z'
     77 
     78 	# FIXME: Must not be removed, must not be truncated.
     79 	atf_check test ! -f 'file'
     80 }
     81 
     82 
     83 atf_init_test_cases()
     84 {
     85 
     86 	atf_add_test_case no_source_no_target
     87 	atf_add_test_case no_source_existing_target
     88 	atf_add_test_case broken_source_existing_target
     89 }
     90