/ nix / script / exe / test-cmake.hs
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              }