wxrx/test/test_generate_website.sh

225 lines
7.9 KiB
Bash
Raw Permalink Normal View History

2022-02-09 16:15:26 -08:00
#!/usr/bin/env sh
## Runs automated tests
##
## Usage: __PROG__ [options]
##
prog="$0"
me=`basename "$prog"`
unit=$(realpath $(dirname "$0")/../generate_website.sh)
fixture_dir=$(realpath $(dirname "$0")/fixtures)
2022-02-09 16:15:26 -08:00
test_find_manifest_files() {
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
expectedF=${SHUNIT_TMPDIR}/expected
pushd ${fixture_dir}/test_generate_website >/dev/null
source ${unit}
find_manifest_files >${stdoutF} 2>${stderrF}
rtrn=$?
assertTrue "expected 0 return status" ${rtrn}
assertNotNull "expected output to stdout" "`cat ${stdoutF}`"
assertNull "unexpected output to stderr" "`cat ${stderrF}`"
cat << EOF >${expectedF}
bar-passes/noaa_15-1643805264-manifest.txt
foo-passes/noaa_15-1643805264-manifest.txt
noaa_15-1643805264-manifest.txt
EOF
assertNull "diff found in output" "`diff \"${expectedF}\" \"${stdoutF}\"`"
popd >/dev/null
}
# Using a fixture directory with a manifest, subdirs (also containing manifests)
# generate_website should mirror the directory structure and generate HTML for
# each manifest
test_generate_pages() {
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
2022-02-18 11:20:26 -08:00
expectedF=${SHUNIT_TMPDIR}/expected
WXRX_WEB_PUBDIR=${SHUNIT_TMPDIR}/test_generate_website/public
WXRX_WEB_TEMPLATES=${fixture_dir}/test_generate_website/templates
data_dir=${fixture_dir}/test_generate_website
source ${unit}
2022-02-09 16:15:26 -08:00
pushd ${data_dir} >/dev/null
generate_pages >${stdoutF} 2>${stderrF}
rtrn=$?
assertTrue "expected 0 return status" ${rtrn}
assertNull "unexpected output to stderr" "`cat ${stderrF}`"
assertTrue "expected html file" "[ -f ${WXRX_WEB_PUBDIR}/noaa_15-1643805264.html ]"
assertTrue "expected directory foo-passes" "[ -f ${WXRX_WEB_PUBDIR}/foo-passes/noaa_15-1643805264.html ]"
assertTrue "expected directory bar-passes" "[ -f ${WXRX_WEB_PUBDIR}/bar-passes/noaa_15-1643805264.html ]"
cat << EOF >${expectedF}
1643805264 bar-passes/noaa_15-1643805264.html bar-passes/noaa_15-1643805264-MCIR.png
1643805264 foo-passes/noaa_15-1643805264.html foo-passes/noaa_15-1643805264-MCIR.png
1643805264 noaa_15-1643805264.html noaa_15-1643805264-MCIR.png
EOF
assertNull 'found diff in expected output' "`diff ${stdoutF} ${expectedF}`"
diff "${expectedF}" "${stdoutF}"
cat "${stderrF}"
popd >/dev/null
}
2022-02-09 16:15:26 -08:00
2022-02-18 19:17:57 -08:00
test_generate_website() {
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
WXRX_WEB_TEMPLATES=${fixture_dir}/test_generate_website/templates
WXRX_WEB_PUBDIR=${SHUNIT_TMPDIR}/test_generate_website/public
mkdir -p "${WXRX_WEB_PUBDIR}"
source ${unit}
pushd ${fixture_dir}/test_generate_website >/dev/null
generate_website >${stdoutF} 2>${stderrF}
rtrn=$?
assertTrue "expected 0 return status" ${rtrn}
assertNull "unexpected stderr" "`cat ${stderrF}`"
assertTrue "expected index file" "[ -f ${WXRX_WEB_PUBDIR}/index.html ]"
assertTrue "expected pass html" "[ -f ${WXRX_WEB_PUBDIR}/noaa_15-1643805264.html ]"
assertTrue "expected pass image" "[ -f ${WXRX_WEB_PUBDIR}/noaa_15-1643805264-MCIR.png ]"
assertTrue "expected pass audio" "[ -f ${WXRX_WEB_PUBDIR}/noaa_15-1643805264.wav ]"
assertTrue "expected bar-passes directory" "[ -d ${WXRX_WEB_PUBDIR}/bar-passes ]"
assertTrue "expected html" "[ -f ${WXRX_WEB_PUBDIR}/bar-passes/noaa_15-1643805264.html ]"
assertTrue "expected image" "[ -f ${WXRX_WEB_PUBDIR}/bar-passes/noaa_15-1643805264-MCIR.png ]"
assertTrue "expected audio" "[ -f ${WXRX_WEB_PUBDIR}/bar-passes/noaa_15-1643805264.wav ]"
assertTrue "expected foo-passes directory" "[ -d ${WXRX_WEB_PUBDIR}/foo-passes ]"
assertTrue "expected html" "[ -f ${WXRX_WEB_PUBDIR}/foo-passes/noaa_15-1643805264.html ]"
assertTrue "expected image" "[ -f ${WXRX_WEB_PUBDIR}/foo-passes/noaa_15-1643805264-MCIR.png ]"
assertTrue "expected audio" "[ -f ${WXRX_WEB_PUBDIR}/foo-passes/noaa_15-1643805264.wav ]"
popd >/dev/null
}
test_publish_file() {
WXRX_WEB_PUBDIR=${SHUNIT_TMPDIR}/test_generate_website/publish_file
fileToMove="${fixture_dir}/test_generate_website/noaa_15-1643805264.wav"
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
source ${unit}
## Test publish to a subdir
publish_file "${fileToMove}" "foo/bar" >${stdoutF} 2>${stderrF}
rtrn=$?
assertTrue "expected 0 exit status" ${rtrn}
assertNull "unexpected error output" "`cat ${stderrF}`"
assertEquals "noaa_15-1643805264.wav" "`cat ${stdoutF}`"
assertTrue "expected file" "[ -f ${WXRX_WEB_PUBDIR}/foo/bar/noaa_15-1643805264.wav ]"
# Test publish to root
publish_file "${fileToMove}" >${stdoutF} 2>${stderrF}
rtrn=$?
assertTrue "expected 0 exit status" ${rtrn}
assertNull "unexpected error output" "`cat ${stderrF}`"
assertEquals "noaa_15-1643805264.wav" "`cat ${stdoutF}`"
assertTrue "expected file" "[ -f ${WXRX_WEB_PUBDIR}/noaa_15-1643805264.wav ]"
cat "${stderrF}"
}
2022-02-18 11:20:26 -08:00
test_render_index() {
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
expectedF=${SHUNIT_TMPDIR}/expected
WXRX_WEB_TEMPLATES=${fixture_dir}/test_generate_website/templates
source ${unit}
render_index "Expected Title" "Generated Timestamp" << EOF >${stdoutF} 2>${stderrF}
1643805264 bar-passes/noaa_15-1643805264.html bar-passes/noaa_15-1643805264-MCIR.png
1643805264 foo-passes/noaa_15-1643805264.html foo-passes/noaa_15-1643805264-MCIR.png
1643805264 noaa_15-1643805264.html noaa_15-1643805264-MCIR.png
EOF
rtrn=$?
assertTrue "expected 0 return status" ${rtrn}
assertNotNull "expected output" "`cat ${stdoutF}`"
assertNull "unexpected stderr" "`cat ${stderrF}`"
assertNotNull 'expected a title in output' "`grep -F 'Expected Title' ${stdoutF}`"
assertNotNull 'expected generated date in output' "`grep -F 'Generated Timestamp' ${stdoutF}`"
assertNotNull 'expected url' "`grep -F 'bar-passes/noaa_15-1643805264.html' ${stdoutF}`"
}
2022-02-18 19:17:57 -08:00
test_render_page() {
2022-02-18 18:30:10 -08:00
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
WXRX_WEB_TEMPLATES=${fixture_dir}/test_generate_website/templates
source ${unit}
2022-02-18 19:17:57 -08:00
render_page noaa_15-1643805264.wav noaa_15-1643805264-therm.png noaa_15-1643805264-MCIR.png >${stdoutF} 2>${stderrF}
2022-02-18 18:30:10 -08:00
rtrn=$?
assertTrue "expected 0 return status" ${rtrn}
2022-02-18 19:17:57 -08:00
assertNotNull "expected output to stdout" "`cat ${stdoutF}`"
assertNull 'unexpected message to stderr' "`cat ${stderrF}`"
cat $stderrF
2022-02-18 19:17:57 -08:00
assertNotNull 'expected wavfile in markup' "`grep 'noaa_15-1643805264.wav' ${stdoutF}`"
assertNotNull 'expected thermal image' "`grep 'noaa_15-1643805264-therm.png' ${stdoutF}`"
assertNotNull 'expected MCIR image' "`grep 'noaa_15-1643805264-MCIR.png' ${stdoutF}`"
assertNotNull 'expected title text' "`grep -F 'Wed Feb 02 07:34:24 EST 2022' ${stdoutF}`"
assertNotNull 'expected a description' "`grep -F 'NOAA-15 therm recorded' ${stdoutF}`"
}
test_render_pass_audio() {
WXRX_WEB_DIR=${SHUNIT_TMPDIR}
mkdir -p ${WXRX_WEB_DIR}/templates
mkdir -p ${WXRX_WEB_DIR}/public
echo << EOF > ${WXRX_WEB_DIR}/templates/pass-audio.template
<audio>
{{WAV_FILE}}
</audio>
EOF
}
2022-08-31 13:36:45 -07:00
test_render_schedule() {
stdinF=${SHUNIT_TMPDIR}/stdin
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
WXRX_WEB_DIR=${SHUNIT_TMPDIR}
mkdir -p ${WXRX_WEB_DIR}/templates
mkdir -p ${WXRX_WEB_DIR}/public
source "${unit}"
cat << EOF > ${WXRX_WEB_DIR}/templates/schedule-item.template
<tr>
<td>{{SATELLITE}}</td>
<td>{{DURATION}}</td>
<td>{{DATE}}</td>
</tr>
EOF
cat << EOF > "$stdinF"
2022-08-27 20:45:41 940 NOAA 19
2022-08-28 09:10:24 944 NOAA 19
2022-08-28 12:20:16 904 NOAA 18
EOF
cat "${stdinF}" | render_schedule > "${stdoutF}" 2> "${stderrF}"
rtrn=$?
assertTrue $rtrn
assertNull "unexpected error output" "$(cat $stderrF)"
assertEquals "<tr>
<td>NOAA 19</td>
<td>940</td>
<td>2022-08-27 20:45:41</td>
</tr>
<tr>
<td>NOAA 19</td>
<td>944</td>
<td>2022-08-28 09:10:24</td>
</tr>
<tr>
<td>NOAA 18</td>
<td>904</td>
<td>2022-08-28 12:20:16</td>
</tr>" "$(cat $stdoutF)"
}
2022-02-18 19:17:57 -08:00
test_timestamp_from_filename() {
source $unit
assertEquals "1644452667" "$(timestamp_from_filename foo-1644452667-bar.baz)"
2022-02-18 18:30:10 -08:00
}
2022-02-18 13:39:09 -08:00
2022-02-18 19:17:57 -08:00
2022-02-09 16:15:26 -08:00
. shunit2