1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* 23 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27#pragma ident "@(#)tst.basename.d 1.1 06/08/28 SMI" 28 29#pragma D option quiet 30 31/* 32 * This test verifies that the basename() and dirname() functions are working 33 * properly. Note that the output of this is a ksh script. When run, 34 * it will give no output if the output is correct. 35 */ 36BEGIN 37{ 38 dir[i++] = "/foo/bar/baz"; 39 dir[i++] = "/foo/bar///baz/"; 40 dir[i++] = "/foo/bar/baz/"; 41 dir[i++] = "/foo/bar/baz//"; 42 dir[i++] = "/foo/bar/baz/."; 43 dir[i++] = "/foo/bar/baz/./"; 44 dir[i++] = "/foo/bar/baz/.//"; 45 dir[i++] = "foo/bar/baz/"; 46 dir[i++] = "/"; 47 dir[i++] = "./"; 48 dir[i++] = "//"; 49 dir[i++] = "/."; 50 dir[i++] = "/./"; 51 dir[i++] = "/./."; 52 dir[i++] = "/.//"; 53 dir[i++] = "."; 54 dir[i++] = "f"; 55 dir[i++] = "f/"; 56 dir[i++] = "/////"; 57 end = i; 58 i = 0; 59 60 printf("#!/bin/ksh\n\n"); 61} 62 63/* Avoid race to collect buffers on SMP. */ 64tick-1ms 65{ 66 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 67 dir[i], basename(dir[i])); 68 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 69 dir[i], basename(dir[i])); 70 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 71 printf("fi\n\n"); 72 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 73 dir[i], dirname(dir[i])); 74 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 75 dir[i], dirname(dir[i])); 76 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 77 printf("fi\n\n"); 78 i++; 79 80 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 81 dir[i], basename(dir[i])); 82 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 83 dir[i], basename(dir[i])); 84 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 85 printf("fi\n\n"); 86 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 87 dir[i], dirname(dir[i])); 88 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 89 dir[i], dirname(dir[i])); 90 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 91 printf("fi\n\n"); 92 i++; 93 94 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 95 dir[i], basename(dir[i])); 96 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 97 dir[i], basename(dir[i])); 98 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 99 printf("fi\n\n"); 100 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 101 dir[i], dirname(dir[i])); 102 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 103 dir[i], dirname(dir[i])); 104 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 105 printf("fi\n\n"); 106 i++; 107 108 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 109 dir[i], basename(dir[i])); 110 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 111 dir[i], basename(dir[i])); 112 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 113 printf("fi\n\n"); 114 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 115 dir[i], dirname(dir[i])); 116 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 117 dir[i], dirname(dir[i])); 118 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 119 printf("fi\n\n"); 120 i++; 121 122 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 123 dir[i], basename(dir[i])); 124 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 125 dir[i], basename(dir[i])); 126 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 127 printf("fi\n\n"); 128 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 129 dir[i], dirname(dir[i])); 130 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 131 dir[i], dirname(dir[i])); 132 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 133 printf("fi\n\n"); 134 i++; 135 136 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 137 dir[i], basename(dir[i])); 138 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 139 dir[i], basename(dir[i])); 140 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 141 printf("fi\n\n"); 142 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 143 dir[i], dirname(dir[i])); 144 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 145 dir[i], dirname(dir[i])); 146 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 147 printf("fi\n\n"); 148 i++; 149 150 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 151 dir[i], basename(dir[i])); 152 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 153 dir[i], basename(dir[i])); 154 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 155 printf("fi\n\n"); 156 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 157 dir[i], dirname(dir[i])); 158 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 159 dir[i], dirname(dir[i])); 160 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 161 printf("fi\n\n"); 162 i++; 163 164 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 165 dir[i], basename(dir[i])); 166 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 167 dir[i], basename(dir[i])); 168 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 169 printf("fi\n\n"); 170 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 171 dir[i], dirname(dir[i])); 172 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 173 dir[i], dirname(dir[i])); 174 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 175 printf("fi\n\n"); 176 i++; 177 178 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 179 dir[i], basename(dir[i])); 180 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 181 dir[i], basename(dir[i])); 182 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 183 printf("fi\n\n"); 184 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 185 dir[i], dirname(dir[i])); 186 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 187 dir[i], dirname(dir[i])); 188 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 189 printf("fi\n\n"); 190 i++; 191 192 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 193 dir[i], basename(dir[i])); 194 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 195 dir[i], basename(dir[i])); 196 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 197 printf("fi\n\n"); 198 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 199 dir[i], dirname(dir[i])); 200 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 201 dir[i], dirname(dir[i])); 202 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 203 printf("fi\n\n"); 204 i++; 205 206 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 207 dir[i], basename(dir[i])); 208 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 209 dir[i], basename(dir[i])); 210 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 211 printf("fi\n\n"); 212 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 213 dir[i], dirname(dir[i])); 214 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 215 dir[i], dirname(dir[i])); 216 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 217 printf("fi\n\n"); 218 i++; 219 220 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 221 dir[i], basename(dir[i])); 222 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 223 dir[i], basename(dir[i])); 224 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 225 printf("fi\n\n"); 226 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 227 dir[i], dirname(dir[i])); 228 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 229 dir[i], dirname(dir[i])); 230 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 231 printf("fi\n\n"); 232 i++; 233 234 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 235 dir[i], basename(dir[i])); 236 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 237 dir[i], basename(dir[i])); 238 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 239 printf("fi\n\n"); 240 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 241 dir[i], dirname(dir[i])); 242 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 243 dir[i], dirname(dir[i])); 244 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 245 printf("fi\n\n"); 246 i++; 247 248 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 249 dir[i], basename(dir[i])); 250 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 251 dir[i], basename(dir[i])); 252 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 253 printf("fi\n\n"); 254 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 255 dir[i], dirname(dir[i])); 256 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 257 dir[i], dirname(dir[i])); 258 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 259 printf("fi\n\n"); 260 i++; 261 262 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 263 dir[i], basename(dir[i])); 264 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 265 dir[i], basename(dir[i])); 266 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 267 printf("fi\n\n"); 268 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 269 dir[i], dirname(dir[i])); 270 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 271 dir[i], dirname(dir[i])); 272 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 273 printf("fi\n\n"); 274 i++; 275 276 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 277 dir[i], basename(dir[i])); 278 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 279 dir[i], basename(dir[i])); 280 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 281 printf("fi\n\n"); 282 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 283 dir[i], dirname(dir[i])); 284 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 285 dir[i], dirname(dir[i])); 286 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 287 printf("fi\n\n"); 288 i++; 289 290 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 291 dir[i], basename(dir[i])); 292 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 293 dir[i], basename(dir[i])); 294 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 295 printf("fi\n\n"); 296 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 297 dir[i], dirname(dir[i])); 298 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 299 dir[i], dirname(dir[i])); 300 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 301 printf("fi\n\n"); 302 i++; 303 304 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 305 dir[i], basename(dir[i])); 306 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 307 dir[i], basename(dir[i])); 308 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 309 printf("fi\n\n"); 310 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 311 dir[i], dirname(dir[i])); 312 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 313 dir[i], dirname(dir[i])); 314 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 315 printf("fi\n\n"); 316 i++; 317 318 printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", 319 dir[i], basename(dir[i])); 320 printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", 321 dir[i], basename(dir[i])); 322 printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); 323 printf("fi\n\n"); 324 printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", 325 dir[i], dirname(dir[i])); 326 printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", 327 dir[i], dirname(dir[i])); 328 printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); 329 printf("fi\n"); 330 i++; 331 exit(0); 332 333} 334