@@ -214,8 +214,8 @@ Executable project-m36-server
214214 Build-Depends: ghc >= 8.2 && < 8.11
215215 Build-Depends: base,
216216 ghc-paths,
217− project-m36,
218217 transformers,
218+ project-m36,
219219 temporary,
220220 data-interval,
221221 deepseq,
@@ -319,48 +319,33 @@ Test-Suite test-relation-import-csv
319319 main-is: test/Relation/Import/CSV.hs
320320
321321Test-Suite test-tutoriald-import-tutoriald
322− Default-Language: Haskell2010
323− Default-Extensions: OverloadedStrings
322+ import: commontest
324323 type: exitcode-stdio-1.0
325324 main-is: test/TutorialD/Interpreter/Import/TutorialD.hs
326− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, project-m36, random, MonadRandom, semigroups, parser-combinators
327325 Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.BasicExamples
328− GHC-Options: -Wall -threaded
329− Hs-Source-Dirs: ., ./src/bin
326+
330327
331328Test-Suite test-relation-export-csv
332− Default-Language: Haskell2010
333− Default-Extensions: OverloadedStrings
329+ import: commontest
334330 type: exitcode-stdio-1.0
335331 main-is: test/Relation/Export/CSV.hs
336− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, project-m36
337− GHC-Options: -Wall -threaded
338332
339333Test-Suite test-transactiongraph-merge
340− Default-Language: Haskell2010
341− Default-Extensions: OverloadedStrings
334+ import: commontest
342335 type: exitcode-stdio-1.0
343336 main-is: test/TransactionGraph/Merge.hs
344− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, template-haskell, transformers, aeson, conduit, either, path-pieces, http-api-data, stm-containers, list-t, project-m36
345− GHC-Options: -Wall -threaded
337+
346338
347339benchmark bench
348− Default-Language: Haskell2010
349− Default-Extensions: OverloadedStrings
340+ import: commontest
350341 type: exitcode-stdio-1.0
351342 main-is: benchmark/Relation.hs
352− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, criterion, stm-containers, project-m36
353− GHC-Options: -Wall -rtsopts -threaded
354− Hs-Source-Dirs: ./src/bin
355343
356344Test-Suite test-server
357− Default-Language: Haskell2010
358− Default-Extensions: OverloadedStrings
345+ import: commontest
359346 type: exitcode-stdio-1.0
360347 main-is: test/Server/Main.hs
361− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, network-transport-tcp, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, project-m36, network-transport, semigroups
362− HS-Source-Dirs: ., ./src/bin
363− GHC-Options: -Wall -threaded
348+
364349
365350Executable Example-SimpleClient
366351 Default-Language: Haskell2010
@@ -408,14 +393,10 @@ Executable Example-DerivingCustomTupleable
408393 GHC-Options: -Wall -threaded
409394
410395Test-Suite test-scripts
411− Default-Language: Haskell2010
412− Default-Extensions: OverloadedStrings
396+ import: commontest
413397 type: exitcode-stdio-1.0
414398 main-is: test/scripts.hs
415− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, network-transport-tcp, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, project-m36, random, MonadRandom, semigroups, parser-combinators
416399 Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.Import.BasicExamples
417− GHC-Options: -Wall -threaded
418− Hs-Source-Dirs: ., ./src/bin
419400
420401Executable project-m36-websocket-server
421402 Default-Language: Haskell2010
@@ -427,70 +408,42 @@ Executable project-m36-websocket-server
427408 Default-Extensions: OverloadedStrings
428409
429410Test-Suite test-websocket-server
430− Default-Language: Haskell2010
411+ import: commontest
431412 type: exitcode-stdio-1.0
432413 main-is: test/Server/WebSocket.hs
433− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, network-transport-tcp, semigroups, parser-combinators
434414 Other-Modules: TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.TransactionGraphOperator, ProjectM36.Client.Json, ProjectM36.Server.RemoteCallTypes.Json, ProjectM36.Server.WebSocket, TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.SchemaOperator
435− Default-Extensions: OverloadedStrings
436− GHC-Options: -Wall -threaded
437− Hs-Source-Dirs: ./src/bin, .
438415
439416Test-Suite test-isomorphic-schemas
440− Default-Language: Haskell2010
417+ import: commontest
441418 type: exitcode-stdio-1.0
442419 main-is: test/IsomorphicSchema.hs
443− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36
444− Default-Extensions: OverloadedStrings
445− GHC-Options: -Wall -threaded
446− Hs-Source-Dirs: ./src/bin, .
447420
448421Test-Suite test-atomable
449− Default-Language: Haskell2010
422+ import: commontest
450423 type: exitcode-stdio-1.0
451424 main-is: test/Relation/Atomable.hs
452− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups, parser-combinators, winery
453425 Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.SchemaOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types
454− Default-Extensions: OverloadedStrings
455− GHC-Options: -Wall -threaded
456− Hs-Source-Dirs: ./src/bin, ., test/
457426
458427Test-Suite test-multiprocess-access
459− Default-Language: Haskell2010
428+ import: commontest
460429 type: exitcode-stdio-1.0
461430 main-is: test/MultiProcessDatabaseAccess.hs
462− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom
463− Default-Extensions: OverloadedStrings
464− GHC-Options: -Wall -threaded
465− Hs-Source-Dirs: ./src/bin, ., test/
466431
467432Test-Suite test-transactiongraph-automerge
468− Default-Language: Haskell2010
433+ import: commontest
469434 type: exitcode-stdio-1.0
470435 main-is: test/TransactionGraph/Automerge.hs
471− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups, parser-combinators
472436 Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.SchemaOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types
473− Default-Extensions: OverloadedStrings
474− GHC-Options: -Wall -threaded
475− Hs-Source-Dirs: ./src/bin, ., test/
476437
477438Test-Suite test-tupleable
478− Default-Language: Haskell2010
439+ import: commontest
479440 type: exitcode-stdio-1.0
480441 main-is: test/Relation/Tupleable.hs
481− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups
482− Default-Extensions: OverloadedStrings
483− GHC-Options: -Wall -threaded
484− Hs-Source-Dirs: ./src/bin, ., test/
485442
486443Test-Suite test-client-simple
487− Default-Language: Haskell2010
444+ import: commontest
488445 Main-Is: test/Client/Simple.hs
489446 type: exitcode-stdio-1.0
490− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups
491− Default-Extensions: OverloadedStrings
492− GHC-Options: -Wall -threaded
493− Hs-Source-Dirs: ./src/bin, ., test/
494447
495448-- test for file handle leaks
496449Executable handles