* [PATCH] t5540-http-push.sh: avoid non-portable grep -P
@ 2009-02-26 19:49 Jay Soffian
2009-02-26 20:30 ` Junio C Hamano
0 siblings, 1 reply; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 19:49 UTC (permalink / raw)
To: git; +Cc: Jay Soffian, Tay Ray Chuan, Junio C Hamano
OS X's GNU grep does not support -P/--perl-regexp; use egrep instead,
avoiding non-portable braces ({}) as well.
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
---
t/t5540-http-push.sh | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
index 11b3432..6a255a6 100755
--- a/t/t5540-http-push.sh
+++ b/t/t5540-http-push.sh
@@ -94,9 +94,15 @@ test_expect_success 'MKCOL sends directory names with trailing slashes' '
'
+x1="[a-z0-9]"
+x2="$x1$x1"
+x5="$x1$x1$x1$x1$x1"
+x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
+x40="$x38$x2"
+
test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
- grep -P "\"(?:PUT|MOVE) .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d" \
+ egrep "\"(PUT|MOVE) .+objects/$x2/${x38}_$x40 HTTP/[0-9.]+\" 20[0-9]" \
< "$HTTPD_ROOT_PATH"/access.log
'
--
1.6.2.rc1.309.g5f417
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 19:49 [PATCH] t5540-http-push.sh: avoid non-portable grep -P Jay Soffian
@ 2009-02-26 20:30 ` Junio C Hamano
2009-02-26 20:43 ` Jay Soffian
2009-02-26 21:41 ` [PATCH v2] " Jay Soffian
0 siblings, 2 replies; 17+ messages in thread
From: Junio C Hamano @ 2009-02-26 20:30 UTC (permalink / raw)
To: Jay Soffian; +Cc: git, Tay Ray Chuan
Jay Soffian <jaysoffian@gmail.com> writes:
> OS X's GNU grep does not support -P/--perl-regexp; use egrep instead,
> avoiding non-portable braces ({}) as well.
>
> Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
> ---
> t/t5540-http-push.sh | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
> index 11b3432..6a255a6 100755
> --- a/t/t5540-http-push.sh
> +++ b/t/t5540-http-push.sh
> @@ -94,9 +94,15 @@ test_expect_success 'MKCOL sends directory names with trailing slashes' '
>
> '
>
> +x1="[a-z0-9]"
Why [a-z0-9] not [0-9a-f]?
> +x2="$x1$x1"
> +x5="$x1$x1$x1$x1$x1"
> +x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
> +x40="$x38$x2"
> +
> test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
>
> - grep -P "\"(?:PUT|MOVE) .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d" \
> + egrep "\"(PUT|MOVE) .+objects/$x2/${x38}_$x40 HTTP/[0-9.]+\" 20[0-9]" \
> < "$HTTPD_ROOT_PATH"/access.log
I'd rather see the basic BRE grep used if you are shooting for
portability.
There are some oddballs in the source (git-submodule.sh is a notable
offender) but none of the core-ish scripts uses egrep nor "grep -E".
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 20:30 ` Junio C Hamano
@ 2009-02-26 20:43 ` Jay Soffian
2009-02-26 20:46 ` Jay Soffian
2009-02-26 21:48 ` Junio C Hamano
2009-02-26 21:41 ` [PATCH v2] " Jay Soffian
1 sibling, 2 replies; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 20:43 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Tay Ray Chuan
>> +x1="[a-z0-9]"
>
> Why [a-z0-9] not [0-9a-f]?
No reason. It's just what popped out of my head.
> I'd rather see the basic BRE grep used if you are shooting for
> portability.
>
> There are some oddballs in the source (git-submodule.sh is a notable
> offender) but none of the core-ish scripts uses egrep nor "grep -E".
Sigh, I just wanted the test to pass. I did a check to see if any
other tests were already using egrep, and when I found that they were,
I thought that would be good enough.
Originally I had switched to perl. Would you prefer:
diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
index 11b3432..a53fe0d 100755
--- a/t/t5540-http-push.sh
+++ b/t/t5540-http-push.sh
@@ -96,8 +96,8 @@ test_expect_success 'MKCOL sends directory names
with trailing slashes' '
test_expect_success 'PUT and MOVE sends object to URLs with SHA-1
hash suffix' '
- grep -P "\"(?:PUT|MOVE)
.+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d" \
- < "$HTTPD_ROOT_PATH"/access.log
+ test $(perl -ne "print if m{\"(?:PUT|MOVE)
.+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d}" \
+ < "$HTTPD_ROOT_PATH"/access.log | wc -l) -gt 0
'
?
j.
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 20:43 ` Jay Soffian
@ 2009-02-26 20:46 ` Jay Soffian
2009-02-26 21:48 ` Junio C Hamano
1 sibling, 0 replies; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 20:46 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Tay Ray Chuan
On Thu, Feb 26, 2009 at 3:43 PM, Jay Soffian <jaysoffian@gmail.com> wrote:
> Originally I had switched to perl. Would you prefer:
>
> diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
> index 11b3432..a53fe0d 100755
> --- a/t/t5540-http-push.sh
> +++ b/t/t5540-http-push.sh
> @@ -96,8 +96,8 @@ test_expect_success 'MKCOL sends directory names
> with trailing slashes' '
>
> test_expect_success 'PUT and MOVE sends object to URLs with SHA-1
> hash suffix' '
>
> - grep -P "\"(?:PUT|MOVE)
> .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d" \
> - < "$HTTPD_ROOT_PATH"/access.log
> + test $(perl -ne "print if m{\"(?:PUT|MOVE)
> .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d}" \
> + < "$HTTPD_ROOT_PATH"/access.log | wc -l) -gt 0
>
> '
gmail mangled the lines. Sorry about that.
BTW, I was not aiming for "portable" to the extent that git is
portable, I was aiming for "portable enough" to the extent that the
test suite is portable. :-)
Let me know if the perl above is okay, or if you'd prefer a basic RE
and I'll send a new patch.
j.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v2] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 20:30 ` Junio C Hamano
2009-02-26 20:43 ` Jay Soffian
@ 2009-02-26 21:41 ` Jay Soffian
1 sibling, 0 replies; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 21:41 UTC (permalink / raw)
To: git; +Cc: Jay Soffian, Tay Ray Chuan, Junio C Hamano
OS X's GNU grep does not support -P/--perl-regexp; use basic REs instead.
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
---
t/t5540-http-push.sh | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
index 11b3432..a2e9384 100755
--- a/t/t5540-http-push.sh
+++ b/t/t5540-http-push.sh
@@ -94,10 +94,15 @@ test_expect_success 'MKCOL sends directory names with trailing slashes' '
'
-test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
+x1="[0-9a-z]"
+x2="$x1$x1"
+x5="$x1$x1$x1$x1$x1"
+x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
+x40="$x38$x2"
- grep -P "\"(?:PUT|MOVE) .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d" \
- < "$HTTPD_ROOT_PATH"/access.log
+test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
+ sed -e "s/PUT/OP/" -e "s/MOVE/OP/" < "$HTTPD_ROOT_PATH"/access.log \
+ | grep "\"OP .\{1,\}objects/$x2/${x38}_$x40 HTTP/[0-9.]\{1,\}\" 20[0-9]"
'
--
1.6.2.rc1.309.g5f417
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 20:43 ` Jay Soffian
2009-02-26 20:46 ` Jay Soffian
@ 2009-02-26 21:48 ` Junio C Hamano
2009-02-26 22:19 ` Jay Soffian
1 sibling, 1 reply; 17+ messages in thread
From: Junio C Hamano @ 2009-02-26 21:48 UTC (permalink / raw)
To: Jay Soffian; +Cc: git, Tay Ray Chuan
Jay Soffian <jaysoffian@gmail.com> writes:
>>> +x1="[a-z0-9]"
>>
>> Why [a-z0-9] not [0-9a-f]?
>
> No reason. It's just what popped out of my head.
>
>> I'd rather see the basic BRE grep used if you are shooting for
>> portability.
>>
>> There are some oddballs in the source (git-submodule.sh is a notable
>> offender) but none of the core-ish scripts uses egrep nor "grep -E".
>
> Sigh, I just wanted the test to pass. I did a check to see if any
> other tests were already using egrep, and when I found that they were,
> I thought that would be good enough.
>
> Originally I had switched to perl. Would you prefer:
Not really.
If we are fixing it we should do it right. The regexp you inherited seem
somewhat suboptimal, too.
"(?:PUT|MOVE) .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+" 20\d"
- It has a double-quote. can it be anywhere or only at the beginning (if
so "^" is missing at the beginning -- I didn't check)?
- We then expect PUT or MOVE; Ok (that's "\(PUT\|MOVE\)").
- We then expect one space and one or more garbage before we see
"objects/"; do we really care if it is one-or-more garbage, or is it
zero-or-more garbage? Don't we want to see slash before "objects/" (I
think we do)?
- Then we expect objects/ and two hexdigits that should be spelled as
[0-9a-f]{2} or [0-9a-f][0-9a-f] (or $x2).
- Then we expect / and thiry-eight hexdigits, underscore and then 40
hexdigits (I think your $x38 and $x40 are fine);
- Then we expect exactly one SP followed by HTTP/ (Ok);
- And version can be one-or-more of [0-9.]; do we really allow
HTTP/..999?, or we don't care? I think we shouldn't care, and in that
case I think [.0-9]* is good enough here;
So perhaps define a variable:
good="\"\(PUT\|MOVE\) .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*" 20[0-9]\""
and grep for it?
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 21:48 ` Junio C Hamano
@ 2009-02-26 22:19 ` Jay Soffian
2009-02-26 22:37 ` Junio C Hamano
0 siblings, 1 reply; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 22:19 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Tay Ray Chuan
On Thu, Feb 26, 2009 at 4:48 PM, Junio C Hamano <gitster@pobox.com> wrote:
> So perhaps define a variable:
>
> good="\"\(PUT\|MOVE\) .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*" 20[0-9]\""
>
> and grep for it?
Hmpfh. According to my re_format man page:
Obsolete (``basic'') regular expressions differ in several respects.
`|' is an ordinary character and there is no equivalent for its
functionality.
j.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 22:19 ` Jay Soffian
@ 2009-02-26 22:37 ` Junio C Hamano
2009-02-26 22:40 ` Jay Soffian
0 siblings, 1 reply; 17+ messages in thread
From: Junio C Hamano @ 2009-02-26 22:37 UTC (permalink / raw)
To: Jay Soffian; +Cc: git, Tay Ray Chuan
Jay Soffian <jaysoffian@gmail.com> writes:
> On Thu, Feb 26, 2009 at 4:48 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> So perhaps define a variable:
>>
>> good="\"\(PUT\|MOVE\) .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*" 20[0-9]\""
>>
>> and grep for it?
>
> Hmpfh. According to my re_format man page:
>
> Obsolete (``basic'') regular expressions differ in several respects.
> `|' is an ordinary character and there is no equivalent for its
> functionality.
Ahh, you are right; there is no '|'-alternation in BRE.
We of course could do something like:
good=" .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*" 20[0-9]\""
grep -e "\"PUT $good" -e "\"MOVE $good"
But that's too ugly.
I don't mind Perl as we already depend on it; the looseness of the regexp
stil bothers me somewhat, though...
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 22:37 ` Junio C Hamano
@ 2009-02-26 22:40 ` Jay Soffian
2009-02-26 22:45 ` [PATCH v3] " Jay Soffian
2009-02-26 23:29 ` [PATCH] " Junio C Hamano
0 siblings, 2 replies; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 22:40 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Tay Ray Chuan
On Thu, Feb 26, 2009 at 5:37 PM, Junio C Hamano <gitster@pobox.com> wrote:
> I don't mind Perl as we already depend on it; the looseness of the regexp
> stil bothers me somewhat, though...
I think you're letting the perfect be the enemy of the good. The point
of the test is merely to check for the SHA-1 has suffix in PUT/MOVE
operations. Any of my suggestions so far are better than what is there
now. Why so much fuss?
I'll send one more iteration, and if that's not good enough, I give up.
j.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v3] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 22:40 ` Jay Soffian
@ 2009-02-26 22:45 ` Jay Soffian
2009-02-26 23:29 ` [PATCH] " Junio C Hamano
1 sibling, 0 replies; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 22:45 UTC (permalink / raw)
To: git; +Cc: Jay Soffian, Tay Ray Chuan, Junio C Hamano
OS X's GNU grep does not support -P/--perl-regexp.
We use a basic RE instead, and simplify the pattern slightly by
replacing '+' with '*' so it can be more easily expressed using a basic
RE. The important part of pattern, checking for a SHA-1 has suffix in
the successful PUT/MOVE operations, remains the same. Here are samples
of what we want to match:
127.0.0.1 - - [26/Feb/2009:22:38:13 +0000] "PUT /test_repo.git/objects/3e/a4fbb9e18a401a6463c595d08118fcb9fb7426_fab55116904c665a95438bcc78521444a7db6096 HTTP/1.1" 201 277
127.0.0.1 - - [26/Feb/2009:22:38:13 +0000] "MOVE /test_repo.git/objects/3e/a4fbb9e18a401a6463c595d08118fcb9fb7426_fab55116904c665a95438bcc78521444a7db6096 HTTP/1.1" 201 277
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
---
Junio,
This is the best I can do. If it's not good enough, and you'd rather
have the existing non-portable grep -P, so be it.
t/t5540-http-push.sh | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
index 11b3432..470bca3 100755
--- a/t/t5540-http-push.sh
+++ b/t/t5540-http-push.sh
@@ -94,10 +94,15 @@ test_expect_success 'MKCOL sends directory names with trailing slashes' '
'
-test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
+x1="[0-9a-z]"
+x2="$x1$x1"
+x5="$x1$x1$x1$x1$x1"
+x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
+x40="$x38$x2"
- grep -P "\"(?:PUT|MOVE) .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d" \
- < "$HTTPD_ROOT_PATH"/access.log
+test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
+ sed -e "s/PUT/OP/" -e "s/MOVE/OP/" < "$HTTPD_ROOT_PATH"/access.log \
+ | grep "\"OP .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*\" 20[0-9]"
'
--
1.6.2.rc1.309.g5f417
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 22:40 ` Jay Soffian
2009-02-26 22:45 ` [PATCH v3] " Jay Soffian
@ 2009-02-26 23:29 ` Junio C Hamano
2009-02-26 23:40 ` Jay Soffian
` (2 more replies)
1 sibling, 3 replies; 17+ messages in thread
From: Junio C Hamano @ 2009-02-26 23:29 UTC (permalink / raw)
To: Jay Soffian; +Cc: git, Tay Ray Chuan
Jay Soffian <jaysoffian@gmail.com> writes:
> On Thu, Feb 26, 2009 at 5:37 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> I don't mind Perl as we already depend on it; the looseness of the regexp
>> stil bothers me somewhat, though...
>
> I think you're letting the perfect be the enemy of the good. The point
> of the test is merely to check for the SHA-1 has suffix in PUT/MOVE
> operations. Any of my suggestions so far are better than what is there
> now. Why so much fuss?
>
> I'll send one more iteration, and if that's not good enough, I give up.
>
> j.
Heh, at least with /a-z/a-f/, I think it is usable.
Or is there a reason I am missing that we want to allow g-z there?
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 23:29 ` [PATCH] " Junio C Hamano
@ 2009-02-26 23:40 ` Jay Soffian
2009-02-26 23:44 ` [PATCH v4] " Jay Soffian
2009-02-26 23:51 ` [PATCH] " Brandon Casey
2 siblings, 0 replies; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 23:40 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Tay Ray Chuan
On Thu, Feb 26, 2009 at 6:29 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Heh, at least with /a-z/a-f/, I think it is usable.
>
> Or is there a reason I am missing that we want to allow g-z there?
OMG, I didn't even notice that until this message. When you asked:
> Why [a-z0-9] not [0-9a-f]?
I noticed only that you had flipped the relative positions of the
alphas and the digits, no that you had also a-z to a-f. Please squash
this on top of the last patch I sent:
diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
index 470bca3..bd45203 100755
--- a/t/t5540-http-push.sh
+++ b/t/t5540-http-push.sh
@@ -94,7 +94,7 @@ test_expect_success 'MKCOL sends directory names
with trailing slashes' '
'
-x1="[0-9a-z]"
+x1="[0-9a-f]"
x2="$x1$x1"
x5="$x1$x1$x1$x1$x1"
x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
Sheesh.
j.
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 23:29 ` [PATCH] " Junio C Hamano
2009-02-26 23:40 ` Jay Soffian
@ 2009-02-26 23:44 ` Jay Soffian
2009-02-26 23:51 ` [PATCH] " Brandon Casey
2 siblings, 0 replies; 17+ messages in thread
From: Jay Soffian @ 2009-02-26 23:44 UTC (permalink / raw)
To: git; +Cc: Jay Soffian, Tay Ray Chuan, Junio C Hamano
OS X's GNU grep does not support -P/--perl-regexp.
We use a basic RE instead, and simplify the pattern slightly by
replacing '+' with '*' so it can be more easily expressed using a basic
RE. The important part of pattern, checking for a SHA-1 has suffix in
the successful PUT/MOVE operations, remains the same. Also, a-z instead
of a-f was an obvious mistake in the original RE. Here are samples of
what we want to match:
127.0.0.1 - - [26/Feb/2009:22:38:13 +0000] "PUT /test_repo.git/objects/3e/a4fbb9e18a401a6463c595d08118fcb9fb7426_fab55116904c665a95438bcc78521444a7db6096 HTTP/1.1" 201 277
127.0.0.1 - - [26/Feb/2009:22:38:13 +0000] "MOVE /test_repo.git/objects/3e/a4fbb9e18a401a6463c595d08118fcb9fb7426_fab55116904c665a95438bcc78521444a7db6096 HTTP/1.1" 201 277
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
---
On Thu, Feb 26, 2009 at 6:29 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Heh, at least with /a-z/a-f/, I think it is usable.
>
> Or is there a reason I am missing that we want to allow g-z there?
I can't believe I didn't notice that. This is really really my last
send. I noticed gmail line wrapped my squash, so I'm resending properly.
Updated the commit note as well to mention the change from a-z to a-f is
on purpose.
j.
t/t5540-http-push.sh | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
index 11b3432..bd45203 100755
--- a/t/t5540-http-push.sh
+++ b/t/t5540-http-push.sh
@@ -94,10 +94,15 @@ test_expect_success 'MKCOL sends directory names with trailing slashes' '
'
-test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
+x1="[0-9a-f]"
+x2="$x1$x1"
+x5="$x1$x1$x1$x1$x1"
+x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
+x40="$x38$x2"
- grep -P "\"(?:PUT|MOVE) .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d" \
- < "$HTTPD_ROOT_PATH"/access.log
+test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
+ sed -e "s/PUT/OP/" -e "s/MOVE/OP/" < "$HTTPD_ROOT_PATH"/access.log \
+ | grep "\"OP .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*\" 20[0-9]"
'
--
1.6.2.rc1.309.g5f417
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 23:29 ` [PATCH] " Junio C Hamano
2009-02-26 23:40 ` Jay Soffian
2009-02-26 23:44 ` [PATCH v4] " Jay Soffian
@ 2009-02-26 23:51 ` Brandon Casey
2009-02-26 23:58 ` Johannes Schindelin
2 siblings, 1 reply; 17+ messages in thread
From: Brandon Casey @ 2009-02-26 23:51 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jay Soffian, git, Tay Ray Chuan
Junio C Hamano wrote:
> Jay Soffian <jaysoffian@gmail.com> writes:
>
>> On Thu, Feb 26, 2009 at 5:37 PM, Junio C Hamano <gitster@pobox.com> wrote:
>>> I don't mind Perl as we already depend on it; the looseness of the regexp
>>> stil bothers me somewhat, though...
>> I think you're letting the perfect be the enemy of the good. The point
>> of the test is merely to check for the SHA-1 has suffix in PUT/MOVE
>> operations. Any of my suggestions so far are better than what is there
>> now. Why so much fuss?
>>
>> I'll send one more iteration, and if that's not good enough, I give up.
>>
>> j.
>
> Heh, at least with /a-z/a-f/, I think it is usable.
Two minor style issues can also be fixed.
I think the file name can be specified as an argument to sed rather than using
the shell's redirection mechanism.
sed -e 'script' input-file
rather than
sed -e 'script' < input-file
I think /that/, and moving the pipe character to the end of the sed line so that
you don't need to escape the newline will conform to git scripting style so it
becomes:
sed -e "s/PUT/OP/" -e "s/MOVE/OP/" "$HTTPD_ROOT_PATH"/access.log |
grep "\"OP .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*\" 20[0-9]"
-brandon
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 23:51 ` [PATCH] " Brandon Casey
@ 2009-02-26 23:58 ` Johannes Schindelin
2009-02-27 0:12 ` Brandon Casey
0 siblings, 1 reply; 17+ messages in thread
From: Johannes Schindelin @ 2009-02-26 23:58 UTC (permalink / raw)
To: Brandon Casey; +Cc: Junio C Hamano, Jay Soffian, git, Tay Ray Chuan
Hi,
On Thu, 26 Feb 2009, Brandon Casey wrote:
> sed -e 'script' input-file
>
> rather than
>
> sed -e 'script' < input-file
What should make the former more preferable to the latter?
Especially given that the latter way is preferable with other commands (at
least as far as our test suite is concerned), such as grep, because you do
not get the file name as part of the result?
And especially given that sed means _stream_ editor, not file editor?
Ciao,
Dscho
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-26 23:58 ` Johannes Schindelin
@ 2009-02-27 0:12 ` Brandon Casey
2009-02-27 0:24 ` Junio C Hamano
0 siblings, 1 reply; 17+ messages in thread
From: Brandon Casey @ 2009-02-27 0:12 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Junio C Hamano, Jay Soffian, git, Tay Ray Chuan
Johannes Schindelin wrote:
> Hi,
>
> On Thu, 26 Feb 2009, Brandon Casey wrote:
>
>> sed -e 'script' input-file
>>
>> rather than
>>
>> sed -e 'script' < input-file
>
> What should make the former more preferable to the latter?
It's less complex, but as you describe in the next paragraph, if the
file name is not desired in the result then the latter is preferable.
I initially viewed the latter form as a useless use of cat, equivalent
to:
cat input-file | sed -e 'script'
> Especially given that the latter way is preferable with other commands (at
> least as far as our test suite is concerned), such as grep, because you do
> not get the file name as part of the result?
>
> And especially given that sed means _stream_ editor, not file editor?
especially? Your first argument is valid, but this last sentence means nothing.
-brandon
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
2009-02-27 0:12 ` Brandon Casey
@ 2009-02-27 0:24 ` Junio C Hamano
0 siblings, 0 replies; 17+ messages in thread
From: Junio C Hamano @ 2009-02-27 0:24 UTC (permalink / raw)
To: Brandon Casey; +Cc: Johannes Schindelin, Jay Soffian, git, Tay Ray Chuan
Brandon Casey <casey@nrlssc.navy.mil> writes:
> Johannes Schindelin wrote:
>> Hi,
>>
>> On Thu, 26 Feb 2009, Brandon Casey wrote:
>>
>>> sed -e 'script' input-file
>>>
>>> rather than
>>>
>>> sed -e 'script' < input-file
>>
>> What should make the former more preferable to the latter?
>
> It's less complex, but as you describe in the next paragraph, if the
> file name is not desired in the result then the latter is preferable.
> I initially viewed the latter form as a useless use of cat, equivalent
> to:
>
> cat input-file | sed -e 'script'
>
>> Especially given that the latter way is preferable with other commands (at
>> least as far as our test suite is concerned), such as grep, because you do
>> not get the file name as part of the result?
>>
>> And especially given that sed means _stream_ editor, not file editor?
>
> especially? Your first argument is valid, but this last sentence means nothing.
>
Ok, ok, I heard all of you. I think "sed -e 'script' file" is better
because it is one letter shorter than with "<" rediretion, nothing else.
I merely was shooting for rejecting an obvious crap, not aiming for
perfection.
Here is the final one. Let's stop wasting time and go on with our lives
;-)
Thanks.
-- >8 --
From: Jay Soffian <jaysoffian@gmail.com>
Date: Thu, 26 Feb 2009 18:44:40 -0500
Subject: [PATCH] t5540-http-push.sh: avoid non-portable grep -P
OS X's GNU grep does not support -P/--perl-regexp.
We use a basic RE instead, and simplify the pattern slightly by
replacing '+' with '*' so it can be more easily expressed using a basic
RE. The important part of pattern, checking for a SHA-1 has suffix in
the successful PUT/MOVE operations, remains the same. Also, a-z instead
of a-f was an obvious mistake in the original RE. Here are samples of
what we want to match:
127.0.0.1 - - [26/Feb/2009:22:38:13 +0000] "PUT /test_repo.git/objects/3e/a4fbb9e18a401a6463c595d08118fcb9fb7426_fab55116904c665a95438bcc78521444a7db6096 HTTP/1.1" 201 277
127.0.0.1 - - [26/Feb/2009:22:38:13 +0000] "MOVE /test_repo.git/objects/3e/a4fbb9e18a401a6463c595d08118fcb9fb7426_fab55116904c665a95438bcc78521444a7db6096 HTTP/1.1" 201 277
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
t/t5540-http-push.sh | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
index 11b3432..10e5fd0 100755
--- a/t/t5540-http-push.sh
+++ b/t/t5540-http-push.sh
@@ -94,10 +94,15 @@ test_expect_success 'MKCOL sends directory names with trailing slashes' '
'
-test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
+x1="[0-9a-f]"
+x2="$x1$x1"
+x5="$x1$x1$x1$x1$x1"
+x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
+x40="$x38$x2"
- grep -P "\"(?:PUT|MOVE) .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+\" 20\d" \
- < "$HTTPD_ROOT_PATH"/access.log
+test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
+ sed -e "s/PUT /OP /" -e "s/MOVE /OP /" "$HTTPD_ROOT_PATH"/access.log |
+ grep -e "\"OP .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*\" 20[0-9] "
'
--
1.6.2.rc2.91.gf9a36
^ permalink raw reply related [flat|nested] 17+ messages in thread
end of thread, other threads:[~2009-02-27 0:25 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-26 19:49 [PATCH] t5540-http-push.sh: avoid non-portable grep -P Jay Soffian
2009-02-26 20:30 ` Junio C Hamano
2009-02-26 20:43 ` Jay Soffian
2009-02-26 20:46 ` Jay Soffian
2009-02-26 21:48 ` Junio C Hamano
2009-02-26 22:19 ` Jay Soffian
2009-02-26 22:37 ` Junio C Hamano
2009-02-26 22:40 ` Jay Soffian
2009-02-26 22:45 ` [PATCH v3] " Jay Soffian
2009-02-26 23:29 ` [PATCH] " Junio C Hamano
2009-02-26 23:40 ` Jay Soffian
2009-02-26 23:44 ` [PATCH v4] " Jay Soffian
2009-02-26 23:51 ` [PATCH] " Brandon Casey
2009-02-26 23:58 ` Johannes Schindelin
2009-02-27 0:12 ` Brandon Casey
2009-02-27 0:24 ` Junio C Hamano
2009-02-26 21:41 ` [PATCH v2] " Jay Soffian
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.