@@ -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