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