Even though the commit message notes for r13244 "The wildcard filtering is broken atm, working on that" it would be preferable to not have patches that break things remain long on trunk. Among other things, this prevents the ANSI compiled tests from being run.
CL-USER> (DIRECTORY "/Users/evenson/work/ansi-tests/scratch/*")
produces
The value NIL is not of type FIXNUM. [Condition of type TYPE-ERROR]
Restarts: 0: [RETRY] Retry SLIME REPL evaluation request. 1: [ABORT] Return to sldb level 1. 2: [RETRY] Retry SLIME REPL evaluation request. 3: [*ABORT] Return to SLIME's top level. 4: [ABORT] Abort thread.
Backtrace: 0: (#<FUNCTION {3541D281}> #<TYPE-ERROR {75EE0563}> #<FUNCTION {3541D281}>) 1: (APPLY #<FUNCTION {3541D281}> (#<TYPE-ERROR {75EE0563}> #<FUNCTION {3541D281}>)) 2: (SYSTEM::RUN-HOOK SYSTEM::*INVOKE-DEBUGGER-HOOK* #<TYPE-ERROR {75EE0563}> #<FUNCTION {3541D281}>) 3: (INVOKE-DEBUGGER #<TYPE-ERROR {75EE0563}>) 4: org.armedbear.lisp.Lisp.error(Lisp.java:373) 5: org.armedbear.lisp.Lisp.type_error(Lisp.java:414) 6: org.armedbear.lisp.find_20.execute(find.lisp:171) 7: org.armedbear.lisp.CompiledClosure.execute(CompiledClosure.java:138) 8: org.armedbear.lisp.Symbol.execute(Symbol.java:825) 9: org.armedbear.lisp.LispThread.execute(LispThread.java:688) 10: org.armedbear.lisp.pathnames_8.execute(pathnames.lisp:53) 11: org.armedbear.lisp.pathnames_7.execute(pathnames.lisp:53) 12: org.armedbear.lisp.Symbol.execute(Symbol.java:813) 13: org.armedbear.lisp.LispThread.execute(LispThread.java:670) 14: org.armedbear.lisp.pathnames_11.execute(pathnames.lisp:86) 15: org.armedbear.lisp.Symbol.execute(Symbol.java:813) 16: org.armedbear.lisp.LispThread.execute(LispThread.java:670) 17: org.armedbear.lisp.pathnames_14.execute(pathnames.lisp:131) 18: org.armedbear.lisp.Symbol.execute(Symbol.java:801) 19: org.armedbear.lisp.LispThread.execute(LispThread.java:653) 20: org.armedbear.lisp.directory_6.execute(directory.lisp:98) 21: org.armedbear.lisp.CompiledClosure.execute(CompiledClosure.java:101) 22: org.armedbear.lisp.LispThread.execute(LispThread.java:636) 23: org.armedbear.lisp.Lisp.evalCall(Lisp.java:540) 24: org.armedbear.lisp.Lisp.eval(Lisp.java:505) 25: org.armedbear.lisp.Primitives$pf__eval.execute(Primitives.java:343) 26: (POSITION-IF #<FUNCTION {7A4CBCAF}> "*" :START NIL) 27: (SYSTEM::COMPONENT-MATCH-WILD-P "foo.txt" "*" NIL) 28: (SYSTEM::COMPONENT-MATCH-P "foo.txt" "*" NIL) 29: (PATHNAME-MATCH-P #P"foo.txt" #P"*") 30: (DIRECTORY "/Users/evenson/work/ansi-tests/scratch/*")
On 16 March 2011 15:30, Mark Evenson evenson@panix.com wrote:
Even though the commit message notes for r13244 "The wildcard filtering is broken atm, working on that" it would be preferable to not have patches that break things remain long on trunk. Among other things, this prevents the ANSI compiled tests from being run.
Damn. I'll take a look. The filtering breakage was supposed to be contained to wild-inferiors cases, where recursing was broken. I fixed the recursion, but we don't match wild-inferiors right with pathname-match-p and in directory, so the plan was to fix the recursion first and matching later, while keeping the non-wild-inferiors cases working. Apparently that didn't work out.
Investigating.
On 16 March 2011 19:37, Ville Voutilainen ville.voutilainen@gmail.com wrote:
patches that break things remain long on trunk. Among other things, this prevents the ANSI compiled tests from being run.
Damn. I'll take a look. The filtering breakage was supposed to be contained to wild-inferiors cases, where recursing was broken. I fixed the recursion, but we don't match wild-inferiors right with pathname-match-p and in directory, so the plan was to fix the recursion first and matching later, while keeping the non-wild-inferiors cases working. Apparently that didn't work out.
Ok, the attempt to protect against File::Foo::Bar breaks things. We need to be able to figure out how to build a pathname with a name component only, the previous attempt resulted in nil components which break matching there. Reverted to a more conservative approach with r13252.
I'll be traveling soon, so work on this can on my part continue after next week. Currently we still don't match wild-inferiors correctly (pathname-match-p is over-eager to begin with, it always matches T if a directory component has a wild-inferior, which doesn't work right for paths like "foo/**/bar/baz" vs. "/foo/notbar/baz"). We also need to do the actual entry result matching in directory so that it matches such wild-inferiors properly, and we don't currently handle File::Bar::Baz right.
We shouldn't have regressions to the previous functionality now, please shout if any arise.
armedbear-devel@common-lisp.net