pqi-conformance-0.0.1.2: pqi-conformance.cabal
cabal-version: 3.0
name: pqi-conformance
version: 0.0.1.2
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 <nikita.y.volkov@mail.ru>
maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>
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:
ApplicativeDo
BangPatterns
BinaryLiterals
BlockArguments
ConstraintKinds
DataKinds
DefaultSignatures
DeriveDataTypeable
DeriveFoldable
DeriveFunctor
DeriveTraversable
DerivingStrategies
DerivingVia
DuplicateRecordFields
EmptyDataDecls
ExistentialQuantification
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GADTs
GeneralizedNewtypeDeriving
LambdaCase
LiberalTypeSynonyms
MagicHash
MultiParamTypeClasses
MultiWayIf
NamedFieldPuns
NoFieldSelectors
NoImplicitPrelude
NoMonomorphismRestriction
NumericUnderscores
OverloadedRecordDot
OverloadedStrings
ParallelListComp
PatternGuards
QuasiQuotes
RankNTypes
RecordWildCards
ScopedTypeVariables
StandaloneDeriving
StrictData
TemplateHaskell
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.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.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.0,
testcontainers-postgresql ^>=0.2,
text >=1.2 && <3,