Skip to content

Commit fbf6019

Browse files
committed
test: add audit files tests
1 parent 72b25d4 commit fbf6019

File tree

3 files changed

+145
-0
lines changed

3 files changed

+145
-0
lines changed

test/black-box/audit/recipes/root.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@ buildScript: |
1010
cp $1/root.txt .
1111
cp $2/foo.txt .
1212
13+
packageAuditFiles:
14+
ROOT: root.txt
15+
FOO:
16+
filename: foo.txt
17+
encoding: base64
1318
packageScript: |
1419
cp $1/* .

test/black-box/audit/run.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,7 @@ test -z "$(/usr/bin/find "$archiveDir" -type f -name '*.tgz')"
3131
# Rebuild forced and upload again. Now it must create artifcats in the archive.
3232
run_bob dev -v --upload -f root
3333
test -n "$(/usr/bin/find "$archiveDir" -type f -name '*.tgz')"
34+
35+
# Verify additional files in audit trail
36+
expect_equal "$(./extract.py dev/dist/root/1/audit.json.gz ROOT)" foo
37+
expect_equal "$(./extract.py dev/dist/root/1/audit.json.gz FOO)" "$(echo foo | base64)"

test/unit/test_input_recipeset.py

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2615,3 +2615,139 @@ def testPrecedence(self):
26152615
ScmOverride({ "set" : { "url" : "include_l1" }}),
26162616
ScmOverride({ "set" : { "url" : "include_l2" }}) ],
26172617
cfg.scmOverrides())
2618+
2619+
class TestAuditFiles(RecipesTmp, TestCase):
2620+
"""Test packageAuditFiles """
2621+
2622+
def testSimple(self):
2623+
"""Simple packageAuditFiles"""
2624+
self.writeRecipe("root", """\
2625+
root: True
2626+
checkoutScript: "true"
2627+
checkoutAuditFiles:
2628+
CHECKOUT: some
2629+
buildScript: "true"
2630+
buildAuditFiles:
2631+
BUILD: files
2632+
packageAuditFiles:
2633+
FOO: foo
2634+
BAR: bar
2635+
""")
2636+
2637+
p = self.generate().walkPackagePath("root")
2638+
2639+
af = p.getCheckoutStep().getAuditFileNames()
2640+
self.assertEqual(set(af.keys()), {"CHECKOUT"})
2641+
self.assertEqual(af["CHECKOUT"], ("some", "utf-8"))
2642+
2643+
af = p.getBuildStep().getAuditFileNames()
2644+
self.assertEqual(set(af.keys()), {"BUILD"})
2645+
self.assertEqual(af["BUILD"], ("files", "utf-8"))
2646+
2647+
for name, (filename, encoding) in p.getPackageStep().getAuditFileNames().items():
2648+
self.assertIn(name, {"FOO", "BAR"})
2649+
self.assertEqual(name.lower(), filename)
2650+
self.assertEqual(encoding, "utf-8")
2651+
2652+
def testInherit(self):
2653+
"""Inherited classes are merged on a key-by-key basis"""
2654+
self.writeRecipe("root", """\
2655+
root: True
2656+
inherit: [cls]
2657+
checkoutScript: "true"
2658+
buildScript: "true"
2659+
buildAuditFiles:
2660+
BUILD: files
2661+
packageAuditFiles:
2662+
BAR: bar
2663+
""")
2664+
self.writeClass("cls", """\
2665+
checkoutAuditFiles:
2666+
CHECKOUT: some
2667+
buildAuditFiles:
2668+
BUILD: xxxxx
2669+
packageAuditFiles:
2670+
FOO: "$FOO"
2671+
BAR: baz
2672+
""")
2673+
2674+
p = self.generate(env={"FOO" : "foo"}).walkPackagePath("root")
2675+
2676+
af = p.getCheckoutStep().getAuditFileNames()
2677+
self.assertEqual(set(af.keys()), {"CHECKOUT"})
2678+
self.assertEqual(af["CHECKOUT"], ("some", "utf-8"))
2679+
2680+
af = p.getBuildStep().getAuditFileNames()
2681+
self.assertEqual(set(af.keys()), {"BUILD"})
2682+
self.assertEqual(af["BUILD"], ("files", "utf-8"))
2683+
2684+
for name, (filename, encoding) in p.getPackageStep().getAuditFileNames().items():
2685+
self.assertIn(name, {"FOO", "BAR"})
2686+
self.assertEqual(name.lower(), filename)
2687+
self.assertEqual(encoding, "utf-8")
2688+
2689+
def testCustomEncoding(self):
2690+
"""A custom encoding can be set per audit file"""
2691+
self.writeRecipe("root", """\
2692+
root: True
2693+
packageAuditFiles:
2694+
FOO:
2695+
filename: foo
2696+
encoding: custom
2697+
""")
2698+
2699+
p = self.generate().walkPackagePath("root")
2700+
filename, encoding = p.getPackageStep().getAuditFileNames()["FOO"]
2701+
self.assertEqual(filename, "foo")
2702+
self.assertEqual(encoding, "custom")
2703+
2704+
def testSubstitution(self):
2705+
"""Audit filename and encoding are string substituted"""
2706+
self.writeRecipe("root", """\
2707+
root: True
2708+
packageAuditFiles:
2709+
FOO:
2710+
filename: "${FN:-foo}"
2711+
encoding: "${ENC:-utf8}"
2712+
""")
2713+
2714+
p = self.generate().walkPackagePath("root")
2715+
filename, encoding = p.getPackageStep().getAuditFileNames()["FOO"]
2716+
self.assertEqual(filename, "foo")
2717+
self.assertEqual(encoding, "utf8")
2718+
2719+
p = self.generate(env={"FN" : "bar", "ENC" : "binary"}).walkPackagePath("root")
2720+
filename, encoding = p.getPackageStep().getAuditFileNames()["FOO"]
2721+
self.assertEqual(filename, "bar")
2722+
self.assertEqual(encoding, "binary")
2723+
2724+
def testConditional(self):
2725+
self.writeRecipe("root", """\
2726+
root: True
2727+
packageAuditFiles:
2728+
FOO:
2729+
filename: foo
2730+
if: "${FOO}"
2731+
BAR:
2732+
filename: bar
2733+
if: !expr >-
2734+
"$BAR" == "enabled"
2735+
""")
2736+
2737+
with self.assertRaises(ParseError):
2738+
self.generate().walkPackagePath("root")
2739+
2740+
p = self.generate(env={"FOO" : "0"}).walkPackagePath("root")
2741+
self.assertEqual(set(p.getPackageStep().getAuditFileNames().keys()), set())
2742+
2743+
p = self.generate(env={"FOO" : "1"}).walkPackagePath("root")
2744+
self.assertEqual(set(p.getPackageStep().getAuditFileNames().keys()), {'FOO'})
2745+
filename, encoding = p.getPackageStep().getAuditFileNames()["FOO"]
2746+
self.assertEqual(filename, "foo")
2747+
self.assertEqual(encoding, "utf-8")
2748+
2749+
p = self.generate(env={"FOO" : "true", "BAR" : "enabled"}).walkPackagePath("root")
2750+
self.assertEqual(set(p.getPackageStep().getAuditFileNames().keys()), {'FOO', 'BAR'})
2751+
filename, encoding = p.getPackageStep().getAuditFileNames()["BAR"]
2752+
self.assertEqual(filename, "bar")
2753+
self.assertEqual(encoding, "utf-8")

0 commit comments

Comments
 (0)