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 global 31*6b3a42afSjmmvglobal_body() { 32*6b3a42afSjmmv atf_check -s exit:0 -o save:stdout -e empty kyua help 33*6b3a42afSjmmv grep '^Usage: kyua' stdout || atf_fail 'No usage line printed' 34*6b3a42afSjmmv grep -- '--loglevel' stdout || atf_fail 'Generic options not printed' 35*6b3a42afSjmmv if grep -- '--show' stdout; then 36*6b3a42afSjmmv atf_fail 'One option of the about subcommand appeared in the output' 37*6b3a42afSjmmv fi 38*6b3a42afSjmmv grep 'about *Shows general' stdout || atf_fail 'Commands not printed' 39*6b3a42afSjmmv} 40*6b3a42afSjmmv 41*6b3a42afSjmmv 42*6b3a42afSjmmvutils_test_case one_command 43*6b3a42afSjmmvone_command_body() { 44*6b3a42afSjmmv atf_check -s exit:0 -o save:stdout -e empty kyua help test 45*6b3a42afSjmmv grep '^Usage: kyua' stdout || atf_fail 'No usage line printed' 46*6b3a42afSjmmv grep '^Run tests' stdout || atf_fail 'No description printed' 47*6b3a42afSjmmv grep -- '--loglevel' stdout || atf_fail 'Generic options not printed' 48*6b3a42afSjmmv grep -- '--kyuafile' stdout || atf_fail 'Command options not printed' 49*6b3a42afSjmmv if grep 'about: Shows general' stdout; then 50*6b3a42afSjmmv atf_fail 'Printed table of commands, but should not have done so' 51*6b3a42afSjmmv fi 52*6b3a42afSjmmv} 53*6b3a42afSjmmv 54*6b3a42afSjmmv 55*6b3a42afSjmmvutils_test_case ignore_bad_config 56*6b3a42afSjmmvignore_bad_config_body() { 57*6b3a42afSjmmv echo 'this is an invalid configuration file' >bad-config 58*6b3a42afSjmmv atf_check -s exit:0 -o save:stdout -e empty kyua -c bad-config help 59*6b3a42afSjmmv grep '^Usage: kyua' stdout || atf_fail 'No usage line printed' 60*6b3a42afSjmmv grep -- '--loglevel' stdout || atf_fail 'Generic options not printed' 61*6b3a42afSjmmv} 62*6b3a42afSjmmv 63*6b3a42afSjmmv 64*6b3a42afSjmmvutils_test_case unknown_command 65*6b3a42afSjmmvunknown_command_body() { 66*6b3a42afSjmmv cat >stderr <<EOF 67*6b3a42afSjmmvUsage error for command help: The command abc does not exist. 68*6b3a42afSjmmvType 'kyua help help' for usage information. 69*6b3a42afSjmmvEOF 70*6b3a42afSjmmv atf_check -s exit:3 -o empty -e file:stderr kyua help abc 71*6b3a42afSjmmv} 72*6b3a42afSjmmv 73*6b3a42afSjmmv 74*6b3a42afSjmmvutils_test_case too_many_arguments 75*6b3a42afSjmmvtoo_many_arguments_body() { 76*6b3a42afSjmmv cat >stderr <<EOF 77*6b3a42afSjmmvUsage error for command help: Too many arguments. 78*6b3a42afSjmmvType 'kyua help help' for usage information. 79*6b3a42afSjmmvEOF 80*6b3a42afSjmmv atf_check -s exit:3 -o empty -e file:stderr kyua help about cde 81*6b3a42afSjmmv} 82*6b3a42afSjmmv 83*6b3a42afSjmmv 84*6b3a42afSjmmvatf_init_test_cases() { 85*6b3a42afSjmmv atf_add_test_case global 86*6b3a42afSjmmv atf_add_test_case one_command 87*6b3a42afSjmmv 88*6b3a42afSjmmv atf_add_test_case ignore_bad_config 89*6b3a42afSjmmv atf_add_test_case unknown_command 90*6b3a42afSjmmv atf_add_test_case too_many_arguments 91*6b3a42afSjmmv} 92