Change when called state is reset

This allows checking if a stub was called even after it's been restored
to it's original. Called state is only reset when a new stub is created
for the same command.
This commit is contained in:
2014-03-19 23:55:39 +00:00
parent ce67b6c3a5
commit 721226618c
3 changed files with 15 additions and 7 deletions

View File

@@ -95,6 +95,10 @@ stub_and_eval() {
STUB_ACTIVE_STUBS+=("$cmd")
fi
# Remove stub from list of called stubs, as we are now creating a new stub
# which hasn't been called yet.
STUB_CALLED_STUBS=(${STUB_CALLED_STUBS[@]/$cmd/})
# Create the stub.
eval "$(echo -e "${cmd}() {\n __stub_call \"${cmd}\"\n $2\n}")"
}
@@ -204,9 +208,6 @@ restore() {
# Remove stub from list of active stubs.
STUB_ACTIVE_STUBS=(${STUB_ACTIVE_STUBS[@]/$cmd/})
# Remove stub from list of called stubs.
STUB_CALLED_STUBS=(${STUB_CALLED_STUBS[@]/$cmd/})
# If stub was for a function, restore the original function.
if type "non_stubbed_${cmd}" &>/dev/null; then
local original_type="$(type "non_stubbed_${cmd}" | head -1)"

View File

@@ -19,20 +19,24 @@ uname
assert_raises 'stub_called "uname"' 0
restore "uname"
# Returns 1 after called stub has been restored.
# Stub called state is reset by creating a new stub, not by restore.
stub "uname"
uname
restore "uname"
assert_raises 'stub_called "uname"' 0
stub "uname"
assert_raises 'stub_called "uname"' 1
restore "uname"
# Restoring only resets called state of restored stub.
# Recreating a stub only resets called state of recreated stub.
stub "uname"
stub "top"
uname
top
restore "uname"
stub "uname"
assert_raises 'stub_called "uname"' 1
assert_raises 'stub_called "top"' 0
restore "uname"
restore "top"

View File

@@ -19,12 +19,15 @@ uname
assert 'stub_called_times "uname"' "3"
restore "uname"
# Echoes 0 after a called stub has been restored.
# Echoes 0 after a called stub has been recreated.
stub "uname"
uname
assert 'stub_called_times "uname"' "1"
restore "uname"
assert 'stub_called_times "uname"' "1"
stub "uname"
assert 'stub_called_times "uname"' "0"
restore "uname"
# When given a second argument, asserts stub called X number of times.
stub "uname"