Split test_cmd into test_cmd_progressive
Easier to disable when aom encoder is not available.
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index e0752d8..4511bd0 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -202,6 +202,9 @@
add_test(NAME test_cmd_metadata COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cmd_metadata.sh ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/data
)
+ add_test(NAME test_cmd_progressive COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cmd_progressive.sh ${CMAKE_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/data
+ )
add_test(NAME test_cmd_targetsize COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cmd_targetsize.sh ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/data
)
@@ -216,6 +219,9 @@
set_property(TEST test_cmd_metadata PROPERTY DISABLED True)
endif()
+ # Only aom encoder supports progressive encoding.
+ set_property(TEST test_cmd_progressive PROPERTY DISABLED True)
+
message(STATUS "Some tests are disabled because aom is unavailable for encoding.")
endif()
endif()
diff --git a/tests/test_cmd.sh b/tests/test_cmd.sh
index d3ec04a..1e5d70b 100755
--- a/tests/test_cmd.sh
+++ b/tests/test_cmd.sh
@@ -68,12 +68,6 @@
"${AVIFDEC}" "${ENCODED_FILE}" "${DECODED_FILE}"
"${ARE_IMAGES_EQUAL}" "${INPUT_Y4M}" "${DECODED_FILE}" 0 && exit 1
- # Progressive test.
- echo "Testing basic progressive"
- "${AVIFENC}" --progressive -s 8 "${INPUT_Y4M}" -o "${ENCODED_FILE}"
- "${AVIFDEC}" "${ENCODED_FILE}" "${DECODED_FILE}"
- "${AVIFDEC}" --progressive "${ENCODED_FILE}" "${DECODED_FILE}"
-
# Argument parsing test with filenames starting with a dash.
echo "Testing arguments"
"${AVIFENC}" -s 10 "${INPUT_Y4M}" -- "${ENCODED_FILE_WITH_DASH}"
diff --git a/tests/test_cmd_progressive.sh b/tests/test_cmd_progressive.sh
new file mode 100644
index 0000000..de09c42
--- /dev/null
+++ b/tests/test_cmd_progressive.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# Copyright 2023 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ------------------------------------------------------------------------------
+
+# Very verbose but useful for debugging.
+set -ex
+
+if [[ "$#" -ge 1 ]]; then
+ # eval so that the passed in directory can contain variables.
+ BINARY_DIR="$(eval echo "$1")"
+else
+ # Assume "tests" is the current directory.
+ BINARY_DIR="$(pwd)/.."
+fi
+if [[ "$#" -ge 2 ]]; then
+ TESTDATA_DIR="$(eval echo "$2")"
+else
+ TESTDATA_DIR="$(pwd)/data"
+fi
+if [[ "$#" -ge 3 ]]; then
+ TMP_DIR="$(eval echo "$3")"
+else
+ TMP_DIR="$(mktemp -d)"
+fi
+
+AVIFENC="${BINARY_DIR}/avifenc"
+AVIFDEC="${BINARY_DIR}/avifdec"
+
+# Basic calls.
+"${AVIFENC}" --version
+"${AVIFDEC}" --version
+
+# Input file paths.
+INPUT_Y4M="${TESTDATA_DIR}/kodim03_yuv420_8bpc.y4m"
+# Output file names.
+ENCODED_FILE="avif_test_cmd_encoded.avif"
+DECODED_FILE="avif_test_cmd_decoded.png"
+
+# Cleanup
+cleanup() {
+ pushd ${TMP_DIR}
+ rm -- "${ENCODED_FILE}" "${DECODED_FILE}"
+ popd
+}
+trap cleanup EXIT
+
+pushd ${TMP_DIR}
+ echo "Testing basic progressive"
+ "${AVIFENC}" --progressive -s 8 "${INPUT_Y4M}" -o "${ENCODED_FILE}"
+ "${AVIFDEC}" "${ENCODED_FILE}" "${DECODED_FILE}"
+ "${AVIFDEC}" --progressive "${ENCODED_FILE}" "${DECODED_FILE}"
+popd
+
+exit 0