cabal-version: 3.0 name: pqi-conformance version: 0.1.1.1 category: Database, PostgreSQL, Testing synopsis: Differential conformance tests for pqi adapters description: A reusable [@hspec@](https://hackage.haskell.org/package/hspec) toolkit that checks any [@pqi@](https://hackage.haskell.org/package/pqi) 'Pqi.IsConnection' adapter against the FFI reference adapter. It boots a throwaway PostgreSQL container (via [@testcontainers@](https://hackage.haskell.org/package/testcontainers)), runs the same operation on the candidate and the FFI connection, and asserts that the protocol-derived observations match. Each adapter's own test suite reuses these spec builders, wiring itself in as the candidate. homepage: https://github.com/nikita-volkov/pqi-conformance bug-reports: https://github.com/nikita-volkov/pqi-conformance/issues author: Nikita Volkov maintainer: Nikita Volkov copyright: (c) 2026, Nikita Volkov license: MIT license-file: LICENSE extra-doc-files: CHANGELOG.md LICENSE README.md source-repository head type: git location: https://github.com/nikita-volkov/pqi-conformance common base default-language: Haskell2010 default-extensions: BangPatterns BinaryLiterals BlockArguments ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveTraversable DerivingStrategies DerivingVia EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving LambdaCase LiberalTypeSynonyms MagicHash MultiParamTypeClasses MultiWayIf NamedFieldPuns NoImplicitPrelude NoMonomorphismRestriction NumericUnderscores OverloadedStrings ParallelListComp PatternGuards QuasiQuotes RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving StrictData TupleSections TypeApplications TypeFamilies TypeOperators UnboxedTuples ViewPatterns common test import: base ghc-options: -threaded -with-rtsopts=-N library import: base hs-source-dirs: src/library exposed-modules: Pqi.Conformance other-modules: Pqi.Conformance.Harness Pqi.Conformance.Observation Pqi.Conformance.Operation.BackendPID Pqi.Conformance.Operation.Cancel Pqi.Conformance.Operation.Cancel.Cleanup Pqi.Conformance.Operation.Cancel.Stale Pqi.Conformance.Operation.ClientEncoding Pqi.Conformance.Operation.CmdStatus Pqi.Conformance.Operation.CmdTuples Pqi.Conformance.Operation.Connectdb Pqi.Conformance.Operation.ConnectionNeedsPassword Pqi.Conformance.Operation.ConnectionUsedPassword Pqi.Conformance.Operation.ConnectPoll Pqi.Conformance.Operation.ConnectStart Pqi.Conformance.Operation.ConsumeInput Pqi.Conformance.Operation.Db Pqi.Conformance.Operation.DescribePortal Pqi.Conformance.Operation.DescribePrepared Pqi.Conformance.Operation.DisableNoticeReporting Pqi.Conformance.Operation.EnableNoticeReporting Pqi.Conformance.Operation.EnterPipelineMode Pqi.Conformance.Operation.ErrorMessage Pqi.Conformance.Operation.EscapeByteaConn Pqi.Conformance.Operation.EscapeIdentifier Pqi.Conformance.Operation.EscapeStringConn Pqi.Conformance.Operation.Exec Pqi.Conformance.Operation.ExecParams Pqi.Conformance.Operation.ExecPrepared Pqi.Conformance.Operation.ExitPipelineMode Pqi.Conformance.Operation.Fformat Pqi.Conformance.Operation.Finish Pqi.Conformance.Operation.Flush Pqi.Conformance.Operation.Fmod Pqi.Conformance.Operation.Fname Pqi.Conformance.Operation.Fnumber Pqi.Conformance.Operation.Fsize Pqi.Conformance.Operation.Ftable Pqi.Conformance.Operation.Ftablecol Pqi.Conformance.Operation.Ftype Pqi.Conformance.Operation.GetCancel Pqi.Conformance.Operation.GetCopyData Pqi.Conformance.Operation.Getisnull Pqi.Conformance.Operation.Getlength Pqi.Conformance.Operation.GetNotice Pqi.Conformance.Operation.GetResult Pqi.Conformance.Operation.Getvalue Pqi.Conformance.Operation.GetvalueCopy Pqi.Conformance.Operation.Host Pqi.Conformance.Operation.IsBusy Pqi.Conformance.Operation.Isnonblocking Pqi.Conformance.Operation.IsNullConnection Pqi.Conformance.Operation.LoClose Pqi.Conformance.Operation.LoCreat Pqi.Conformance.Operation.LoCreate Pqi.Conformance.Operation.LoExport Pqi.Conformance.Operation.LoImport Pqi.Conformance.Operation.LoImportWithOid Pqi.Conformance.Operation.LoOpen Pqi.Conformance.Operation.LoRead Pqi.Conformance.Operation.LoSeek Pqi.Conformance.Operation.LoTell Pqi.Conformance.Operation.LoTruncate Pqi.Conformance.Operation.LoUnlink Pqi.Conformance.Operation.LoWrite Pqi.Conformance.Operation.NewNullConnection Pqi.Conformance.Operation.Nfields Pqi.Conformance.Operation.Notifies Pqi.Conformance.Operation.Nparams Pqi.Conformance.Operation.Ntuples Pqi.Conformance.Operation.Options Pqi.Conformance.Operation.ParameterStatus Pqi.Conformance.Operation.Paramtype Pqi.Conformance.Operation.Pass Pqi.Conformance.Operation.PipelineStatus Pqi.Conformance.Operation.PipelineSync Pqi.Conformance.Operation.PipelineSync.Parity Pqi.Conformance.Operation.Port Pqi.Conformance.Operation.Prepare Pqi.Conformance.Operation.ProtocolVersion Pqi.Conformance.Operation.PutCopyData Pqi.Conformance.Operation.PutCopyEnd Pqi.Conformance.Operation.Reset Pqi.Conformance.Operation.ResetPoll Pqi.Conformance.Operation.ResetStart Pqi.Conformance.Operation.ResultErrorField Pqi.Conformance.Operation.ResultErrorMessage Pqi.Conformance.Operation.ResultStatus Pqi.Conformance.Operation.SendDescribePortal Pqi.Conformance.Operation.SendDescribePrepared Pqi.Conformance.Operation.SendFlushRequest Pqi.Conformance.Operation.SendPrepare Pqi.Conformance.Operation.SendQuery Pqi.Conformance.Operation.SendQueryParams Pqi.Conformance.Operation.SendQueryPrepared Pqi.Conformance.Operation.ServerVersion Pqi.Conformance.Operation.SetClientEncoding Pqi.Conformance.Operation.SetErrorVerbosity Pqi.Conformance.Operation.Setnonblocking Pqi.Conformance.Operation.SetSingleRowMode Pqi.Conformance.Operation.Socket Pqi.Conformance.Operation.Status Pqi.Conformance.Operation.TransactionStatus Pqi.Conformance.Operation.UnescapeBytea Pqi.Conformance.Operation.UnsafeFreeResult Pqi.Conformance.Operation.User Pqi.Conformance.Prelude Pqi.Conformance.Reference Pqi.Conformance.Scenario build-depends: base >=4.11 && <5, bytestring >=0.10 && <0.13, containers >=0.6 && <0.9, directory >=1.3 && <1.4, hspec >=2.11 && <2.12, postgresql-libpq >=0.11 && <0.12, pqi ^>=0.1, testcontainers-postgresql ^>=0.2, text >=1.2 && <3,