diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..e734409 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,29 @@ +name: CI +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + + workflow_dispatch: + +jobs: + Tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: build + uses: addnab/docker-run-action@v3 + with: + image: dannyben/bashly + options: --rm -v ${{ github.workspace }}:/app + run: bashly generate + - name: tests + uses: addnab/docker-run-action@v3 + with: + image: ghcr.io/dasharo/dasharo-sdk:v1.5.0 + options: --rm -v ${{ github.workspace }}:/dcu + run: | + cd dcu + test/approve-ci + \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index af8c29c..75ce182 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -45,3 +45,5 @@ repos: - id: shellcheck args: ["--severity=warning"] exclude: "^src/.*$" +files: | + ^test/approvals/ diff --git a/dcu b/dcu index 5873ee4..485232e 100755 --- a/dcu +++ b/dcu @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# This script was generated by bashly 1.1.10 (https://bashly.dannyb.co) +# This script was generated by bashly 1.2.1 (https://bashly.dannyb.co) # Modifying it manually is not recommended # :wrapper.bash3_bouncer @@ -17,15 +17,7 @@ version_command() { # :command.usage dcu_usage() { - if [[ -n $long_usage ]]; then - printf "dcu - Dasharo Configuration Utility\n" - echo - - else - printf "dcu - Dasharo Configuration Utility\n" - echo - - fi + printf "dcu - Dasharo Configuration Utility\n\n" printf "%s\n" "Usage:" printf " dcu COMMAND\n" @@ -65,16 +57,7 @@ dcu_usage() { # :command.usage dcu_mac_usage() { - if [[ -n $long_usage ]]; then - printf "dcu mac - Get/set MAC address in a firmware image\n" - echo - - else - printf "dcu mac - Get/set MAC address in a firmware image\n" - echo - - fi - + printf "dcu mac - Get/set MAC address in a firmware image\n\n" printf "Alias: m\n" echo @@ -117,16 +100,7 @@ dcu_mac_usage() { # :command.usage dcu_smbios_usage() { - if [[ -n $long_usage ]]; then - printf "dcu smbios - Edit SMBIOS data in a firmware image\n" - echo - - else - printf "dcu smbios - Edit SMBIOS data in a firmware image\n" - echo - - fi - + printf "dcu smbios - Edit SMBIOS data in a firmware image\n\n" printf "Alias: s\n" echo @@ -175,16 +149,7 @@ dcu_smbios_usage() { # :command.usage dcu_logo_usage() { - if [[ -n $long_usage ]]; then - printf "dcu logo - Insert custom logo boot splash into firmware image\n" - echo - - else - printf "dcu logo - Insert custom logo boot splash into firmware image\n" - echo - - fi - + printf "dcu logo - Insert custom logo boot splash into firmware image\n\n" printf "Alias: l\n" echo @@ -226,16 +191,7 @@ dcu_logo_usage() { # :command.usage dcu_variable_usage() { - if [[ -n $long_usage ]]; then - printf "dcu variable - Edit Dasharo configuration variables\n" - echo - - else - printf "dcu variable - Edit Dasharo configuration variables\n" - echo - - fi - + printf "dcu variable - Edit Dasharo configuration variables\n\n" printf "Alias: v\n" echo @@ -299,7 +255,7 @@ dcu_variable_usage() { # :command.normalize_input # :command.normalize_input_function normalize_input() { - local arg flags passthru + local arg passthru flags passthru=false while [[ $# -gt 0 ]]; do @@ -381,24 +337,25 @@ dcu_mac_command() { DASHARO_ROM="${args[dasharo_rom_file]}" MAC="${args[--set]}" GBE_FLASHREGION_FILENAME="flashregion_3_gbe.bin" - + GBE_FLASHREGION_PATH=$GBE_FLASHREGION_FILENAME set_mac() { local _mac="$1" - if "${NVMTOOL}" "$GBE_FLASHREGION_FILENAME" copy 0; then + if "${NVMTOOL}" "$GBE_FLASHREGION_PATH" copy 0; then echo "Copying region 0 to region 1" else echo "Failed to copy region 0 to region 1" - if "${NVMTOOL}" "$GBE_FLASHREGION_FILENAME" copy 1; then + if "${NVMTOOL}" "$GBE_FLASHREGION_PATH" copy 1; then echo "Copying region 1 to region 0" else echo "Failed to copy region 1 to region 0" echo "Both regions are invalid, aborting" + cleanup return 23 fi fi - "${NVMTOOL}" "$GBE_FLASHREGION_FILENAME" setmac "${_mac}" &> /dev/null || { echo "Failed to write MAC" ; return 22; } - "${IFDTOOL}" -i gbe:"$GBE_FLASHREGION_FILENAME" "${DASHARO_ROM}" &> /dev/null || { echo "Failed to insert gbe to the binary" ; return 21; } + "${NVMTOOL}" "$GBE_FLASHREGION_PATH" setmac "${_mac}" 1> /dev/null || { cleanup; return 22; } + "${IFDTOOL}" -i gbe:"$GBE_FLASHREGION_PATH" "${DASHARO_ROM}" 1> /dev/null || { cleanup; return 21; } echo "Moving ${DASHARO_ROM}.new to ${DASHARO_ROM}" mv "${DASHARO_ROM}.new" "${DASHARO_ROM}" -f echo "Success" @@ -406,14 +363,24 @@ dcu_mac_command() { get_mac() { # dump sections - "${NVMTOOL}" "$GBE_FLASHREGION_FILENAME" dump + dump=$("${NVMTOOL}" "$GBE_FLASHREGION_PATH" "dump" 2>&1 || true) + bad=$(printf "%s" "$dump" | grep "BAD checksum" 2>&1 || true) + dump=$(echo "$dump" | sed "/BAD checksum in part 0/d" | sed "/BAD checksum in part 1/d") + echo "$bad" + echo "$dump" echo "Success" } init() { - "${IFDTOOL}" -x "${DASHARO_ROM}" &> /dev/null || { echo "Failed to extract sections"; } - if [[ ! -f "$GBE_FLASHREGION_FILENAME" ]]; then + if [[ ! -f "${DASHARO_ROM}" ]]; then + echo "Error, file does not exist: ${DASHARO_ROM}" + cleanup + return 1 + fi + "${IFDTOOL}" -x "${DASHARO_ROM}" &> /dev/null + if [[ ! -f "$GBE_FLASHREGION_PATH" ]]; then echo "Managing the MAC address in this binary is currently not supported" + cleanup return 21 fi } @@ -421,7 +388,8 @@ dcu_mac_command() { cleanup() { rm -f flashregion* } - + DASHARO_ROM=$(realpath -- "$DASHARO_ROM") + GBE_FLASHREGION_PATH=$(realpath -- "$GBE_FLASHREGION_PATH") echo "Using ${DASHARO_ROM}" init @@ -538,7 +506,7 @@ dcu_logo_command() { LOGO_FILE="${args[--logo]}" if [ ! -f "${LOGO_FILE}" ]; then - echo "Logo file not found or invalid path." + echo "Logo file not found or invalid path: ${LOGO_FILE}" exit 12 fi @@ -554,7 +522,7 @@ dcu_logo_command() { fi echo "Setting ${LOGO_FILE} as custom logo" - convert -background None ${LOGO_FILE} BMP3:/tmp/logo.bmp + convert -background None ${LOGO_FILE} BMP3:/tmp/logo.bmp &> /dev/null # We do not care if this one fails. It can fail if serial_number is not # already, there, which is fine. "${CBFSTOOL}" "${DASHARO_ROM}" remove -n logo.bmp -r BOOTSPLASH > /dev/null 2> /dev/null || true @@ -634,7 +602,7 @@ dcu_variable_command() { { case `typeof $1` in enum_bool) - _result="$(${SMMSTORETOOL} ${DASHARO_ROM} get -g dasharo -n $1 -t bool)" + _result="$(${SMMSTORETOOL} "${DASHARO_ROM}" get -g dasharo -n $1 -t bool)" error_check "Variable store was not initialized yet. You need to set some variable first via --set option." 17 if [ "${_result}" = "false" ]; then echo "Disabled" @@ -646,7 +614,7 @@ dcu_variable_command() { fi ;; enum_memode) - _result="$(${SMMSTORETOOL} ${DASHARO_ROM} get -g dasharo -n $1 -t uint8)" + _result="$(${SMMSTORETOOL} "${DASHARO_ROM}" get -g dasharo -n $1 -t uint8)" error_check "Variable store was not initialized yet. You need to set some variable first via --set option." 17 if [ "${_result}" = "0" ]; then echo "Enabled" @@ -660,7 +628,7 @@ dcu_variable_command() { fi ;; enum_fancurve) - _result="$(${SMMSTORETOOL} ${DASHARO_ROM} get -g dasharo -n $1 -t uint8)" + _result="$(${SMMSTORETOOL} "${DASHARO_ROM}" get -g dasharo -n $1 -t uint8)" error_check "Variable store was not initialized yet. You need to set some variable first via --set option." 17 if [ "${_result}" = "0" ]; then echo "Silent" @@ -672,7 +640,7 @@ dcu_variable_command() { fi ;; uint8) - _result="$(${SMMSTORETOOL} ${DASHARO_ROM} get -g dasharo -n $1 -t uint8)" + _result="$(${SMMSTORETOOL} "${DASHARO_ROM}" get -g dasharo -n $1 -t uint8)" error_check "Variable store was not initialized yet. You need to set some variable first via --set option." 17 echo ${_result} ;; @@ -743,20 +711,23 @@ dcu_variable_command() { fi set_value=${i} set_type="uint8" + elif [[ $(typeof ${SET}) == "unknown" ]]; then + echo "Variable \"${SET}\" is not supported by the DCU tool yet". + exit 20 else # All other types: Pass the type and value directly. set_value=${VALUE} set_type=$(typeof ${SET}) fi - ${SMMSTORETOOL} ${DASHARO_ROM} set -g dasharo -n ${SET} -t ${set_type} -v ${set_value} + ${SMMSTORETOOL} "${DASHARO_ROM}" set -g dasharo -n ${SET} -t ${set_type} -v ${set_value} echo "Successfully set variable ${SET} in the variable store." } list_variables() { echo "Settings in ${DASHARO_ROM}:" - variables=$(${SMMSTORETOOL} ${DASHARO_ROM} list | grep "dasharo" | sed 's/.*://; s/(.*//') + variables=$(${SMMSTORETOOL} "${DASHARO_ROM}" list | grep "dasharo" | sed 's/.*://; s/(.*//') tabs 30 echo -e "NAME\tVALUE\tACCEPTED VALUES" for var in $variables; do @@ -1005,6 +976,7 @@ dcu_mac_parse_requirements() { # :command.required_args_filter if [[ -z ${args['dasharo_rom_file']+x} ]]; then printf "missing required argument: DASHARO_ROM_FILE\nusage: dcu mac DASHARO_ROM_FILE [OPTIONS]\n" >&2 + exit 1 fi @@ -1088,6 +1060,7 @@ dcu_smbios_parse_requirements() { # :command.required_args_filter if [[ -z ${args['dasharo_rom_file']+x} ]]; then printf "missing required argument: DASHARO_ROM_FILE\nusage: dcu smbios DASHARO_ROM_FILE [OPTIONS]\n" >&2 + exit 1 fi @@ -1157,6 +1130,7 @@ dcu_logo_parse_requirements() { # :command.required_args_filter if [[ -z ${args['dasharo_rom_file']+x} ]]; then printf "missing required argument: DASHARO_ROM_FILE\nusage: dcu logo DASHARO_ROM_FILE [OPTIONS]\n" >&2 + exit 1 fi @@ -1276,6 +1250,7 @@ dcu_variable_parse_requirements() { # :command.required_args_filter if [[ -z ${args['dasharo_rom_file']+x} ]]; then printf "missing required argument: DASHARO_ROM_FILE\nusage: dcu variable DASHARO_ROM_FILE [OPTIONS]\n" >&2 + exit 1 fi diff --git a/dcuc b/dcuc index 3ea1f50..e7b3fc8 100755 --- a/dcuc +++ b/dcuc @@ -2,6 +2,40 @@ # Dasharo Configuration Utility Container +SCRIPT_DIR=$(dirname "$(readlink -f ${BASH_SOURCE[0]})") + DOCKER_IMAGE="ghcr.io/dasharo/dasharo-sdk:v1.5.0" -docker run -t --rm -v "$(pwd):/app" -w /app $DOCKER_IMAGE ./dcu "$@" +# Initialize an array to store Docker arguments +DOCKER_ARGS=() + +# Initialize an array to store the command to be executed in the container +COMMAND_ARGS=() + +# Function to add a bind mount for a file +add_bind_mount() { + local FILE_PATH=$1 + local ABS_PATH="" + local DIR_PATH="" + ABS_PATH=$(realpath "$FILE_PATH") + DIR_PATH=$(dirname "$ABS_PATH") + DOCKER_ARGS+=("-v" "$DIR_PATH:$DIR_PATH") + echo "$ABS_PATH" +} + +# Iterate over the command line arguments +for ARG in "$@"; do + if [[ -f "$ARG" ]]; then + # Convert the file path to an absolute path and add a bind mount + ABS_PATH=$(add_bind_mount "$ARG") + COMMAND_ARGS+=("$ABS_PATH") + else + COMMAND_ARGS+=("$ARG") + fi +done + +if [[ -v CI ]]; then + ../dcu "${COMMAND_ARGS[@]}" +else + docker run -t --rm -v "${SCRIPT_DIR}:${SCRIPT_DIR}" "${DOCKER_ARGS[@]}" -w "${SCRIPT_DIR}" $DOCKER_IMAGE ./dcu "${COMMAND_ARGS[@]}" +fi \ No newline at end of file diff --git a/src/bashly.yml b/src/bashly.yml index 02f47dd..f32b505 100644 --- a/src/bashly.yml +++ b/src/bashly.yml @@ -21,7 +21,7 @@ commands: help: Set mac address examples: - dcu mac coreboot.rom --set AB:CD:EF:01:23:45 - - dcu mac coreboot.rom --get + - dcu mac coreboot.rom - name: smbios alias: s help: Edit SMBIOS data in a firmware image diff --git a/src/logo_command.sh b/src/logo_command.sh index b03eaa0..f316de1 100644 --- a/src/logo_command.sh +++ b/src/logo_command.sh @@ -8,7 +8,7 @@ DASHARO_ROM="${args[dasharo_rom_file]}" LOGO_FILE="${args[--logo]}" if [ ! -f "${LOGO_FILE}" ]; then - echo "Logo file not found or invalid path." + echo "Logo file not found or invalid path: ${LOGO_FILE}" exit 12 fi @@ -24,7 +24,7 @@ if ! "${CBFSTOOL}" "${DASHARO_ROM}" layout -w | grep -q "BOOTSPLASH"; then fi echo "Setting ${LOGO_FILE} as custom logo" -convert -background None ${LOGO_FILE} BMP3:/tmp/logo.bmp +convert -background None ${LOGO_FILE} BMP3:/tmp/logo.bmp &> /dev/null # We do not care if this one fails. It can fail if serial_number is not # already, there, which is fine. "${CBFSTOOL}" "${DASHARO_ROM}" remove -n logo.bmp -r BOOTSPLASH > /dev/null 2> /dev/null || true diff --git a/src/mac_command.sh b/src/mac_command.sh old mode 100644 new mode 100755 index ca822d6..d187ad4 --- a/src/mac_command.sh +++ b/src/mac_command.sh @@ -7,25 +7,25 @@ DASHARO_ROM="${args[dasharo_rom_file]}" MAC="${args[--set]}" GBE_FLASHREGION_FILENAME="flashregion_3_gbe.bin" - - +GBE_FLASHREGION_PATH=$GBE_FLASHREGION_FILENAME set_mac() { local _mac="$1" - if "${NVMTOOL}" "$GBE_FLASHREGION_FILENAME" copy 0; then + if "${NVMTOOL}" "$GBE_FLASHREGION_PATH" copy 0; then echo "Copying region 0 to region 1" else echo "Failed to copy region 0 to region 1" - if "${NVMTOOL}" "$GBE_FLASHREGION_FILENAME" copy 1; then + if "${NVMTOOL}" "$GBE_FLASHREGION_PATH" copy 1; then echo "Copying region 1 to region 0" else echo "Failed to copy region 1 to region 0" echo "Both regions are invalid, aborting" + cleanup return 23 fi fi - "${NVMTOOL}" "$GBE_FLASHREGION_FILENAME" setmac "${_mac}" &> /dev/null || { echo "Failed to write MAC" ; return 22; } - "${IFDTOOL}" -i gbe:"$GBE_FLASHREGION_FILENAME" "${DASHARO_ROM}" &> /dev/null || { echo "Failed to insert gbe to the binary" ; return 21; } + "${NVMTOOL}" "$GBE_FLASHREGION_PATH" setmac "${_mac}" 1> /dev/null || { cleanup; return 22; } + "${IFDTOOL}" -i gbe:"$GBE_FLASHREGION_PATH" "${DASHARO_ROM}" 1> /dev/null || { cleanup; return 21; } echo "Moving ${DASHARO_ROM}.new to ${DASHARO_ROM}" mv "${DASHARO_ROM}.new" "${DASHARO_ROM}" -f echo "Success" @@ -33,14 +33,24 @@ set_mac() { get_mac() { # dump sections - "${NVMTOOL}" "$GBE_FLASHREGION_FILENAME" dump + dump=$("${NVMTOOL}" "$GBE_FLASHREGION_PATH" "dump" 2>&1 || true) + bad=$(printf "%s" "$dump" | grep "BAD checksum" 2>&1 || true) + dump=$(echo "$dump" | sed "/BAD checksum in part 0/d" | sed "/BAD checksum in part 1/d") + echo "$bad" + echo "$dump" echo "Success" } init() { - "${IFDTOOL}" -x "${DASHARO_ROM}" &> /dev/null || { echo "Failed to extract sections"; } - if [[ ! -f "$GBE_FLASHREGION_FILENAME" ]]; then + if [[ ! -f "${DASHARO_ROM}" ]]; then + echo "Error, file does not exist: ${DASHARO_ROM}" + cleanup + return 1 + fi + "${IFDTOOL}" -x "${DASHARO_ROM}" &> /dev/null + if [[ ! -f "$GBE_FLASHREGION_PATH" ]]; then echo "Managing the MAC address in this binary is currently not supported" + cleanup return 21 fi } @@ -48,7 +58,8 @@ init() { cleanup() { rm -f flashregion* } - +DASHARO_ROM=$(realpath -- "$DASHARO_ROM") +GBE_FLASHREGION_PATH=$(realpath -- "$GBE_FLASHREGION_PATH") echo "Using ${DASHARO_ROM}" init diff --git a/src/variable_command.sh b/src/variable_command.sh index 56fb233..6e8b7f8 100644 --- a/src/variable_command.sh +++ b/src/variable_command.sh @@ -54,7 +54,7 @@ valueof() { case `typeof $1` in enum_bool) - _result="$(${SMMSTORETOOL} ${DASHARO_ROM} get -g dasharo -n $1 -t bool)" + _result="$(${SMMSTORETOOL} "${DASHARO_ROM}" get -g dasharo -n $1 -t bool)" error_check "Variable store was not initialized yet. You need to set some variable first via --set option." 17 if [ "${_result}" = "false" ]; then echo "Disabled" @@ -66,7 +66,7 @@ valueof() fi ;; enum_memode) - _result="$(${SMMSTORETOOL} ${DASHARO_ROM} get -g dasharo -n $1 -t uint8)" + _result="$(${SMMSTORETOOL} "${DASHARO_ROM}" get -g dasharo -n $1 -t uint8)" error_check "Variable store was not initialized yet. You need to set some variable first via --set option." 17 if [ "${_result}" = "0" ]; then echo "Enabled" @@ -80,7 +80,7 @@ valueof() fi ;; enum_fancurve) - _result="$(${SMMSTORETOOL} ${DASHARO_ROM} get -g dasharo -n $1 -t uint8)" + _result="$(${SMMSTORETOOL} "${DASHARO_ROM}" get -g dasharo -n $1 -t uint8)" error_check "Variable store was not initialized yet. You need to set some variable first via --set option." 17 if [ "${_result}" = "0" ]; then echo "Silent" @@ -92,7 +92,7 @@ valueof() fi ;; uint8) - _result="$(${SMMSTORETOOL} ${DASHARO_ROM} get -g dasharo -n $1 -t uint8)" + _result="$(${SMMSTORETOOL} "${DASHARO_ROM}" get -g dasharo -n $1 -t uint8)" error_check "Variable store was not initialized yet. You need to set some variable first via --set option." 17 echo ${_result} ;; @@ -163,20 +163,23 @@ set_variable() fi set_value=${i} set_type="uint8" + elif [[ $(typeof ${SET}) == "unknown" ]]; then + echo "Variable \"${SET}\" is not supported by the DCU tool yet". + exit 20 else # All other types: Pass the type and value directly. set_value=${VALUE} set_type=$(typeof ${SET}) fi - ${SMMSTORETOOL} ${DASHARO_ROM} set -g dasharo -n ${SET} -t ${set_type} -v ${set_value} + ${SMMSTORETOOL} "${DASHARO_ROM}" set -g dasharo -n ${SET} -t ${set_type} -v ${set_value} echo "Successfully set variable ${SET} in the variable store." } list_variables() { echo "Settings in ${DASHARO_ROM}:" - variables=$(${SMMSTORETOOL} ${DASHARO_ROM} list | grep "dasharo" | sed 's/.*://; s/(.*//') + variables=$(${SMMSTORETOOL} "${DASHARO_ROM}" list | grep "dasharo" | sed 's/.*://; s/(.*//') tabs 30 echo -e "NAME\tVALUE\tACCEPTED VALUES" for var in $variables; do diff --git a/test/approvals.bash b/test/approvals.bash index 011446f..2f19edd 100644 --- a/test/approvals.bash +++ b/test/approvals.bash @@ -1,7 +1,10 @@ -# approvals.bash v0.3.3 +# approvals.bash v0.5.1 # # Interactive approval testing for Bash. # https://github.com/DannyBen/approvals.bash +# +# shellcheck disable=SC2059 +# Disabling SC2059 (quoted format string) because we use dynamic format strings approve() { local expected approval approval_file actual cmd approvals_dir=${APPROVALS_DIR:=approvals} @@ -9,6 +12,10 @@ approve() { cmd=$1 last_exit_code=0 actual=$(eval "$cmd" 2>&1) || last_exit_code=$? + if [[ -v allow_diff_regex && "$allow_diff_regex" ]]; then + actual=$(echo "$actual" | sed -E "s/$allow_diff_regex/*/g") + unset allow_diff_regex + fi approval=$(printf "%b" "$cmd" | tr -s -c "[:alnum:]" _) approval_file="$approvals_dir/${2:-"$approval"}" @@ -17,41 +24,48 @@ approve() { if [[ -f "$approval_file" ]]; then expected=$(cat "$approval_file") else - echo "--- [$(blue "new: $cmd")] ---" + printf -- "$new_diff_string\n" "$cmd" printf "%b\n" "$actual" - echo "--- [$(blue "new: $cmd")] ---" + printf -- "$new_diff_string\n" "$cmd" expected="$actual" user_approval "$cmd" "$actual" "$approval_file" return fi - if [[ "$(printf "%b" "$actual")" = "$(printf "%b" "$expected")" ]]; then + $diff_cmd <(printf "%b" "$expected\n") <(printf "%b" "$actual\n") &> /dev/null && true + if [[ $? == 0 ]]; then pass "$cmd" else - echo "--- [$(blue "diff: $cmd")] ---" + printf -- "$changed_diff_string\n" "$cmd" $diff_cmd <(printf "%b" "$expected\n") <(printf "%b" "$actual\n") | tail -n +4 - echo "--- [$(blue "diff: $cmd")] ---" + printf -- "$changed_diff_string\n" "$cmd" user_approval "$cmd" "$actual" "$approval_file" fi } +allow_diff() { + allow_diff_regex="$1" +} + describe() { - echo - blue "= $*" + printf "$describe_string\n" "$*" } context() { - echo - magenta "= $*" + printf "$context_string\n" "$*" +} + +it() { + printf "$it_string\n" "$*" } fail() { - red " FAILED: $*" + printf "$fail_string\n" "$*" exit 1 } pass() { - green " approved: $*" + printf "$pass_string\n" "$*" return 0 } @@ -59,31 +73,61 @@ expect_exit_code() { if [[ $last_exit_code == "$1" ]]; then pass "exit $last_exit_code" else - fail "Expected exit code $1, got $last_exit_code" + fail "expected exit code $1, got $last_exit_code" fi } -red() { printf "\e[31m%b\e[0m\n" "$*"; } -green() { printf "\e[32m%b\e[0m\n" "$*"; } -blue() { printf "\e[34m%b\e[0m\n" "$*"; } -magenta() { printf "\e[35m%b\e[0m\n" "$*"; } -cyan() { printf "\e[36m%b\e[0m\n" "$*"; } - # Private +print_in_color() { + local color="$1" + shift + if [[ -z ${NO_COLOR+x} ]]; then + printf "$color%b\e[0m\n" "$*" + else + printf "%b\n" "$*" + fi +} + +red() { print_in_color "\e[31m" "$*"; } +green() { print_in_color "\e[32m" "$*"; } +yellow() { print_in_color "\e[33m" "$*"; } +blue() { print_in_color "\e[34m" "$*"; } +magenta() { print_in_color "\e[35m" "$*"; } +cyan() { print_in_color "\e[36m" "$*"; } +bold() { print_in_color "\e[1m" "$*"; } +underlined() { print_in_color "\e[4m" "$*"; } +red_bold() { print_in_color "\e[1;31m" "$*"; } +green_bold() { print_in_color "\e[1;32m" "$*"; } +yellow_bold() { print_in_color "\e[1;33m" "$*"; } +blue_bold() { print_in_color "\e[1;34m" "$*"; } +magenta_bold() { print_in_color "\e[1;35m" "$*"; } +cyan_bold() { print_in_color "\e[1;36m" "$*"; } +red_underlined() { print_in_color "\e[4;31m" "$*"; } +green_underlined() { print_in_color "\e[4;32m" "$*"; } +yellow_underlined() { print_in_color "\e[4;33m" "$*"; } +blue_underlined() { print_in_color "\e[4;34m" "$*"; } +magenta_underlined() { print_in_color "\e[4;35m" "$*"; } +cyan_underlined() { print_in_color "\e[4;36m" "$*"; } + user_approval() { local cmd="$1" local actual="$2" local approval_file="$3" - if [[ -v CI || -v GITHUB_ACTIONS ]]; then + if [[ -v CI || -v GITHUB_ACTIONS ]] && [[ -z "${AUTO_APPROVE+x}" ]]; then fail "$cmd" fi - echo - printf "[A]pprove? \n" - response=$(bash -c "read -n 1 key; echo \$key") - printf "\r" + if [[ -v AUTO_APPROVE ]]; then + response=a + else + echo + printf "$approval_string" + response=$(bash -c "read -n 1 key; echo \$key") + printf "\b%.s" $(seq 1 $((${#approval_string} + 1))) + fi + if [[ $response =~ [Aa] ]]; then printf "%b\n" "$actual" >"$approval_file" pass "$cmd" @@ -95,23 +139,35 @@ user_approval() { onexit() { exitcode=$? if [[ "$exitcode" == 0 ]]; then - green "\nFinished successfully" + printf "$exit_success_string\n" "$0" else - red "\nFinished with failures" + printf "$exit_failed_string\n" "$0" fi + echo exit $exitcode } onerror() { - fail "Caller: $(caller)" + fail "caller: $(caller)" } set -e trap 'onexit' EXIT trap 'onerror' ERR +describe_string="$(bold ▌ describe) %s" +context_string="$(bold ▌ context) %s" +it_string="$(bold ▌ it) %s" +fail_string=" $(red_bold failed) %s" +pass_string=" $(green approved) %s" +exit_success_string="$(green ▌ exit) $(bold %s finished successfully)" +exit_failed_string="$(red_bold ▌ exit) $(bold %s finished with errors)" +new_diff_string="────┤ $(yellow new): $(bold %s) ├────" +changed_diff_string="────┤ $(blue changed): $(bold %s) ├────" +approval_string="[A]pprove? " + if diff --help | grep -- --color >/dev/null 2>&1; then - diff_cmd="diff --unified --color=always" + diff_cmd="diff --unified --strip-trailing-cr -wB --color=always" else - diff_cmd="diff --unified" + diff_cmd="diff --unified --strip-trailing-cr -wB" fi diff --git a/test/approvals/_dcu_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_bootsplash_bmp b/test/approvals/_dcu_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_bootsplash_bmp deleted file mode 100644 index 9478d27..0000000 --- a/test/approvals/_dcu_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_bootsplash_bmp +++ /dev/null @@ -1,2 +0,0 @@ -Setting ./data/work/bootsplash.bmp as custom logo -Success diff --git a/test/approvals/_dcu_logo_data_work_protectli_vault_kbl_v1_0_14_rom_l_data_work_bootsplash_bmp b/test/approvals/_dcu_logo_data_work_protectli_vault_kbl_v1_0_14_rom_l_data_work_bootsplash_bmp deleted file mode 100644 index d7f4f48..0000000 --- a/test/approvals/_dcu_logo_data_work_protectli_vault_kbl_v1_0_14_rom_l_data_work_bootsplash_bmp +++ /dev/null @@ -1,2 +0,0 @@ -BOOTSPLASH region not found -Customizable logo not supported by the ./data/work/protectli_vault_kbl_v1.0.14.rom image diff --git a/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051 b/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051 deleted file mode 100644 index 9f17eb6..0000000 --- a/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051 +++ /dev/null @@ -1,4 +0,0 @@ -Will modify ./data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom - -Setting Serial Number to D07229051 -Success diff --git a/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_dead_beef b/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_dead_beef deleted file mode 100644 index 5917ce1..0000000 --- a/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_dead_beef +++ /dev/null @@ -1,3 +0,0 @@ -Will modify ./data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom - -Invalid UUID format diff --git a/test/approvals/_dcu_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode b/test/approvals/_dcu_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode deleted file mode 100644 index 10350ff..0000000 --- a/test/approvals/_dcu_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode +++ /dev/null @@ -1 +0,0 @@ -DisabledHAP diff --git a/test/approvals/_dcu_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode b/test/approvals/_dcu_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode deleted file mode 100644 index e9365de..0000000 --- a/test/approvals/_dcu_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode +++ /dev/null @@ -1 +0,0 @@ -DisabledSoft diff --git a/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection b/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection deleted file mode 100644 index 0612890..0000000 --- a/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection +++ /dev/null @@ -1,4 +0,0 @@ -No firmware volume header present -No valid firmware volume was found -Failed to find variable store in "./data/work/novacustom_nv4x_adl_v1.6.0.rom" -Variable store was not initialized yet. You need set some variable first via --set option. (error code: 1) diff --git a/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_EnabledInvalid b/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_EnabledInvalid deleted file mode 100644 index 8358ce4..0000000 --- a/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_EnabledInvalid +++ /dev/null @@ -1 +0,0 @@ -Value EnabledInvalid is out of range (expected one of: Disabled / Enabled) diff --git a/test/approvals/_dcu_help b/test/approvals/_dcuc_help similarity index 84% rename from test/approvals/_dcu_help rename to test/approvals/_dcuc_help index ca75f28..1df10a4 100644 --- a/test/approvals/_dcu_help +++ b/test/approvals/_dcuc_help @@ -6,6 +6,7 @@ Usage: dcu --version | -v Commands: + mac Get/set MAC address in a firmware image smbios Edit SMBIOS data in a firmware image logo Insert custom logo boot splash into firmware image variable Edit Dasharo configuration variables @@ -18,6 +19,7 @@ Options: Show version number Examples: + dcu setmac coreboot.rom 12:34:45:56:78:9A dcu smbios coreboot.rom -u 96bcfa1a-42b4-6717-a44c-d8bbc18cbea4 -s D07229051 dcu logo coreboot.rom -l bootsplash.bmp dcu variable coreboot.rom --get EnableWifiBt diff --git a/test/approvals/_dcuc_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_bootsplash_bmp b/test/approvals/_dcuc_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_bootsplash_bmp new file mode 100644 index 0000000..825cf19 --- /dev/null +++ b/test/approvals/_dcuc_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_bootsplash_bmp @@ -0,0 +1,2 @@ +Setting */data/work/bootsplash.bmp as custom logo +Success diff --git a/test/approvals/_dcu_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_dummy_pdf b/test/approvals/_dcuc_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_dummy_pdf similarity index 100% rename from test/approvals/_dcu_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_dummy_pdf rename to test/approvals/_dcuc_logo_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_l_data_work_dummy_pdf diff --git a/test/approvals/_dcuc_logo_data_work_protectli_vault_kbl_v1_0_14_rom_l_data_work_bootsplash_bmp b/test/approvals/_dcuc_logo_data_work_protectli_vault_kbl_v1_0_14_rom_l_data_work_bootsplash_bmp new file mode 100644 index 0000000..8fe1ae1 --- /dev/null +++ b/test/approvals/_dcuc_logo_data_work_protectli_vault_kbl_v1_0_14_rom_l_data_work_bootsplash_bmp @@ -0,0 +1,2 @@ +BOOTSPLASH region not found +Customizable logo not supported by the */data/work/protectli_vault_kbl_v1.0.14.rom image diff --git a/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom new file mode 100644 index 0000000..b6c1e9d --- /dev/null +++ b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom @@ -0,0 +1,23 @@ +Using */data/work/novacustom_v540tu_mtl_v0.9.0_gbe.rom + +Part 0: +MAC: 12:34:56:78:9a:bc +0000000 3412 7856 bc9a 0801 ffff 1014 0001 0084 +0000010 ffff ffff 10c3 0000 8086 550a 0000 0000 +0000020 0000 0000 8000 a705 3030 1600 0000 0c00 +0000030 18f4 0a02 0843 0113 550a baad 550a 550b +0000040 baad 550a baad 550a 0000 8000 4e00 0886 +0000050 0000 0000 0007 a000 0020 0000 0e00 0000 +0000060 0100 4000 1228 4007 ffff ffff ffff ffff +0000070 ffff ffff ffff ffff ffff 0200 ffff ba41 +Part 1: +MAC: 12:34:56:78:9a:bc +0000000 3412 7856 bc9a 0801 ffff 1014 0001 0084 +0000010 ffff ffff 10c3 0000 8086 550a 0000 0000 +0000020 0000 0000 8000 a705 3030 1600 0000 0c00 +0000030 18f4 0a02 0843 0113 550a baad 550a 550b +0000040 baad 550a baad 550a 0000 8000 4e00 0886 +0000050 0000 0000 0007 a000 0020 0000 0e00 0000 +0000060 0100 4000 1228 4007 ffff ffff ffff ffff +0000070 ffff ffff ffff ffff ffff 0200 ffff ba41 +Success diff --git a/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom_set_00_00_00_00_00_00 b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom_set_00_00_00_00_00_00 new file mode 100644 index 0000000..768e61e --- /dev/null +++ b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom_set_00_00_00_00_00_00 @@ -0,0 +1,4 @@ +Using */data/work/novacustom_v540tu_mtl_v0.9.0_gbe.rom +Copying region 0 to region 1 +Bad MAC address +Operation canceled diff --git a/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom_set_12_34_56_78_9A_BC b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom_set_12_34_56_78_9A_BC new file mode 100644 index 0000000..57830e6 --- /dev/null +++ b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_gbe_rom_set_12_34_56_78_9A_BC @@ -0,0 +1,5 @@ +Using */data/work/novacustom_v540tu_mtl_v0.9.0_gbe.rom +Copying region 0 to region 1 +Warning: No platform specified. Output may be incomplete +Moving */data/work/novacustom_v540tu_mtl_v0.9.0_gbe.rom.new to */data/work/novacustom_v540tu_mtl_v0.9.0_gbe.rom +Success diff --git a/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_rom b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_rom new file mode 100644 index 0000000..b1d7a73 --- /dev/null +++ b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_rom @@ -0,0 +1,24 @@ +Using */data/work/novacustom_v540tu_mtl_v0.9.0.rom +BAD checksum in part 0 +BAD checksum in part 1 +Part 0: +MAC: ff:ff:ff:ff:ff:ff +0000000 ffff ffff ffff ffff ffff ffff ffff ffff +0000010 ffff ffff ffff ffff ffff ffff ffff ffff +0000020 ffff ffff ffff ffff ffff ffff ffff ffff +0000030 ffff ffff ffff ffff ffff ffff ffff ffff +0000040 ffff ffff ffff ffff ffff ffff ffff ffff +0000050 ffff ffff ffff ffff ffff ffff ffff ffff +0000060 ffff ffff ffff ffff ffff ffff ffff ffff +0000070 ffff ffff ffff ffff ffff ffff ffff ffff +Part 1: +MAC: ff:ff:ff:ff:ff:ff +0000000 ffff ffff ffff ffff ffff ffff ffff ffff +0000010 ffff ffff ffff ffff ffff ffff ffff ffff +0000020 ffff ffff ffff ffff ffff ffff ffff ffff +0000030 ffff ffff ffff ffff ffff ffff ffff ffff +0000040 ffff ffff ffff ffff ffff ffff ffff ffff +0000050 ffff ffff ffff ffff ffff ffff ffff ffff +0000060 ffff ffff ffff ffff ffff ffff ffff ffff +0000070 ffff ffff ffff ffff ffff ffff ffff ffff +Success diff --git a/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_rom_set_12_34_56_78_9A_BC b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_rom_set_12_34_56_78_9A_BC new file mode 100644 index 0000000..b4c7afc --- /dev/null +++ b/test/approvals/_dcuc_mac_data_work_novacustom_v540tu_mtl_v0_9_0_rom_set_12_34_56_78_9A_BC @@ -0,0 +1,8 @@ +Using */data/work/novacustom_v540tu_mtl_v0.9.0.rom +BAD checksum in part 0 +Operation canceled +Failed to copy region 0 to region 1 +BAD checksum in part 1 +Operation canceled +Failed to copy region 1 to region 0 +Both regions are invalid, aborting diff --git a/test/approvals/_dcuc_mac_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom b/test/approvals/_dcuc_mac_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom new file mode 100644 index 0000000..fe28ddd --- /dev/null +++ b/test/approvals/_dcuc_mac_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom @@ -0,0 +1,2 @@ +Using */data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom +Managing the MAC address in this binary is currently not supported diff --git a/test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051 b/test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051 similarity index 53% rename from test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051 rename to test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051 index 1dc4206..d619be8 100644 --- a/test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051 +++ b/test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051 @@ -1,3 +1,3 @@ -Will modify ./data/work/novacustom_nv4x_adl_v1.6.0.rom +Will modify */data/work/novacustom_nv4x_adl_v1.6.0.rom Configurable Serial Number not supported by the coreboot image diff --git a/test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 b/test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 similarity index 50% rename from test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 rename to test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 index 0987ee8..91cf336 100644 --- a/test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 +++ b/test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 @@ -1,3 +1,3 @@ -Will modify ./data/work/novacustom_nv4x_adl_v1.6.0.rom +Will modify */data/work/novacustom_nv4x_adl_v1.6.0.rom Configurable UUID not supported by the coreboot image diff --git a/test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 b/test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 similarity index 50% rename from test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 rename to test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 index 0987ee8..91cf336 100644 --- a/test/approvals/_dcu_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 +++ b/test/approvals/_dcuc_smbios_data_work_novacustom_nv4x_adl_v1_6_0_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 @@ -1,3 +1,3 @@ -Will modify ./data/work/novacustom_nv4x_adl_v1.6.0.rom +Will modify */data/work/novacustom_nv4x_adl_v1.6.0.rom Configurable UUID not supported by the coreboot image diff --git a/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051 b/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051 new file mode 100644 index 0000000..b1cd500 --- /dev/null +++ b/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051 @@ -0,0 +1,4 @@ +Will modify */data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom + +Setting Serial Number to D07229051 +Success diff --git a/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 b/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 similarity index 64% rename from test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 rename to test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 index 41c7113..52d0602 100644 --- a/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 +++ b/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_s_D07229051_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 @@ -1,4 +1,4 @@ -Will modify ./data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom +Will modify */data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom Setting System UUID to 96bcfa1a-42b4-6717-a44c-d8bbc18cbea4 Success diff --git a/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 b/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 similarity index 52% rename from test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 rename to test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 index bb19227..92b7d36 100644 --- a/test/approvals/_dcu_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 +++ b/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_96bcfa1a_42b4_6717_a44c_d8bbc18cbea4 @@ -1,4 +1,4 @@ -Will modify ./data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom +Will modify */data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom Setting System UUID to 96bcfa1a-42b4-6717-a44c-d8bbc18cbea4 Success diff --git a/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_dead_beef b/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_dead_beef new file mode 100644 index 0000000..b23a77c --- /dev/null +++ b/test/approvals/_dcuc_smbios_data_work_protectli_vault_cml_v1_2_0_rc1_vp46xx_rom_u_dead_beef @@ -0,0 +1,3 @@ +Will modify */data/work/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom + +Invalid UUID format diff --git a/test/approvals/_dcu_variable_data_work_FanCurvePerformance_novacustom_nv4x_adl_v1_6_0_rom_get_FanCurveOption b/test/approvals/_dcuc_variable_data_work_FanCurvePerformance_novacustom_nv4x_adl_v1_6_0_rom_get_FanCurveOption similarity index 100% rename from test/approvals/_dcu_variable_data_work_FanCurvePerformance_novacustom_nv4x_adl_v1_6_0_rom_get_FanCurveOption rename to test/approvals/_dcuc_variable_data_work_FanCurvePerformance_novacustom_nv4x_adl_v1_6_0_rom_get_FanCurveOption diff --git a/test/approvals/_dcu_variable_data_work_FanCurvePerformance_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_Performance b/test/approvals/_dcuc_variable_data_work_FanCurvePerformance_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_Performance similarity index 100% rename from test/approvals/_dcu_variable_data_work_FanCurvePerformance_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_Performance rename to test/approvals/_dcuc_variable_data_work_FanCurvePerformance_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_Performance diff --git a/test/approvals/_dcu_variable_data_work_FanCurvePerormance_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_InvalidMode b/test/approvals/_dcuc_variable_data_work_FanCurvePerormance_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_InvalidMode similarity index 100% rename from test/approvals/_dcu_variable_data_work_FanCurvePerormance_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_InvalidMode rename to test/approvals/_dcuc_variable_data_work_FanCurvePerormance_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_InvalidMode diff --git a/test/approvals/_dcu_variable_data_work_FanCurveSilent_novacustom_nv4x_adl_v1_6_0_rom_get_FanCurveOption b/test/approvals/_dcuc_variable_data_work_FanCurveSilent_novacustom_nv4x_adl_v1_6_0_rom_get_FanCurveOption similarity index 100% rename from test/approvals/_dcu_variable_data_work_FanCurveSilent_novacustom_nv4x_adl_v1_6_0_rom_get_FanCurveOption rename to test/approvals/_dcuc_variable_data_work_FanCurveSilent_novacustom_nv4x_adl_v1_6_0_rom_get_FanCurveOption diff --git a/test/approvals/_dcu_variable_data_work_FanCurveSilent_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_Silent b/test/approvals/_dcuc_variable_data_work_FanCurveSilent_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_Silent similarity index 100% rename from test/approvals/_dcu_variable_data_work_FanCurveSilent_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_Silent rename to test/approvals/_dcuc_variable_data_work_FanCurveSilent_novacustom_nv4x_adl_v1_6_0_rom_set_FanCurveOption_value_Silent diff --git a/test/approvals/_dcuc_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode b/test/approvals/_dcuc_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode new file mode 100644 index 0000000..9179ca9 --- /dev/null +++ b/test/approvals/_dcuc_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode @@ -0,0 +1 @@ +Disabled (HAP) diff --git a/test/approvals/_dcu_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_DisabledHAP b/test/approvals/_dcuc_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_Disabled_HAP_ similarity index 100% rename from test/approvals/_dcu_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_DisabledHAP rename to test/approvals/_dcuc_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_Disabled_HAP_ diff --git a/test/approvals/_dcu_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_InvalidMode b/test/approvals/_dcuc_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_InvalidMode similarity index 66% rename from test/approvals/_dcu_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_InvalidMode rename to test/approvals/_dcuc_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_InvalidMode index ff1797a..d55efc0 100644 --- a/test/approvals/_dcu_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_InvalidMode +++ b/test/approvals/_dcuc_variable_data_work_MeModeDisabledHAP_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_InvalidMode @@ -1 +1 @@ -Value InvalidMode is out of range (expected one of: Enabled / DisabledSoft / DisabledHAP) +Value InvalidMode is out of range (expected one of: Enabled / Disabled (Soft) / Disabled (HAP)) diff --git a/test/approvals/_dcuc_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode b/test/approvals/_dcuc_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode new file mode 100644 index 0000000..b3268a2 --- /dev/null +++ b/test/approvals/_dcuc_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode @@ -0,0 +1 @@ +Disabled (Soft) diff --git a/test/approvals/_dcu_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_DisabledSoft b/test/approvals/_dcuc_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_Disabled_Soft_ similarity index 100% rename from test/approvals/_dcu_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_DisabledSoft rename to test/approvals/_dcuc_variable_data_work_MeModeDisabledSoft_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_Disabled_Soft_ diff --git a/test/approvals/_dcu_variable_data_work_MeModeEnabled_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode b/test/approvals/_dcuc_variable_data_work_MeModeEnabled_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode similarity index 100% rename from test/approvals/_dcu_variable_data_work_MeModeEnabled_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode rename to test/approvals/_dcuc_variable_data_work_MeModeEnabled_novacustom_nv4x_adl_v1_6_0_rom_get_MeMode diff --git a/test/approvals/_dcu_variable_data_work_MeModeEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_Enabled b/test/approvals/_dcuc_variable_data_work_MeModeEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_Enabled similarity index 100% rename from test/approvals/_dcu_variable_data_work_MeModeEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_Enabled rename to test/approvals/_dcuc_variable_data_work_MeModeEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_MeMode_value_Enabled diff --git a/test/approvals/_dcu_variable_data_work_SerialRedirectionDisabled_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection b/test/approvals/_dcuc_variable_data_work_SerialRedirectionDisabled_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection similarity index 100% rename from test/approvals/_dcu_variable_data_work_SerialRedirectionDisabled_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection rename to test/approvals/_dcuc_variable_data_work_SerialRedirectionDisabled_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection diff --git a/test/approvals/_dcu_variable_data_work_SerialRedirectionDisabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Disabled b/test/approvals/_dcuc_variable_data_work_SerialRedirectionDisabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Disabled similarity index 100% rename from test/approvals/_dcu_variable_data_work_SerialRedirectionDisabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Disabled rename to test/approvals/_dcuc_variable_data_work_SerialRedirectionDisabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Disabled diff --git a/test/approvals/_dcu_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection b/test/approvals/_dcuc_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection similarity index 100% rename from test/approvals/_dcu_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection rename to test/approvals/_dcuc_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection diff --git a/test/approvals/_dcu_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled b/test/approvals/_dcuc_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled similarity index 100% rename from test/approvals/_dcu_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled rename to test/approvals/_dcuc_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled diff --git a/test/approvals/_dcu_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_EnabledInvalid b/test/approvals/_dcuc_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_EnabledInvalid similarity index 100% rename from test/approvals/_dcu_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_EnabledInvalid rename to test/approvals/_dcuc_variable_data_work_SerialRedirectionEnabled_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_EnabledInvalid diff --git a/test/approvals/_dcuc_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection b/test/approvals/_dcuc_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection new file mode 100644 index 0000000..046350a --- /dev/null +++ b/test/approvals/_dcuc_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_get_SerialRedirection @@ -0,0 +1,4 @@ +No firmware volume header present +No valid firmware volume was found +Failed to find variable store in "*/data/work/novacustom_nv4x_adl_v1.6.0.rom" +Variable store was not initialized yet. You need to set some variable first via --set option. (error code: 1) diff --git a/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirectionInvalid_value_Enabled b/test/approvals/_dcuc_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirectionInvalid_value_Enabled similarity index 100% rename from test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirectionInvalid_value_Enabled rename to test/approvals/_dcuc_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirectionInvalid_value_Enabled diff --git a/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled b/test/approvals/_dcuc_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled similarity index 85% rename from test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled rename to test/approvals/_dcuc_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled index 891bdb7..9fedbc0 100644 --- a/test/approvals/_dcu_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled +++ b/test/approvals/_dcuc_variable_data_work_novacustom_nv4x_adl_v1_6_0_rom_set_SerialRedirection_value_Enabled @@ -6,5 +6,5 @@ and is about to be initialized. This situation is normal for a release image, as the variable store is usually initialized on the first boot of the platform. -Successfully created variable store in "./data/work/novacustom_nv4x_adl_v1.6.0.rom" +Successfully created variable store in "*/data/work/novacustom_nv4x_adl_v1.6.0.rom" Successfully set variable SerialRedirection in the variable store. diff --git a/test/approve b/test/approve index e512439..5613aec 100755 --- a/test/approve +++ b/test/approve @@ -5,52 +5,67 @@ cd ./test || exit source approvals.bash source test-data.sh -# Update me -cli=../dcu +cli=../dcuc echo "Setting up test data..." -download_test_data +if [[ ! -v CI ]]; then + download_test_data +fi + refresh_test_data +export ESCAPED_PWD="${PWD//\//\\/}" + describe "help message" approve "$cli --help" describe "Try to replace logo in binary supporting that" + allow_diff $ESCAPED_PWD approve "$cli logo ${DATA_WORK_DIR}/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom -l ${DATA_WORK_DIR}/bootsplash.bmp" describe "Try to replace logo in binary NOT supporting that" + allow_diff $ESCAPED_PWD approve "$cli logo ${DATA_WORK_DIR}/protectli_vault_kbl_v1.0.14.rom -l ${DATA_WORK_DIR}/bootsplash.bmp" describe "Try to replace serial in binary supporting that" + allow_diff $ESCAPED_PWD approve "$cli smbios ${DATA_WORK_DIR}/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom -s D07229051" describe "Try to replace serial in binary NOT supporting that" + allow_diff $ESCAPED_PWD approve "$cli smbios ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom -s D07229051" describe "Try to replace UUID in binary supporting that" + allow_diff $ESCAPED_PWD approve "$cli smbios ${DATA_WORK_DIR}/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom -u 96bcfa1a-42b4-6717-a44c-d8bbc18cbea4" describe "Try to replace UUID in binary NOT supporting that" + allow_diff $ESCAPED_PWD approve "$cli smbios ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom -u 96bcfa1a-42b4-6717-a44c-d8bbc18cbea4" describe "Try to replace both serial and UUID in binary supporting that" + allow_diff $ESCAPED_PWD approve "$cli smbios ${DATA_WORK_DIR}/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom -s D07229051 -u 96bcfa1a-42b4-6717-a44c-d8bbc18cbea4" describe "Try to replace both serial and UUID in binary NOT supporting that" + allow_diff $ESCAPED_PWD approve "$cli smbios ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom -s D07229051 -u 96bcfa1a-42b4-6717-a44c-d8bbc18cbea4" describe "Try to replace logo using unsupported format (PDF)" approve "$cli logo ${DATA_WORK_DIR}/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom -l ${DATA_WORK_DIR}/dummy.pdf" describe "Try to replace UUID using incorrect format" + allow_diff $ESCAPED_PWD approve "$cli smbios ${DATA_WORK_DIR}/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom -u dead-beef" refresh_test_data describe "Get variable from uninitialized store" + allow_diff $ESCAPED_PWD approve "$cli variable ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom --get SerialRedirection" describe "Initialize variable store in a release binary" + allow_diff $ESCAPED_PWD approve "$cli variable ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom --set SerialRedirection --value Enabled" cp ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom ${DATA_WORK_DIR}/SerialRedirectionDisabled_novacustom_nv4x_adl_v1.6.0.rom @@ -78,17 +93,17 @@ describe "Get MeMode (expecting Enabled)" approve "$cli variable ${DATA_WORK_DIR}/MeModeEnabled_novacustom_nv4x_adl_v1.6.0.rom --get MeMode" cp ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom ${DATA_WORK_DIR}/MeModeDisabledSoft_novacustom_nv4x_adl_v1.6.0.rom -describe "Set MeMode to DisabledSoft" - approve "$cli variable ${DATA_WORK_DIR}/MeModeDisabledSoft_novacustom_nv4x_adl_v1.6.0.rom --set MeMode --value DisabledSoft" +describe "Set MeMode to Disabled (Soft)" +approve "$cli variable ${DATA_WORK_DIR}/MeModeDisabledSoft_novacustom_nv4x_adl_v1.6.0.rom --set MeMode --value \"Disabled (Soft)\"" -describe "Get MeMode (expecting DisabledSoft)" +describe "Get MeMode (expecting Disabled (Soft))" approve "$cli variable ${DATA_WORK_DIR}/MeModeDisabledSoft_novacustom_nv4x_adl_v1.6.0.rom --get MeMode" cp ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom ${DATA_WORK_DIR}/MeModeDisabledHAP_novacustom_nv4x_adl_v1.6.0.rom -describe "Set MeMode to DisabledHAP" - approve "$cli variable ${DATA_WORK_DIR}/MeModeDisabledHAP_novacustom_nv4x_adl_v1.6.0.rom --set MeMode --value DisabledHAP" +describe "Set MeMode to Disabled (HAP)" +approve "$cli variable ${DATA_WORK_DIR}/MeModeDisabledHAP_novacustom_nv4x_adl_v1.6.0.rom --set MeMode --value \"Disabled (HAP)\"" -describe "Get MeMode (expecting DisabledHAP)" +describe "Get MeMode (expecting Disabled (HAP))" approve "$cli variable ${DATA_WORK_DIR}/MeModeDisabledHAP_novacustom_nv4x_adl_v1.6.0.rom --get MeMode" describe "Set MeMode to InvalidMode" @@ -113,3 +128,27 @@ describe "Set FanCurveMode to InvalidMode" describe "Set unsupported variable" approve "$cli variable ${DATA_WORK_DIR}/novacustom_nv4x_adl_v1.6.0.rom --set SerialRedirectionInvalid --value Enabled" + +describe "Set valid MAC" + allow_diff $ESCAPED_PWD + approve "$cli mac ${DATA_WORK_DIR}/novacustom_v540tu_mtl_v0.9.0_gbe.rom --set 12:34:56:78:9A:BC" + +describe "Set invalid MAC" + allow_diff $ESCAPED_PWD + approve "$cli mac ${DATA_WORK_DIR}/novacustom_v540tu_mtl_v0.9.0_gbe.rom --set 00:00:00:00:00:00" + +describe "Get MAC (should be set by 'Set valid MAC' and not set by 'Set invalid MAC')" + allow_diff $ESCAPED_PWD + approve "$cli mac ${DATA_WORK_DIR}/novacustom_v540tu_mtl_v0.9.0_gbe.rom" + +describe "Get MAC Bad checksums" + allow_diff $ESCAPED_PWD + approve "$cli mac ${DATA_WORK_DIR}/novacustom_v540tu_mtl_v0.9.0.rom" + +describe "Set MAC Bad checksums" + allow_diff $ESCAPED_PWD + approve "$cli mac ${DATA_WORK_DIR}/novacustom_v540tu_mtl_v0.9.0.rom --set 12:34:56:78:9A:BC" + +describe "MAC Unsupported binary" + allow_diff $ESCAPED_PWD + approve "$cli mac ${DATA_WORK_DIR}/protectli_vault_cml_v1.2.0-rc1_vp46xx.rom" diff --git a/test/approve-ci b/test/approve-ci new file mode 100755 index 0000000..95a4de6 --- /dev/null +++ b/test/approve-ci @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +# Run this from the root directory +./test/config-ci +CI=1 ./test/approve \ No newline at end of file diff --git a/test/config-ci b/test/config-ci new file mode 100755 index 0000000..728d44f --- /dev/null +++ b/test/config-ci @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# Run this from the root directory + +cd ./test || exit +source test-data.sh + +download_test_data diff --git a/test/test-data.sh b/test/test-data.sh index 4753ea0..1481732 100644 --- a/test/test-data.sh +++ b/test/test-data.sh @@ -6,8 +6,8 @@ export DATA_WORK_DIR="./data/work" dl_test_file() { local _file="$1" local _url="$2" - - mkdir -p ./data + echo download $_file + mkdir -p ./data/dl if [ ! -f "${DATA_DL_DIR}/${_file}" ]; then wget -O "${DATA_DL_DIR}/${_file}" "${_url}" @@ -33,6 +33,12 @@ download_test_data() { # PDF (unsupported bootsplash format) dl_test_file dummy.pdf https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf + + # Supported commands: + # - mac + dl_test_file novacustom_v540tu_mtl_v0.9.0.rom http://dl.3mdeb.com/open-source-firmware/Dasharo/novacustom_v54x_mtl/v0.9.0/novacustom_v54x_mtl_v0.9.0.rom + dl_test_file gbe.bin https://raw.githubusercontent.com/Dasharo/dasharo-blobs/main/novacustom/v5x0tu/gbe.bin + ifdtool -i gbe:${DATA_DL_DIR}/gbe.bin ${DATA_DL_DIR}/novacustom_v540tu_mtl_v0.9.0.rom -O ${DATA_DL_DIR}/novacustom_v540tu_mtl_v0.9.0_gbe.rom &> /dev/null } refresh_test_data() {