django-test-migrations
django-test-migrations copied to clipboard
Deadlock when using pants, pytest and django-test-migrations
I'm not really sure on what to blame on this, because it can be either pants, pytest or django-test-migrations
I'm trying to fix a problem where the migration test ends up in a deadlock, when ran using pants. I highly suspect this is due to tests running parallel (default in pants), but this can also be something you can incorporate in this library.
The standard config I have is based on this repository. As you can see in the pytest.ini, the option --reuse-db is enabled. This is for optimization purposes, just so that for every test the database does not have to be recreated. (I also think this plays a role in the ability of parallel tasks of pants, but I'm not entirely sure.)
Just because of this option, when doing a migration in a test suite, you can already guess, it causes a deadlock. When you modify tables while other tests are using the database, weird stuff happens...
Anyway, django-test-migrations runs fine when running isolated, but in a test suite is fails (and all tests coming after fail). I have a feeling that it might have something to do with this: https://stackoverflow.com/a/66732609. Is there a way to fix this deadlocking behavior?
hi 👋
currently running Django's migrations tests with --reuse-db is not supported :(
To solve your issue, you can try:
- Run migrations tests separately in 1 process (not parallel). So use the
pytestCLI option:-m not migrations_testwhen running tests withpantsand thenpytest -m migrations_testwhen running migrations tests. - Run both tests types without the
--reuse-dbflag - it should work then becausepytest-djangoshould properly populate test DB names when running together withpytest-xdist- reference - to confirm that let's check what test DBs are used when you run tests withpants