1*b0d29bc4SBrooks Davis# Copyright 2011 The Kyua Authors. 2*b0d29bc4SBrooks Davis# All rights reserved. 3*b0d29bc4SBrooks Davis# 4*b0d29bc4SBrooks Davis# Redistribution and use in source and binary forms, with or without 5*b0d29bc4SBrooks Davis# modification, are permitted provided that the following conditions are 6*b0d29bc4SBrooks Davis# met: 7*b0d29bc4SBrooks Davis# 8*b0d29bc4SBrooks Davis# * Redistributions of source code must retain the above copyright 9*b0d29bc4SBrooks Davis# notice, this list of conditions and the following disclaimer. 10*b0d29bc4SBrooks Davis# * Redistributions in binary form must reproduce the above copyright 11*b0d29bc4SBrooks Davis# notice, this list of conditions and the following disclaimer in the 12*b0d29bc4SBrooks Davis# documentation and/or other materials provided with the distribution. 13*b0d29bc4SBrooks Davis# * Neither the name of Google Inc. nor the names of its contributors 14*b0d29bc4SBrooks Davis# may be used to endorse or promote products derived from this software 15*b0d29bc4SBrooks Davis# without specific prior written permission. 16*b0d29bc4SBrooks Davis# 17*b0d29bc4SBrooks Davis# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18*b0d29bc4SBrooks Davis# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19*b0d29bc4SBrooks Davis# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20*b0d29bc4SBrooks Davis# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21*b0d29bc4SBrooks Davis# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22*b0d29bc4SBrooks Davis# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23*b0d29bc4SBrooks Davis# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24*b0d29bc4SBrooks Davis# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25*b0d29bc4SBrooks Davis# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26*b0d29bc4SBrooks Davis# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27*b0d29bc4SBrooks Davis# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28*b0d29bc4SBrooks Davis 29*b0d29bc4SBrooks Davis 30*b0d29bc4SBrooks Davisutils_test_case no_args 31*b0d29bc4SBrooks Davisno_args_body() { 32*b0d29bc4SBrooks Davis cat >experr <<EOF 33*b0d29bc4SBrooks DavisUsage error: No command provided. 34*b0d29bc4SBrooks DavisType 'kyua help' for usage information. 35*b0d29bc4SBrooks DavisEOF 36*b0d29bc4SBrooks Davis 37*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e file:experr kyua 38*b0d29bc4SBrooks Davis} 39*b0d29bc4SBrooks Davis 40*b0d29bc4SBrooks Davis 41*b0d29bc4SBrooks Davisutils_test_case unknown_option 42*b0d29bc4SBrooks Davisunknown_option_body() { 43*b0d29bc4SBrooks Davis cat >experr <<EOF 44*b0d29bc4SBrooks DavisUsage error: Unknown option --this_is_unknown. 45*b0d29bc4SBrooks DavisType 'kyua help' for usage information. 46*b0d29bc4SBrooks DavisEOF 47*b0d29bc4SBrooks Davis 48*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e file:experr kyua --this_is_unknown 49*b0d29bc4SBrooks Davis} 50*b0d29bc4SBrooks Davis 51*b0d29bc4SBrooks Davis 52*b0d29bc4SBrooks Davisutils_test_case unknown_command 53*b0d29bc4SBrooks Davisunknown_command_body() { 54*b0d29bc4SBrooks Davis cat >experr <<EOF 55*b0d29bc4SBrooks DavisUsage error: Unknown command 'i_am_not_known'. 56*b0d29bc4SBrooks DavisType 'kyua help' for usage information. 57*b0d29bc4SBrooks DavisEOF 58*b0d29bc4SBrooks Davis 59*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e file:experr kyua i_am_not_known 60*b0d29bc4SBrooks Davis} 61*b0d29bc4SBrooks Davis 62*b0d29bc4SBrooks Davis 63*b0d29bc4SBrooks Davisutils_test_case logfile__default 64*b0d29bc4SBrooks Davislogfile__default_body() { 65*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -d .kyua/logs/ 66*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e ignore kyua 67*b0d29bc4SBrooks Davis atf_check -s exit:0 test -d .kyua/logs/ 68*b0d29bc4SBrooks Davis} 69*b0d29bc4SBrooks Davis 70*b0d29bc4SBrooks Davis 71*b0d29bc4SBrooks Davisutils_test_case logfile__override 72*b0d29bc4SBrooks Davislogfile__override_body() { 73*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -f test.log 74*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e ignore kyua --logfile=test.log 75*b0d29bc4SBrooks Davis 76*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -d .kyua/logs/ 77*b0d29bc4SBrooks Davis atf_check -s exit:0 test -f test.log 78*b0d29bc4SBrooks Davis 79*b0d29bc4SBrooks Davis grep ' E .* No command provided' test.log || atf_fail "Log file does" \ 80*b0d29bc4SBrooks Davis "contain required message" 81*b0d29bc4SBrooks Davis} 82*b0d29bc4SBrooks Davis 83*b0d29bc4SBrooks Davis 84*b0d29bc4SBrooks Davisutils_test_case loglevel__default 85*b0d29bc4SBrooks Davisloglevel__default_body() { 86*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -f test.log 87*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e ignore kyua --logfile=test.log 88*b0d29bc4SBrooks Davis 89*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -d .kyua/logs/ 90*b0d29bc4SBrooks Davis atf_check -s exit:0 test -f test.log 91*b0d29bc4SBrooks Davis 92*b0d29bc4SBrooks Davis grep ' E .* No command provided' test.log || atf_fail "Log file does" \ 93*b0d29bc4SBrooks Davis "contain required message" 94*b0d29bc4SBrooks Davis if grep ' D ' test.log; then 95*b0d29bc4SBrooks Davis atf_fail "Log file contains debug messages but it should not" 96*b0d29bc4SBrooks Davis fi 97*b0d29bc4SBrooks Davis} 98*b0d29bc4SBrooks Davis 99*b0d29bc4SBrooks Davis 100*b0d29bc4SBrooks Davisutils_test_case loglevel__lower 101*b0d29bc4SBrooks Davisloglevel__lower_body() { 102*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -f test.log 103*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e ignore kyua --logfile=test.log \ 104*b0d29bc4SBrooks Davis --loglevel=warning 105*b0d29bc4SBrooks Davis 106*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -d .kyua/logs/ 107*b0d29bc4SBrooks Davis atf_check -s exit:0 test -f test.log 108*b0d29bc4SBrooks Davis 109*b0d29bc4SBrooks Davis grep ' E .* No command provided' test.log || atf_fail "Log file does" \ 110*b0d29bc4SBrooks Davis "contain required message" 111*b0d29bc4SBrooks Davis if grep ' I ' test.log; then 112*b0d29bc4SBrooks Davis atf_fail "Log file contains info messages but it should not" 113*b0d29bc4SBrooks Davis fi 114*b0d29bc4SBrooks Davis} 115*b0d29bc4SBrooks Davis 116*b0d29bc4SBrooks Davis 117*b0d29bc4SBrooks Davisutils_test_case loglevel__higher 118*b0d29bc4SBrooks Davisloglevel__higher_body() { 119*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -f test.log 120*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e ignore kyua --logfile=test.log \ 121*b0d29bc4SBrooks Davis --loglevel=debug 122*b0d29bc4SBrooks Davis 123*b0d29bc4SBrooks Davis atf_check -s exit:0 test ! -d .kyua/logs/ 124*b0d29bc4SBrooks Davis atf_check -s exit:0 test -f test.log 125*b0d29bc4SBrooks Davis 126*b0d29bc4SBrooks Davis grep ' E .* No command provided' test.log || atf_fail "Log file does" \ 127*b0d29bc4SBrooks Davis "contain required message" 128*b0d29bc4SBrooks Davis grep ' D ' test.log || atf_fail "Log file does not contain debug messages" 129*b0d29bc4SBrooks Davis} 130*b0d29bc4SBrooks Davis 131*b0d29bc4SBrooks Davis 132*b0d29bc4SBrooks Davisatf_init_test_cases() { 133*b0d29bc4SBrooks Davis atf_add_test_case no_args 134*b0d29bc4SBrooks Davis atf_add_test_case unknown_option 135*b0d29bc4SBrooks Davis atf_add_test_case unknown_command 136*b0d29bc4SBrooks Davis 137*b0d29bc4SBrooks Davis atf_add_test_case logfile__default 138*b0d29bc4SBrooks Davis atf_add_test_case logfile__override 139*b0d29bc4SBrooks Davis 140*b0d29bc4SBrooks Davis atf_add_test_case loglevel__default 141*b0d29bc4SBrooks Davis atf_add_test_case loglevel__lower 142*b0d29bc4SBrooks Davis atf_add_test_case loglevel__higher 143*b0d29bc4SBrooks Davis 144*b0d29bc4SBrooks Davis # Tests for the global configuration-related flags are found in the 145*b0d29bc4SBrooks Davis # cmd_config_test test program. 146*b0d29bc4SBrooks Davis} 147