Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: FW: Zsh 4.3.12 failure on OpenBSD



On Wed, Jun 01, 2011 at 03:03:36PM +0200, Mikael Magnusson wrote:
> On 1 June 2011 13:11, Peter Stephenson <pws@xxxxxxx> wrote:
> > On Wed, 01 Jun 2011 11:33:22 +0100, Mikael Magnusson <mikachu@xxxxxxxxx>
> > wrote:
> >>
> >> Okay, so in a latin1 locale, \M-a is á which is printable, so it isn't
> >> converted back to \M-a by (V). I also noticed that in one of the
> >> tests, the input has "^X" but not the c flag, but does use V, so the
> >> test can't tell if it was converted or not, because it'll always come
> >> out as ascii "^X". I guess there's not really much point in testing
> >> \M-a, since I already test \C-x and it's handled by the same code. The
> >> test is just for calling the function that does that properly, not
> >> that that function actually works ;). I hope I can at least rely on
> >> \C-x not being printable anywhere? Or is it okay to include a literal
> >> ^X in the expected test output? I'm not sure how else I can test that
> >> ^X is parsed properly.
> >
> > Ideally we want to output stuff as a stream of octets.  I'm not
> > sure there's an easy way of doing that with parameters alone.
> > You can use $(( #foo )), looping over octets in the string.
> >
> > If you want to test non-ASCII characters you can use
> > the multibyte test file, which ensures the locale is
> > using UTF-8.
> 
> I realized that maybe the easiest way is to just test that [[
> ${(g:oe:):-'\C-\130'} == ${(g:c:):-'^X'} ]]; echo $? outputs 0.
> 
> diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst
> index 6379c8c..050340d 100644
> --- a/Test/D04parameter.ztst
> +++ b/Test/D04parameter.ztst
> @@ -300,23 +300,16 @@
> 
>    foo='\u65\123'
>    print -r ${(g:o:)foo}
> -  foo='\u65\0123'
> +  foo='\u65\0123^X\C-x'
>    print -r ${(g::)foo}
> -  foo='\u65^X'
> -  print -r ${(V)${(g:c:)foo}}
> -  foo='\u65\C-x\M-a'
> -  print -r ${(V)${(g:e:)foo}}
> -  foo='\u65\123\C-x'
> -  print -r ${(V)${(g:eo:)foo}}
> -  foo=('\u65' '\0123' '^X\M-a')
> -  print -r ${(V)${(g:e:)foo}}
> +  foo='^X'
> +  bar='\C-\130'
> +  [[ ${(g:c:)foo} == ${(g:oe:)bar} ]]
> +  echo $?
>  0:${(g)...}
>  >eS
> ->eS
> ->e^X
> ->e^X\M-a
> ->eS^X
> ->e S ^X\M-a
> +>eS^X\C-x
> +>0
> 
>    foo='I'\''m nearly out of my mind with tedium'
>    bar=foo
> 
> 

Your diff fixes my issue. All tests are now ok.
Regards,

-- 
Pierre-Emmanuel André <pea at raveland.org>
GPG key: 0x7AE329DC



Messages sorted by: Reverse Date, Date, Thread, Author