diff options
-rw-r--r-- | _test/tests/inc/pageutils_resolve_id.test.php | 16 | ||||
-rw-r--r-- | inc/pageutils.php | 2 |
2 files changed, 11 insertions, 7 deletions
diff --git a/_test/tests/inc/pageutils_resolve_id.test.php b/_test/tests/inc/pageutils_resolve_id.test.php index 23a2405d4..661f3fe28 100644 --- a/_test/tests/inc/pageutils_resolve_id.test.php +++ b/_test/tests/inc/pageutils_resolve_id.test.php @@ -3,7 +3,7 @@ class init_resolve_id_test extends DokuWikiTest { - function test1(){ + function test(){ // we test multiple cases here // format: $ns, $page, $output $tests = array(); @@ -23,10 +23,14 @@ class init_resolve_id_test extends DokuWikiTest { $tests[] = array('','..:page','page'); // relative upper in namespace - $tests[] = array('lev1:lev2','..page','lev1:page'); - $tests[] = array('lev1:lev2','..:page','lev1:page'); - $tests[] = array('lev1:lev2','..:..:page','page'); - $tests[] = array('lev1:lev2','..:..:..:page','page'); + $tests[] = array('lev1:lev2:lev3','..page','lev1:lev2:page'); + $tests[] = array('lev1:lev2:lev3','..:page','lev1:lev2:page'); + $tests[] = array('lev1:lev2:lev3','..:..page','lev1:page'); + $tests[] = array('lev1:lev2:lev3','..:..:page','lev1:page'); + $tests[] = array('lev1:lev2:lev3','..:..:..page','page'); + $tests[] = array('lev1:lev2:lev3','..:..:..:page','page'); + $tests[] = array('lev1:lev2:lev3','..:..:..:..page','page'); + $tests[] = array('lev1:lev2:lev3','..:..:..:..:page','page'); // strange and broken ones $tests[] = array('lev1:lev2','....:....:page','lev1:lev2:page'); @@ -35,7 +39,7 @@ class init_resolve_id_test extends DokuWikiTest { $tests[] = array('lev1:lev2','..:..:lev3:..:page:....:...','page'); foreach($tests as $test){ - $this->assertEquals(resolve_id($test[0],$test[1]),$test[2]); + $this->assertEquals($test[2], resolve_id($test[0],$test[1]), $test[0].' >'.$test[1]); } } diff --git a/inc/pageutils.php b/inc/pageutils.php index 6bbfdb7cf..8540d227e 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -466,7 +466,7 @@ function resolve_id($ns,$id,$clean=true){ // relative stuff if($id && $id[0] == '.'){ // normalize initial dots without a colon - $id = preg_replace('/^(\.+)(?=[^:\.])/','\1:',$id); + $id = preg_replace('/^((\.+:)*)(\.+)(?=[^:\.])/','\1\3:',$id); // prepend the current namespace $id = $ns.':'.$id; |