Add 'testWithApplication'' function#843
Open
EduardSergeev wants to merge 1 commit intoyesodweb:masterfrom
Open
Add 'testWithApplication'' function#843EduardSergeev wants to merge 1 commit intoyesodweb:masterfrom
EduardSergeev wants to merge 1 commit intoyesodweb:masterfrom
Conversation
Same as `testWithApplication` but accepts `Application` as a pure argument
The requirement of `testWithApplication` to pass `Application` parameter in wrapped in `IO` monad seems unnecessary strict:
Apparently the only action `testWithApplicationSettings` (the underlying implementation) does is to unwrap it with:
```haskell
testWithApplicationSettings :: Settings -> IO Application -> (Port -> IO a) -> IO a
testWithApplicationSettings settings mkApp action = do
callingThread <- myThreadId
app <- mkApp
let wrappedApp request respond =
app request respond `catch` \ e -> do
[truncated]
```
into `app` which can be done outside of `testWithApplication'` with:
```haskell
testWithApplication :: IO Application -> (Port -> IO a) -> IO a
testWithApplication mkApp action =
mkApp >>= flip testWithApplication' action
```
snoyberg
reviewed
May 13, 2021
Member
snoyberg
left a comment
There was a problem hiding this comment.
I'm ambivalent about this change overall, since either way it's easy to work around (either monadic bind or an additional pure). I'd ask for a different function name though, since a simple tick at the end doesn't express "pure instead of wrapped in IO" to me.
b3428c3 to
2322225
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add
testWithApplication'function:same as
testWithApplicationfunctionbut accepts
Applicationas a pure argumentThe requirement of
testWithApplicationto passApplicationparameter in wrapped inIOmonad seems unnecessary strict:Apparently the only action
testWithApplicationSettings(the underlying implementation) does is to unwrap it with:into
appwhich can be done outside oftestWithApplication'with:Before submitting your PR, check that you've:
@sincedeclarations to the HaddockAfter submitting your PR: