From 7fa2eb52f7e901416e626af511fb5a93ce30c63b Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 28 Sep 2021 11:37:40 +0100 Subject: [PATCH] DEV: Destroy application instance after each test (#14455) Under Ember CLI, we create a new application instance for each test. We were not correctly destroying it after the test, causing many references to be maintaned (e.g. at the end of a test run, `Ember.Namespace.NAMESPACES` would have an entry for each application instance). Calling `destroy` on the application instance tidies up these references, and is one step towards fixing our test memory leak problem. Unfortunately there still seem to be other references being held to the application, so this commit is not a total fix. --- app/assets/javascripts/discourse/tests/setup-tests.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/assets/javascripts/discourse/tests/setup-tests.js b/app/assets/javascripts/discourse/tests/setup-tests.js index 8ce4374dd17..7201dd80585 100644 --- a/app/assets/javascripts/discourse/tests/setup-tests.js +++ b/app/assets/javascripts/discourse/tests/setup-tests.js @@ -31,6 +31,7 @@ import { flushMap } from "discourse/models/store"; import { registerObjects } from "discourse/pre-initializers/inject-discourse-objects"; import { setupApplicationTest } from "ember-qunit"; import sinon from "sinon"; +import { run } from "@ember/runloop"; const Plugin = $.fn.modal; const Modal = Plugin.Constructor; @@ -63,6 +64,10 @@ let app; let started = false; function createApplication(config, settings) { + if (app) { + run(app, "destroy"); + } + app = Application.create(config); setApplication(app); setResolver(buildResolver("discourse").create({ namespace: app }));