90 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/bin/sh
 | 
						|
# vim:et:ft=sh:sts=2:sw=2
 | 
						|
#
 | 
						|
# Copyright 2008 Kate Ward. All Rights Reserved.
 | 
						|
# Released under the LGPL (GNU Lesser General Public License)
 | 
						|
#
 | 
						|
# Author: kate.ward@forestent.com (Kate Ward)
 | 
						|
#
 | 
						|
# Example unit test for the mkdir command.
 | 
						|
#
 | 
						|
# There are times when an existing shell script needs to be tested. In this
 | 
						|
# example, we will test several aspects of the the mkdir command, but the
 | 
						|
# techniques could be used for any existing shell script.
 | 
						|
 | 
						|
#-----------------------------------------------------------------------------
 | 
						|
# suite tests
 | 
						|
#
 | 
						|
 | 
						|
testMissingDirectoryCreation()
 | 
						|
{
 | 
						|
  ${mkdirCmd} "${testDir}" >${stdoutF} 2>${stderrF}
 | 
						|
  rtrn=$?
 | 
						|
  th_assertTrueWithNoOutput ${rtrn} "${stdoutF}" "${stderrF}"
 | 
						|
 | 
						|
  assertTrue 'directory missing' "[ -d '${testDir}' ]"
 | 
						|
}
 | 
						|
 | 
						|
testExistingDirectoryCreationFails()
 | 
						|
{
 | 
						|
  # create a directory to test against
 | 
						|
  ${mkdirCmd} "${testDir}"
 | 
						|
 | 
						|
  # test for expected failure while trying to create directory that exists
 | 
						|
  ${mkdirCmd} "${testDir}" >${stdoutF} 2>${stderrF}
 | 
						|
  rtrn=$?
 | 
						|
  assertFalse 'expecting return code of 1 (false)' ${rtrn}
 | 
						|
  assertNull 'unexpected output to stdout' "`cat ${stdoutF}`"
 | 
						|
  assertNotNull 'expected error message to stderr' "`cat ${stderrF}`"
 | 
						|
 | 
						|
  assertTrue 'directory missing' "[ -d '${testDir}' ]"
 | 
						|
}
 | 
						|
 | 
						|
testRecursiveDirectoryCreation()
 | 
						|
{
 | 
						|
  testDir2="${testDir}/test2"
 | 
						|
 | 
						|
  ${mkdirCmd} -p "${testDir2}" >${stdoutF} 2>${stderrF}
 | 
						|
  rtrn=$?
 | 
						|
  th_assertTrueWithNoOutput ${rtrn} "${stdoutF}" "${stderrF}"
 | 
						|
 | 
						|
  assertTrue 'first directory missing' "[ -d '${testDir}' ]"
 | 
						|
  assertTrue 'second directory missing' "[ -d '${testDir2}' ]"
 | 
						|
}
 | 
						|
 | 
						|
#-----------------------------------------------------------------------------
 | 
						|
# suite functions
 | 
						|
#
 | 
						|
 | 
						|
th_assertTrueWithNoOutput()
 | 
						|
{
 | 
						|
  th_return_=$1
 | 
						|
  th_stdout_=$2
 | 
						|
  th_stderr_=$3
 | 
						|
 | 
						|
  assertFalse 'unexpected output to STDOUT' "[ -s '${th_stdout_}' ]"
 | 
						|
  assertFalse 'unexpected output to STDERR' "[ -s '${th_stderr_}' ]"
 | 
						|
 | 
						|
  unset th_return_ th_stdout_ th_stderr_
 | 
						|
}
 | 
						|
 | 
						|
oneTimeSetUp()
 | 
						|
{
 | 
						|
  outputDir="${SHUNIT_TMPDIR}/output"
 | 
						|
  mkdir "${outputDir}"
 | 
						|
  stdoutF="${outputDir}/stdout"
 | 
						|
  stderrF="${outputDir}/stderr"
 | 
						|
 | 
						|
  mkdirCmd='mkdir'  # save command name in variable to make future changes easy
 | 
						|
  testDir="${SHUNIT_TMPDIR}/some_test_dir"
 | 
						|
}
 | 
						|
 | 
						|
tearDown()
 | 
						|
{
 | 
						|
  rm -fr "${testDir}"
 | 
						|
}
 | 
						|
 | 
						|
# load and run shUnit2
 | 
						|
[ -n "${ZSH_VERSION:-}" ] && SHUNIT_PARENT=$0
 | 
						|
. ../src/shunit2
 |