Beispiele für Testausführungshaken
Nutzen Sie die folgenden Beispiele, um eine Vorstellung davon zu erhalten, wie Sie Ihre Testausführungshaken strukturieren. Sie können diese Haken als Vorlagen oder als Testskripte verwenden.
Einfaches Erfolgsbeispiel
Dies ist ein Beispiel für einen einfachen Haken, der erfolgreich ist und eine Nachricht in die Standardausgabe und Standardfehler schreibt.
#!/bin/sh
# success_sample.sh
#
# A simple noop success hook script for testing purposes.
#
# args: None
#
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# main
#
# log something to stdout
info "running success_sample.sh"
# exit with 0 to indicate success
info "exit 0"
exit 0
Einfaches Erfolgsbeispiel (Bash-Version)
Dies ist ein Beispiel für einen einfachen Haken, der erfolgreich ist und eine Nachricht in die Standardausgabe und Standardfehler schreibt, für bash geschrieben.
#!/bin/bash
# success_sample.bash
#
# A simple noop success hook script for testing purposes.
#
# args: None
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# main
#
# log something to stdout
info "running success_sample.bash"
# exit with 0 to indicate success
info "exit 0"
exit 0
Einfaches Erfolgsbeispiel (zsh-Version)
Dies ist ein Beispiel für einen einfachen Haken, der erfolgreich ist und eine Nachricht in Standardausgabe und Standardfehler schreibt, geschrieben für Z Shell.
#!/bin/zsh
# success_sample.zsh
#
# A simple noop success hook script for testing purposes.
#
# args: None
#
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# main
#
# log something to stdout
info "running success_sample.zsh"
# exit with 0 to indicate success
info "exit 0"
exit 0
Erfolg mit Argumenten Beispiel
Das folgende Beispiel zeigt, wie Sie in einem Haken Aargliste verwenden können.
#!/bin/sh
# success_sample_args.sh
#
# A simple success hook script with args for testing purposes.
#
# args: Up to two optional args that are echoed to stdout
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# main
#
# log something to stdout
info "running success_sample_args.sh"
# collect args
arg1=$1
arg2=$2
# output args and arg count to stdout
info "number of args: $#"
info "arg1 ${arg1}"
info "arg2 ${arg2}"
# exit with 0 to indicate success
info "exit 0"
exit 0
Beispiel für Haken vor dem Snapshot/nach dem Snapshot
Das folgende Beispiel zeigt, wie dasselbe Skript sowohl für einen Pre-Snapshot als auch für einen Post-Snapshot-Haken verwendet werden kann.
#!/bin/sh
# success_sample_pre_post.sh
#
# A simple success hook script example with an arg for testing purposes
# to demonstrate how the same script can be used for both a prehook and posthook
#
# args: [pre|post]
# unique error codes for every error case
ebase=100
eusage=$((ebase+1))
ebadstage=$((ebase+2))
epre=$((ebase+3))
epost=$((ebase+4))
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# Would run prehook steps here
#
prehook() {
info "Running noop prehook"
return 0
}
#
# Would run posthook steps here
#
posthook() {
info "Running noop posthook"
return 0
}
#
# main
#
# check arg
stage=$1
if [ -z "${stage}" ]; then
echo "Usage: $0 <pre|post>"
exit ${eusage}
fi
if [ "${stage}" != "pre" ] && [ "${stage}" != "post" ]; then
echo "Invalid arg: ${stage}"
exit ${ebadstage}
fi
# log something to stdout
info "running success_sample_pre_post.sh"
if [ "${stage}" = "pre" ]; then
prehook
rc=$?
if [ ${rc} -ne 0 ]; then
error "Error during prehook"
fi
fi
if [ "${stage}" = "post" ]; then
posthook
rc=$?
if [ ${rc} -ne 0 ]; then
error "Error during posthook"
fi
fi
exit ${rc}
Fehlerbeispiel
Das folgende Beispiel zeigt, wie Sie Fehler in einem Haken handhaben können.
#!/bin/sh
# failure_sample_arg_exit_code.sh
#
# A simple failure hook script for testing purposes.
#
# args: [the exit code to return]
#
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# main
#
# log something to stdout
info "running failure_sample_arg_exit_code.sh"
argexitcode=$1
# log to stderr
error "script failed, returning exit code ${argexitcode}"
# exit with specified exit code
exit ${argexitcode}
Beispiel für ausführlichen Fehler
Das folgende Beispiel zeigt, wie Sie Fehler in einem Haken mit detaillierteren Protokollierung behandeln können.
#!/bin/sh
# failure_sample_verbose.sh
#
# A simple failure hook script with args for testing purposes.
#
# args: [The number of lines to output to stdout]
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# main
#
# log something to stdout
info "running failure_sample_verbose.sh"
# output arg value to stdout
linecount=$1
info "line count ${linecount}"
# write out a line to stdout based on line count arg
i=1
while [ "$i" -le ${linecount} ]; do
info "This is line ${i} from failure_sample_verbose.sh"
i=$(( i + 1 ))
done
error "exiting with error code 8"
exit 8
Fehler bei einem Beispiel für den Exit-Code
Das folgende Beispiel zeigt, dass ein Haken mit einem Exit-Code ausfällt.
#!/bin/sh
# failure_sample_arg_exit_code.sh
#
# A simple failure hook script for testing purposes.
#
# args: [the exit code to return]
#
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# main
#
# log something to stdout
info "running failure_sample_arg_exit_code.sh"
argexitcode=$1
# log to stderr
error "script failed, returning exit code ${argexitcode}"
# exit with specified exit code
exit ${argexitcode}
Beispiel Erfolg nach Ausfall
Das folgende Beispiel zeigt, dass bei der ersten Ausführung ein Haken versagt, der jedoch nach dem zweiten Lauf erfolgreich ist.
#!/bin/sh
# failure_then_success_sample.sh
#
# A hook script that fails on initial run but succeeds on second run for testing purposes.
#
# Helpful for testing retry logic for post hooks.
#
# args: None
#
#
# Writes the given message to standard output
#
# $* - The message to write
#
msg() {
echo "$*"
}
#
# Writes the given information message to standard output
#
# $* - The message to write
#
info() {
msg "INFO: $*"
}
#
# Writes the given error message to standard error
#
# $* - The message to write
#
error() {
msg "ERROR: $*" 1>&2
}
#
# main
#
# log something to stdout
info "running failure_success sample.sh"
if [ -e /tmp/hook-test.junk ] ; then
info "File does exist. Removing /tmp/hook-test.junk"
rm /tmp/hook-test.junk
info "Second run so returning exit code 0"
exit 0
else
info "File does not exist. Creating /tmp/hook-test.junk"
echo "test" > /tmp/hook-test.junk
error "Failed first run, returning exit code 5"
exit 5
fi