module Main where import Data.Aeson (Array) import qualified Data.Aeson as Aeson import qualified Data.ByteString.Lazy as LBS import qualified System.Directory as Directory import Test.HUnit import qualified Instana.SDK.IntegrationTest.Logging as Logging import qualified Instana.SDK.IntegrationTest.Runner as TestRunner import qualified Instana.SDK.IntegrationTest.TestSuites as TestSuites import qualified System.Exit as Exit main :: IO Counts main = do Logging.initLogging specificationComplianceTestCases <- parseSpecificationTestCasesJson case specificationComplianceTestCases of Just specTestCases -> TestRunner.runSuites $ TestSuites.allSuites specTestCases Nothing -> Exit.die $ "ERROR: Could not parse specification test cases JSON file. " ++ "See above for details." specificationComplianceJsonFile :: FilePath specificationComplianceJsonFile = "test/integration/Instana/SDK/IntegrationTest/" ++ "tracer_compliance_test_cases.json" parseSpecificationTestCasesJson :: IO (Maybe Array) parseSpecificationTestCasesJson = do cwd <- Directory.getCurrentDirectory putStrLn $ "Running integration tests in directory " ++ show cwd putStrLn $ "Parsing " ++ cwd ++ "/" ++ specificationComplianceJsonFile ++ "..." content <- LBS.readFile specificationComplianceJsonFile let decodedEither = Aeson.eitherDecode' content :: Either String Array case decodedEither of Left errorMessage -> do putStrLn $ "Could not parse " ++ specificationComplianceJsonFile ++ " - is it valid JSON?" putStrLn errorMessage return Nothing Right result -> return $ Just result