Skip to content

Commit 65fbb4d

Browse files
authored
Merge pull request #14505 from obsidiansystems/output-check-intra-refs
Test output checks referring to other outputs
2 parents 070e8ee + c5f348d commit 65fbb4d

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)