nick8325 / nick8325/quickcheck

The "Hacking Agenda"

Open
#428 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Haskell
Stars
790
Forks
130
Avg merge
16h 41m
Merged PRs (30d)
2

Description

Involving @koengit @nick8325 @UlfNorell and @Rewbert:

Instances
  • Arbitrary instances for everything in base (and other qc dependencies)
  • Super clever TH magic to find all the types and generate properties
    • Enumerate all modules in base and get all the data types
    • Minimal: type check arbitrary @TheType
    • Better: Monomorphise and generate a properties to test the arbitrary instance
    • Manually exclude modules/types (to avoid writing clever rules for which
      types to support)
  • See CollectDataTypes.hs and RunCollectDataTypes.hs.
Parallel fork
  • Robert gives a nice presentation of what's going on

  • We should decide on some design principles:

    • we care only about locally minimal counterexamples
    • we want the features module
    • we don't care about parallel quickcheck exploring sizes
      deterministically
    • we do care about sizes being explored in order small to big
API for test runners
  • Tasty and HSpec install their own callbacks
    • Can we make PRs for them using Robert's new API?
    • Robert has the code, but needs some version juggling to work with different
      versions of QuickCheck.
Cleanup
  • Drop ghc 7 support
  • Clean up flag mess in cabal file
  • Add MicroHs support
    • Lennart: "needs random numbers, this is hard!"

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read CollectDataTypes.hs and RunCollectDataTypes.hs first, then review the QuickCheck API compatibility needs for Tasty and HSpec. The agenda also lists design principles, Cabal cleanup, GHC 7 removal, and MicroHs support, but it does not define a single scope or completion condition.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.