Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use refute_timeout configured for all refute_ assertions #603

Merged
merged 1 commit into from
May 21, 2021

Conversation

germsvel
Copy link
Collaborator

@germsvel germsvel commented May 21, 2021

What changed?

All refutation test helpers in Bamboo.Test should be using the refute_timeout configuration when testing on shared mode.

config :bamboo, :refute_timeout, 10

The refute_email_delivered_with/1 macro was not using the configuration, but instead it had a hardcoded 100ms. We update it to use the refute_timeout, since not using it was a bug.

Finally, the refute_timeout/0 function currently returns 0ms when Bamboo isn't on shared mode. We change that to be 100ms to match the previously hardcoded value in refute_email_delivered_with/1 and to match the default refute_receive_timeout from ExUnit.

@@ -255,7 +267,7 @@ defmodule Bamboo.Test do
receive do
{:delivered_email, email} -> Map.from_struct(email)
after
100 -> []
Bamboo.Test.refute_timeout() -> []
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is going to be a potentially test breaking concern is it worth a deprecation warning or minor version bump?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this is a good question. I honestly don't know. Technically, this is a bug that we're fixing, so it could be a patch. But if we consider the existing behavior as correct and us changing this, it could be considered potentially breaking. What do you think?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that I've thought about this more. Maybe the change we should make is to default the refute_timeout to 100ms instead of 0ms. That would make this not a breaking change. Other tests might wait longer if the email fails to deliver, but they pass as soon as the email is received, so 100ms is a better default than 0ms.

I also like that ExUnit's refute_receive_timeout defaults to 100ms. So it keeps us consistent with that, which probably matches people's expectations more closely.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That seems like a nice approach to this. They can always change the default explicitly but half a second longer test suite seems like a low price to pay for a suitable default.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@brimatteng I updated the default to 100ms, so there's no longer a potential for a breaking change, and I updated the PR description.

I'm also hoping to quickly follow up with a PR that allows users to pass the timeout directly, so users should be able to change the timeout per test as desired.

What changed?
============

All refutation test helpers in `Bamboo.Test` should be using the
`refute_timeout` configuration when testing on shared mode.

```elixir
config :bamboo, :refute_timeout, 10
```

The `refute_email_delivered_with/1` macro was not using the
configuration, but instead it had a hardcoded 100ms. We update it to use
the `refute_timeout`, since not using it was a bug.

Finally, the `refute_timeout/0` function currently returns 0ms when
Bamboo isn't on shared mode. We change that to be 100ms to match the
previously hardcoded value in `refute_email_delivered_with/1` and to
match the [default `refute_receive_timeout` from
ExUnit](https://hexdocs.pm/ex_unit/ExUnit.html#configure/1-options).
@germsvel germsvel force-pushed the refute-helpers-need-refute-timeout branch from 427c795 to 9ba84c1 Compare May 21, 2021 17:50
@germsvel germsvel merged commit 94bb38b into master May 21, 2021
@germsvel germsvel deleted the refute-helpers-need-refute-timeout branch May 21, 2021 17:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants