blob: 8d04702a491160d708ef49bbe6fbd06974501959 [file] [log] [blame]
#!/bin/bash
# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Chrome OS Disk Firmware Update Script test harness
# Use bash to be able to source the script to test with parameters and
# use array:
# !bash -x ./scripts/chromeos-disk-firmware-test.sh > /tmp/test 2>&1
#
# Works only in the chromium chroot.
export LC_ALL=C
DISK_TEMP=$(mktemp -d)
# source the script to test: The test script is in bash to
# allow paramters to be taken into account.
. scripts/chromeos-disk-firmware-update.sh \
--tmp_dir "${DISK_TEMP}" \
--fw_package_dir "tests/test_mmc_dir" \
--mmc ':' \
--test
# Overwrite funtions that call hdparm
# Read the identify for files
declare -a mmc_model
declare -a mmc_fwrev
declare -a mmc_rc
declare -i id_idx
disk_mmc_info() {
disk_model="$(echo ${mmc_model[${id_idx}]} | \
tr -d '\n' | od -t x1 -A none -v | sed 's/ //g')"
disk_fw_rev="${mmc_fwrev[${id_idx}]}"
: $(( id_idx += 1))
return 0
}
prepare_test() {
id_idx=0
find "${DISK_TEMP}" -mindepth 1 -delete
}
run_test() {
main > "${DISK_TEMP}/result"
}
check_test() {
local test_id=$1
local exp_result=$2_${test_id}
local test_exp_rc=$3
local test_rc=$4
if [ ${test_exp_rc} -ne ${test_rc} ]; then
echo "Expected ${test_exp_rc}, got ${test_rc}"
exit 1
fi
diff "${DISK_TEMP}/result" "tests/${exp_result}"
if [ $? -ne 0 ]; then
echo "test_${test_id} failed"
exit 1
fi
}
# MMC tests:
get_device_type() {
echo "MMC"
}
list_fixed_ata_disks() {
echo
}
list_fixed_mmc_disks() {
echo "mmcblk0"
}
prepare_test
mmc_fwrev=(
'0x0b00000000000000'
'0xff00000000000000'
'0xff00000000000000'
'00'
'0x0c00000000000000'
'0xfe00000000000000'
'0xfe00000000000000'
'0x0b00000000000000'
'0xff00000000000000'
)
mmc_model=(
'MAG2GC'
'MAG2GC'
'MAG2GC'
'NO FFU'
'MAG3GC'
'MAG3GC'
'MAG3GC'
'MAG2GC'
'MAG2GC'
)
run_test
check_test 1 mmc_upgraded 0 $?
echo MMC PASS 1
run_test
check_test 2 mmc_good 0 $?
echo MMC PASS 2
run_test
check_test 3 mmc_upgraded 0 $?
echo MMC PASS 3
# set firmware upgrade to fail
disk_mmc_upgrade() {
return 1
}
run_test
check_test 4 mmc_upgrade_failed 1 $?
echo MMC PASS 4
rm -rf "${DISK_TEMP}"