]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
git-cgi.t: Exercise an alphanumeric, but non-ASCII, root page
authorSimon McVittie <smcv@debian.org>
Sun, 3 Feb 2019 13:19:57 +0000 (13:19 +0000)
committerSimon McVittie <smcv@debian.org>
Sun, 3 Feb 2019 13:27:00 +0000 (13:27 +0000)
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 <smcv@debian.org>
doc/bugs/About___37__2F_problem.mdwn
t/git-cgi.t

index 29879e9f016b61894d5295446a64a7efc3472307..d4532571133e9a4478fe8d0de0c354be2b0ec3eb 100644 (file)
@@ -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:
 >
index 79cd62f61c48ab6cea30869fb635f84e41fd6f9f..3556bc0387179bbc2959ff871561f127c9c20276 100755 (executable)
@@ -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{<option selected="selected" value="writable/blog/hello">writable/blog/hello</option>});
 
-       # 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{<input type="hidden" name="from" value="writable/¬blog"});
-       TODO: {
-       local $TODO = 'doc/bugs/About___37__2F_problem';
+       # Regression test for a bug in which we couldn't use an
+       # alphanumeric, but non-ASCII, root page.
+       $content = readfile('t/tmp/out/writable/中文/index.html');
+       like($content, qr{<input type="hidden" name="from" value="writable/中文"});
        $content = run_cgi(method => 'get',
                params => {
                        do => 'blog',
-                       from => 'writable/¬blog',
+                       from => 'writable/中文',
                        subpage => '1',
                        title => 'hello',
                },
        );
-       like($content, qr{<option selected="selected" value="writable/¬blog/hello">writable/¬blog/hello</option>});
+       like($content, qr{<option selected="selected" value="writable/中文/hello">writable/中文/hello</option>});
        unlike($content, qr{Error: bad page name});
-       }
 }
 
 test();