Environment expectations now permit omitting operator

Export expectations will only succeed/fail based on flag checks, whereas the
declare/set expectations will fail on value.
env
Mike Gerwitz 2014-06-10 23:39:20 -04:00
parent 658fd29e0d
commit c9b826d975
2 changed files with 44 additions and 2 deletions

View File

@ -56,6 +56,13 @@ __expect-env()
=|==|!=|-eq|-ne|-lt|-le|-gt|-ge)
test "$val" $cmp "$expect";;
# at this point, if we have succeeded in performing flag tests, then we
# will always pass; otherwise, if no such tests were performed, then we
# fall back to the conventional non-empty check
'')
test -n "$expflags" -o -n "$val";;
# TODO: provide error description
*) false;;
esac
}

View File

@ -24,7 +24,8 @@ declare -x -- var="val"
declare -x -- long="foo bar baz"
declare -x -- empty=""
declare -x -- one="1"
declare -- nonexport=""'
declare -- nonexport="moo"
declare -- nonexport_empty=""'
declare curchk
@ -213,9 +214,43 @@ for name in set declare export; do
if [ "$name" == export ]; then
it fails when variable is not exported
expect setchk nonexport -z
expect setchk nonexport
to fail
end
describe in absence of any operator
it succeeds on exported, non-empty var
expect setchk var
to succeed
end
it succeeds on exported empty var
expect setchk empty
to succeed
end
it fails on non-exported, non-empty var
expect setchk nonexport
to fail
end
it fails on non-exported empty var
expect setchk nonexport_empty
to fail
end
end
else
describe in absence of any operator
it succeeds on non-empty string
expect setchk var
to succeed
end
it fails on empty string
expect setchk empty
to fail
end
end
fi
end
done