packages feed

pqi-conformance 0.1.2.2 → 1.0.0.0

raw patch · 6 files changed

+50/−4 lines, 6 filesdep ~pqiPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: pqi

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+# v1.0.0.0++## Non-breaking++- Differential spec for the new `resStatus` field of `Pqi.Adapter`+ # v0.1.2.2  ## Fixes
README.md view
@@ -48,7 +48,8 @@ `Pqi.Conformance.Operation.*` — `...Operation.Exec`, `...Operation.ExecParams`, `...Operation.LoSeek`, `...Operation.Fnumber`, and so on, one for every public method of `Pqi.IsConnection`, `Pqi.IsResult`, and `Pqi.IsCancel`,-plus the standalone `Pqi.unescapeBytea`. Each module holds the differential+plus the connection-independent `Adapter` fields `Pqi.unescapeBytea` and+`Pqi.resStatus`. Each module holds the differential scenarios that exercise that one operation (its happy paths, its edge cases, and its error paths). Shared scenario fragments live in `Pqi.Conformance.Scenario`.
pqi-conformance.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: pqi-conformance-version: 0.1.2.2+version: 1.0.0.0 category: Database, PostgreSQL, Testing synopsis: Differential conformance tests for pqi adapters description:@@ -169,6 +169,7 @@     Pqi.Conformance.Operation.Reset     Pqi.Conformance.Operation.ResetPoll     Pqi.Conformance.Operation.ResetStart+    Pqi.Conformance.Operation.ResStatus     Pqi.Conformance.Operation.ResultErrorField     Pqi.Conformance.Operation.ResultErrorMessage     Pqi.Conformance.Operation.ResultStatus@@ -201,6 +202,6 @@     directory >=1.3 && <1.4,     hspec >=2.11 && <2.12,     postgresql-libpq >=0.11 && <0.12,-    pqi ^>=0.1,+    pqi ^>=1.0,     testcontainers-postgresql ^>=0.2,     text >=1.2 && <3,
src/library/Pqi/Conformance.hs view
@@ -93,6 +93,7 @@ import qualified Pqi.Conformance.Operation.ProtocolVersion as ProtocolVersion import qualified Pqi.Conformance.Operation.PutCopyData as PutCopyData import qualified Pqi.Conformance.Operation.PutCopyEnd as PutCopyEnd+import qualified Pqi.Conformance.Operation.ResStatus as ResStatus import qualified Pqi.Conformance.Operation.Reset as Reset import qualified Pqi.Conformance.Operation.ResetPoll as ResetPoll import qualified Pqi.Conformance.Operation.ResetStart as ResetStart@@ -218,6 +219,7 @@     SetErrorVerbosity.spec adapter     -- Result inspection     ResultStatus.spec adapter+    ResStatus.spec adapter     ResultErrorMessage.spec adapter     ResultErrorField.spec adapter     UnsafeFreeResult.spec adapter
+ src/library/Pqi/Conformance/Operation/ResStatus.hs view
@@ -0,0 +1,20 @@+-- | Coverage for 'Pqi.resStatus': rendering each 'Pqi.ExecStatus' as the+-- string describing its status code.+module Pqi.Conformance.Operation.ResStatus+  ( spec,+  )+where++import qualified Pqi+import Pqi.Conformance.Prelude+import qualified Pqi.Conformance.Reference as Reference+import Test.Hspec++spec :: Pqi.Adapter -> SpecWith ByteString+spec adapter =+  describe "resStatus" do+    for_ [minBound .. maxBound] \execStatus ->+      it (show execStatus) \_ -> do+        candidate <- Pqi.resStatus adapter execStatus+        reference <- Pqi.resStatus Reference.adapter execStatus+        candidate `shouldBe` reference
src/library/Pqi/Conformance/Reference.hs view
@@ -22,7 +22,8 @@       Pqi.connectdb = \conninfo -> mkConnection <$> LibPQ.connectdb conninfo,       Pqi.connectStart = \conninfo -> mkConnection <$> LibPQ.connectStart conninfo,       Pqi.newNullConnection = mkConnection <$> LibPQ.newNullConnection,-      Pqi.unescapeBytea = \input -> LibPQ.unescapeBytea input+      Pqi.unescapeBytea = \input -> LibPQ.unescapeBytea input,+      Pqi.resStatus = \execStatus -> LibPQ.resStatus (toExecStatus execStatus)     }  -- | Build a 'Pqi.Connection' whose fields close over the given@@ -232,6 +233,21 @@   LibPQ.SingleTuple -> Pqi.SingleTuple   LibPQ.PipelineSync -> Pqi.PipelineSync   LibPQ.PipelineAbort -> Pqi.PipelineAbort++toExecStatus :: Pqi.ExecStatus -> LibPQ.ExecStatus+toExecStatus = \case+  Pqi.EmptyQuery -> LibPQ.EmptyQuery+  Pqi.CommandOk -> LibPQ.CommandOk+  Pqi.TuplesOk -> LibPQ.TuplesOk+  Pqi.CopyOut -> LibPQ.CopyOut+  Pqi.CopyIn -> LibPQ.CopyIn+  Pqi.CopyBoth -> LibPQ.CopyBoth+  Pqi.BadResponse -> LibPQ.BadResponse+  Pqi.NonfatalError -> LibPQ.NonfatalError+  Pqi.FatalError -> LibPQ.FatalError+  Pqi.SingleTuple -> LibPQ.SingleTuple+  Pqi.PipelineSync -> LibPQ.PipelineSync+  Pqi.PipelineAbort -> LibPQ.PipelineAbort  fromConnStatus :: LibPQ.ConnStatus -> Pqi.ConnStatus fromConnStatus = \case