44module Analysis.FicusSpec (spec ) where
55
66import App.Fossa.Ficus.Analyze (analyzeWithFicus )
7- import App.Fossa.Ficus.Types (FicusAnalysisResults (.. ), FicusSnippetScanResults (.. ), FicusStrategy (FicusStrategySnippetScan ))
7+ import App.Fossa.Ficus.Types (FicusAnalysisResults (.. ), FicusSnippetScanResults (.. ), FicusStrategy (FicusStrategySnippetScan , FicusStrategyVendetta ), FicusVendoredDependencyScanResults ( FicusVendoredDependencyScanResults ))
88import App.Types (ProjectRevision (.. ))
99import Control.Carrier.Diagnostics (runDiagnostics )
1010import Control.Carrier.Stack (runStack )
@@ -19,6 +19,7 @@ import Effect.ReadFS (runReadFSIO)
1919import Fossa.API.Types (ApiKey (.. ), ApiOpts (.. ))
2020import Path (Dir , Path , Rel , reldir , (</>) )
2121import Path.IO qualified as PIO
22+ import Srclib.Types (SourceUnit (sourceUnitName ))
2223import System.Environment (lookupEnv )
2324import Test.Hspec
2425import Text.URI (mkURI )
@@ -51,16 +52,28 @@ spec = do
5152 testDataExists <- PIO. doesDirExist testDataDir
5253 testDataExists `shouldBe` True
5354
54- result <- runStack . runDiagnostics . ignoreStickyLogger . ignoreLogger . runExecIO . runReadFSIO $ analyzeWithFicus testDataDir apiOpts revision [FicusStrategySnippetScan ] Nothing (Just 10 ) Nothing
55+ let strategies = [FicusStrategySnippetScan , FicusStrategyVendetta ]
56+
57+ result <- runStack . runDiagnostics . ignoreStickyLogger . ignoreLogger . runExecIO . runReadFSIO $ analyzeWithFicus testDataDir apiOpts revision strategies Nothing (Just 10 ) Nothing
5558
5659 case result of
5760 Success _warnings analysisResult -> do
5861 case analysisResult of
59- Just (FicusAnalysisResults {snippetScanResults = Just results}) -> do
60- ficusSnippetScanResultsAnalysisId results `shouldSatisfy` (> 0 )
61- _ -> do
62- -- No snippet scan results returned - this is acceptable for integration testing
63- True `shouldBe` True
62+ Just results -> do
63+ case snippetScanResults results of
64+ Just snippetResults -> do
65+ ficusSnippetScanResultsAnalysisId snippetResults `shouldSatisfy` (> 0 )
66+ _ -> do
67+ -- No snippet scan results returned - this is acceptable for integration testing
68+ True `shouldBe` True
69+
70+ case vendoredDependencyScanResults results of
71+ Just (FicusVendoredDependencyScanResults (Just srcUnit)) -> do
72+ sourceUnitName srcUnit `shouldBe` " ficus-vendored-dependencies"
73+ _ -> do
74+ -- No vendetta results returned - this is acceptable for integration testing
75+ True `shouldBe` True
76+ _ -> fail " Ficus analysis returned no results unexpectedly."
6477 Failure _warnings errors -> do
6578 let failureMsg = show errors
6679 case apiOpts of
0 commit comments