"Stephen P. Smith" <ischis2@xxxxxxx> writes: > +# Subtract some known constant time and look for expected field format > +TODAY_REGEX='5 hours ago' > +THIS_YEAR_REGEX='[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]* [012][0-9]:[0-6][0-9]' > +MORE_THAN_A_YEAR_REGEX='[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]* [0-9][0-9][0-9][0-9]' > +check_human_date "$(($(date +%s)-18000)) +0200" $TODAY_REGEX # 5 hours ago > +check_human_date "$(($(date +%s)-432000)) +0200" $THIS_YEAR_REGEX # 5 days ago 'date +%s' is used everywhere in this patch but has never been used in our test suite before. It is not portable. We perhaps can use "test-tool date timestamp", like so check_human_date $(test-tool date timestamp "18000 seconds ago") ... or moving the part that munges 18000 into the above form inside check_human_date helper function, e.g. check_human_date () { commit_date=$(test-tool date timestamp "$1 seconds ago") commit_date="$commit_date +0200" expect=$2 ... } which would let us write check_human_date 432000" $THIS_YEAR_REGEX # 5 days ago > +check_human_date() { > + commit_date=$1 > + expect=$2 > + test_expect_success "$commit_date" " > + echo $expect $commit_date >dates && > + git add dates && > + git commit -m 'Expect String' --date=\"$commit_date\" dates && > + git log -1 --date=human | grep \"^Date:\" >actual && > + grep \"$expect\" actual > +" As the body of the test_expect_success helper is eval'ed, variables $commit_date and $expect should be visible to it, without turning them into values before executing test_expect_success function, i.e. test_expect_success "$commit_date" ' echo "$expect $commit_date" >dates && ... git commit -m "Expect String" --date="$commit_date" dates && git show -s --date=human | grep '^Date:" >actual && grep "$expect" actual ' which would reduce the need for unreadable backslashes. Instead of duplicating, perhaps move this to a more common place? Would it make sense to make it "check_date_format ()" helper by passing another argument to parameterize --date=human part > +check_human_date() { > + commit_date=$1 > + expect=$2 > + test_expect_success "$commit_date" " > + echo $expect $commit_date >dates && > + git add dates && > + git commit -m 'Expect String' --date=\"$commit_date\" dates && > + git show --date=human | grep \"^Date:\" >actual && Using "show" here is much better than "log -1" above; using "show -s" would be even better. > + grep \"$expect\" actual > +" > +} > + > +TODAY_REGEX='[A-Z][a-z][a-z] [012][0-9]:[0-6][0-9] .0200' > +THIS_YEAR_REGEX='[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]* [012][0-9]:[0-6][0-9]' > +MORE_THAN_A_YEAR_REGEX='[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]* [0-9][0-9][0-9][0-9]' > +check_human_date "$(($(date +%s)-18000)) +0200" $TODAY_REGEX # 5 hours ago > +check_human_date "$(($(date +%s)-432000)) +0200" $THIS_YEAR_REGEX # 5 days ago > +check_human_date "$(($(date +%s)-1728000)) +0200" $THIS_YEAR_REGEX # 3 weeks ago > +check_human_date "$(($(date +%s)-13000000)) +0200" $THIS_YEAR_REGEX # 5 months ago > +check_human_date "$(($(date +%s)-31449600)) +0200" $THIS_YEAR_REGEX # 12 months ago > +check_human_date "$(($(date +%s)-37500000)) +0200" $MORE_THAN_A_YEAR_REGEX # 1 year, 2 months ago > +check_human_date "$(($(date +%s)-55188000)) +0200" $MORE_THAN_A_YEAR_REGEX # 1 year, 9 months ago > +check_human_date "$(($(date +%s)-630000000)) +0200" $MORE_THAN_A_YEAR_REGEX # 20 years ago > + > + > test_done