@@ -70,33 +70,33 @@ func (r runner) run() ([]testrunner.TestResult, error) {
7070 return result .WithError (errors .Wrap (err , "failed to read manifest" ))
7171 }
7272
73- var results []testrunner.TestResult
74- results = append (results , r .verifySampleEvent (pkgManifest )... )
75- return results , nil
73+ return r .verifySampleEvent (pkgManifest ), nil
7674}
7775
7876func (r runner ) verifySampleEvent (pkgManifest * packages.PackageManifest ) []testrunner.TestResult {
79- dataStreamPath := filepath .Join (r .options .PackageRootPath , "data_stream" , r .options .TestFolder .DataStream )
80- sampleEventPath := filepath .Join (dataStreamPath , sampleEventJSON )
81- _ , err := os .Stat (sampleEventPath )
82- if errors .Is (err , os .ErrNotExist ) {
83- return []testrunner.TestResult {} // nothing to succeed, nothing to skip
84- }
85-
8677 resultComposer := testrunner .NewResultComposer (testrunner.TestResult {
8778 Name : "Verify " + sampleEventJSON ,
8879 TestType : TestType ,
8980 Package : r .options .TestFolder .Package ,
9081 DataStream : r .options .TestFolder .DataStream ,
9182 })
9283
84+ sampleEventPath , found , err := r .getSampleEventPath ()
9385 if err != nil {
94- results , _ := resultComposer .WithError (errors . Wrap ( err , "stat file failed" ) )
86+ results , _ := resultComposer .WithError (err )
9587 return results
9688 }
89+ if ! found {
90+ // Nothing to do.
91+ return []testrunner.TestResult {}
92+ }
9793
98- expectedDataset := pkgManifest .Name + "." + r .options .TestFolder .DataStream
99- fieldsValidator , err := fields .CreateValidatorForDirectory (dataStreamPath ,
94+ expectedDataset , err := r .getExpectedDataset (pkgManifest )
95+ if err != nil {
96+ results , _ := resultComposer .WithError (err )
97+ return results
98+ }
99+ fieldsValidator , err := fields .CreateValidatorForDirectory (filepath .Dir (sampleEventPath ),
100100 fields .WithSpecVersion (pkgManifest .SpecVersion ),
101101 fields .WithDefaultNumericConversion (),
102102 fields .WithExpectedDataset (expectedDataset ),
@@ -125,6 +125,46 @@ func (r runner) verifySampleEvent(pkgManifest *packages.PackageManifest) []testr
125125 return results
126126}
127127
128+ func (r runner ) getSampleEventPath () (string , bool , error ) {
129+ var sampleEventPath string
130+ if r .options .TestFolder .DataStream != "" {
131+ sampleEventPath = filepath .Join (
132+ r .options .PackageRootPath ,
133+ "data_stream" ,
134+ r .options .TestFolder .DataStream ,
135+ sampleEventJSON )
136+ } else {
137+ sampleEventPath = filepath .Join (r .options .PackageRootPath , sampleEventJSON )
138+ }
139+ _ , err := os .Stat (sampleEventPath )
140+ if errors .Is (err , os .ErrNotExist ) {
141+ return "" , false , nil
142+ }
143+ if err != nil {
144+ return "" , false , errors .Wrap (err , "stat file failed" )
145+ }
146+ return sampleEventPath , true , nil
147+ }
148+
149+ func (r runner ) getExpectedDataset (pkgManifest * packages.PackageManifest ) (string , error ) {
150+ dsName := r .options .TestFolder .DataStream
151+ if dsName == "" {
152+ // TODO: This should return the package name plus the policy name, but we don't know
153+ // what policy created this event, so we cannot reliably know it here. Skip the check
154+ // by now.
155+ return "" , nil
156+ }
157+
158+ dataStreamManifest , err := packages .ReadDataStreamManifestFromPackageRoot (r .options .PackageRootPath , dsName )
159+ if err != nil {
160+ return "" , errors .Wrap (err , "failed to read data stream manifest" )
161+ }
162+ if ds := dataStreamManifest .Dataset ; ds != "" {
163+ return ds , nil
164+ }
165+ return pkgManifest .Name + "." + dsName , nil
166+ }
167+
128168func (r runner ) TearDown () error {
129169 return nil // it's a static test runner, no state is stored
130170}
0 commit comments