github.com/joomcode/cue@v0.4.4-0.20221111115225-539fe3512047/pkg/path/testdata/os.txtar (about) 1 // Copyright 2020 CUE Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #noformat 16 17 -- in.cue -- 18 import "path" 19 20 #OSes: [path.Unix, path.Windows, path.Plan9] 21 #AnyOS: or(#OSes) 22 23 // Test these OSes for all tests below. 24 { 25 [string]: { 26 unix: _ 27 plan9: _ 28 windows: _ 29 } 30 } 31 32 Split: [OS=#AnyOS]: [ARG=string]: path.Split(ARG, OS) 33 Split: default: [ARG=string]: path.Split(ARG) 34 Split: default: Split.unix 35 Split: [_]: { 36 "/foo/bar/baz": _ 37 "a/b": _ 38 "//host/share/foo": _ 39 #"\\host\share\foo"#: _ 40 "c:/foo/bar": _ 41 #"c:\foo\bar"#: _ 42 } 43 44 SplitList: [OS=string]: [ARG=string]: path.SplitList(ARG, OS) 45 SplitList: [_]: { 46 "a:b": _ 47 "a\u0000b": _ 48 "a;b": _ 49 } 50 51 Clean: [OS=#AnyOS]: [ARG=string]: path.Clean(ARG, OS) 52 Clean: default: [ARG=string]: path.Clean(ARG) 53 Clean: default: Clean.unix 54 Clean: [_]: { 55 "abc//def//ghi": _ 56 #"c:\abc\def\..\.."#: _ 57 } 58 59 Slash: [OS=string]: [ARG=string]: { 60 to: path.ToSlash(ARG, OS) 61 from: path.FromSlash(ARG, OS) 62 63 // should roundtrip 64 to: path.ToSlash(from, OS) 65 from: path.FromSlash(to, OS) 66 } 67 Slash: [_]: { 68 "": _ 69 "/": _ 70 "/a/b": _ 71 "/a//b": _ 72 } 73 74 Ext: [OS=#AnyOS]: [ARG=string]: path.Ext(ARG, OS) 75 Ext: default: [ARG=string]: path.Ext(ARG) 76 Ext: default: Ext.unix 77 Ext: [_]: { 78 // Same for all OS-es 79 "path.go": ".go" 80 "path.pb.go": ".go" 81 "a.dir/b": "" 82 "a.dir/b.go": ".go" 83 "a.dir/": "" 84 85 // Differs on Windows. 86 "a.dir\\foo": _ 87 } 88 89 Resolve: [OS=#AnyOS]: [A1=_]: [A2=_]: path.Resolve(A1, A2, OS) 90 Resolve: default: [A1=_]: [A2=_]: path.Resolve(A1, A2) 91 Resolve: default: Resolve.unix 92 Resolve: [_]: { 93 "a/b/c": "d/e": _ 94 "/a/b": "/c/d": _ 95 "c:/a": #"d:\"#: _ 96 97 "//home/user/foo": "bar": _ 98 "//home/user/foo": "//other/abs/foo": _ 99 } 100 101 IsAbs: [OS=#AnyOS]: [ARG=string]: path.IsAbs(ARG, OS) 102 IsAbs: default: [ARG=string]: path.IsAbs(ARG) 103 IsAbs: default: IsAbs.unix 104 IsAbs: [_]: { 105 "": _ 106 "/a": _ 107 "a": _ 108 "c:": _ 109 "c:/": _ 110 "c:\\": _ 111 112 "//home/user/foo": _ 113 } 114 115 116 Volume: [OS=string]: [ARG=string]: path.VolumeName(ARG, OS) 117 Volume: [!="windows"]: [string]: "" // non-windows is always "" 118 Volume: [_]: { 119 "c:/foo/bar": _ 120 "c:": _ 121 "2:": _ 122 "": _ 123 124 #"\\\host"#: _ 125 #"\\\host\"#: _ 126 #"\\\host\share"#: _ 127 #"\\\host\\share"#: _ 128 #"\\host"#: _ 129 #"//host"#: _ 130 #"\\host\"#: _ 131 #"//host/"#: _ 132 #"\\host\share"#: _ 133 #"//host/share"#: _ 134 #"\\host\share\"#: _ 135 #"//host/share/"#: _ 136 #"\\host\share\foo"#: _ 137 #"//host/share/foo"#: _ 138 139 #"\\host\share\\foo\\\bar\\\\baz"#: _ 140 #"//host/share//foo///bar////baz"#: _ 141 #"\\host\share\foo\..\bar"#: _ 142 #"//host/share/foo/../bar"#: _ 143 } 144 145 -- out/path -- 146 #OSes: ["unix", "windows", "plan9"] 147 #AnyOS: "unix" | "windows" | "plan9" 148 Split: { 149 default: { 150 "/foo/bar/baz": ["/foo/bar/", "baz"] 151 "a/b": ["a/", "b"] 152 "//host/share/foo": ["//host/share/", "foo"] 153 "\\\\host\\share\\foo": ["", "\\\\host\\share\\foo"] 154 "c:/foo/bar": ["c:/foo/", "bar"] 155 "c:\\foo\\bar": ["", "c:\\foo\\bar"] 156 } 157 unix: { 158 "/foo/bar/baz": ["/foo/bar/", "baz"] 159 "a/b": ["a/", "b"] 160 "//host/share/foo": ["//host/share/", "foo"] 161 "\\\\host\\share\\foo": ["", "\\\\host\\share\\foo"] 162 "c:/foo/bar": ["c:/foo/", "bar"] 163 "c:\\foo\\bar": ["", "c:\\foo\\bar"] 164 } 165 plan9: { 166 "/foo/bar/baz": ["/foo/bar/", "baz"] 167 "a/b": ["a/", "b"] 168 "//host/share/foo": ["//host/share/", "foo"] 169 "\\\\host\\share\\foo": ["", "\\\\host\\share\\foo"] 170 "c:/foo/bar": ["c:/foo/", "bar"] 171 "c:\\foo\\bar": ["", "c:\\foo\\bar"] 172 } 173 windows: { 174 "/foo/bar/baz": ["/foo/bar/", "baz"] 175 "a/b": ["a/", "b"] 176 "//host/share/foo": ["//host/share/", "foo"] 177 "\\\\host\\share\\foo": ["\\\\host\\share\\", "foo"] 178 "c:/foo/bar": ["c:/foo/", "bar"] 179 "c:\\foo\\bar": ["c:\\foo\\", "bar"] 180 } 181 } 182 SplitList: { 183 unix: { 184 "a:b": ["a", "b"] 185 "a\u0000b": ["a\u0000b"] 186 "a;b": ["a;b"] 187 } 188 plan9: { 189 "a:b": ["a:b"] 190 "a\u0000b": ["a", "b"] 191 "a;b": ["a;b"] 192 } 193 windows: { 194 "a:b": ["a:b"] 195 "a\u0000b": ["a\u0000b"] 196 "a;b": ["a", "b"] 197 } 198 } 199 Clean: { 200 default: { 201 "abc//def//ghi": "abc/def/ghi" 202 "c:\\abc\\def\\..\\..": "c:\\abc\\def\\..\\.." 203 } 204 unix: { 205 "abc//def//ghi": "abc/def/ghi" 206 "c:\\abc\\def\\..\\..": "c:\\abc\\def\\..\\.." 207 } 208 plan9: { 209 "abc//def//ghi": "abc/def/ghi" 210 "c:\\abc\\def\\..\\..": "c:\\abc\\def\\..\\.." 211 } 212 windows: { 213 "abc//def//ghi": "abc\\def\\ghi" 214 "c:\\abc\\def\\..\\..": "c:\\" 215 } 216 } 217 Slash: { 218 unix: { 219 "": { 220 // should roundtrip 221 to: "" 222 from: "" 223 } 224 "/": { 225 // should roundtrip 226 to: "/" 227 from: "/" 228 } 229 "/a/b": { 230 // should roundtrip 231 to: "/a/b" 232 from: "/a/b" 233 } 234 "/a//b": { 235 // should roundtrip 236 to: "/a//b" 237 from: "/a//b" 238 } 239 } 240 plan9: { 241 "": { 242 // should roundtrip 243 to: "" 244 from: "" 245 } 246 "/": { 247 // should roundtrip 248 to: "/" 249 from: "/" 250 } 251 "/a/b": { 252 // should roundtrip 253 to: "/a/b" 254 from: "/a/b" 255 } 256 "/a//b": { 257 // should roundtrip 258 to: "/a//b" 259 from: "/a//b" 260 } 261 } 262 windows: { 263 "": { 264 // should roundtrip 265 to: "" 266 from: "" 267 } 268 "/": { 269 // should roundtrip 270 to: "/" 271 from: "\\" 272 } 273 "/a/b": { 274 // should roundtrip 275 to: "/a/b" 276 from: "\\a\\b" 277 } 278 "/a//b": { 279 // should roundtrip 280 to: "/a//b" 281 from: "\\a\\\\b" 282 } 283 } 284 } 285 Ext: { 286 default: { 287 // Same for all OS-es 288 "path.go": ".go" 289 "path.pb.go": ".go" 290 "a.dir/b": "" 291 "a.dir/b.go": ".go" 292 "a.dir/": "" 293 294 // Differs on Windows. 295 "a.dir\\foo": ".dir\\foo" 296 } 297 unix: { 298 // Same for all OS-es 299 "path.go": ".go" 300 "path.pb.go": ".go" 301 "a.dir/b": "" 302 "a.dir/b.go": ".go" 303 "a.dir/": "" 304 305 // Differs on Windows. 306 "a.dir\\foo": ".dir\\foo" 307 } 308 plan9: { 309 // Same for all OS-es 310 "path.go": ".go" 311 "path.pb.go": ".go" 312 "a.dir/b": "" 313 "a.dir/b.go": ".go" 314 "a.dir/": "" 315 316 // Differs on Windows. 317 "a.dir\\foo": ".dir\\foo" 318 } 319 windows: { 320 // Same for all OS-es 321 "path.go": ".go" 322 "path.pb.go": ".go" 323 "a.dir/b": "" 324 "a.dir/b.go": ".go" 325 "a.dir/": "" 326 327 // Differs on Windows. 328 "a.dir\\foo": "" 329 } 330 } 331 Resolve: { 332 default: { 333 "a/b/c": { 334 "d/e": "a/b/c/d/e" 335 } 336 "/a/b": { 337 "/c/d": "/c/d" 338 } 339 "c:/a": { 340 "d:\\": "c:/a/d:\\" 341 } 342 "//home/user/foo": { 343 bar: "/home/user/foo/bar" 344 "//other/abs/foo": "/other/abs/foo" 345 } 346 } 347 unix: { 348 "a/b/c": { 349 "d/e": "a/b/c/d/e" 350 } 351 "/a/b": { 352 "/c/d": "/c/d" 353 } 354 "c:/a": { 355 "d:\\": "c:/a/d:\\" 356 } 357 "//home/user/foo": { 358 bar: "/home/user/foo/bar" 359 "//other/abs/foo": "/other/abs/foo" 360 } 361 } 362 plan9: { 363 "a/b/c": { 364 "d/e": "a/b/c/d/e" 365 } 366 "/a/b": { 367 "/c/d": "/c/d" 368 } 369 "c:/a": { 370 "d:\\": "c:/a/d:\\" 371 } 372 "//home/user/foo": { 373 bar: "/home/user/foo/bar" 374 "//other/abs/foo": "/other/abs/foo" 375 } 376 } 377 windows: { 378 "a/b/c": { 379 "d/e": "a\\b\\c\\d\\e" 380 } 381 "/a/b": { 382 "/c/d": "\\a\\b\\c\\d" 383 } 384 "c:/a": { 385 "d:\\": "d:\\" 386 } 387 "//home/user/foo": { 388 bar: "\\\\home\\user\\foo\\bar" 389 "//other/abs/foo": "\\\\other\\abs\\foo" 390 } 391 } 392 } 393 IsAbs: { 394 default: { 395 "": false 396 "/a": true 397 a: false 398 "c:": false 399 "c:/": false 400 "c:\\": false 401 "//home/user/foo": true 402 } 403 unix: { 404 "": false 405 "/a": true 406 a: false 407 "c:": false 408 "c:/": false 409 "c:\\": false 410 "//home/user/foo": true 411 } 412 plan9: { 413 "": false 414 "/a": true 415 a: false 416 "c:": false 417 "c:/": false 418 "c:\\": false 419 "//home/user/foo": true 420 } 421 windows: { 422 "": false 423 "/a": false 424 a: false 425 "c:": false 426 "c:/": true 427 "c:\\": true 428 "//home/user/foo": true 429 } 430 } 431 Volume: { 432 unix: { 433 "c:/foo/bar": "" 434 "c:": "" 435 "2:": "" 436 "": "" 437 "\\\\\\host": "" 438 "\\\\\\host\\": "" 439 "\\\\\\host\\share": "" 440 "\\\\\\host\\\\share": "" 441 "\\\\host": "" 442 "//host": "" 443 "\\\\host\\": "" 444 "//host/": "" 445 "\\\\host\\share": "" 446 "//host/share": "" 447 "\\\\host\\share\\": "" 448 "//host/share/": "" 449 "\\\\host\\share\\foo": "" 450 "//host/share/foo": "" 451 "\\\\host\\share\\\\foo\\\\\\bar\\\\\\\\baz": "" 452 "//host/share//foo///bar////baz": "" 453 "\\\\host\\share\\foo\\..\\bar": "" 454 "//host/share/foo/../bar": "" 455 } 456 plan9: { 457 "c:/foo/bar": "" 458 "c:": "" 459 "2:": "" 460 "": "" 461 "\\\\\\host": "" 462 "\\\\\\host\\": "" 463 "\\\\\\host\\share": "" 464 "\\\\\\host\\\\share": "" 465 "\\\\host": "" 466 "//host": "" 467 "\\\\host\\": "" 468 "//host/": "" 469 "\\\\host\\share": "" 470 "//host/share": "" 471 "\\\\host\\share\\": "" 472 "//host/share/": "" 473 "\\\\host\\share\\foo": "" 474 "//host/share/foo": "" 475 "\\\\host\\share\\\\foo\\\\\\bar\\\\\\\\baz": "" 476 "//host/share//foo///bar////baz": "" 477 "\\\\host\\share\\foo\\..\\bar": "" 478 "//host/share/foo/../bar": "" 479 } 480 windows: { 481 "c:/foo/bar": "c:" 482 "c:": "c:" 483 "2:": "" 484 "": "" 485 "\\\\\\host": "" 486 "\\\\\\host\\": "" 487 "\\\\\\host\\share": "" 488 "\\\\\\host\\\\share": "" 489 "\\\\host": "" 490 "//host": "" 491 "\\\\host\\": "" 492 "//host/": "" 493 "\\\\host\\share": "\\\\host\\share" 494 "//host/share": "//host/share" 495 "\\\\host\\share\\": "\\\\host\\share" 496 "//host/share/": "//host/share" 497 "\\\\host\\share\\foo": "\\\\host\\share" 498 "//host/share/foo": "//host/share" 499 "\\\\host\\share\\\\foo\\\\\\bar\\\\\\\\baz": "\\\\host\\share" 500 "//host/share//foo///bar////baz": "//host/share" 501 "\\\\host\\share\\foo\\..\\bar": "\\\\host\\share" 502 "//host/share/foo/../bar": "//host/share" 503 } 504 } 505