#testing #bash 간단한 assert

less than 1 minute read

팀 패스워드 관리 프로그램 tpass 개발하면서 간단하게 만들어서 썼다. 독립된 환경을 가진 유저 2 명으로 테스트를 해야 했기 때문에 테스트 환경에 공을 들였다. 독립된 환경을 구축하는 데 docker를 사용했다. 스크립트 언어로 bash를 사용했다.

RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NO_COLOR='\033[0m'

function log_info { printf "${GREEN}[INFO] $1${NO_COLOR}\n"; }
function log_success { printf "${BLUE}[TEST/SUCCESS] $1${NO_COLOR}\n"; }
function log_failure { printf "${RED}[TEST/FAILURE] $1${NO_COLOR}\n"; }

function assert {
    expected=$1
    actual=$2

    if [ "$expected" == "$actual" ]; then
        log_success "assert $expected == $actual"
        return 0
    else
        log_failure "assert $expected == $actual"
        exit 1
    fi
}

log_info "{B} view password - skynet"
assert $skynet_password $(get_password user_b skynet)

log_info "{B} should not view password - redzone/skynet"
assert "cannot_decryption" $(get_password user_b redzone/skynet)

log_info "{B} view password - bluezone/puplezone/skynet"
assert $skynet_password $(get_password user_b bluezone/puplezone/skynet)

이런 식으로 사용했다. test/test_add_user 파일 참고.

torokmark/assert.sh 프로젝트가 있어 써보려고 했다가 과해서 필요한 것만 만들어 썼다. 테스트 케이스가 더 많았다면 썼을지도 모르겠다.