unstructured/test_unstructured_ingest/check-num-files-expected-output.sh
Yao You 36c4441e2b
ci: parametrize ingest test checking scripts (#2062)
- parametrize the output folder paths and expected output folder paths
in comparison scripts
- now allow user to use env `OUTPUT_ROOT` to control where the output
and expected output is
- currently assumes output from test and expected output are in the same
directory; this may need separation later

## test
run
```bash
OUTPUT_ROOT=/tmp ./test_unstructured_ingest/test-ingest-src.sh
```
and it should show files changed but not able to show diff since there
is no expected output content at `OUTPUT_ROOT`.

Then run
```bash
cp -R test_unstructured_ingest/expected-* /tmp/
OUTPUT_ROOT=/tmp ./test_unstructured_ingest/test-ingest-src.sh
```
we can see (due to CI and local instance producing different results)
actual line by line diff
2023-11-13 18:42:19 +00:00

27 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Description: Validate that the number of files in the output directory is as expected.
#
# Arguments:
# - $1: The expected number of files in the output directory.
# - $2: Name of the output folder. This is used to determine the output directory and the expected output directory paths.
# - $3: The expected size of the output directory in bytes (e.g. "10k").
set +e
EXPECTED_NUM_FILES=$1
OUTPUT_FOLDER_NAME=$2
EXPECTED_SIZE=$3
SCRIPT_DIR=$(dirname "$(realpath "$0")")
OUTPUT_ROOT=${OUTPUT_ROOT:-$SCRIPT_DIR}
EXPECTED_OUTPUT_DIR=$OUTPUT_ROOT/expected-structured-output/$OUTPUT_FOLDER_NAME
NUM_FILES=$(find "$EXPECTED_OUTPUT_DIR" -type f -size +"$EXPECTED_SIZE" | wc -l)
# Note: single brackets and "-ne" operator were necessary for evaluation in CI
if [ "$NUM_FILES" -ne "$EXPECTED_NUM_FILES" ] && [ "$OVERWRITE_FIXTURES" != "true" ]; then
echo "The test fixtures in $EXPECTED_OUTPUT_DIR look suspicious."
echo "Expected $EXPECTED_NUM_FILES files, but found $NUM_FILES files found."
echo "Did you overwrite test fixtures with bad outputs?"
exit 1
fi