Skip to content

chore(NODE-6037): use metadata for skip logic and remove async from context block #4046

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
"@typescript-eslint",
"prettier",
"unused-imports",
"tsdoc"
"tsdoc",
"mocha"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
// "plugin:mocha/recommended"
],
"env": {
"node": true,
Expand Down Expand Up @@ -112,6 +114,7 @@
]
}
],
"mocha/no-async-describe": "error",
"no-restricted-syntax": [
"error",
{
Expand Down
57 changes: 54 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
"eslint": "^8.56.0",
"eslint-config-prettier": "^8.10.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-mocha": "^10.4.1",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-simple-import-sort": "^10.0.0",
"eslint-plugin-tsdoc": "^0.2.17",
Expand Down
2 changes: 1 addition & 1 deletion test/atlas/drivers_atlas_testing.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { runUnifiedSuite } from '../tools/unified-spec-runner/runner';

describe('Node Driver Atlas Testing', async function () {
describe('Node Driver Atlas Testing', function () {
// Astrolabe can, well, take some time. In some cases up to 800s to
// reconfigure clusters.
this.timeout(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { EJSON } from 'bson';
import { expect } from 'chai';
import { readFile } from 'fs/promises';
import { join } from 'path';
import * as semver from 'semver';

import { Decimal128, type Document, Double, Long, type MongoClient } from '../../../src';
/* eslint-disable @typescript-eslint/no-restricted-imports */
Expand All @@ -25,7 +24,9 @@ const metaData: MongoDBMetadataUI = {

// The Range Explicit Encryption tests require MongoDB server 7.0+ for QE v2.
// The tests must not run against a standalone.
mongodb: '>=7.0.0',
//
// `rangePreview` is not supported on 8.0+ servers.
mongodb: '>=7.0.0 <8.0.0',
topology: '!single'
}
};
Expand Down Expand Up @@ -127,14 +128,6 @@ const readEncryptedFieldsFile = (dataType: string): Promise<string> =>
describe('Range Explicit Encryption', function () {
installNodeDNSWorkaroundHooks();

beforeEach(async function () {
if (semver.gte(this.configuration.version, '7.999.999')) {
if (this.currentTest)
this.currentTest.skipReason = 'TODO(NODE-5908): skip rangePreview tests on server 8.0+';
return this.currentTest?.skip();
}
});

let clientEncryption;
let keyId;
let keyVaultClient;
Expand All @@ -145,7 +138,7 @@ describe('Range Explicit Encryption', function () {
let encryptedTwoHundred;
let compareNumericValues;
for (const { type: dataType, rangeOptions, factory } of dataTypes) {
context(`datatype ${dataType}`, async function () {
context(`datatype ${dataType}`, function () {
beforeEach(async function () {
compareNumericValues = function (value: unknown, expected: number): void {
if (dataType === 'DoubleNoPrecision' || dataType === 'DoublePrecision') {
Expand Down
6 changes: 3 additions & 3 deletions test/integration/crud/abstract_operation.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { executeOperation, Long, Server } from '../../mongodb';
import * as mongodb from '../../mongodb';
import { topologyWithPlaceholderClient } from '../../tools/utils';

describe('abstract operation', async function () {
describe('command name getter', async function () {
describe('abstract operation', function () {
describe('command name getter', function () {
interface AbstractOperationSubclasses {
subclassCreator: () => mongodb.AbstractOperation;
subclassType: any;
Expand Down Expand Up @@ -312,7 +312,7 @@ describe('abstract operation', async function () {
});

for (const { subclassCreator, subclassType, correctCommandName } of subclassArray) {
context(`when subclass is ${subclassType.name}`, async function () {
context(`when subclass is ${subclassType.name}`, function () {
it(`operation.commandName equals correct string`, async function () {
const subclassInstance = subclassCreator();
expect(subclassInstance.commandName).to.equal(correctCommandName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ describe('useBigInt64 option', function () {
}
});

describe('when not provided to client', async function () {
describe('when not provided to client', function () {
beforeEach(async function () {
client = await this.configuration.newClient().connect();
});
Expand Down Expand Up @@ -92,7 +92,7 @@ describe('useBigInt64 option', function () {
});
});

describe('when set to true at collection level', async function () {
describe('when set to true at collection level', function () {
let res: WithId<BSON.Document> | null;
beforeEach(async function () {
client = await this.configuration.newClient().connect();
Expand All @@ -110,7 +110,7 @@ describe('useBigInt64 option', function () {
});
});

describe('when set to false at collection level', async function () {
describe('when set to false at collection level', function () {
let res: WithId<BSON.Document> | null;
beforeEach(async function () {
client = await this.configuration.newClient().connect();
Expand Down
4 changes: 2 additions & 2 deletions test/unit/cmap/connect.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ describe('Connect Tests', function () {
expect(handshakeDocument.client.env).to.not.have.property('name');
});

context('when 512 byte size limit is exceeded', async () => {
context('when 512 byte size limit is exceeded', () => {
it(`should not 'env' property in client`, async () => {
// make metadata = 507 bytes, so it takes up entire LimitedSizeDocument
const longAppName = 's'.repeat(493);
Expand Down Expand Up @@ -274,7 +274,7 @@ describe('Connect Tests', function () {
expect(handshakeDocument.client.env.name).to.equal('aws.lambda');
});

context('when 512 byte size limit is exceeded', async () => {
context('when 512 byte size limit is exceeded', () => {
it(`should not have 'container' property in client.env`, async () => {
// make metadata = 507 bytes, so it takes up entire LimitedSizeDocument
const longAppName = 's'.repeat(447);
Expand Down
2 changes: 1 addition & 1 deletion test/unit/commands.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ describe('class OpCompressedRequest', () => {
});
});

context('toBin()', async () => {
context('toBin()', () => {
for (const protocol of [OpMsgRequest, OpQueryRequest]) {
context(`when ${protocol.name} is used`, () => {
let msg;
Expand Down
12 changes: 6 additions & 6 deletions test/unit/mongo_logger.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ describe('meta tests for BufferingStream', function () {
});
});

describe('class MongoLogger', async function () {
describe('class MongoLogger', function () {
describe('#constructor()', function () {
it('assigns each property from the options object onto the logging class', function () {
const componentSeverities: MongoLoggerOptions['componentSeverities'] = {
Expand Down Expand Up @@ -1353,7 +1353,7 @@ describe('class MongoLogger', async function () {
});
});

describe('log', async function () {
describe('log', function () {
let componentSeverities: MongoLoggerOptions['componentSeverities'];

beforeEach(function () {
Expand Down Expand Up @@ -1407,7 +1407,7 @@ describe('class MongoLogger', async function () {
});
});
});
describe('async stream failure handling', async function () {
describe('async stream failure handling', function () {
context('when stream is not stderr', function () {
let stderrStub;

Expand All @@ -1419,7 +1419,7 @@ describe('class MongoLogger', async function () {
sinon.restore();
});

context('when stream user defined stream and stream.write throws async', async function () {
context('when stream user defined stream and stream.write throws async', function () {
it('should catch error, not crash application, warn user, and start writing to stderr', async function () {
const stream = {
async write(_log) {
Expand Down Expand Up @@ -1456,7 +1456,7 @@ describe('class MongoLogger', async function () {
});
});

context('when stream is stdout and stdout.write throws', async function () {
context('when stream is stdout and stdout.write throws', function () {
it('should catch error, not crash application, warn user, and start writing to stderr', async function () {
sinon.stub(process.stdout, 'write').throws(new Error('I am stdout and do not work'));
// print random message at the debug level
Expand Down Expand Up @@ -1509,7 +1509,7 @@ describe('class MongoLogger', async function () {
});
});
});
context('when async stream has multiple logs with different timeouts', async function () {
context('when async stream has multiple logs with different timeouts', function () {
it('should preserve their order', async function () {
const stream = {
buffer: [],
Expand Down
4 changes: 2 additions & 2 deletions test/unit/sdam/server_selection.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
import * as mock from '../../tools/mongodb-mock/index';
import { topologyWithPlaceholderClient } from '../../tools/utils';

describe('server selection', async function () {
describe('server selection', function () {
const primary = new ServerDescription('127.0.0.1:27017', {
setName: 'test',
isWritablePrimary: true,
Expand Down Expand Up @@ -610,7 +610,7 @@ describe('server selection', async function () {
});
});

describe('server selection logging feature flagging', async function () {
describe('server selection logging feature flagging', function () {
let mockServer;
let topology;
let address;
Expand Down