Просмотр исходного кода

Merge pull request #3613 from overleaf/em-unit-tests-leaks

Fix memory leaks in unit tests

GitOrigin-RevId: e2b366dd9f277823db4c7c00c209da2b3774a0fe
Eric Mc Sween 5 лет назад
Родитель
Сommit
bbe4137d81
1 измененных файлов с 14 добавлено и 0 удалено
  1. 14 0
      services/web/test/unit/bootstrap.js

+ 14 - 0
services/web/test/unit/bootstrap.js

@@ -52,3 +52,17 @@ LIBRARIES.forEach(lib => {
 SandboxedModule.configure({
   requires: GLOBAL_REQUIRE_CACHE_FOR_SANDBOXED_MODULES
 })
+
+// sandboxed-module somehow registers every fake module it creates in this
+// module's children array, which uses quite a big amount of memory. We'll take
+// a copy of the module children array and restore it after each test so that
+// the garbage collector has a chance to reclaim the fake modules.
+let initialModuleChildren
+before('record initial module children', function() {
+  initialModuleChildren = module.children.slice()
+})
+
+afterEach('restore module children', function() {
+  // Delete leaking sandboxed modules
+  module.children = initialModuleChildren.slice()
+})