trailer: add tests to check defaulting behavior with --no-* flags
While the "--no-where" flag is tested, the "--no-if-exists" and "--no-if-missing" flags are not, so add tests for them. But also add tests for all "--no-*" flags to check their effects, both when (1) there are relevant configuration variables set, and (2) they are not set. Signed-off-by: Linus Arver <linusa@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
e670ba2500
commit
73574f21b4
|
@ -114,8 +114,10 @@ OPTIONS
|
||||||
Specify where all new trailers will be added. A setting
|
Specify where all new trailers will be added. A setting
|
||||||
provided with '--where' overrides all configuration variables
|
provided with '--where' overrides all configuration variables
|
||||||
and applies to all '--trailer' options until the next occurrence of
|
and applies to all '--trailer' options until the next occurrence of
|
||||||
'--where' or '--no-where'. Possible values are `after`, `before`,
|
'--where' or '--no-where'. Upon encountering '--no-where', clear the
|
||||||
`end` or `start`.
|
effect of any previous use of '--where', such that the relevant configuration
|
||||||
|
variables are no longer overridden. Possible values are `after`,
|
||||||
|
`before`, `end` or `start`.
|
||||||
|
|
||||||
--if-exists <action>::
|
--if-exists <action>::
|
||||||
--no-if-exists::
|
--no-if-exists::
|
||||||
|
@ -123,7 +125,9 @@ OPTIONS
|
||||||
least one trailer with the same <token> in the input. A setting
|
least one trailer with the same <token> in the input. A setting
|
||||||
provided with '--if-exists' overrides all configuration variables
|
provided with '--if-exists' overrides all configuration variables
|
||||||
and applies to all '--trailer' options until the next occurrence of
|
and applies to all '--trailer' options until the next occurrence of
|
||||||
'--if-exists' or '--no-if-exists'. Possible actions are `addIfDifferent`,
|
'--if-exists' or '--no-if-exists'. Upon encountering '--no-if-exists, clear the
|
||||||
|
effect of any previous use of '--if-exists, such that the relevant configuration
|
||||||
|
variables are no longer overridden. Possible actions are `addIfDifferent`,
|
||||||
`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.
|
`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.
|
||||||
|
|
||||||
--if-missing <action>::
|
--if-missing <action>::
|
||||||
|
@ -132,7 +136,9 @@ OPTIONS
|
||||||
trailer with the same <token> in the input. A setting
|
trailer with the same <token> in the input. A setting
|
||||||
provided with '--if-missing' overrides all configuration variables
|
provided with '--if-missing' overrides all configuration variables
|
||||||
and applies to all '--trailer' options until the next occurrence of
|
and applies to all '--trailer' options until the next occurrence of
|
||||||
'--if-missing' or '--no-if-missing'. Possible actions are `doNothing`
|
'--if-missing' or '--no-if-missing'. Upon encountering '--no-if-missing,
|
||||||
|
clear the effect of any previous use of '--if-missing, such that the relevant
|
||||||
|
configuration variables are no longer overridden. Possible actions are `doNothing`
|
||||||
or `add`.
|
or `add`.
|
||||||
|
|
||||||
--only-trailers::
|
--only-trailers::
|
||||||
|
|
|
@ -812,6 +812,53 @@ test_expect_success 'using "--where after" with "--no-where"' '
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# Check whether using "--no-where" clears out only the "--where after", such
|
||||||
|
# that we still use the configuration in trailer.where (which is different from
|
||||||
|
# the hardcoded default (in WHERE_END) assuming the absence of .gitconfig).
|
||||||
|
# Here, the "start" setting of trailer.where is respected, so the new "Acked-by"
|
||||||
|
# and "Bug" trailers are placed at the beginning, and not at the end which is
|
||||||
|
# the harcoded default.
|
||||||
|
test_expect_success 'using "--where after" with "--no-where" defaults to configuration' '
|
||||||
|
test_config trailer.ack.key "Acked-by= " &&
|
||||||
|
test_config trailer.bug.key "Bug #" &&
|
||||||
|
test_config trailer.separators ":=#" &&
|
||||||
|
test_config trailer.where "start" &&
|
||||||
|
cat complex_message_body >expected &&
|
||||||
|
sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
|
||||||
|
Bug #42
|
||||||
|
Acked-by= Peff
|
||||||
|
Fixes: Z
|
||||||
|
Acked-by= Z
|
||||||
|
Reviewed-by: Z
|
||||||
|
Signed-off-by: Z
|
||||||
|
EOF
|
||||||
|
git interpret-trailers --where after --no-where --trailer "ack: Peff" \
|
||||||
|
--trailer "bug: 42" complex_message >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
# The "--where after" will only get respected for the trailer that came
|
||||||
|
# immediately after it. For the next trailer (Bug #42), we default to using the
|
||||||
|
# hardcoded WHERE_END because we don't have any "trailer.where" or
|
||||||
|
# "trailer.bug.where" configured.
|
||||||
|
test_expect_success 'using "--no-where" defaults to harcoded default if nothing configured' '
|
||||||
|
test_config trailer.ack.key "Acked-by= " &&
|
||||||
|
test_config trailer.bug.key "Bug #" &&
|
||||||
|
test_config trailer.separators ":=#" &&
|
||||||
|
cat complex_message_body >expected &&
|
||||||
|
sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
|
||||||
|
Fixes: Z
|
||||||
|
Acked-by= Z
|
||||||
|
Acked-by= Peff
|
||||||
|
Reviewed-by: Z
|
||||||
|
Signed-off-by: Z
|
||||||
|
Bug #42
|
||||||
|
EOF
|
||||||
|
git interpret-trailers --where after --trailer "ack: Peff" --no-where \
|
||||||
|
--trailer "bug: 42" complex_message >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'using "where = after"' '
|
test_expect_success 'using "where = after"' '
|
||||||
test_config trailer.ack.key "Acked-by= " &&
|
test_config trailer.ack.key "Acked-by= " &&
|
||||||
test_config trailer.ack.where "after" &&
|
test_config trailer.ack.where "after" &&
|
||||||
|
@ -1176,6 +1223,56 @@ test_expect_success 'overriding configuration with "--if-exists replace"' '
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# "trailer.ifexists" is set to "doNothing", so using "--no-if-exists" defaults
|
||||||
|
# to this "doNothing" behavior. So the "Fixes: 53" trailer does not get added.
|
||||||
|
test_expect_success 'using "--if-exists replace" with "--no-if-exists" defaults to configuration' '
|
||||||
|
test_config trailer.ifexists "doNothing" &&
|
||||||
|
cat complex_message_body >expected &&
|
||||||
|
sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
|
||||||
|
Fixes: Z
|
||||||
|
Acked-by: Z
|
||||||
|
Reviewed-by: Z
|
||||||
|
Signed-off-by: Z
|
||||||
|
EOF
|
||||||
|
git interpret-trailers --if-exists replace --no-if-exists --trailer "Fixes: 53" \
|
||||||
|
<complex_message >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
# No "ifexists" configuration is set, so using "--no-if-exists" makes it default
|
||||||
|
# to addIfDifferentNeighbor. Because we do have a different neighbor "Fixes: 53"
|
||||||
|
# (because it got added by overriding with "--if-exists replace" earlier in the
|
||||||
|
# arguments list), we add "Signed-off-by: addme".
|
||||||
|
test_expect_success 'using "--no-if-exists" defaults to hardcoded default if nothing configured' '
|
||||||
|
cat complex_message_body >expected &&
|
||||||
|
sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
|
||||||
|
Acked-by: Z
|
||||||
|
Reviewed-by: Z
|
||||||
|
Signed-off-by: Z
|
||||||
|
Fixes: 53
|
||||||
|
Signed-off-by: addme
|
||||||
|
EOF
|
||||||
|
git interpret-trailers --if-exists replace --trailer "Fixes: 53" --no-if-exists \
|
||||||
|
--trailer "Signed-off-by: addme" <complex_message >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
# The second "Fixes: 53" trailer is discarded, because the "--no-if-exists" here
|
||||||
|
# makes us default to addIfDifferentNeighbor, and we already added the "Fixes:
|
||||||
|
# 53" trailer earlier in the argument list.
|
||||||
|
test_expect_success 'using "--no-if-exists" defaults to hardcoded default if nothing configured (no addition)' '
|
||||||
|
cat complex_message_body >expected &&
|
||||||
|
sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
|
||||||
|
Acked-by: Z
|
||||||
|
Reviewed-by: Z
|
||||||
|
Signed-off-by: Z
|
||||||
|
Fixes: 53
|
||||||
|
EOF
|
||||||
|
git interpret-trailers --if-exists replace --trailer "Fixes: 53" --no-if-exists \
|
||||||
|
--trailer "Fixes: 53" <complex_message >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'using "ifExists = replace"' '
|
test_expect_success 'using "ifExists = replace"' '
|
||||||
test_config trailer.fix.key "Fixes: " &&
|
test_config trailer.fix.key "Fixes: " &&
|
||||||
test_config trailer.fix.ifExists "replace" &&
|
test_config trailer.fix.ifExists "replace" &&
|
||||||
|
@ -1425,6 +1522,39 @@ test_expect_success 'using "ifMissing = doNothing"' '
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# Ignore the "IgnoredTrailer" because of "--if-missing doNothing", but also
|
||||||
|
# ignore the "StillIgnoredTrailer" because we set "trailer.ifMissing" to
|
||||||
|
# "doNothing" in configuration.
|
||||||
|
test_expect_success 'using "--no-if-missing" defaults to configuration' '
|
||||||
|
test_config trailer.ifMissing "doNothing" &&
|
||||||
|
cat complex_message_body >expected &&
|
||||||
|
sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
|
||||||
|
Fixes: Z
|
||||||
|
Acked-by: Z
|
||||||
|
Reviewed-by: Z
|
||||||
|
Signed-off-by: Z
|
||||||
|
EOF
|
||||||
|
git interpret-trailers --if-missing doNothing --trailer "IgnoredTrailer: ignoreme" --no-if-missing \
|
||||||
|
--trailer "StillIgnoredTrailer: ignoreme" <complex_message >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
# Add the "AddedTrailer" because the "--no-if-missing" clears the "--if-missing
|
||||||
|
# doNothing" from earlier in the argument list.
|
||||||
|
test_expect_success 'using "--no-if-missing" defaults to hardcoded default if nothing configured' '
|
||||||
|
cat complex_message_body >expected &&
|
||||||
|
sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
|
||||||
|
Fixes: Z
|
||||||
|
Acked-by: Z
|
||||||
|
Reviewed-by: Z
|
||||||
|
Signed-off-by: Z
|
||||||
|
AddedTrailer: addme
|
||||||
|
EOF
|
||||||
|
git interpret-trailers --if-missing doNothing --trailer "IgnoredTrailer: ignoreme" --no-if-missing \
|
||||||
|
--trailer "AddedTrailer: addme" <complex_message >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'default "where" is now "after"' '
|
test_expect_success 'default "where" is now "after"' '
|
||||||
git config trailer.where "after" &&
|
git config trailer.where "after" &&
|
||||||
test_config trailer.ack.ifExists "add" &&
|
test_config trailer.ack.ifExists "add" &&
|
||||||
|
|
Loading…
Reference in New Issue