Skip to content

Jest tests have open handles #268

@slifty

Description

@slifty

When running tests against api I see:

Jest did not exit one second after the test run has completed.

'This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with `--detectOpenHandles` to troubleshoot this issue.

When I run with --detectOpenHandles I get:

Jest has detected the following 7 open handles potentially keeping Jest from exiting:

  ●  TCPWRAP

      11 |
      12 | const loadFixtures = async (): Promise<void> => {
    > 13 | 	await db.sql("archive.fixtures.create_test_accounts");
         | 	         ^
      14 | 	await db.sql("archive.fixtures.create_test_archives");
      15 | };
      16 |

      at Connection.connect (../../node_modules/pg/lib/connection.js:43:17)
      at Client._connect (../../node_modules/pg/lib/client.js:117:11)
      at Client.connect (../../node_modules/pg/lib/client.js:166:12)
      at BoundPool.newClient (../../node_modules/pg-pool/index.js:241:12)
      at BoundPool.connect (../../node_modules/pg-pool/index.js:216:10)
      at TinyPg.getClient (../../node_modules/tinypg/src/tiny.ts:338:24)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:381:30)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at query_promise (../../node_modules/tinypg/src/tiny.ts:380:62)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:473:13)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at TinyPg.performDbCall (../../node_modules/tinypg/dist/tiny.js:248:16)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:115:22)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at ../../node_modules/tinypg/src/tiny.ts:106:84
      at Object.<anonymous> (../../node_modules/tinypg/src/util.ts:25:20)
      at ../../node_modules/tinypg/dist/util.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/util.js:4:12)
      at Object.stackTraceAccessor (../../node_modules/tinypg/dist/util.js:27:12)
      at TinyPg.sql (../../node_modules/tinypg/src/tiny.ts:106:19)
      at loadFixtures (src/archive/controller/make_featured.test.ts:13:11)
      at Object.<anonymous> (src/archive/controller/make_featured.test.ts:34:9)


  ●  TCPWRAP

      12 |
      13 | const loadFixtures = async (): Promise<void> => {
    > 14 | 	await db.sql("archive.fixtures.create_test_accounts");
         | 	         ^
      15 | 	await db.sql("archive.fixtures.create_test_archives");
      16 | 	await db.sql("archive.fixtures.create_test_featured_archives");
      17 | 	await db.sql("archive.fixtures.create_test_folders");

      at Connection.connect (../../node_modules/pg/lib/connection.js:43:17)
      at Client._connect (../../node_modules/pg/lib/client.js:117:11)
      at Client.connect (../../node_modules/pg/lib/client.js:166:12)
      at BoundPool.newClient (../../node_modules/pg-pool/index.js:241:12)
      at BoundPool.connect (../../node_modules/pg-pool/index.js:216:10)
      at TinyPg.getClient (../../node_modules/tinypg/src/tiny.ts:338:24)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:381:30)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at query_promise (../../node_modules/tinypg/src/tiny.ts:380:62)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:473:13)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at TinyPg.performDbCall (../../node_modules/tinypg/dist/tiny.js:248:16)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:115:22)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at ../../node_modules/tinypg/src/tiny.ts:106:84
      at Object.<anonymous> (../../node_modules/tinypg/src/util.ts:25:20)
      at ../../node_modules/tinypg/dist/util.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/util.js:4:12)
      at Object.stackTraceAccessor (../../node_modules/tinypg/dist/util.js:27:12)
      at TinyPg.sql (../../node_modules/tinypg/src/tiny.ts:106:19)
      at loadFixtures (src/archive/controller/unfeature.test.ts:14:11)
      at Object.<anonymous> (src/archive/controller/unfeature.test.ts:40:9)


  ●  TCPWRAP

      18 |
      19 | const clearDatabase = async (): Promise<void> => {
    > 20 | 	await db.query(
         | 	         ^
      21 | 		"TRUNCATE account, archive, record, folder, tag, tag_link CASCADE",
      22 | 	);
      23 | };

      at Connection.connect (../../node_modules/pg/lib/connection.js:43:17)
      at Client._connect (../../node_modules/pg/lib/client.js:117:11)
      at Client.connect (../../node_modules/pg/lib/client.js:166:12)
      at BoundPool.newClient (../../node_modules/pg-pool/index.js:241:12)
      at BoundPool.connect (../../node_modules/pg-pool/index.js:216:10)
      at TinyPg.getClient (../../node_modules/tinypg/src/tiny.ts:338:24)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:381:30)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at query_promise (../../node_modules/tinypg/src/tiny.ts:380:62)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:473:13)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at TinyPg.performDbCall (../../node_modules/tinypg/dist/tiny.js:248:16)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:95:28)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at ../../node_modules/tinypg/src/tiny.ts:83:84
      at Object.<anonymous> (../../node_modules/tinypg/src/util.ts:25:20)
      at ../../node_modules/tinypg/dist/util.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/util.js:4:12)
      at Object.stackTraceAccessor (../../node_modules/tinypg/dist/util.js:27:12)
      at TinyPg.query (../../node_modules/tinypg/src/tiny.ts:83:19)
      at clearDatabase (src/archive/controller/get_public_tags.test.ts:20:11)
      at Object.<anonymous> (src/archive/controller/get_public_tags.test.ts:28:9)


  ●  TCPWRAP

       9 |
      10 | const loadFixtures = async (): Promise<void> => {
    > 11 | 	await db.sql("archive.fixtures.create_test_accounts");
         | 	         ^
      12 | 	await db.sql("archive.fixtures.create_test_archives");
      13 | 	await db.sql("archive.fixtures.create_test_featured_archives");
      14 | 	await db.sql("archive.fixtures.create_test_folders");

      at Connection.connect (../../node_modules/pg/lib/connection.js:43:17)
      at Client._connect (../../node_modules/pg/lib/client.js:117:11)
      at Client.connect (../../node_modules/pg/lib/client.js:166:12)
      at BoundPool.newClient (../../node_modules/pg-pool/index.js:241:12)
      at BoundPool.connect (../../node_modules/pg-pool/index.js:216:10)
      at TinyPg.getClient (../../node_modules/tinypg/src/tiny.ts:338:24)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:381:30)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at query_promise (../../node_modules/tinypg/src/tiny.ts:380:62)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:473:13)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at TinyPg.performDbCall (../../node_modules/tinypg/dist/tiny.js:248:16)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:115:22)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at ../../node_modules/tinypg/src/tiny.ts:106:84
      at Object.<anonymous> (../../node_modules/tinypg/src/util.ts:25:20)
      at ../../node_modules/tinypg/dist/util.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/util.js:4:12)
      at Object.stackTraceAccessor (../../node_modules/tinypg/dist/util.js:27:12)
      at TinyPg.sql (../../node_modules/tinypg/src/tiny.ts:106:19)
      at loadFixtures (src/archive/controller/get_featured.test.ts:11:11)
      at Object.<anonymous> (src/archive/controller/get_featured.test.ts:27:9)


  ●  TCPWRAP

      15 |
      16 | const clearDatabase = async (): Promise<void> => {
    > 17 | 	await db.query("TRUNCATE account, archive, account_archive CASCADE");
         | 	         ^
      18 | };
      19 |
      20 | describe("confirmArchiveOwnership", () => {

      at Connection.connect (../../node_modules/pg/lib/connection.js:43:17)
      at Client._connect (../../node_modules/pg/lib/client.js:117:11)
      at Client.connect (../../node_modules/pg/lib/client.js:166:12)
      at BoundPool.newClient (../../node_modules/pg-pool/index.js:241:12)
      at BoundPool.connect (../../node_modules/pg-pool/index.js:216:10)
      at TinyPg.getClient (../../node_modules/tinypg/src/tiny.ts:338:24)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:381:30)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at query_promise (../../node_modules/tinypg/src/tiny.ts:380:62)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:473:13)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at TinyPg.performDbCall (../../node_modules/tinypg/dist/tiny.js:248:16)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:95:28)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at ../../node_modules/tinypg/src/tiny.ts:83:84
      at Object.<anonymous> (../../node_modules/tinypg/src/util.ts:25:20)
      at ../../node_modules/tinypg/dist/util.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/util.js:4:12)
      at Object.stackTraceAccessor (../../node_modules/tinypg/dist/util.js:27:12)
      at TinyPg.query (../../node_modules/tinypg/src/tiny.ts:83:19)
      at clearDatabase (src/directive/service/utils.test.ts:17:11)
      at Object.<anonymous> (src/directive/service/utils.test.ts:22:9)


  ●  TCPWRAP

      13 |
      14 | const clearDatabase = async (): Promise<void> => {
    > 15 | 	await db.query("TRUNCATE event, account_archive, account, archive CASCADE");
         | 	         ^
      16 | };
      17 |
      18 | describe("getAccountArchive", () => {

      at Connection.connect (../../node_modules/pg/lib/connection.js:43:17)
      at Client._connect (../../node_modules/pg/lib/client.js:117:11)
      at Client.connect (../../node_modules/pg/lib/client.js:166:12)
      at BoundPool.newClient (../../node_modules/pg-pool/index.js:241:12)
      at BoundPool.connect (../../node_modules/pg-pool/index.js:216:10)
      at TinyPg.getClient (../../node_modules/tinypg/src/tiny.ts:338:24)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:381:30)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at query_promise (../../node_modules/tinypg/src/tiny.ts:380:62)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:473:13)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at TinyPg.performDbCall (../../node_modules/tinypg/dist/tiny.js:248:16)
      at TinyPg.<anonymous> (../../node_modules/tinypg/src/tiny.ts:95:28)
      at ../../node_modules/tinypg/dist/tiny.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/tiny.js:4:12)
      at ../../node_modules/tinypg/src/tiny.ts:83:84
      at Object.<anonymous> (../../node_modules/tinypg/src/util.ts:25:20)
      at ../../node_modules/tinypg/dist/util.js:8:71
      at Object.<anonymous>.__awaiter (../../node_modules/tinypg/dist/util.js:4:12)
      at Object.stackTraceAccessor (../../node_modules/tinypg/dist/util.js:27:12)
      at TinyPg.query (../../node_modules/tinypg/src/tiny.ts:83:19)
      at clearDatabase (src/account/service.test.ts:15:11)
      at Object.<anonymous> (src/account/service.test.ts:20:9)


  ●  TCPWRAP

       9 |
      10 | 	test("should be available when DB connection works", async () => {
    > 11 | 		const result = await agent.get("/api/v2/health").expect(200);
         | 		                           ^
      12 | 		expect(
      13 | 			(result.body as { status: "available" | "unavailable" }).status,
      14 | 		).toBe("available");

      at Test.serverAddress (../../node_modules/supertest/lib/test.js:63:35)
      at new Test (../../node_modules/supertest/lib/test.js:49:14)
      at Object.obj.<computed> [as get] (../../node_modules/supertest/index.js:39:18)
      at Object.<anonymous> (src/health/controller.test.ts:11:30)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions