#!/bin/bash

# Copyright (C) 2010 Karel Zak <kzak@redhat.com>

TS_TOPDIR="${0%/*}/../.."
TS_DESC="options string"

. $TS_TOPDIR/functions.sh
ts_init "$*"

TESTPROG="$TS_HELPER_LIBMOUNT_OPTSTR"

[ -x $TESTPROG ] || ts_skip "test not compiled"

ts_init_subtest "append"
ts_run $TESTPROG --append "aaa,bbb=BBB,context=\"foo,bar,gogo\",ccc" "ddd" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "append-value"
ts_run $TESTPROG --append "aaa,bbb=BBB,ccc" "ddd" "DDD" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "append-empty-value"
ts_run $TESTPROG --append "aaa,bbb=BBB,ccc" "ddd" "" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "prepend"
ts_run $TESTPROG --prepend "aaa,bbb=BBB,ccc" "ddd" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "prepend-value"
ts_run $TESTPROG --prepend "aaa,bbb=BBB,ccc" "ddd" "DDD" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "prepend-empty-value"
ts_run $TESTPROG --prepend "aaa,bbb=BBB,ccc" "ddd" "" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "set-remove"
ts_run $TESTPROG --set "aaa,bbb=BBB,ccc" "bbb" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "set-small"
ts_run $TESTPROG --set "aaa,bbb=BBB,ccc" "bbb" "X" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "set-large"
ts_run $TESTPROG --set "aaa,bbb=BBB,ccc" "bbb" "XXX-YYY-ZZZ" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "set-empty"
ts_run $TESTPROG --set "aaa,bbb=BBB,ccc" "bbb" "" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "set-new"
ts_run $TESTPROG --set "aaa,bbb=BBB,ccc" "aaa" "XXX" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "set-new-empty"
ts_run $TESTPROG --set "aaa,bbb=BBB,ccc" "aaa" "" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "set-new-end"
ts_run $TESTPROG --set "aaa,bbb=BBB,ccc" "ccc" "XXX" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "set-new-end-empty"
ts_run $TESTPROG --set "aaa,bbb=BBB,ccc" "ccc" "" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "get"
ts_run $TESTPROG --get "aaa,bbb=BBB,ccc" "aaa" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "get-value"
ts_run $TESTPROG --get "aaa,bbb=BBB,ccc" "bbb" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "remove"
ts_run $TESTPROG --remove "aaa,bbb=BBB,ccc" "aaa" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "remove-quoted"
ts_run $TESTPROG --remove "aaa,context=\"foo,bar,gogo\",bbb=BBB,ccc" "context" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "remove-value"
ts_run $TESTPROG --remove "aaa,bbb=BBB,ccc" "bbb" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "remove-empty-value"
ts_run $TESTPROG --remove "aaa,bbb=,ccc" "bbb" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "split"
ts_run $TESTPROG --split "aaa,bbb=BBB,ccc,x-bar,x-foo=foodata,user=kzak,noexec,nosuid,loop=/dev/loop0" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "flags"
ts_run $TESTPROG --flags "aaa,bbb=BBB,x-foo,ccc,user=kzak,nodev,noexec,nosuid,loop=/dev/loop0" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "apply-linux"	# add noatime and remove noexec and nosuid
ts_run $TESTPROG --apply --linux "user=kzak,noexec,nosuid" 0x400 &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "apply-user"	# add user,nofail and remove loop
ts_run $TESTPROG --apply --user "noexec,nosuid,loop=/dev/looop0" 0x408 &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "fix"
ts_run $TESTPROG --fix "uid=root,gid=root" &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "deduplicate"
ts_run $TESTPROG --dedup bbb,ccc,AAA,xxx,AAA=a,AAA=bbb,ddd,AAA=ccc,fff=eee AAA &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "deduplicate-empty"
ts_run $TESTPROG --dedup bbb,ccc,AAA,xxx,AAA=a,AAA=bbb,ddd,AAA=,fff=eee AAA &> $TS_OUTPUT
ts_finalize_subtest

ts_finalize
