Fl4m3Ph03n1x

Fl4m3Ph03n1x

Default value for ExUnit.Case async

I always thought that the default value for ExUnit.Case, async was true. However in a recent video from ElixirCasts the author states otherwise:

Am I mistaken?
Do I need to use ExUnit.Case, async: true if I want concurrent tests?

I couldn’t find anything in the official docs:

Marked As Solved

Also Liked

hauleth

hauleth

The problem is that async: true does something different from what people may expect. Tests in single module are always run synchronously, no deviations. async: true mean that tests in given module can be ran in parallel with other modules. So this would produce unexpected results when used with some persistent storage tools, when used without special preparations, or other hard to reason problems. Instead they have chosen to “safer default”. If you want to check your code for concurrency errors then you can check out Concuerror.

10
Post #6
lpil

lpil

Creator of Gleam

I’d prefer it to default to concurrent, to nudge us into writing code that is safe to run concurrently by default :slight_smile:

peerreynders

peerreynders

ExUnit.Case — ExUnit v1.20.2

Last Post!

hauleth

hauleth

The problem is that async: true does something different from what people may expect. Tests in single module are always run synchronously, no deviations. async: true mean that tests in given module can be ran in parallel with other modules. So this would produce unexpected results when used with some persistent storage tools, when used without special preparations, or other hard to reason problems. Instead they have chosen to “safer default”. If you want to check your code for concurrency errors then you can check out Concuerror.

10
Post #6

Where Next?

Popular in Questions Top

Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

Other popular topics Top

baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54996 245
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New

We're in Beta

About us Mission Statement