Skip to content

Commit c5f348d

Browse files
committed
Test output checks referring to other outputs
`allowedReferences` and friends can, in addition to supporting store paths (and placeholders, but because those will be rewritten to store paths), they also support to refering to other outputs in the derivation by name. We update the tests in order to cover for that. (While we are at it, also introduce some scratch variables for paths and placeholders to make the C++ literalsf for this test more concise.)
1 parent 5b15544 commit c5f348d

15 files changed

+95
-56
lines changed

src/libstore-tests/data/derivation/ca/advanced-attributes-structured-attrs.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@
6969
"outputChecks": {
7070
"bin": {
7171
"disallowedReferences": [
72-
"/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g"
72+
"/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g",
73+
"dev"
7374
],
7475
"disallowedRequisites": [
7576
"/07f301yqyz8c6wf6bbbavb2q39j4n8kmcly1s09xadyhgy6x2wr8"
@@ -84,7 +85,8 @@
8485
"/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9"
8586
],
8687
"allowedRequisites": [
87-
"/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z"
88+
"/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z",
89+
"bin"
8890
]
8991
}
9092
},

src/libstore-tests/data/derivation/ca/advanced-attributes.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
"__sandboxProfile": "sandcastle",
1212
"allowSubstitutes": "",
1313
"allowedReferences": "/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9",
14-
"allowedRequisites": "/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z",
14+
"allowedRequisites": "/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z bin",
1515
"builder": "/bin/bash",
16-
"disallowedReferences": "/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g",
16+
"disallowedReferences": "/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g dev",
1717
"disallowedRequisites": "/07f301yqyz8c6wf6bbbavb2q39j4n8kmcly1s09xadyhgy6x2wr8",
1818
"exportReferencesGraph": "refs1 /164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9 refs2 /nix/store/qnml92yh97a6fbrs2m5qg5cqlc8vni58-bar.drv",
1919
"impureEnvVars": "UNICORN",

src/libstore-tests/data/derivation/ca/all_set.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
"/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9"
2424
],
2525
"allowedRequisites": [
26-
"/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z"
26+
"/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z",
27+
"bin"
2728
],
2829
"disallowedReferences": [
29-
"/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g"
30+
"/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g",
31+
"dev"
3032
],
3133
"disallowedRequisites": [
3234
"/07f301yqyz8c6wf6bbbavb2q39j4n8kmcly1s09xadyhgy6x2wr8"

src/libstore-tests/data/derivation/ca/structuredAttrs_all_set.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"allowedReferences": null,
2424
"allowedRequisites": null,
2525
"disallowedReferences": [
26-
"/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g"
26+
"/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g",
27+
"dev"
2728
],
2829
"disallowedRequisites": [
2930
"/07f301yqyz8c6wf6bbbavb2q39j4n8kmcly1s09xadyhgy6x2wr8"
@@ -46,7 +47,8 @@
4647
"/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9"
4748
],
4849
"allowedRequisites": [
49-
"/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z"
50+
"/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z",
51+
"bin"
5052
],
5153
"disallowedReferences": [],
5254
"disallowedRequisites": [],

src/libstore-tests/data/derivation/ia/advanced-attributes-structured-attrs.json

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
],
66
"builder": "/bin/bash",
77
"env": {
8-
"bin": "/nix/store/33qms3h55wlaspzba3brlzlrm8m2239g-advanced-attributes-structured-attrs-bin",
9-
"dev": "/nix/store/wyfgwsdi8rs851wmy1xfzdxy7y5vrg5l-advanced-attributes-structured-attrs-dev",
10-
"out": "/nix/store/7cxy4zx1vqc885r4jl2l64pymqbdmhii-advanced-attributes-structured-attrs"
8+
"bin": "/nix/store/cnpasdljgkhnwaf78cf3qygcp4qbki1c-advanced-attributes-structured-attrs-bin",
9+
"dev": "/nix/store/ijq6mwpa9jbnpnl33qldfqihrr38kprx-advanced-attributes-structured-attrs-dev",
10+
"out": "/nix/store/h1vh648d3p088kdimy0r8ngpfx7c3nzw-advanced-attributes-structured-attrs"
1111
},
1212
"inputs": {
1313
"drvs": {
@@ -33,13 +33,13 @@
3333
"name": "advanced-attributes-structured-attrs",
3434
"outputs": {
3535
"bin": {
36-
"path": "33qms3h55wlaspzba3brlzlrm8m2239g-advanced-attributes-structured-attrs-bin"
36+
"path": "cnpasdljgkhnwaf78cf3qygcp4qbki1c-advanced-attributes-structured-attrs-bin"
3737
},
3838
"dev": {
39-
"path": "wyfgwsdi8rs851wmy1xfzdxy7y5vrg5l-advanced-attributes-structured-attrs-dev"
39+
"path": "ijq6mwpa9jbnpnl33qldfqihrr38kprx-advanced-attributes-structured-attrs-dev"
4040
},
4141
"out": {
42-
"path": "7cxy4zx1vqc885r4jl2l64pymqbdmhii-advanced-attributes-structured-attrs"
42+
"path": "h1vh648d3p088kdimy0r8ngpfx7c3nzw-advanced-attributes-structured-attrs"
4343
}
4444
},
4545
"structuredAttrs": {
@@ -66,7 +66,8 @@
6666
"outputChecks": {
6767
"bin": {
6868
"disallowedReferences": [
69-
"/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar"
69+
"/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar",
70+
"dev"
7071
],
7172
"disallowedRequisites": [
7273
"/nix/store/9b61w26b4avv870dw0ymb6rw4r1hzpws-bar-dev"
@@ -81,7 +82,8 @@
8182
"/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo"
8283
],
8384
"allowedRequisites": [
84-
"/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev"
85+
"/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev",
86+
"bin"
8587
]
8688
}
8789
},

src/libstore-tests/data/derivation/ia/advanced-attributes.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
"__sandboxProfile": "sandcastle",
1212
"allowSubstitutes": "",
1313
"allowedReferences": "/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo",
14-
"allowedRequisites": "/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev",
14+
"allowedRequisites": "/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev bin",
1515
"builder": "/bin/bash",
16-
"disallowedReferences": "/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar",
16+
"disallowedReferences": "/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar dev",
1717
"disallowedRequisites": "/nix/store/9b61w26b4avv870dw0ymb6rw4r1hzpws-bar-dev",
1818
"exportReferencesGraph": "refs1 /nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo refs2 /nix/store/vj2i49jm2868j2fmqvxm70vlzmzvgv14-bar.drv",
1919
"impureEnvVars": "UNICORN",
2020
"name": "advanced-attributes",
21-
"out": "/nix/store/wyhpwd748pns4k7svh48wdrc8kvjk0ra-advanced-attributes",
21+
"out": "/nix/store/ymqmybkq5j4nd1xplw6ccdpbjnfi017v-advanced-attributes",
2222
"preferLocalBuild": "1",
2323
"requiredSystemFeatures": "rainbow uid-range",
2424
"system": "my-system"
@@ -47,7 +47,7 @@
4747
"name": "advanced-attributes",
4848
"outputs": {
4949
"out": {
50-
"path": "wyhpwd748pns4k7svh48wdrc8kvjk0ra-advanced-attributes"
50+
"path": "ymqmybkq5j4nd1xplw6ccdpbjnfi017v-advanced-attributes"
5151
}
5252
},
5353
"system": "my-system",

src/libstore-tests/data/derivation/ia/all_set.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
"/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo"
2424
],
2525
"allowedRequisites": [
26-
"/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev"
26+
"/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev",
27+
"bin"
2728
],
2829
"disallowedReferences": [
29-
"/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar"
30+
"/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar",
31+
"dev"
3032
],
3133
"disallowedRequisites": [
3234
"/nix/store/9b61w26b4avv870dw0ymb6rw4r1hzpws-bar-dev"

src/libstore-tests/data/derivation/ia/structuredAttrs_all_set.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"allowedReferences": null,
2424
"allowedRequisites": null,
2525
"disallowedReferences": [
26-
"/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar"
26+
"/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar",
27+
"dev"
2728
],
2829
"disallowedRequisites": [
2930
"/nix/store/9b61w26b4avv870dw0ymb6rw4r1hzpws-bar-dev"
@@ -46,7 +47,8 @@
4647
"/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo"
4748
],
4849
"allowedRequisites": [
49-
"/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev"
50+
"/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev",
51+
"bin"
5052
],
5153
"disallowedReferences": [],
5254
"disallowedRequisites": [],

src/libstore-tests/derivation-advanced-attrs.cc

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,21 @@ TEST_ATERM_JSON(advancedAttributes_structuredAttrs_defaults, "advanced-attribute
127127

128128
#undef TEST_ATERM_JSON
129129

130+
/**
131+
* Since these are both repeated and sensative opaque values, it makes
132+
* sense to give them names in this file.
133+
*/
134+
static std::string pathFoo = "/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo",
135+
pathFooDev = "/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev",
136+
pathBar = "/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar",
137+
pathBarDev = "/nix/store/9b61w26b4avv870dw0ymb6rw4r1hzpws-bar-dev",
138+
pathBarDrvIA = "/nix/store/vj2i49jm2868j2fmqvxm70vlzmzvgv14-bar.drv",
139+
pathBarDrvCA = "/nix/store/qnml92yh97a6fbrs2m5qg5cqlc8vni58-bar.drv",
140+
placeholderFoo = "/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9",
141+
placeholderFooDev = "/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z",
142+
placeholderBar = "/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g",
143+
placeholderBarDev = "/07f301yqyz8c6wf6bbbavb2q39j4n8kmcly1s09xadyhgy6x2wr8";
144+
130145
using ExportReferencesMap = decltype(DerivationOptions::exportReferencesGraph);
131146

132147
static const DerivationOptions advancedAttributes_defaults = {
@@ -216,16 +231,16 @@ DerivationOptions advancedAttributes_ia = {
216231
.outputChecks =
217232
DerivationOptions::OutputChecks{
218233
.ignoreSelfRefs = true,
219-
.allowedReferences = StringSet{"/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo"},
220-
.disallowedReferences = StringSet{"/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar"},
221-
.allowedRequisites = StringSet{"/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev"},
222-
.disallowedRequisites = StringSet{"/nix/store/9b61w26b4avv870dw0ymb6rw4r1hzpws-bar-dev"},
234+
.allowedReferences = StringSet{pathFoo},
235+
.disallowedReferences = StringSet{pathBar, "dev"},
236+
.allowedRequisites = StringSet{pathFooDev, "bin"},
237+
.disallowedRequisites = StringSet{pathBarDev},
223238
},
224239
.unsafeDiscardReferences = {},
225240
.passAsFile = {},
226241
.exportReferencesGraph{
227-
{"refs1", {"/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo"}},
228-
{"refs2", {"/nix/store/vj2i49jm2868j2fmqvxm70vlzmzvgv14-bar.drv"}},
242+
{"refs1", {pathFoo}},
243+
{"refs2", {pathBarDrvIA}},
229244
},
230245
.additionalSandboxProfile = "sandcastle",
231246
.noChroot = true,
@@ -246,16 +261,16 @@ DerivationOptions advancedAttributes_ca = {
246261
.outputChecks =
247262
DerivationOptions::OutputChecks{
248263
.ignoreSelfRefs = true,
249-
.allowedReferences = StringSet{"/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9"},
250-
.disallowedReferences = StringSet{"/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g"},
251-
.allowedRequisites = StringSet{"/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z"},
252-
.disallowedRequisites = StringSet{"/07f301yqyz8c6wf6bbbavb2q39j4n8kmcly1s09xadyhgy6x2wr8"},
264+
.allowedReferences = StringSet{placeholderFoo},
265+
.disallowedReferences = StringSet{placeholderBar, "dev"},
266+
.allowedRequisites = StringSet{placeholderFooDev, "bin"},
267+
.disallowedRequisites = StringSet{placeholderBarDev},
253268
},
254269
.unsafeDiscardReferences = {},
255270
.passAsFile = {},
256271
.exportReferencesGraph{
257-
{"refs1", {"/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9"}},
258-
{"refs2", {"/nix/store/qnml92yh97a6fbrs2m5qg5cqlc8vni58-bar.drv"}},
272+
{"refs1", {placeholderFoo}},
273+
{"refs2", {pathBarDrvCA}},
259274
},
260275
.additionalSandboxProfile = "sandcastle",
261276
.noChroot = true,
@@ -375,13 +390,13 @@ DerivationOptions advancedAttributes_structuredAttrs_ia = {
375390
std::map<std::string, DerivationOptions::OutputChecks>{
376391
{"out",
377392
DerivationOptions::OutputChecks{
378-
.allowedReferences = StringSet{"/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo"},
379-
.allowedRequisites = StringSet{"/nix/store/z0rjzy29v9k5qa4nqpykrbzirj7sd43v-foo-dev"},
393+
.allowedReferences = StringSet{pathFoo},
394+
.allowedRequisites = StringSet{pathFooDev, "bin"},
380395
}},
381396
{"bin",
382397
DerivationOptions::OutputChecks{
383-
.disallowedReferences = StringSet{"/nix/store/r5cff30838majxk5mp3ip2diffi8vpaj-bar"},
384-
.disallowedRequisites = StringSet{"/nix/store/9b61w26b4avv870dw0ymb6rw4r1hzpws-bar-dev"},
398+
.disallowedReferences = StringSet{pathBar, "dev"},
399+
.disallowedRequisites = StringSet{pathBarDev},
385400
}},
386401
{"dev",
387402
DerivationOptions::OutputChecks{
@@ -393,8 +408,8 @@ DerivationOptions advancedAttributes_structuredAttrs_ia = {
393408
.passAsFile = {},
394409
.exportReferencesGraph =
395410
{
396-
{"refs1", {"/nix/store/p0hax2lzvjpfc2gwkk62xdglz0fcqfzn-foo"}},
397-
{"refs2", {"/nix/store/vj2i49jm2868j2fmqvxm70vlzmzvgv14-bar.drv"}},
411+
{"refs1", {pathFoo}},
412+
{"refs2", {pathBarDrvIA}},
398413
},
399414
.additionalSandboxProfile = "sandcastle",
400415
.noChroot = true,
@@ -417,13 +432,13 @@ DerivationOptions advancedAttributes_structuredAttrs_ca = {
417432
std::map<std::string, DerivationOptions::OutputChecks>{
418433
{"out",
419434
DerivationOptions::OutputChecks{
420-
.allowedReferences = StringSet{"/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9"},
421-
.allowedRequisites = StringSet{"/0nr45p69vn6izw9446wsh9bng9nndhvn19kpsm4n96a5mycw0s4z"},
435+
.allowedReferences = StringSet{placeholderFoo},
436+
.allowedRequisites = StringSet{placeholderFooDev, "bin"},
422437
}},
423438
{"bin",
424439
DerivationOptions::OutputChecks{
425-
.disallowedReferences = StringSet{"/0nyw57wm2iicnm9rglvjmbci3ikmcp823czdqdzdcgsnnwqps71g"},
426-
.disallowedRequisites = StringSet{"/07f301yqyz8c6wf6bbbavb2q39j4n8kmcly1s09xadyhgy6x2wr8"},
440+
.disallowedReferences = StringSet{placeholderBar, "dev"},
441+
.disallowedRequisites = StringSet{placeholderBarDev},
427442
}},
428443
{"dev",
429444
DerivationOptions::OutputChecks{
@@ -435,8 +450,8 @@ DerivationOptions advancedAttributes_structuredAttrs_ca = {
435450
.passAsFile = {},
436451
.exportReferencesGraph =
437452
{
438-
{"refs1", {"/164j69y6zir9z0339n8pjigg3rckinlr77bxsavzizdaaljb7nh9"}},
439-
{"refs2", {"/nix/store/qnml92yh97a6fbrs2m5qg5cqlc8vni58-bar.drv"}},
453+
{"refs1", {placeholderFoo}},
454+
{"refs2", {pathBarDrvCA}},
440455
},
441456
.additionalSandboxProfile = "sandcastle",
442457
.noChroot = true,

tests/functional/derivation/advanced-attributes-structured-attrs.nix

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,16 @@ derivation' {
6666
outputChecks = {
6767
out = {
6868
allowedReferences = [ foo ];
69-
allowedRequisites = [ foo.dev ];
69+
allowedRequisites = [
70+
foo.dev
71+
"bin"
72+
];
7073
};
7174
bin = {
72-
disallowedReferences = [ bar ];
75+
disallowedReferences = [
76+
bar
77+
"dev"
78+
];
7379
disallowedRequisites = [ bar.dev ];
7480
};
7581
dev = {

0 commit comments

Comments
 (0)