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
 |