{"thread":{"id":"13489","subject":"[PATCH 3/3] Hook up the result aggregation in the test makefile.","startedAt":"2008-05-12T09:33:49Z","lastAt":"2008-06-08T18:09:22Z","messageCount":21,"participants":["Sverre Rabbelier","Jakub Narebski","Johannes Schindelin","Vegard Nossum","Miklos Vajna","Mikael Magnusson"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"76690","messageId":"1210584832-16402-1-git-send-email-srabbelier@gmail.com","threadId":"13489","inReplyTo":null,"subject":"[PATCH 0/3] Aggregate testcase results","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-05-12T09:33:49Z","receivedAt":"2008-05-12T09:33:49Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"Heya,\n\nThe following patch series provides a summary of the test results at\nthe end of each 'full run'. The reason I wrote this series is that I\nnoticed when running 'make' in '/t/' that there is no way for me to\nfind out if all testcases still pass without scrolling through the\noutput. Since almost all testcases -do- pass anyway, and it takes\nquite a long time to run them all I wanted a way to see at a glance if\na change I made breaks something (that is covered by the testcases).\n\nCheers,\n\nSverre Rabbelier\n"},{"id":"76688","messageId":"1210584832-16402-2-git-send-email-srabbelier@gmail.com","threadId":"13489","inReplyTo":"1210584832-16402-1-git-send-email-srabbelier@gmail.com","subject":"[PATCH 1/3] Modified test-lib.sh to output stats to /tmp/git-test-results","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-05-12T09:33:50Z","receivedAt":"2008-05-12T09:33:50Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"This change is needed order to aggregate data on the test run later on.\nBecause writing to the current directory is not possible, we write to /tmp/.\nSuggestions for a better location are welcome.\n\nSigned-off-by: Sverre Rabbelier <srabbelier@gmail.com>\n---\n t/test-lib.sh |   10 ++++++++++\n 1 files changed, 10 insertions(+), 0 deletions(-)\n\ndiff --git a/t/test-lib.sh b/t/test-lib.sh\nindex 7c2a8ba..68b6555 100644\n--- a/t/test-lib.sh\n+++ b/t/test-lib.sh\n@@ -152,6 +152,7 @@ test_failure=0\n test_count=0\n test_fixed=0\n test_broken=0\n+test_success=0\n \n die () {\n \techo >&5 \"FATAL: Unexpected exit with code $?\"\n@@ -177,6 +178,7 @@ test_tick () {\n \n test_ok_ () {\n \ttest_count=$(expr \"$test_count\" + 1)\n+\ttest_success=$(expr \"$test_success\" + 1)\n \tsay_color \"\" \"  ok $test_count: $@\"\n }\n \n@@ -337,6 +339,14 @@ test_create_repo () {\n \n test_done () {\n \ttrap - exit\n+\ttest_results_path=\"/tmp/git-test-results\"\n+\n+\techo \"total $test_count\" >> $test_results_path\n+\techo \"success $test_success\" >> $test_results_path\n+\techo \"fixed $test_fixed\" >> $test_results_path\n+\techo \"broken $test_broken\" >> $test_results_path\n+\techo \"failed $test_failure\" >> $test_results_path\n+\techo \"\" >> $test_results_path\n \n \tif test \"$test_fixed\" != 0\n \tthen\n-- \n1.5.5.1.178.g1f811\n"},{"id":"76689","messageId":"1210584832-16402-3-git-send-email-srabbelier@gmail.com","threadId":"13489","inReplyTo":"1210584832-16402-1-git-send-email-srabbelier@gmail.com","subject":"[PATCH 2/3] A simple python script to parse the results from the testcases","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-05-12T09:33:51Z","receivedAt":"2008-05-12T09:33:51Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"This is a simple script that aggregates key:value pairs in a file.\nI am sure this can be done better with a 'grep | sed | awk' combination,\nmy skills with awk / your program of choice is not as profound.\nThis script serves more as a demonstration on how to use the testcase output.\n\nSigned-off-by: Sverre Rabbelier <srabbelier@gmail.com>\n---\n t/key_value_parser.py |   78 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 78 insertions(+), 0 deletions(-)\n create mode 100755 t/key_value_parser.py\n\ndiff --git a/t/key_value_parser.py b/t/key_value_parser.py\nnew file mode 100755\nindex 0000000..e172df1\n--- /dev/null\n+++ b/t/key_value_parser.py\n@@ -0,0 +1,78 @@\n+#!/usr/bin/env python\n+\n+\"\"\"Module for parsing files with 'key value' pairs.\n+\n+Usage summary: key_value_parser.py \"path/to/file\"\n+\"\"\"\n+\n+def parseFile(path):\n+\t\"\"\"Parses a file containing pair value couples.\n+\t\n+\tThe values are expected to be integers.\n+\tIf more than one value for a pair is found, these values are aggregated.\n+\tThe size of the longest key is stored in '__maxsize'.\n+\tA dictionairy with only '__maxsize:0' is returned if an error occured.\n+\t\"\"\"\n+\n+\tdict = {\"__maxsize\" : 0}\n+\n+\ttry:\n+\t\tfile = open(path)\n+\t\tfor line in file:\n+\t\t\tif line == '\\n':\n+\t\t\t\tcontinue\n+\n+\t\t\tpos = line.index(' ')\n+\t\t\tkey = line[:pos]\n+\t\t\t\n+\t\t\t# Skip the space and the trailing newline\n+\t\t\tvalue = line[pos+1:-1] \n+\t\t\tintvalue = int(value)\n+\n+\t\t\tif key in dict:\n+\t\t\t\tdict[key] = intvalue + dict[key]\n+\t\t\telse:\n+\t\t\t\tdict[key] = intvalue\n+\n+\t\t\tif len(key) > dict[\"__maxsize\"]:\n+\t\t\t\tdict[\"__maxsize\"] = len(key)\n+\n+\texcept IOError:\n+\t\tprint(\"Cannot open or read from file \" + path)\n+\texcept ValueError:\n+\t\tprint(\"Malformed line in file \")\n+\n+\treturn dict\n+\n+def main(argv):\n+\t\"\"\" Invokes parseFile on the path specified as argument.\n+\t\n+\tIf no argument is specified, a default of \n+\t'/tmp/git-test-results' is used.\n+\n+\tThe resulting dictionary is printed, ignoring keys starting with '__'.\n+\tAll output is left justified to the size of the largest key.\n+\t\"\"\"\n+\tpath = \"/tmp/git-test-results\"\n+\t\n+\t# If a path was specified as argument, use that\n+\tif len(argv) > 1:\n+\t\tpath = argv[1]\n+\n+\t# Parse the file\n+\tdict = parseFile(path)\n+\n+\t# Retreive the max size and add one space for readability\n+\tmaxsize = dict[\"__maxsize\"] + 1\n+\n+\t# Print the result\n+\tfor key,value in dict.iteritems():\n+\t\t# Don't print meta-data\n+\t\tif key.startswith(\"__\"):\n+\t\t\tcontinue\n+\n+\t\tprint(key.ljust(maxsize) + str(value))\n+\n+if __name__ == '__main__':\n+\timport sys\n+\tmain(sys.argv)\n-- \n1.5.5.1.178.g1f811\n"},{"id":"76687","messageId":"1210584832-16402-4-git-send-email-srabbelier@gmail.com","threadId":"13489","inReplyTo":"1210584832-16402-1-git-send-email-srabbelier@gmail.com","subject":"[PATCH 3/3] Hook up the result aggregation in the test makefile.","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-05-12T09:33:52Z","receivedAt":"2008-05-12T09:33:52Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"This patch makes 'make' output the aggregated results at the end of each build.\nThe 'git-test-result' file is removed both before and after each build.\n\nSigned-off-by: Sverre Rabbelier <srabbelier@gmail.com>\n---\n t/Makefile |    9 ++++++++-\n 1 files changed, 8 insertions(+), 1 deletions(-)\n\ndiff --git a/t/Makefile b/t/Makefile\nindex 72d7884..3955ee8 100644\n--- a/t/Makefile\n+++ b/t/Makefile\n@@ -14,13 +14,20 @@ SHELL_PATH_SQ = $(subst ','\\'',$(SHELL_PATH))\n T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)\n TSVN = $(wildcard t91[0-9][0-9]-*.sh)\n \n-all: $(T) clean\n+all: pre-clean $(T) aggregate-results clean\n \n $(T):\n \t@echo \"*** $@ ***\"; GIT_CONFIG=.git/config '$(SHELL_PATH_SQ)' $@ $(GIT_TEST_OPTS)\n \n+pre-clean:\n+\t$(RM) -f /tmp/git-test-results\n+\n clean:\n \t$(RM) -r trash\n+\t$(RM) -f /tmp/git-test-results\n+\n+aggregate-results:\n+\t./key_value_parser.py\n \n # we can test NO_OPTIMIZE_COMMITS independently of LC_ALL\n full-svn-test:\n-- \n1.5.5.1.178.g1f811\n"},{"id":"76691","messageId":"m3hcd34ynv.fsf@localhost.localdomain","threadId":"13489","inReplyTo":"1210584832-16402-3-git-send-email-srabbelier@gmail.com","subject":"Re: [PATCH 2/3] A simple python script to parse the results from the testcases","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2008-05-12T10:14:42Z","receivedAt":"2008-05-12T10:14:42Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Sverre Rabbelier <srabbelier@gmail.com> writes:\n\n> This is a simple script that aggregates key:value pairs in a file.\n> I am sure this can be done better with a 'grep | sed | awk' combination,\n> my skills with awk / your program of choice is not as profound.\n\nOr Perl, as Perl was created for that.  I'd rather don't reintroduce\nPython dependency...\n\n-- \nJakub Narebski\nPoland\nShadeHawk on #git\n"},{"id":"76692","messageId":"bd6139dc0805120316oe704c8ek149d37552d72ab30@mail.gmail.com","threadId":"13489","inReplyTo":"m3hcd34ynv.fsf@localhost.localdomain","subject":"Re: [PATCH 2/3] A simple python script to parse the results from the testcases","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-05-12T10:16:37Z","receivedAt":"2008-05-12T10:16:37Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"On Mon, May 12, 2008 at 12:14 PM, Jakub Narebski <jnareb@gmail.com> wrote:\n> Or Perl, as Perl was created for that.  I'd rather don't reintroduce\n> Python dependency...\n\nI'm sure Perl would work just fine, except that I'm not good with Perl\neither. If anyone feels like writing up something in Perl I'd be happy\nto test it and send in a new patch with the Perl script.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"76702","messageId":"alpine.DEB.1.00.0805121400200.30431@racer","threadId":"13489","inReplyTo":"bd6139dc0805120316oe704c8ek149d37552d72ab30@mail.gmail.com","subject":"Re: [PATCH 2/3] A simple python script to parse the results from the testcases","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-05-12T13:00:59Z","receivedAt":"2008-05-12T13:00:59Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 12 May 2008, Sverre Rabbelier wrote:\n\n> On Mon, May 12, 2008 at 12:14 PM, Jakub Narebski <jnareb@gmail.com> wrote:\n> > Or Perl, as Perl was created for that.  I'd rather don't reintroduce \n> > Python dependency...\n> \n> I'm sure Perl would work just fine, except that I'm not good with Perl \n> either. If anyone feels like writing up something in Perl I'd be happy \n> to test it and send in a new patch with the Perl script.\n\nUmm.  Perl cannot be so difficult as to reintroduce the dependency.  \nRemember: msysGit comes _without_ Python.\n\nCiao,\nDscho\n"},{"id":"76703","messageId":"bd6139dc0805120605ka869f58xd3c6915f2a4e5bed@mail.gmail.com","threadId":"13489","inReplyTo":"alpine.DEB.1.00.0805121400200.30431@racer","subject":"Re: [PATCH 2/3] A simple python script to parse the results from the testcases","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-05-12T13:05:42Z","receivedAt":"2008-05-12T13:05:42Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"On Mon, May 12, 2008 at 3:00 PM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n>  Umm.  Perl cannot be so difficult as to reintroduce the dependency.\n>  Remember: msysGit comes _without_ Python.\n\nAgreed, as said in the commit message, it  \"serves more as a\ndemonstration on how to use the testcase output\".\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"76705","messageId":"alpine.DEB.1.00.0805121424300.30431@racer","threadId":"13489","inReplyTo":"bd6139dc0805120605ka869f58xd3c6915f2a4e5bed@mail.gmail.com","subject":"Re: [PATCH 2/3] A simple python script to parse the results from the testcases","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-05-12T13:24:54Z","receivedAt":"2008-05-12T13:24:54Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 12 May 2008, Sverre Rabbelier wrote:\n\n> On Mon, May 12, 2008 at 3:00 PM, Johannes Schindelin\n> <Johannes.Schindelin@gmx.de> wrote:\n> >  Umm.  Perl cannot be so difficult as to reintroduce the dependency.\n> >  Remember: msysGit comes _without_ Python.\n> \n> Agreed, as said in the commit message, it \"serves more as a \n> demonstration on how to use the testcase output\". -- Cheers,\n\nAh, but then it is rather a \"RFTTP\" instead of a \"PATCH\".\n\n:-)\n\nCiao,\nDscho\n"},{"id":"76712","messageId":"19f34abd0805120755w5d2361d9y86d4b3ba26b2befa@mail.gmail.com","threadId":"13489","inReplyTo":"1210584832-16402-2-git-send-email-srabbelier@gmail.com","subject":"Re: [PATCH 1/3] Modified test-lib.sh to output stats to /tmp/git-test-results","fromName":"Vegard Nossum","fromEmail":"vegard.nossum@gmail.com","sentAt":"2008-05-12T14:55:22Z","receivedAt":"2008-05-12T14:55:22Z","isPatch":true,"sender":{"key":"vegard.nossum@gmail.com","avatar":null},"body":"Hi!\n\nOn Mon, May 12, 2008 at 11:33 AM, Sverre Rabbelier <srabbelier@gmail.com> wrote:\n> This change is needed order to aggregate data on the test run later on.\n>  Because writing to the current directory is not possible, we write to /tmp/.\n>  Suggestions for a better location are welcome.\n\nI have seen this in another (sh) script:\n\ndie() {\n        echo \"$@\"\n        exit 1\n}\n\nT=`mktemp` || die \"cannot create temp file\"\n...\nrm $T\n\n\nVegard\n\n-- \n\"The animistic metaphor of the bug that maliciously sneaked in while\nthe programmer was not looking is intellectually dishonest as it\ndisguises that the error is the programmer's own creation.\"\n\t-- E. W. Dijkstra, EWD1036\n"},{"id":"76713","messageId":"19f34abd0805120803h6a976d1fvcc49a43c192fe517@mail.gmail.com","threadId":"13489","inReplyTo":"1210584832-16402-4-git-send-email-srabbelier@gmail.com","subject":"Re: [PATCH 3/3] Hook up the result aggregation in the test makefile.","fromName":"Vegard Nossum","fromEmail":"vegard.nossum@gmail.com","sentAt":"2008-05-12T15:03:29Z","receivedAt":"2008-05-12T15:03:29Z","isPatch":true,"sender":{"key":"vegard.nossum@gmail.com","avatar":null},"body":"Hi,\n\nOn Mon, May 12, 2008 at 11:33 AM, Sverre Rabbelier <srabbelier@gmail.com> wrote:\n> This patch makes 'make' output the aggregated results at the end of each build.\n>  The 'git-test-result' file is removed both before and after each build.\n>\n>  Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>\n>  ---\n>   t/Makefile |    9 ++++++++-\n>   1 files changed, 8 insertions(+), 1 deletions(-)\n>\n>  diff --git a/t/Makefile b/t/Makefile\n>  index 72d7884..3955ee8 100644\n>  --- a/t/Makefile\n>  +++ b/t/Makefile\n>  @@ -14,13 +14,20 @@ SHELL_PATH_SQ = $(subst ','\\'',$(SHELL_PATH))\n>   T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)\n>   TSVN = $(wildcard t91[0-9][0-9]-*.sh)\n>\n>  -all: $(T) clean\n>  +all: pre-clean $(T) aggregate-results clean\n>\n>   $(T):\n>         @echo \"*** $@ ***\"; GIT_CONFIG=.git/config '$(SHELL_PATH_SQ)' $@ $(GIT_TEST_OPTS)\n>\n>  +pre-clean:\n>  +       $(RM) -f /tmp/git-test-results\n>  +\n>   clean:\n>         $(RM) -r trash\n>  +       $(RM) -f /tmp/git-test-results\n>  +\n>  +aggregate-results:\n>  +       ./key_value_parser.py\n>\n>   # we can test NO_OPTIMIZE_COMMITS independently of LC_ALL\n>   full-svn-test:\n>  --\n>  1.5.5.1.178.g1f811\n\nI am not really familiar with the git makefile in particular, but\nusually it's a good idea to put\n\n.PHONY: pre-clean aggregate-results\n\nas well if these targets are not output files. (Rationale can be found\nin section 4.6 \"Phony Targets\" of the GNU make manual.)\n\n\nVegard\n\n-- \n\"The animistic metaphor of the bug that maliciously sneaked in while\nthe programmer was not looking is intellectually dishonest as it\ndisguises that the error is the programmer's own creation.\"\n\t-- E. W. Dijkstra, EWD1036\n"},{"id":"79074","messageId":"1212884291-13847-1-git-send-email-vmiklos@frugalware.org","threadId":"13489","inReplyTo":"1210584832-16402-3-git-send-email-srabbelier@gmail.com","subject":"[PATCH] A simple script to parse the results from the testcases","fromName":"Miklos Vajna","fromEmail":"vmiklos@frugalware.org","sentAt":"2008-06-08T00:18:11Z","receivedAt":"2008-06-08T00:18:11Z","isPatch":true,"sender":{"key":"vmiklos@frugalware.org","avatar":"https://gravatar.com/avatar/401c1cbbb3a5d13e650c691a2c71d6fd0b80df1a01bc74d9f1972675dd58f2bd?d=mp&s=160"},"body":"This is a simple script that aggregates key:value pairs in a file.\n\nSigned-off-by: Miklos Vajna <vmiklos@frugalware.org>\n---\n\nOn Mon, May 12, 2008 at 11:33:51AM +0200, Sverre Rabbelier <srabbelier@gmail.com> wrote:\n> This is a simple script that aggregates key:value pairs in a file.\n\nHere is a shell version. Just to avoid python.\n\n t/key_value_parser.sh |   33 +++++++++++++++++++++++++++++++++\n 1 files changed, 33 insertions(+), 0 deletions(-)\n create mode 100755 t/key_value_parser.sh\n\ndiff --git a/t/key_value_parser.sh b/t/key_value_parser.sh\nnew file mode 100755\nindex 0000000..db568fe\n--- /dev/null\n+++ b/t/key_value_parser.sh\n@@ -0,0 +1,33 @@\n+#!/bin/sh\n+\n+input=\"/tmp/git-test-results\"\n+\n+fixed=0\n+success=0\n+failed=0\n+broken=0\n+total=0\n+\n+while read type value\n+do\n+\tcase $type in\n+\t'')\n+\t\tcontinue ;;\n+\tfixed)\t\n+\t\tfixed=$(($fixed + $value)) ;;\n+\tsuccess)\t\n+\t\tsuccess=$(($success + $value)) ;;\n+\tfailed)\t\n+\t\tfailed=$(($failed + $value)) ;;\n+\tbroken)\t\n+\t\tbroken=$(( $broken + $value)) ;;\n+\ttotal)\t\n+\t\ttotal=$(( $total + $value)) ;;\n+\tesac\n+done < $input\n+\n+printf \"%-8s%d\\n\" fixed $fixed\n+printf \"%-8s%d\\n\" success $success\n+printf \"%-8s%d\\n\" failed $failed\n+printf \"%-8s%d\\n\" broken $broken\n+printf \"%-8s%d\\n\" total $total\n-- \n1.5.6.rc0.dirty\n"},{"id":"79077","messageId":"bd6139dc0806071734h16aa4218md051fbbe9f025f43@mail.gmail.com","threadId":"13489","inReplyTo":"1212884291-13847-1-git-send-email-vmiklos@frugalware.org","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-06-08T00:34:25Z","receivedAt":"2008-06-08T00:34:25Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"On Sun, Jun 8, 2008 at 2:18 AM, Miklos Vajna <vmiklos@frugalware.org> wrote:\n> This is a simple script that aggregates key:value pairs in a file.\n>\n> Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>\n> ---\n>\n> On Mon, May 12, 2008 at 11:33:51AM +0200, Sverre Rabbelier <srabbelier@gmail.com> wrote:\n>> This is a simple script that aggregates key:value pairs in a file.\n>\n> Here is a shell version. Just to avoid python.\n>\n>  t/key_value_parser.sh |   33 +++++++++++++++++++++++++++++++++\n>  1 files changed, 33 insertions(+), 0 deletions(-)\n>  create mode 100755 t/key_value_parser.sh\n>\n> diff --git a/t/key_value_parser.sh b/t/key_value_parser.sh\n> new file mode 100755\n> index 0000000..db568fe\n> --- /dev/null\n> +++ b/t/key_value_parser.sh\n> @@ -0,0 +1,33 @@\n> +#!/bin/sh\n> +\n> +input=\"/tmp/git-test-results\"\n> +\n> +fixed=0\n> +success=0\n> +failed=0\n> +broken=0\n> +total=0\n> +\n> +while read type value\n> +do\n> +       case $type in\n> +       '')\n> +               continue ;;\n> +       fixed)\n> +               fixed=$(($fixed + $value)) ;;\n> +       success)\n> +               success=$(($success + $value)) ;;\n> +       failed)\n> +               failed=$(($failed + $value)) ;;\n> +       broken)\n> +               broken=$(( $broken + $value)) ;;\n> +       total)\n> +               total=$(( $total + $value)) ;;\n> +       esac\n> +done < $input\n> +\n> +printf \"%-8s%d\\n\" fixed $fixed\n> +printf \"%-8s%d\\n\" success $success\n> +printf \"%-8s%d\\n\" failed $failed\n> +printf \"%-8s%d\\n\" broken $broken\n> +printf \"%-8s%d\\n\" total $total\n> --\n> 1.5.6.rc0.dirty\n\nAwesome, what do you want to do with the other patches? I mean, this\npatch on it's own doesn't make a lot of sense, but with [1/3] and\n[3/3] I think it deserves some proper reviewing by the list.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"79078","messageId":"20080608004928.GG29404@genesis.frugalware.org","threadId":"13489","inReplyTo":"bd6139dc0806071734h16aa4218md051fbbe9f025f43@mail.gmail.com","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Miklos Vajna","fromEmail":"vmiklos@frugalware.org","sentAt":"2008-06-08T00:49:28Z","receivedAt":"2008-06-08T00:49:28Z","isPatch":true,"sender":{"key":"vmiklos@frugalware.org","avatar":"https://gravatar.com/avatar/401c1cbbb3a5d13e650c691a2c71d6fd0b80df1a01bc74d9f1972675dd58f2bd?d=mp&s=160"},"body":"On Sun, Jun 08, 2008 at 02:34:25AM +0200, Sverre Rabbelier <srabbelier@gmail.com> wrote:\n> Awesome, what do you want to do with the other patches?\n\nNothing? It's your series. :-)\n\n> I mean, this patch on it's own doesn't make a lot of sense, but with\n> [1/3] and [3/3] I think it deserves some proper reviewing by the list.\n\nSure. I would suggest:\n\n1) Remove that ugly /tmp/git-test-results, place it under t/.\n\n2) Resend a series indicating this is no longer a demonstration but a\nreal series which you want to be included. ;-)\n\nAh and it's bikesheding, but probably key_value_parser.sh is not the\nbest name for such a script. Maybe aggregate-results.sh or something\nlike that.\n"},{"id":"79080","messageId":"bd6139dc0806071756k331c9b29obc5f1cb525ef47d8@mail.gmail.com","threadId":"13489","inReplyTo":"20080608004928.GG29404@genesis.frugalware.org","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-06-08T00:56:09Z","receivedAt":"2008-06-08T00:56:09Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"On Sun, Jun 8, 2008 at 2:49 AM, Miklos Vajna <vmiklos@frugalware.org> wrote:\n> On Sun, Jun 08, 2008 at 02:34:25AM +0200, Sverre Rabbelier <srabbelier@gmail.com> wrote:\n>> Awesome, what do you want to do with the other patches?\n>\n> Nothing? It's your series. :-)\n\nHeh, I'm not sure what the protocol is here :P. I could send in the\nseries with your patch as second... that is, if I can figure out how\nto apply it from gmail (maybe you can send me the patch as attachment?\n:D).\n\n>> I mean, this patch on it's own doesn't make a lot of sense, but with\n>> [1/3] and [3/3] I think it deserves some proper reviewing by the list.\n>\n> Sure. I would suggest:\n>\n> 1) Remove that ugly /tmp/git-test-results, place it under t/.\n\nI remember trying that but it not working, which was why I put it\nthere in the first place. I'll give it a shot again tomorrow though.\n\n> 2) Resend a series indicating this is no longer a demonstration but a\n> real series which you want to be included. ;-)\n\nACK on that one ;).\n\n> Ah and it's bikesheding, but probably key_value_parser.sh is not the\n> best name for such a script. Maybe aggregate-results.sh or something\n> like that.\n\nSure, but that's what it was though, a simple key_value_parser, your\nversion is actually a result aggregator.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"79089","messageId":"20080608022656.GH29404@genesis.frugalware.org","threadId":"13489","inReplyTo":"bd6139dc0806071756k331c9b29obc5f1cb525ef47d8@mail.gmail.com","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Miklos Vajna","fromEmail":"vmiklos@frugalware.org","sentAt":"2008-06-08T02:26:56Z","receivedAt":"2008-06-08T02:26:56Z","isPatch":true,"sender":{"key":"vmiklos@frugalware.org","avatar":"https://gravatar.com/avatar/401c1cbbb3a5d13e650c691a2c71d6fd0b80df1a01bc74d9f1972675dd58f2bd?d=mp&s=160"},"body":"On Sun, Jun 08, 2008 at 02:56:09AM +0200, Sverre Rabbelier <srabbelier@gmail.com> wrote:\n> Heh, I'm not sure what the protocol is here :P. I could send in the\n> series with your patch as second... that is, if I can figure out how\n> to apply it from gmail (maybe you can send me the patch as attachment?\n> :D).\n\nOr:\n\n$ git pull git://repo.or.cz/git/vmiklos.git stat\n"},{"id":"79104","messageId":"bd6139dc0806080443g64403fa4o855809b70e367f0@mail.gmail.com","threadId":"13489","inReplyTo":"20080608022656.GH29404@genesis.frugalware.org","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-06-08T11:43:35Z","receivedAt":"2008-06-08T11:43:35Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"On Sun, Jun 8, 2008 at 4:26 AM, Miklos Vajna <vmiklos@frugalware.org> wrote:\n> On Sun, Jun 08, 2008 at 02:56:09AM +0200, Sverre Rabbelier <srabbelier@gmail.com> wrote:\n>> Heh, I'm not sure what the protocol is here :P. I could send in the\n>> series with your patch as second... that is, if I can figure out how\n>> to apply it from gmail (maybe you can send me the patch as attachment?\n>> :D).\n>\n> Or:\n>\n> $ git pull git://repo.or.cz/git/vmiklos.git stat\n\nI used the 'show original message' feature, so that I could edit it\nbefore applying. I changed the name to  aggregate-results.sh as\nsuggested and changed the path to /t/test-results. Now let's see if I\ncan make a new patch series out of this...\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"79139","messageId":"alpine.DEB.1.00.0806081826570.1783@racer","threadId":"13489","inReplyTo":"bd6139dc0806080443g64403fa4o855809b70e367f0@mail.gmail.com","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-06-08T17:27:25Z","receivedAt":"2008-06-08T17:27:25Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Sun, 8 Jun 2008, Sverre Rabbelier wrote:\n\n> I used the 'show original message' feature, so that I could edit it \n> before applying.\n\nFWIW that's what \"commit --amend\" and \"rebase --interactive\" are for.\n\nCiao,\nDscho\n"},{"id":"79140","messageId":"bd6139dc0806081030i32266a2n633f7679f4a02bb@mail.gmail.com","threadId":"13489","inReplyTo":"alpine.DEB.1.00.0806081826570.1783@racer","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-06-08T17:30:25Z","receivedAt":"2008-06-08T17:30:25Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"On Sun, Jun 8, 2008 at 7:27 PM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Sun, 8 Jun 2008, Sverre Rabbelier wrote:\n>\n>> I used the 'show original message' feature, so that I could edit it\n>> before applying.\n>\n> FWIW that's what \"commit --amend\" and \"rebase --interactive\" are for.\n\nHmmm, yeah, but can you change the filename easily with commit\n--ammend / rebase --interactive?\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"79144","messageId":"237967ef0806081106i77bec10u3d42170eeaf474e9@mail.gmail.com","threadId":"13489","inReplyTo":"bd6139dc0806081030i32266a2n633f7679f4a02bb@mail.gmail.com","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Mikael Magnusson","fromEmail":"mikachu@gmail.com","sentAt":"2008-06-08T18:06:31Z","receivedAt":"2008-06-08T18:06:31Z","isPatch":true,"sender":{"key":"mikachu@gmail.com","avatar":null},"body":"2008/6/8 Sverre Rabbelier <srabbelier@gmail.com>:\n> On Sun, Jun 8, 2008 at 7:27 PM, Johannes Schindelin\n> <Johannes.Schindelin@gmx.de> wrote:\n>> Hi,\n>>\n>> On Sun, 8 Jun 2008, Sverre Rabbelier wrote:\n>>\n>>> I used the 'show original message' feature, so that I could edit it\n>>> before applying.\n>>\n>> FWIW that's what \"commit --amend\" and \"rebase --interactive\" are for.\n>\n> Hmmm, yeah, but can you change the filename easily with commit\n> --ammend / rebase --interactive?\n\ngit mv oldname newname\ngit commit --amend ;: not --ammend\n\n-- \nMikael Magnusson\n"},{"id":"79145","messageId":"bd6139dc0806081109y69cfc09agb699b29817b4f513@mail.gmail.com","threadId":"13489","inReplyTo":"237967ef0806081106i77bec10u3d42170eeaf474e9@mail.gmail.com","subject":"Re: [PATCH] A simple script to parse the results from the testcases","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2008-06-08T18:09:22Z","receivedAt":"2008-06-08T18:09:22Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"On Sun, Jun 8, 2008 at 8:06 PM, Mikael Magnusson <mikachu@gmail.com> wrote:\n> git mv oldname newname\n> git commit --amend ;: not --ammend\n\nDetails, details.\nAh well, the way I did it seemed the most easy at the time, maybe next\ntime I'll use amend (my favorite feature in git that I usually spell\nincorrectly at least twice).\n\n\n-- \nCheers,\n\nSverre Rabbelier\n"}]}