[PATCH v2] git-notes: Run partial expensive test everywhere

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The git-notes expensive timing test is only expensive because it
either did 10,100,1k and 10k iterations or nothing.

Change it to do 10 by default, with an option to run the expensive
version with the old GIT_NOTES_TIMING_TESTS=ZomgYesPlease variable.

Since nobody was ostensibly running this test under TAP the code had
bitrotted so that it emitted invalid TAP. This change fixes that.

The old version would also mysteriously fail on systems without
/usr/bin/time, there's now a check for that using the multiple test
prerequisite facility.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx>
---

On Tue, Aug 10, 2010 at 21:56, Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote:
> On Tue, Aug 10, 2010 at 19:56, Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote:
>> +       # Hack around multiple test prerequisites not supporting AND-ing
>> +       # of terms
>> +       test_set_prereq USR_BIN_TIME+NOT_EXPENSIVE
>> +       test_have_prereq EXPENSIVE && test_set_prereq USR_BIN_TIME+EXPENSIVE
>> +fi
>
> In retrospect this may have been some brainfried code, I'll check it
> out tomorrow.

Here's a patch that's not crazy. In v1 I was hacking around not having
a facility I already added to the test-lib (tired).

This patch goes on top of my "test-lib: Multi-prereq support only
checked the last prereq" patch, which fixes up the test prereq
facility so that it actually works.

 t/t3302-notes-index-expensive.sh |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/t/t3302-notes-index-expensive.sh b/t/t3302-notes-index-expensive.sh
index 361a10a..7c08e99 100755
--- a/t/t3302-notes-index-expensive.sh
+++ b/t/t3302-notes-index-expensive.sh
@@ -7,11 +7,9 @@ test_description='Test commit notes index (expensive!)'
 
 . ./test-lib.sh
 
-test -z "$GIT_NOTES_TIMING_TESTS" && {
-	skip_all="Skipping timing tests"
-	test_done
-	exit
-}
+test_set_prereq NOT_EXPENSIVE
+test -n "$GIT_NOTES_TIMING_TESTS" && test_set_prereq EXPENSIVE
+test -x /usr/bin/time && test_set_prereq USR_BIN_TIME
 
 create_repo () {
 	number_of_commits=$1
@@ -102,17 +100,27 @@ time_notes () {
 	done
 }
 
-for count in 10 100 1000 10000; do
+do_tests () {
+	pr=$1
+	count=$2
+
+	test_expect_success $pr 'setup / mkdir' '
+		mkdir $count &&
+		cd $count
+	'
 
-	mkdir $count
-	(cd $count;
+	test_expect_success $pr "setup $count" "create_repo $count"
 
-	test_expect_success "setup $count" "create_repo $count"
+	test_expect_success $pr 'notes work' "test_notes $count"
 
-	test_expect_success 'notes work' "test_notes $count"
+	test_expect_success USR_BIN_TIME,$pr 'notes timing with /usr/bin/time' "time_notes 100"
+
+	test_expect_success $pr 'teardown / cd ..' 'cd ..'
+}
 
-	test_expect_success 'notes timing' "time_notes 100"
-	)
+do_tests NOT_EXPENSIVE 10
+for count in 100 1000 10000; do
+	do_tests EXPENSIVE $count
 done
 
 test_done
-- 
1.7.2.1.295.gd03d

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]