packages feed

rdkafka-hs-1.1.0.0: scripts/coverage-zero.hs

-- Include unlinked library modules as explicit zero-count coverage. The MIX
-- file supplies the exact instrumentation hash and tick count; never invent
-- counts or mark an unlinked module as inapplicable.
module Main (main) where

import System.Environment (getArgs)
import Trace.Hpc.Mix (Mix (..))
import Trace.Hpc.Tix (Tix (..), TixModule (..), writeTix)

main :: IO ()
main = do
  args <- getArgs
  case args of
    output : inputs -> mapM zero (pairs inputs) >>= writeTix output . Tix
    _ -> fail "usage: coverage-zero.hs OUTPUT NAME MIX [NAME MIX ...]"
  where
    pairs [] = []
    pairs (name : path : rest) = (name, path) : pairs rest
    pairs _ = error "coverage-zero: unmatched name/path"
    zero (name, path) = do
      Mix _ _ hash _ entries <- read <$> readFile path
      pure (TixModule name hash (length entries) (replicate (length entries) 0))