[PATCH v4 00/12] Wildmatch v4

2012-10-10 Thread Nguyễn Thái Ngọc Duy
Really small updates. I did not want to resend it this soon but this
may fix the compile errors for Junio. Changes are

 - cleanup in wildmatch.c so #include "cache.h" is at the top of the
   file.

 - wildmatch() returns no match if it encounters "**" without
   surrounding slashes. It returns a special code so we can actually
   show a warning at higher level. I don't want to do that now
   because I want to mark the pattern "broken" in attr.c/dir.c so
   the pattern will never be used again, and the message shown only
   once. That needs nd/attr-match-optim-more, but I don't want to tie
   this series to that just yet.

Nguyễn Thái Ngọc Duy (12):
  ctype: make sane_ctype[] const array
  ctype: support iscntrl, ispunct, isxdigit and isprint
  Import wildmatch from rsync
  wildmatch: remove unnecessary functions
  Integrate wildmatch to git
  wildmatch: make wildmatch's return value compatible with fnmatch
  wildmatch: remove static variable force_lower_case
  wildmatch: fix case-insensitive matching
  wildmatch: adjust "**" behavior
  wildmatch: make /**/ match zero or more directories
  Support "**" wildcard in .gitignore and .gitattributes
  t3070: disable two fnmatch tests that have different results on
different libc

 .gitignore |   1 +
 Documentation/gitattributes.txt|   6 +
 Documentation/gitignore.txt|  19 +++
 Makefile   |   3 +
 attr.c |   4 +-
 ctype.c|  20 +++-
 dir.c  |   4 +-
 git-compat-util.h  |  15 ++-
 t/t0003-attributes.sh  |  38 ++
 t/t3001-ls-files-others-exclude.sh |  19 +++
 t/t3070-wildmatch.sh   | 187 +
 test-wildmatch.c   |  14 +++
 wildmatch.c| 240 +
 wildmatch.h|   9 ++
 14 files changed, 575 insertions(+), 4 deletions(-)
 create mode 100755 t/t3070-wildmatch.sh
 create mode 100644 test-wildmatch.c
 create mode 100644 wildmatch.c
 create mode 100644 wildmatch.h

-- 
1.7.12.1.406.g6ab07c4

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


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-10 Thread Junio C Hamano
Nguyễn Thái Ngọc Duy   writes:

> Really small updates. I did not want to resend it this soon but this
> may fix the compile errors for Junio.

Thanks; queued and pushed out on 'pu'.  Comments later.

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


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-10 Thread Junio C Hamano
Junio C Hamano  writes:

> Nguyễn Thái Ngọc Duy   writes:
>
>> Really small updates. I did not want to resend it this soon but this
>> may fix the compile errors for Junio.

t3070 seems to break TAP,

*** prove ***
t3070-wildmatch.sh .. Failed 1/151 subtests 

Test Summary Report
---
t3070-wildmatch.sh (Wstat: 0 Tests: 150 Failed: 0)
  Parse errors: Tests out of sequence.  Found (76) but expected (75)
Tests out of sequence.  Found (77) but expected (76)
Tests out of sequence.  Found (78) but expected (77)
Tests out of sequence.  Found (79) but expected (78)
Tests out of sequence.  Found (80) but expected (79)
Displayed the first 5 of 77 TAP syntax errors.

This probably is due to this part of the output:

ok 72 - wildmatch 1 1 [ab] [\[:]ab]
ok 73 - wildmatch 1 1 ?a?b \??\?b
ok 74 - wildmatch 1 1 abc ^G^Hok 75 - wildmatch 0 0 foo 
ok 76 - wildmatch 1 0 foo/bar/baz/to **/t[o]
ok 77 - wildmatch 1 1 a1B [[:alpha:]][[:digit:]][[:upper:]]

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


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-11 Thread Nguyen Thai Ngoc Duy
On Thu, Oct 11, 2012 at 11:33 AM, Junio C Hamano  wrote:
> Junio C Hamano  writes:
>
>> Nguyễn Thái Ngọc Duy   writes:
>>
>>> Really small updates. I did not want to resend it this soon but this
>>> may fix the compile errors for Junio.
>
> t3070 seems to break TAP,
>
> *** prove ***
> t3070-wildmatch.sh .. Failed 1/151 subtests
>
> Test Summary Report
> ---
> t3070-wildmatch.sh (Wstat: 0 Tests: 150 Failed: 0)
>   Parse errors: Tests out of sequence.  Found (76) but expected (75)
> Tests out of sequence.  Found (77) but expected (76)
> Tests out of sequence.  Found (78) but expected (77)
> Tests out of sequence.  Found (79) but expected (78)
> Tests out of sequence.  Found (80) but expected (79)
> Displayed the first 5 of 77 TAP syntax errors.
>
> This probably is due to this part of the output:
>
> ok 72 - wildmatch 1 1 [ab] [\[:]ab]
> ok 73 - wildmatch 1 1 ?a?b \??\?b
> ok 74 - wildmatch 1 1 abc ^G^Hok 75 - wildmatch 0 0 foo
> ok 76 - wildmatch 1 0 foo/bar/baz/to **/t[o]
> ok 77 - wildmatch 1 1 a1B [[:alpha:]][[:digit:]][[:upper:]]
>

It seems to prove fine here with perl 5.12.3, Test-Harness-3.230,
bash-4.0_p38. What version do you use?
-- 
Duy
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-11 Thread Junio C Hamano
Nguyen Thai Ngoc Duy  writes:

> On Thu, Oct 11, 2012 at 11:33 AM, Junio C Hamano  wrote:
>> Junio C Hamano  writes:
>>
>>> Nguyễn Thái Ngọc Duy   writes:
>>>
 Really small updates. I did not want to resend it this soon but this
 may fix the compile errors for Junio.
>>
>> t3070 seems to break TAP,
>>
>> *** prove ***
>> t3070-wildmatch.sh .. Failed 1/151 subtests
>>
>> Test Summary Report
>> ---
>> t3070-wildmatch.sh (Wstat: 0 Tests: 150 Failed: 0)
>>   Parse errors: Tests out of sequence.  Found (76) but expected (75)
>> Tests out of sequence.  Found (77) but expected (76)
>> Tests out of sequence.  Found (78) but expected (77)
>> Tests out of sequence.  Found (79) but expected (78)
>> Tests out of sequence.  Found (80) but expected (79)
>> Displayed the first 5 of 77 TAP syntax errors.
>>
>> This probably is due to this part of the output:
>>
>> ok 72 - wildmatch 1 1 [ab] [\[:]ab]
>> ok 73 - wildmatch 1 1 ?a?b \??\?b
>> ok 74 - wildmatch 1 1 abc ^G^Hok 75 - wildmatch 0 0 foo
>> ok 76 - wildmatch 1 0 foo/bar/baz/to **/t[o]
>> ok 77 - wildmatch 1 1 a1B [[:alpha:]][[:digit:]][[:upper:]]
>>
>
> It seems to prove fine here with perl 5.12.3, Test-Harness-3.230,
> bash-4.0_p38. What version do you use?

I seem to have Perl 5.10.1, Test::Harness 3.17, Dash 0.5.5.1.  But
as you can see above, what is _fed_ to the Perl-side is broken
(notice the concatenation at the end of "ok 74"), so I do not think
versions of Perl-side matters.

I suspect that this is the immediate culprit:

match 1 1 'abc' '\a\b\c'

The symptom looks like that somebody is interpreting \a as BEL, \b
as backspace, etc. when showing the "ok ..." line, no?


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


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-11 Thread Junio C Hamano
Junio C Hamano  writes:

>>> This probably is due to this part of the output:
>>>
>>> ok 72 - wildmatch 1 1 [ab] [\[:]ab]
>>> ok 73 - wildmatch 1 1 ?a?b \??\?b
>>> ok 74 - wildmatch 1 1 abc ^G^Hok 75 - wildmatch 0 0 foo
>>> ok 76 - wildmatch 1 0 foo/bar/baz/to **/t[o]
>>> ok 77 - wildmatch 1 1 a1B [[:alpha:]][[:digit:]][[:upper:]]
>> ...
>
> I suspect that this is the immediate culprit:
>
> match 1 1 'abc' '\a\b\c'
>
> The symptom looks like that somebody is interpreting \a as BEL, \b
> as backspace, etc. when showing the "ok ..." line, no?

Ahh, it must be this bits from t/test-lib.sh

 t/test-lib.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git i/t/test-lib.sh w/t/test-lib.sh
index 514282c..489bc80 100644
--- i/t/test-lib.sh
+++ w/t/test-lib.sh
@@ -230,7 +230,7 @@ else
say_color() {
test -z "$1" && test -n "$quiet" && return
shift
-   echo "$*"
+   printf "%s\n" "$*"
}
 fi
 
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-11 Thread Junio C Hamano
Junio C Hamano  writes:

> Ahh, it must be this bits from t/test-lib.sh
>
>  t/test-lib.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git i/t/test-lib.sh w/t/test-lib.sh
> index 514282c..489bc80 100644
> --- i/t/test-lib.sh
> +++ w/t/test-lib.sh
> @@ -230,7 +230,7 @@ else
>   say_color() {
>   test -z "$1" && test -n "$quiet" && return
>   shift
> - echo "$*"
> + printf "%s\n" "$*"
>   }
>  fi

I'll queue this fix separately before your series on 'pu'.

-- >8 --
Subject: [PATCH] test-lib: Fix say_color () not to interpret \a\b\c in the 
message

When running with color disabled (e.g. under prove to produce TAP
output), say_color() helper function is defined to use echo to show
the message.  With a message that ends with "\c", echo is allowed to
interpret it as "Do not end the line with LF".

Use printf "%s\n" to emit the message literally.

Signed-off-by: Junio C Hamano 
---
 t/test-lib.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/test-lib.sh b/t/test-lib.sh
index c0d04c4..280b3aa 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -169,7 +169,7 @@ else
say_color() {
test -z "$1" && test -n "$quiet" && return
shift
-   echo "$*"
+   printf "%s\n" "$*"
}
 fi
 
-- 
1.8.0.rc1.82.ga68bb49
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-12 Thread Torsten Bögershausen
On 11.10.12 13:56, Nguyen Thai Ngoc Duy wrote:
> On Thu, Oct 11, 2012 at 11:33 AM, Junio C Hamano  wrote:
>> Junio C Hamano  writes:
>>
>>> Nguyễn Thái Ngọc Duy   writes:
>>>
 Really small updates. I did not want to resend it this soon but this
 may fix the compile errors for Junio.
>>
>> t3070 seems to break TAP,
>>
>> *** prove ***
>> t3070-wildmatch.sh .. Failed 1/151 subtests
>>
>> Test Summary Report
>> ---
>> t3070-wildmatch.sh (Wstat: 0 Tests: 150 Failed: 0)
>>   Parse errors: Tests out of sequence.  Found (76) but expected (75)
>> Tests out of sequence.  Found (77) but expected (76)
>> Tests out of sequence.  Found (78) but expected (77)
>> Tests out of sequence.  Found (79) but expected (78)
>> Tests out of sequence.  Found (80) but expected (79)
>> Displayed the first 5 of 77 TAP syntax errors.
>>
>> This probably is due to this part of the output:
>>
>> ok 72 - wildmatch 1 1 [ab] [\[:]ab]
>> ok 73 - wildmatch 1 1 ?a?b \??\?b
>> ok 74 - wildmatch 1 1 abc ^G^Hok 75 - wildmatch 0 0 foo
>> ok 76 - wildmatch 1 0 foo/bar/baz/to **/t[o]
>> ok 77 - wildmatch 1 1 a1B [[:alpha:]][[:digit:]][[:upper:]]
>>
> 
> It seems to prove fine here with perl 5.12.3, Test-Harness-3.230,
> bash-4.0_p38. What version do you use?
> 
Some problems even here (Mac OS) commit 2aeb6d4d7884f4c4425

not ok 61 - wildmatch 0 0 \ \
not ok 62 - wildmatch 0 0 /\ */\
not ok 69 - wildmatch 1 1 [ab] [[:]ab]
not ok 71 - wildmatch 1 1 [ab] [[:digit]ab]
not ok 80 - wildmatch 1 0 1 [[:digit:][:upper:][:space:]]
not ok 81 - wildmatch 0 0 1 [[:digit:][:upper:][:spaci:]]
not ok 88 - wildmatch 1 0 _ 
[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]
not ok 89 - wildmatch 1 0 _ 
[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]
not ok 93 - wildmatch 1 1 y [a-c[:digit:]x-z]

I have 2 perls, I'm not sure which versin is used by git these days.

 which perl
/opt/local/bin/perl
tb@birne:~/projects/git/git.pu/t> perl --version

This is perl, v5.8.9 built for darwin-2level


/usr/bin/perl --version

This is perl, v5.10.0 built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)
--

If I can do more debugging/testing please let me know
/Torsten





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


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-12 Thread Junio C Hamano
Torsten Bögershausen  writes:

> On 11.10.12 13:56, Nguyen Thai Ngoc Duy wrote:
>> On Thu, Oct 11, 2012 at 11:33 AM, Junio C Hamano  wrote:
>>> Junio C Hamano  writes:
>>>
 Nguyễn Thái Ngọc Duy   writes:

> Really small updates. I did not want to resend it this soon but this
> may fix the compile errors for Junio.
>>>
>>> t3070 seems to break TAP,
>>>
>>> *** prove ***
>>> t3070-wildmatch.sh .. Failed 1/151 subtests
>>>
>>> Test Summary Report
>>> ---
>>> t3070-wildmatch.sh (Wstat: 0 Tests: 150 Failed: 0)
>>>   Parse errors: Tests out of sequence.  Found (76) but expected (75)
>>> Tests out of sequence.  Found (77) but expected (76)
>>> Tests out of sequence.  Found (78) but expected (77)
>>> Tests out of sequence.  Found (79) but expected (78)
>>> Tests out of sequence.  Found (80) but expected (79)
>>> Displayed the first 5 of 77 TAP syntax errors.
>>>
>>> This probably is due to this part of the output:
>>>
>>> ok 72 - wildmatch 1 1 [ab] [\[:]ab]
>>> ok 73 - wildmatch 1 1 ?a?b \??\?b
>>> ok 74 - wildmatch 1 1 abc ^G^Hok 75 - wildmatch 0 0 foo
>>> ok 76 - wildmatch 1 0 foo/bar/baz/to **/t[o]
>>> ok 77 - wildmatch 1 1 a1B [[:alpha:]][[:digit:]][[:upper:]]
>>>
>> 
>> It seems to prove fine here with perl 5.12.3, Test-Harness-3.230,
>> bash-4.0_p38. What version do you use?
>> 
> Some problems even here (Mac OS) commit 2aeb6d4d7884f4c4425
>
> not ok 61 - wildmatch 0 0 \ \
> not ok 62 - wildmatch 0 0 /\ */\
> not ok 69 - wildmatch 1 1 [ab] [[:]ab]
> not ok 71 - wildmatch 1 1 [ab] [[:digit]ab]
> not ok 80 - wildmatch 1 0 1 [[:digit:][:upper:][:space:]]
> not ok 81 - wildmatch 0 0 1 [[:digit:][:upper:][:spaci:]]
> not ok 88 - wildmatch 1 0 _ 
> [[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]
> not ok 89 - wildmatch 1 0 _ 
> [[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]
> not ok 93 - wildmatch 1 1 y [a-c[:digit:]x-z]
>
> I have 2 perls,...

The problem under discussion was that the output from passing tests
were mangled and not interpreted correctly by a program that
analyzes them, which happens to be written in Perl.  Even in that
context, it was pointless to ask for Perl versions, as it was clear
that the input to that Perl-written program, i.e. output from the
tests, were not formatted correctly to say "ok NN message".

If you are getting "not ok", I do not think you need to look at your
Perl.  The wildmatch tests are failing, and it is far more likely
that the wildmatch code is failing in your environment, than the
test harness that runs wildmatch code is failing.

Neither the wildmatch code itself (in C), nor the test harness that
is giving you the above "not ok" (in shell) depends on Perl.

Thanks for a report, but the debugging needs to see how the matching
code in mildmatch misbehaves.

I suspect it is another case where the platform fnmatch (from MacOS)
is not behaving as these tests expect.

Nguyen, how about updating the match () shell function in 3070 so
that it not just says not-ok, but indicates what failed (wildmatch
failed, or wildmatch passed but fnmatch failed), at least when the
test is run as "./t3070-*.sh -v -i"?

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


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-12 Thread Torsten Bögershausen

On 10/12/2012 07:05 PM, Junio C Hamano wrote:

Some problems even here (Mac OS) commit 2aeb6d4d7884f4c4425

not ok 61 - wildmatch 0 0 \ \
not ok 62 - wildmatch 0 0 /\ */\
not ok 69 - wildmatch 1 1 [ab] [[:]ab]
not ok 71 - wildmatch 1 1 [ab] [[:digit]ab]
not ok 80 - wildmatch 1 0 1 [[:digit:][:upper:][:space:]]
not ok 81 - wildmatch 0 0 1 [[:digit:][:upper:][:spaci:]]
not ok 88 - wildmatch 1 0 _ 
[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]
not ok 89 - wildmatch 1 0 _ 
[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]
not ok 93 - wildmatch 1 1 y [a-c[:digit:]x-z]



Nguyen, how about updating the match () shell function in 3070 so
that it not just says not-ok, but indicates what failed (wildmatch
failed, or wildmatch passed but fnmatch failed), at least when the
test is run as "./t3070-*.sh -v -i"?


It seams to be the fnmatch, since removing the
fnmatch makes t3070 pass.

However, pullling in compat/fnmatch in the Makefile

 ifeq ($(uname_S),Darwin)
+   NO_FNMATCH = YesPlease


gives this result:
 ./t3070-wildmatch.sh 2>&1 | grep "not ok"
not ok 23 - wildmatch 1 1 a]b a[]]b
not ok 25 - wildmatch 1 1 a]b a[]-]b
not ok 43 - wildmatch 1 1 /foo **/foo
not ok 79 - wildmatch 1 1 A [[:digit:][:upper:][:space:]]
not ok 84 - wildmatch 1 1 . [[:digit:][:punct:][:space:]]
not ok 85 - wildmatch 1 1 5 [[:xdigit:]]
not ok 86 - wildmatch 1 1 f [[:xdigit:]]
not ok 87 - wildmatch 1 1 D [[:xdigit:]]
not ok 90 - wildmatch 1 1 . 
[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]

not ok 92 - wildmatch 1 1 b [a-c[:digit:]x-z]
not ok 95 - wildmatch 1 1 ] [\\-^]
not ok 98 - wildmatch 1 1 ] [\]]

(Confused)

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


Re: [PATCH v4 00/12] Wildmatch v4

2012-10-12 Thread Nguyen Thai Ngoc Duy
On Fri, Oct 12, 2012 at 10:05:06AM -0700, Junio C Hamano wrote:
> Nguyen, how about updating the match () shell function in 3070 so
> that it not just says not-ok, but indicates what failed (wildmatch
> failed, or wildmatch passed but fnmatch failed), at least when the
> test is run as "./t3070-*.sh -v -i"?

You could squash this to the "Integrate wildmatch to git" patch, or
just put it at the end of the series (I'll need to send a series
update anyway). This splits fnmatch and wildmatch tests separately so
we can easily identify which one fails.

-- 8< --
diff --git a/t/t3070-wildmatch.sh b/t/t3070-wildmatch.sh
index c3ee729..4f97923 100755
--- a/t/t3070-wildmatch.sh
+++ b/t/t3070-wildmatch.sh
@@ -5,20 +5,28 @@ test_description='wildmatch tests'
 . ./test-lib.sh
 
 match() {
-test_expect_success "wildmatch $*" "
-   if [ $1 = 1 ]; then
+if [ $1 = 1 ]; then
+   test_expect_success "wildmatch:match $3 $4" "
test-wildmatch wildmatch '$3' '$4'
-   else
+   "
+else
+   test_expect_success "wildmatch: no match $3 $4" "
! test-wildmatch wildmatch '$3' '$4'
-   fi &&
-   if [ $2 = 1 ]; then
+   "
+fi
+if [ $2 = 1 ]; then
+   test_expect_success "fnmatch:  match $3 $4" "
test-wildmatch fnmatch '$3' '$4'
-   elif [ $2 = x ]; then
-   true
-   else
+   "
+elif [ $2 = 0 ]; then
+   test_expect_success "fnmatch:   no match $3 $4" "
! test-wildmatch fnmatch '$3' '$4'
-   fi
-"
+   "
+#else
+#  test_expect_success BROKEN_FNMATCH "fnmatch:   $3 $4" "
+#  test-wildmatch fnmatch '$3' '$4'
+#  "
+fi
 }
 
 # Basic wildmat features
-- 8< --
-- 
Duy
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html