Skip to content

Commit a19cab1

Browse files
committed
pkg/uuid: add more valid and invalid test cases
And check their results with Valid and Parse, the two main APIs, which currently disagree on what is a valid UUID string. The following commit will address that. Signed-off-by: Daniel Martí <[email protected]> Change-Id: I2a47ccac5be606f641937def524152974413075a Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1199880 Reviewed-by: Matthew Sackman <[email protected]> TryBot-Result: CUEcueckoo <[email protected]> Unity-Result: CUE porcuepine <[email protected]>
1 parent 9aabfcb commit a19cab1

File tree

1 file changed

+163
-33
lines changed

1 file changed

+163
-33
lines changed

pkg/uuid/testdata/uuid.txtar

+163-33
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,37 @@ sha1: a: uuid.SHA1(uuid.ns.DNS, "cuelang.org")
55

66
md5: a: uuid.MD5(uuid.ns.URL, "https://cuelang.org")
77

8-
valid: {
9-
a: uuid.Valid
8+
validTable: {
109
a: "052ef62d-7223-58b6-a551-c1deee46d401"
10+
b: "052EF62D-7223-58B6-A551-C1DEEE46D401"
11+
c: "urn:uuid:123e4567-e89b-12d3-a456-426655440000"
12+
d: "{123e4567-e89b-12d3-a456-426655440000}"
13+
e: "123e4567e89b12d3a456426655440000"
1114
}
1215

13-
invalid: {
14-
a: uuid.Valid
15-
a: "052EF62D-7223-58B6-A551-C1DEEE46D401"
16+
invalidTable: {
17+
a: "052ef62d_7223_58b6_a551_c1deee46d401"
18+
b: "052ef62d-7223-58b6-a551-c1deee"
19+
c: "{123e4567-e89b-12d3-a456-426655440000"
20+
}
1621

17-
b: uuid.Valid
18-
b: "052ef62d_7223_58b6_a551_c1deee46d401"
22+
valid: {
23+
for k, v in validTable {
24+
ok: (k): v & uuid.Valid
25+
}
26+
for k, v in invalidTable {
27+
err: (k): v & uuid.Valid
28+
}
1929
}
2030

21-
parse: a: uuid.Parse("052ef62d722358b6a551c1deee46d401")
31+
parse: {
32+
for k, v in validTable {
33+
ok: (k): uuid.Parse(v)
34+
}
35+
for k, v in invalidTable {
36+
err: (k): uuid.Parse(v)
37+
}
38+
}
2239

2340
fromInt: a: uuid.FromInt(0x052ef62d_7223_58b6_a551_c1deee46d401)
2441

@@ -28,10 +45,26 @@ urn: a: uuid.URN(sha1.a)
2845
toInt: a: uuid.ToInt(sha1.a)
2946
-- out/uuid-v3 --
3047
Errors:
31-
invalid.a: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401":
32-
./in.cue:14:5
33-
invalid.b: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401":
48+
valid.err.a: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401":
49+
./in.cue:16:5
50+
valid.err.b: invalid value "052ef62d-7223-58b6-a551-c1deee" (does not satisfy uuid.Valid): invalid UUID "052ef62d-7223-58b6-a551-c1deee":
3451
./in.cue:17:5
52+
valid.err.c: invalid value "{123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): invalid UUID "{123e4567-e89b-12d3-a456-426655440000":
53+
./in.cue:18:5
54+
valid.ok.b: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401":
55+
./in.cue:9:5
56+
valid.ok.c: invalid value "urn:uuid:123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): invalid UUID "urn:uuid:123e4567-e89b-12d3-a456-426655440000":
57+
./in.cue:10:5
58+
valid.ok.d: invalid value "{123e4567-e89b-12d3-a456-426655440000}" (does not satisfy uuid.Valid): invalid UUID "{123e4567-e89b-12d3-a456-426655440000}":
59+
./in.cue:11:5
60+
valid.ok.e: invalid value "123e4567e89b12d3a456426655440000" (does not satisfy uuid.Valid): invalid UUID "123e4567e89b12d3a456426655440000":
61+
./in.cue:12:5
62+
parse.err.a: error in call to uuid.Parse: invalid UUID format:
63+
./in.cue:35:13
64+
parse.err.b: error in call to uuid.Parse: invalid UUID length: 30:
65+
./in.cue:35:13
66+
parse.err.c: error in call to uuid.Parse: invalid UUID length: 37:
67+
./in.cue:35:13
3568

3669
Result:
3770
sha1: {
@@ -40,15 +73,45 @@ sha1: {
4073
md5: {
4174
a: "d891d69e-ae5c-39e0-9ead-164abd207f1f"
4275
}
43-
valid: {
76+
validTable: {
4477
a: "052ef62d-7223-58b6-a551-c1deee46d401"
78+
b: "052EF62D-7223-58B6-A551-C1DEEE46D401"
79+
c: "urn:uuid:123e4567-e89b-12d3-a456-426655440000"
80+
d: "{123e4567-e89b-12d3-a456-426655440000}"
81+
e: "123e4567e89b12d3a456426655440000"
4582
}
46-
invalid: {
47-
a: _|_ // invalid.a: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): invalid.a: invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401"
48-
b: _|_ // invalid.b: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): invalid.b: invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401"
83+
invalidTable: {
84+
a: "052ef62d_7223_58b6_a551_c1deee46d401"
85+
b: "052ef62d-7223-58b6-a551-c1deee"
86+
c: "{123e4567-e89b-12d3-a456-426655440000"
87+
}
88+
valid: {
89+
ok: {
90+
a: "052ef62d-7223-58b6-a551-c1deee46d401"
91+
b: _|_ // valid.ok.b: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): valid.ok.b: invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401"
92+
c: _|_ // valid.ok.c: invalid value "urn:uuid:123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): valid.ok.c: invalid UUID "urn:uuid:123e4567-e89b-12d3-a456-426655440000"
93+
d: _|_ // valid.ok.d: invalid value "{123e4567-e89b-12d3-a456-426655440000}" (does not satisfy uuid.Valid): valid.ok.d: invalid UUID "{123e4567-e89b-12d3-a456-426655440000}"
94+
e: _|_ // valid.ok.e: invalid value "123e4567e89b12d3a456426655440000" (does not satisfy uuid.Valid): valid.ok.e: invalid UUID "123e4567e89b12d3a456426655440000"
95+
}
96+
err: {
97+
a: _|_ // valid.err.a: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): valid.err.a: invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401"
98+
b: _|_ // valid.err.b: invalid value "052ef62d-7223-58b6-a551-c1deee" (does not satisfy uuid.Valid): valid.err.b: invalid UUID "052ef62d-7223-58b6-a551-c1deee"
99+
c: _|_ // valid.err.c: invalid value "{123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): valid.err.c: invalid UUID "{123e4567-e89b-12d3-a456-426655440000"
100+
}
49101
}
50102
parse: {
51-
a: "052ef62d-7223-58b6-a551-c1deee46d401"
103+
ok: {
104+
a: "052ef62d-7223-58b6-a551-c1deee46d401"
105+
b: "052ef62d-7223-58b6-a551-c1deee46d401"
106+
c: "123e4567-e89b-12d3-a456-426655440000"
107+
d: "123e4567-e89b-12d3-a456-426655440000"
108+
e: "123e4567-e89b-12d3-a456-426655440000"
109+
}
110+
err: {
111+
a: _|_ // parse.err.a: error in call to uuid.Parse: invalid UUID format
112+
b: _|_ // parse.err.b: error in call to uuid.Parse: invalid UUID length: 30
113+
c: _|_ // parse.err.c: error in call to uuid.Parse: invalid UUID length: 37
114+
}
52115
}
53116
fromInt: {
54117
a: "052ef62d-7223-58b6-a551-c1deee46d401"
@@ -69,26 +132,63 @@ toInt: {
69132
diff old new
70133
--- old
71134
+++ new
72-
@@ -1,9 +1,7 @@
135+
@@ -1,25 +1,18 @@
73136
Errors:
74-
invalid.a: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401":
75-
- ./in.cue:13:5
76-
./in.cue:14:5
77-
invalid.b: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401":
78-
- ./in.cue:16:5
137+
valid.err.a: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401":
138+
./in.cue:16:5
139+
- ./in.cue:26:13
140+
valid.err.b: invalid value "052ef62d-7223-58b6-a551-c1deee" (does not satisfy uuid.Valid): invalid UUID "052ef62d-7223-58b6-a551-c1deee":
79141
./in.cue:17:5
80-
81-
Result:
142+
- ./in.cue:26:13
143+
valid.err.c: invalid value "{123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): invalid UUID "{123e4567-e89b-12d3-a456-426655440000":
144+
./in.cue:18:5
145+
- ./in.cue:26:13
146+
valid.ok.b: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401":
147+
./in.cue:9:5
148+
- ./in.cue:23:12
149+
valid.ok.c: invalid value "urn:uuid:123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): invalid UUID "urn:uuid:123e4567-e89b-12d3-a456-426655440000":
150+
./in.cue:10:5
151+
- ./in.cue:23:12
152+
valid.ok.d: invalid value "{123e4567-e89b-12d3-a456-426655440000}" (does not satisfy uuid.Valid): invalid UUID "{123e4567-e89b-12d3-a456-426655440000}":
153+
./in.cue:11:5
154+
- ./in.cue:23:12
155+
valid.ok.e: invalid value "123e4567e89b12d3a456426655440000" (does not satisfy uuid.Valid): invalid UUID "123e4567e89b12d3a456426655440000":
156+
./in.cue:12:5
157+
- ./in.cue:23:12
158+
parse.err.a: error in call to uuid.Parse: invalid UUID format:
159+
./in.cue:35:13
160+
parse.err.b: error in call to uuid.Parse: invalid UUID length: 30:
82161
-- diff/todo/p2 --
83162
Missing error positions.
84163
-- out/uuid --
85164
Errors:
86-
invalid.a: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401":
87-
./in.cue:13:5
88-
./in.cue:14:5
89-
invalid.b: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401":
165+
valid.err.a: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401":
90166
./in.cue:16:5
167+
./in.cue:26:13
168+
valid.err.b: invalid value "052ef62d-7223-58b6-a551-c1deee" (does not satisfy uuid.Valid): invalid UUID "052ef62d-7223-58b6-a551-c1deee":
91169
./in.cue:17:5
170+
./in.cue:26:13
171+
valid.err.c: invalid value "{123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): invalid UUID "{123e4567-e89b-12d3-a456-426655440000":
172+
./in.cue:18:5
173+
./in.cue:26:13
174+
valid.ok.b: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401":
175+
./in.cue:9:5
176+
./in.cue:23:12
177+
valid.ok.c: invalid value "urn:uuid:123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): invalid UUID "urn:uuid:123e4567-e89b-12d3-a456-426655440000":
178+
./in.cue:10:5
179+
./in.cue:23:12
180+
valid.ok.d: invalid value "{123e4567-e89b-12d3-a456-426655440000}" (does not satisfy uuid.Valid): invalid UUID "{123e4567-e89b-12d3-a456-426655440000}":
181+
./in.cue:11:5
182+
./in.cue:23:12
183+
valid.ok.e: invalid value "123e4567e89b12d3a456426655440000" (does not satisfy uuid.Valid): invalid UUID "123e4567e89b12d3a456426655440000":
184+
./in.cue:12:5
185+
./in.cue:23:12
186+
parse.err.a: error in call to uuid.Parse: invalid UUID format:
187+
./in.cue:35:13
188+
parse.err.b: error in call to uuid.Parse: invalid UUID length: 30:
189+
./in.cue:35:13
190+
parse.err.c: error in call to uuid.Parse: invalid UUID length: 37:
191+
./in.cue:35:13
92192

93193
Result:
94194
sha1: {
@@ -97,15 +197,45 @@ sha1: {
97197
md5: {
98198
a: "d891d69e-ae5c-39e0-9ead-164abd207f1f"
99199
}
100-
valid: {
200+
validTable: {
101201
a: "052ef62d-7223-58b6-a551-c1deee46d401"
202+
b: "052EF62D-7223-58B6-A551-C1DEEE46D401"
203+
c: "urn:uuid:123e4567-e89b-12d3-a456-426655440000"
204+
d: "{123e4567-e89b-12d3-a456-426655440000}"
205+
e: "123e4567e89b12d3a456426655440000"
102206
}
103-
invalid: {
104-
a: _|_ // invalid.a: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): invalid.a: invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401"
105-
b: _|_ // invalid.b: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): invalid.b: invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401"
207+
invalidTable: {
208+
a: "052ef62d_7223_58b6_a551_c1deee46d401"
209+
b: "052ef62d-7223-58b6-a551-c1deee"
210+
c: "{123e4567-e89b-12d3-a456-426655440000"
211+
}
212+
valid: {
213+
ok: {
214+
a: "052ef62d-7223-58b6-a551-c1deee46d401"
215+
b: _|_ // valid.ok.b: invalid value "052EF62D-7223-58B6-A551-C1DEEE46D401" (does not satisfy uuid.Valid): valid.ok.b: invalid UUID "052EF62D-7223-58B6-A551-C1DEEE46D401"
216+
c: _|_ // valid.ok.c: invalid value "urn:uuid:123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): valid.ok.c: invalid UUID "urn:uuid:123e4567-e89b-12d3-a456-426655440000"
217+
d: _|_ // valid.ok.d: invalid value "{123e4567-e89b-12d3-a456-426655440000}" (does not satisfy uuid.Valid): valid.ok.d: invalid UUID "{123e4567-e89b-12d3-a456-426655440000}"
218+
e: _|_ // valid.ok.e: invalid value "123e4567e89b12d3a456426655440000" (does not satisfy uuid.Valid): valid.ok.e: invalid UUID "123e4567e89b12d3a456426655440000"
219+
}
220+
err: {
221+
a: _|_ // valid.err.a: invalid value "052ef62d_7223_58b6_a551_c1deee46d401" (does not satisfy uuid.Valid): valid.err.a: invalid UUID "052ef62d_7223_58b6_a551_c1deee46d401"
222+
b: _|_ // valid.err.b: invalid value "052ef62d-7223-58b6-a551-c1deee" (does not satisfy uuid.Valid): valid.err.b: invalid UUID "052ef62d-7223-58b6-a551-c1deee"
223+
c: _|_ // valid.err.c: invalid value "{123e4567-e89b-12d3-a456-426655440000" (does not satisfy uuid.Valid): valid.err.c: invalid UUID "{123e4567-e89b-12d3-a456-426655440000"
224+
}
106225
}
107226
parse: {
108-
a: "052ef62d-7223-58b6-a551-c1deee46d401"
227+
ok: {
228+
a: "052ef62d-7223-58b6-a551-c1deee46d401"
229+
b: "052ef62d-7223-58b6-a551-c1deee46d401"
230+
c: "123e4567-e89b-12d3-a456-426655440000"
231+
d: "123e4567-e89b-12d3-a456-426655440000"
232+
e: "123e4567-e89b-12d3-a456-426655440000"
233+
}
234+
err: {
235+
a: _|_ // parse.err.a: error in call to uuid.Parse: invalid UUID format
236+
b: _|_ // parse.err.b: error in call to uuid.Parse: invalid UUID length: 30
237+
c: _|_ // parse.err.c: error in call to uuid.Parse: invalid UUID length: 37
238+
}
109239
}
110240
fromInt: {
111241
a: "052ef62d-7223-58b6-a551-c1deee46d401"

0 commit comments

Comments
 (0)