github.com/joomcode/cue@v0.4.4-0.20221111115225-539fe3512047/pkg/path/testdata/join.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  
    16  -- in.cue --
    17  import "path"
    18  
    19  joinSingle: path.Join(["a", "b"])
    20  joinSingle: "a/b"
    21  
    22  Join: unix:    _
    23  Join: windows: _
    24  
    25  Join: [OS=string]: [...{
    26  	arg: [...string]
    27  
    28  	out: path.Join(arg, OS)
    29  }]
    30  
    31  Join: [_]: [
    32  	{arg: ["a", "b"]},
    33  	{arg: ["a/b", "c/d"]},
    34  
    35  	{arg: ["/"]},
    36  	{arg: ["a"]},
    37  
    38  	{arg: ["a", "b"]},
    39  	{arg: ["a", ""]},
    40  	{arg: ["", "b"]},
    41  	{arg: ["/", "a"]},
    42  	{arg: ["/", "a/b"]},
    43  	{arg: ["/", ""]},
    44  	{arg: ["//", "a"]},
    45  
    46  	{arg: ["directory", "file"]},
    47  
    48  	{arg: [#"C:\Windows\"#, #"System32"#]},
    49  	{arg: [#"C:\Windows\"#, #""#]},
    50  	{arg: [#"C:\"#, #"Windows"#]},
    51  	{arg: [#"C:"#, #"a\b"#]},
    52  	{arg: [#"C:"#, #"a"#, #"b"#]},
    53  	{arg: [#"C:"#, #""#, #""#, #"b"#]},
    54  	{arg: [#"C:"#, #""#]},
    55  	{arg: [#"C:"#, #""#, #""#]},
    56  	{arg: [#"C:."#, #"a"#]},
    57  	{arg: [#"C:a"#, #"b"#]},
    58  	{arg: [#"\\host\share"#, #"foo"#]},
    59  ]
    60  -- out/path --
    61  joinSingle: "a/b"
    62  Join: {
    63  	unix: [{
    64  		arg: ["a", "b"]
    65  		out: "a/b"
    66  	}, {
    67  		arg: ["a/b", "c/d"]
    68  		out: "a/b/c/d"
    69  	}, {
    70  		arg: ["/"]
    71  		out: "/"
    72  	}, {
    73  		arg: ["a"]
    74  		out: "a"
    75  	}, {
    76  		arg: ["a", "b"]
    77  		out: "a/b"
    78  	}, {
    79  		arg: ["a", ""]
    80  		out: "a"
    81  	}, {
    82  		arg: ["", "b"]
    83  		out: "b"
    84  	}, {
    85  		arg: ["/", "a"]
    86  		out: "/a"
    87  	}, {
    88  		arg: ["/", "a/b"]
    89  		out: "/a/b"
    90  	}, {
    91  		arg: ["/", ""]
    92  		out: "/"
    93  	}, {
    94  		arg: ["//", "a"]
    95  		out: "/a"
    96  	}, {
    97  		arg: ["directory", "file"]
    98  		out: "directory/file"
    99  	}, {
   100  		arg: [#"C:\Windows\"#, #"System32"#]
   101  		out: "C:\\Windows\\/System32"
   102  	}, {
   103  		arg: [#"C:\Windows\"#, #""#]
   104  		out: "C:\\Windows\\"
   105  	}, {
   106  		arg: [#"C:\"#, #"Windows"#]
   107  		out: "C:\\/Windows"
   108  	}, {
   109  		arg: [#"C:"#, #"a\b"#]
   110  		out: "C:/a\\b"
   111  	}, {
   112  		arg: [#"C:"#, #"a"#, #"b"#]
   113  		out: "C:/a/b"
   114  	}, {
   115  		arg: [#"C:"#, #""#, #""#, #"b"#]
   116  		out: "C:/b"
   117  	}, {
   118  		arg: [#"C:"#, #""#]
   119  		out: "C:"
   120  	}, {
   121  		arg: [#"C:"#, #""#, #""#]
   122  		out: "C:"
   123  	}, {
   124  		arg: [#"C:."#, #"a"#]
   125  		out: "C:./a"
   126  	}, {
   127  		arg: [#"C:a"#, #"b"#]
   128  		out: "C:a/b"
   129  	}, {
   130  		arg: [#"\\host\share"#, #"foo"#]
   131  		out: "\\\\host\\share/foo"
   132  	}]
   133  	windows: [{
   134  		arg: ["a", "b"]
   135  		out: "a\\b"
   136  	}, {
   137  		arg: ["a/b", "c/d"]
   138  		out: "a\\b\\c\\d"
   139  	}, {
   140  		arg: ["/"]
   141  		out: "\\"
   142  	}, {
   143  		arg: ["a"]
   144  		out: "a"
   145  	}, {
   146  		arg: ["a", "b"]
   147  		out: "a\\b"
   148  	}, {
   149  		arg: ["a", ""]
   150  		out: "a"
   151  	}, {
   152  		arg: ["", "b"]
   153  		out: "b"
   154  	}, {
   155  		arg: ["/", "a"]
   156  		out: "\\a"
   157  	}, {
   158  		arg: ["/", "a/b"]
   159  		out: "\\a\\b"
   160  	}, {
   161  		arg: ["/", ""]
   162  		out: "\\"
   163  	}, {
   164  		arg: ["//", "a"]
   165  		out: "\\a"
   166  	}, {
   167  		arg: ["directory", "file"]
   168  		out: "directory\\file"
   169  	}, {
   170  		arg: [#"C:\Windows\"#, #"System32"#]
   171  		out: "C:\\Windows\\System32"
   172  	}, {
   173  		arg: [#"C:\Windows\"#, #""#]
   174  		out: "C:\\Windows"
   175  	}, {
   176  		arg: [#"C:\"#, #"Windows"#]
   177  		out: "C:\\Windows"
   178  	}, {
   179  		arg: [#"C:"#, #"a\b"#]
   180  		out: "C:a\\b"
   181  	}, {
   182  		arg: [#"C:"#, #"a"#, #"b"#]
   183  		out: "C:a\\b"
   184  	}, {
   185  		arg: [#"C:"#, #""#, #""#, #"b"#]
   186  		out: "C:b"
   187  	}, {
   188  		arg: [#"C:"#, #""#]
   189  		out: "C:."
   190  	}, {
   191  		arg: [#"C:"#, #""#, #""#]
   192  		out: "C:."
   193  	}, {
   194  		arg: [#"C:."#, #"a"#]
   195  		out: "C:a"
   196  	}, {
   197  		arg: [#"C:a"#, #"b"#]
   198  		out: "C:a\\b"
   199  	}, {
   200  		arg: [#"\\host\share"#, #"foo"#]
   201  		out: "\\\\host\\share\\foo"
   202  	}]
   203  }
   204