Good news: sequelize no longer has opaque global leak errors when using mocha: https://github.com/sequelize/sequelize/pull/1051
The errors are MUCH less opaque and much more relevant to the test failure when watching your tests fail. For example, when you try to create a model with a column that does not exist in your schema:
Error: SQLITE_ERROR: table articles has no column named ‘new_column’
Which is much more useful than a notification that the library that you’re using is leaking globals. Yay!
While trying out sequelize, I was TDD’ing some code using mocha and reached this error from mocha while watching a test fail:
Error: global leak detected: columnTypes
So I looked through the code and found https://github.com/sequelize/sequelize/blob/f16f39221d9f3be64d7fd58235d5420eba4e10be/lib/dialects/sqlite/query.js#L38 which certainly looks like it would be a global leak, since the code is referring to “this” inside of an anonymous function.
However, inside the sequelize tests, “this” was referring to some sort of representation of the query, likely due to an “apply” or “call” somewhere. Some time later, I just tried to get the test to pass, and once I sync()ed the table and added some columns to the model, it did.
Long story short: that is the error that you get when:
- the table does not exist
- the model does not have any attributes