From 4ba3c1159272c8070d5dc962ff1634ad6ba21618 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sun, 3 Feb 2019 13:19:57 +0000 Subject: git-cgi.t: Exercise an alphanumeric, but non-ASCII, root page My previous attempt to reproduce this bug used a non-alphanumeric ASCII character. This is not currently considered to be a valid value for rootpage, although for a "do what I mean" approach, perhaps we should accept it and pass it through titlepage() or linkpage(). Using Chinese characters (which are considered to match [[:alnum:]] even though the Chinese script is not, strictly speaking, an alphabet), as in the original bug report, reproduces the bug. Signed-off-by: Simon McVittie --- doc/bugs/About___37__2F_problem.mdwn | 31 ++++++++++++------------------- t/git-cgi.t | 22 +++++++++++----------- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/doc/bugs/About___37__2F_problem.mdwn b/doc/bugs/About___37__2F_problem.mdwn index 29879e9f0..d45325711 100644 --- a/doc/bugs/About___37__2F_problem.mdwn +++ b/doc/bugs/About___37__2F_problem.mdwn @@ -64,28 +64,21 @@ not deal with Chinese char, the below link can work --- -> Please could you try to make a minimal example or test, perhaps in the [[sandbox]] -> on this wiki or as a unit test in `t/git-cgi.t` in the ikiwiki source code, that -> demonstrates this bug and would be fixed by your patch? I tried to write a test -> for this, and I was able to make a test that uses a UTF-8 `rootpage` and fails; -> but your patch doesn't seem to fix it, so you must be seeing something different. -> I think there might be more than one bug here. +> [Request for clarification removed] > -> If you've found multiple bugs, a separate example or test for each one would be -> easiest to deal with. +> I've now been able to reproduce this bug, and confirmed that your patch +> fixes it. [[Patch now applied|done]]. > -> In your original report, you said the `rootpage` was ASCII and started with `./`: -> `./bugs`. Then you mentioned Chinese characters (any non-ASCII character like é or ¬ -> should behave the same as Chinese here) and attached a patch that alters how those -> are handled, without affecting what would happen to a `rootpage` that starts -> with `./`; so I'm confused about what the bug was, and what you are fixing? +> (For other maintainers' reference: when testing Unicode bugs that +> relate to page titles, using Unicode that is considered to be +> punctuation, like ¬ or emoji, will probably not work; page titles +> treat `[:alnum:]` and `^[:alnum:]` differently.) > -> I've added tests to `t/git-cgi.t` which demonstrate -> [a blog form for a `rootpage` named `writable/blog` working correctly](http://source.ikiwiki.branchable.com/?p=source.git;a=commitdiff;h=9c0694b14c0c8ed0dee4ff4ed57f689919707cd7;hp=a10d86bbaebee2d6a30b66b4366d3f0247264678) -> (which passes), and -> [a `rootpage` named `writable/¬blog` not working correctly](http://source.ikiwiki.branchable.com/?p=source.git;a=commitdiff;h=2bd72cd0e01b8bb433b368e11ff9db779a21ccef;hp=9c0694b14c0c8ed0dee4ff4ed57f689919707cd7) -> (which fails, and is marked as *TODO*). -> The patch above doesn't seem to make the second new test pass. +> In future bug reports it would be useful if you could provide a minimal +> example or test, perhaps on the [[sandbox]] on this wiki or as a unit +> test in `t/*.t` in the ikiwiki source code, that demonstrates this bug +> and would be fixed by the patch. If you've found multiple bugs, a +> separate example or test for each one would be easiest to deal with. > > You can run all the tests with: > diff --git a/t/git-cgi.t b/t/git-cgi.t index 79cd62f61..3556bc038 100755 --- a/t/git-cgi.t +++ b/t/git-cgi.t @@ -1,7 +1,9 @@ #!/usr/bin/perl +use utf8; use warnings; use strict; +use Encode; use Test::More; BEGIN { @@ -133,7 +135,7 @@ sub run_cgi { } keys(%envvars); }); - return $out; + return decode_utf8($out); } sub run_git { @@ -169,6 +171,8 @@ sub test { '[[!inline pages="writable/blog/*" actions=yes rootpage=writable/blog postform=yes show=0]]'); write_old_file('doc/writable/__172__blog.mdwn', 't/tmp/in', '[[!inline pages="writable/¬blog/*" actions=yes rootpage="writable/¬blog" postform=yes show=0]]'); + write_old_file('doc/writable/中文.mdwn', 't/tmp/in', + '[[!inline pages="writable/中文/*" actions=yes rootpage="writable/中文" postform=yes show=0]]'); unless ($installed) { ok(! system(qw(cp -pRL doc/wikiicons t/tmp/in/doc/))); @@ -332,24 +336,20 @@ sub test { ); like($content, qr{}); - # This attempts to reproduce the bug from - # doc/bugs/About___37__2F_problem, in which you can't make new posts - # to a blog with a non-ASCII rootpage. - $content = readfile('t/tmp/out/writable/__172__blog/index.html'); - like($content, qr{ 'get', params => { do => 'blog', - from => 'writable/¬blog', + from => 'writable/中文', subpage => '1', title => 'hello', }, ); - like($content, qr{}); + like($content, qr{}); unlike($content, qr{Error: bad page name}); - } } test(); -- cgit v1.2.3