@@ -65,14 +65,12 @@ function test_absolute_path(tc)
6565
6666par1 = absolute_path(" ../2foo" );
6767tc .verifyNotEmpty(par1 )
68- tc .verifyFalse(contains(par1 , " .." ))
6968
7069par2 = absolute_path(" ../4foo" );
7170tc .verifyTrue(strncmp(par2 , pabs2 , 2 ))
7271
7372pt1 = absolute_path(" bar/../2foo" );
7473tc .verifyNotEmpty(pt1 )
75- tc .verifyFalse(contains(pt1 , " .." ))
7674
7775va = absolute_path(" 2foo" );
7876vb = absolute_path(" 4foo" );
@@ -81,6 +79,40 @@ function test_absolute_path(tc)
8179
8280end
8381
82+
83+ function test_canonical(tc )
84+
85+ import stdlib .canonical
86+
87+ tc .assumeTrue(usejava(" jvm" ), " Java required for absolute_path" )
88+
89+ tc .verifyEmpty(canonical(string .empty ))
90+ tc .verifyEqual(canonical(" " ), string(pwd ))
91+
92+ pabs = canonical(' 2foo' );
93+ pabs2 = canonical(' 4foo' );
94+ tc .verifyFalse(startsWith(pabs , " 2" ))
95+ tc .verifyTrue(strncmp(pabs , pabs2 , 2 ))
96+
97+ par1 = canonical(" ../2foo" );
98+ tc .verifyNotEmpty(par1 )
99+ tc .verifyFalse(contains(par1 , " .." ))
100+
101+ par2 = canonical(" ../4foo" );
102+ tc .verifyTrue(strncmp(par2 , pabs2 , 2 ))
103+
104+ pt1 = canonical(" bar/../2foo" );
105+ tc .verifyNotEmpty(pt1 )
106+ tc .verifyFalse(contains(pt1 , " .." ))
107+
108+ va = canonical(" 2foo" );
109+ vb = canonical(" 4foo" );
110+ tc .verifyFalse(startsWith(va , " 2" ))
111+ tc .verifyTrue(strncmp(va , vb , 2 ))
112+
113+ end
114+
115+
84116function test_with_suffix(tc )
85117import stdlib.with_suffix
86118
0 commit comments