test-cmake.hs
1 #!/usr/bin/env runhaskell 2 {-# LANGUAGE OverloadedStrings #-} 3 4 -- Test CMake module against known-good flags 5 6 import Aleph.Script.Tools.CMake 7 import Control.Monad (unless) 8 import Data.Text (Text) 9 import qualified Data.Text as T 10 11 main :: IO () 12 main = do 13 putStrLn "Testing CMake.buildArgs..." 14 15 putStrLn "\n=== zlib-ng test ===" 16 let zlibResult = testZlibNgFlags 17 putStrLn $ "Pass: " ++ show zlibResult 18 unless zlibResult $ do 19 putStrLn "Expected:" 20 mapM_ (putStrLn . (" " ++) . T.unpack) expectedZlibNg 21 putStrLn "Got:" 22 mapM_ (putStrLn . (" " ++) . T.unpack) actualZlibNg 23 24 putStrLn "\n=== fmt test ===" 25 let fmtResult = testFmtFlags 26 putStrLn $ "Pass: " ++ show fmtResult 27 unless fmtResult $ do 28 putStrLn "Expected:" 29 mapM_ (putStrLn . (" " ++) . T.unpack) expectedFmt 30 putStrLn "Got:" 31 mapM_ (putStrLn . (" " ++) . T.unpack) actualFmt 32 33 putStrLn "\n=== Summary ===" 34 if zlibResult && fmtResult 35 then putStrLn "All tests passed!" 36 else putStrLn "SOME TESTS FAILED" 37 38 -- Helpers to show what we actually produced 39 expectedZlibNg, actualZlibNg :: [Text] 40 expectedZlibNg = 41 [ "-DCMAKE_INSTALL_PREFIX=/" 42 , "-DBUILD_SHARED_LIBS=OFF" 43 , "-DBUILD_STATIC_LIBS=ON" 44 , "-DINSTALL_UTILS=ON" 45 , "-DZLIB_COMPAT=ON" 46 ] 47 actualZlibNg = 48 buildArgs 49 defaults 50 { installPrefix = Just "/" 51 , buildStaticLibs = Just True 52 , buildSharedLibs = Just False 53 , extraFlags = 54 [ ("INSTALL_UTILS", "ON") 55 , ("ZLIB_COMPAT", "ON") 56 ] 57 } 58 59 expectedFmt, actualFmt :: [Text] 60 expectedFmt = 61 [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo" 62 , "-DBUILD_SHARED_LIBS=OFF" 63 , "-DBUILD_STATIC_LIBS=ON" 64 , "-DCMAKE_CXX_STANDARD=17" 65 , "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" 66 ] 67 actualFmt = 68 buildArgs 69 defaults 70 { buildType = Just RelWithDebInfo 71 , cxxStandard = Just 17 72 , positionIndependentCode = Just True 73 , buildStaticLibs = Just True 74 , buildSharedLibs = Just False 75 }