paramtree: Generate labelled test/benchmark trees from sets of parameters

[ benchmarking, bsd3, development, library, testing ] [ Propose Tags ] [ Report a vulnerability ]

Easily generate a labelled tree of tests/benchmarks from a generation function and sets of parameters to use for each of that functions arguments. Example usecases include criterion benchmark trees or tasty test trees.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0, 0.1.1, 0.1.1.1, 0.1.2 (info)
Dependencies base (>=4.9 && <5), containers (>=0.4 && <0.7) [details]
Tested with ghc ==8.0.2, ghc ==8.2.2, ghc ==8.4.4, ghc ==8.6.5, ghc ==8.8.4, ghc ==8.10.7, ghc ==9.0.2, ghc ==9.2.8, ghc ==9.4.5, ghc ==9.6.2
License BSD-3-Clause
Copyright Copyright © 2017-2023 Merijn Verstraaten
Author Merijn Verstraaten
Maintainer Merijn Verstraaten <merijn@inconsistent.nl>
Category Development, Benchmarking, Testing
Home page https://github.com/merijn/paramtree
Bug tracker https://github.com/merijn/paramtree/issues
Source repo head: git clone ssh://github.com:merijn/paramtree.git
Uploaded by MerijnVerstraaten at 2023-07-13T09:50:50Z
Distributions NixOS:0.1.2
Reverse Dependencies 1 direct, 1 indirect [details]
Downloads 2215 total (13 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for paramtree-0.1.2

[back to package description]

ParamTree

BSD3 Hackage hackage-ci Build Status

ParamTree library for generating labelled test/benchmark trees from sets of parameters. Example usecases include criterion benchmark trees or tasty test trees.

Example

import Test.Tasty
import Test.Tasty.HUnit

genTestCase :: Int -> Bool -> Char -> String -> TestTree
genTestCase i b c name = testCase name $ {- your code here -}

params = simpleParam "Int" [1,2]
       . simpleParam "Bool" [True]
       . simpleParam "Char" "xyz"

main :: IO ()
main = defaultMain $ testTree genTestCase params
  where
    testTree = growTree (Just "/") testGroup "my tests"

This generates a tasty TestTree with all combinations of values passed to genTestCase. If the Maybe String argument is provided like in the above example, groups with a single entry, such as "Bool" get collapsed into their parent groups. So instead of a "1 Int" group containing a "True Bool" group they get collapsed into a single "1 Int/True Bool" group, where the "/" separator is the one specified by Just "/".