@@ -38,6 +38,9 @@ signature module InputSig<LocationSig Location, DF::InputSig<Location> DataFlowL
3838
3939 bindingset [ src, sink]
4040 string getArgString ( DataFlowLang:: Node src , DataFlowLang:: Node sink ) ;
41+
42+ /** Holds if the given extension tuple `madId` should pretty-print as `model`. */
43+ predicate interpretModelForTest ( QlBuiltins:: ExtensionId madId , string model ) ;
4144}
4245
4346module InlineFlowTestMake<
@@ -51,6 +54,8 @@ module InlineFlowTestMake<
5154
5255 private module InlineExpectationsTest = IET:: Make< Test > ;
5356
57+ private import ProvenancePathGraph
58+
5459 module DefaultFlowConfig implements DataFlow:: ConfigSig {
5560 predicate isSource ( DataFlowLang:: Node source ) { Impl:: defaultSource ( source ) }
5661
@@ -66,13 +71,33 @@ module InlineFlowTestMake<
6671 bindingset [ src, sink]
6772 signature string getArgStringSig ( DataFlowLang:: Node src , DataFlowLang:: Node sink ) ;
6873
74+ private module DataFlowGlobal< DataFlow:: ConfigSig Config> {
75+ private import DataFlow:: Global< Config > as G
76+ import G
77+
78+ module PathGraphNoInterpretModel = G:: PathGraph;
79+
80+ module PathGraph =
81+ ShowProvenance< Impl:: interpretModelForTest / 2 , PathNode , PathGraphNoInterpretModel > ;
82+ }
83+
84+ private module TaintTrackingGlobal< DataFlow:: ConfigSig Config> {
85+ private import TaintTracking:: Global< Config > as G
86+ import G
87+
88+ module PathGraphNoInterpretModel = G:: PathGraph;
89+
90+ module PathGraph =
91+ ShowProvenance< Impl:: interpretModelForTest / 2 , PathNode , PathGraphNoInterpretModel > ;
92+ }
93+
6994 module FlowTestArgString<
7095 DataFlow:: ConfigSig ValueFlowConfig, DataFlow:: ConfigSig TaintFlowConfig,
7196 getArgStringSig / 2 getArgString>
7297 {
73- module ValueFlow = DataFlow :: Global < ValueFlowConfig > ;
98+ module ValueFlow = DataFlowGlobal < ValueFlowConfig > ;
7499
75- module TaintFlow = TaintTracking :: Global < TaintFlowConfig > ;
100+ module TaintFlow = TaintTrackingGlobal < TaintFlowConfig > ;
76101
77102 private predicate hasLocationInfo ( DataFlowLang:: Node node , Test:: Location location ) {
78103 exists ( string filepath , int startline , int startcolumn , int endline , int endcolumn |
@@ -104,7 +129,11 @@ module InlineFlowTestMake<
104129 }
105130
106131 import InlineExpectationsTest:: MakeTest< InlineTest >
107- import DataFlow:: MergePathGraph< ValueFlow:: PathNode , TaintFlow:: PathNode , ValueFlow:: PathGraph , TaintFlow:: PathGraph >
132+ private import DataFlow:: MergePathGraph< ValueFlow:: PathNode , TaintFlow:: PathNode , ValueFlow:: PathGraphNoInterpretModel , TaintFlow:: PathGraphNoInterpretModel > as Merged
133+ import Merged
134+
135+ module PathGraph =
136+ ShowProvenance< Impl:: interpretModelForTest / 2 , Merged:: PathNode , Merged:: PathGraph > ;
108137
109138 predicate flowPath ( PathNode source , PathNode sink ) {
110139 ValueFlow:: flowPath ( source .asPathNode1 ( ) , sink .asPathNode1 ( ) ) or
0 commit comments