1# $FreeBSD$ 2# 3# Copyright 2013 Google 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 are 8# met: 9# 10# * Redistributions of source code must retain the above copyright 11# notice, this list of conditions and the following disclaimer. 12# * Redistributions in binary form must reproduce the above copyright 13# notice, this list of conditions and the following disclaimer in the 14# documentation and/or other materials provided with the distribution. 15# * Neither the name of Google Inc. nor the names of its contributors 16# may be used to endorse or promote products derived from this software 17# without specific prior written permission. 18# 19# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 31# 32# INTRODUCTION 33# 34# This plain test program mimics the structure and contents of its 35# ATF-based counterpart. It attempts to represent various test cases 36# in different separate functions and just calls them all from main. 37# 38# In reality, plain test programs can be much simpler. All they have 39# to do is return 0 on success and non-0 otherwise. 40# 41 42set -e 43 44# Prints an error message and exits. 45err() { 46 echo "${@}" 1>&2 47 exit 1 48} 49 50# Auxiliary function to compare two files for equality. 51verify_copy() { 52 if ! cmp -s "${1}" "${2}"; then 53 diff -u "${1}" "${2}" 54 err "${1} and ${2} differ, but they should be equal" 55 fi 56} 57 58simple_test() { 59 echo 'File 1' >file1 60 cp file1 file2 || err "cp failed" 61 verify_copy file1 file2 62} 63 64force_test() { 65 echo 'File 1' >file1 66 echo 'File 2' >file2 67 chmod 400 file2 68 cp -f file1 file2 || err "cp failed" 69 verify_copy file1 file2 70} 71 72# If you have read the cp_test.sh counterpart in the atf/ directory, you 73# may think that the sequencing of tests below and the exposed behavior 74# to the user is very similar. But you'd be wrong. 75# 76# There are two major differences with this and the ATF version. The 77# first is that the code below has no provisions to detect failures in 78# one test and continue running the other tests: the first failure 79# causes the whole test program to exit. The second is that this 80# particular "main" has no arguments: without ATF, all test programs may 81# expose a different command-line interface, and this is an issue for 82# consistency purposes. 83simple_test 84force_test 85