Skip to content

Commit 79e9409

Browse files
committed
test: make it possible to run all tests and versions
1 parent 98f20b8 commit 79e9409

File tree

2 files changed

+46
-31
lines changed

2 files changed

+46
-31
lines changed

plugins/node/instrumentation-tedious/test/api.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,35 @@
1616

1717
import * as assert from 'assert';
1818
import { promisify } from 'util';
19+
import * as semver from 'semver';
20+
1921
import type {
2022
Connection,
2123
Request,
2224
TYPES,
23-
ConnectionConfiguration,
25+
// @ts-ignore
26+
ConnectionConfig as ConnectionConfigLegacy,
27+
// @ts-ignore
28+
ConnectionConfiguration as ConnectionConfigNew,
2429
} from 'tedious';
2530

2631
type Method = keyof Connection & ('execSql' | 'execSqlBatch' | 'prepare');
32+
type ConnectionConfig = ConnectionConfigLegacy | ConnectionConfigNew;
33+
2734
export type tedious = {
2835
Connection: typeof Connection;
2936
Request: typeof Request;
3037
TYPES: typeof TYPES;
31-
ConnectionConfig: ConnectionConfiguration;
38+
ConnectionConfig: ConnectionConfig;
3239
};
3340

34-
export const makeApi = (tedious: tedious) => {
41+
export const makeApi = (tedious: tedious, tediousVersion: string) => {
3542
const fullName = (resource: string) => {
3643
assert.strictEqual(typeof resource, 'string');
3744
return `[dbo].[${resource}]`;
3845
};
3946

40-
const createConnection = (
41-
config: ConnectionConfiguration
42-
): Promise<Connection> => {
47+
const createConnection = (config: ConnectionConfig): Promise<Connection> => {
4348
return new Promise((resolve, reject) => {
4449
const connection = new tedious.Connection(config);
4550

@@ -299,8 +304,16 @@ export const makeApi = (tedious: tedious) => {
299304

300305
if (connection.execBulkLoad.length === 1) {
301306
// required in <=11.5. not supported in 14
302-
const rows = [{ c1: 1 }, { c1: 2, c2: 'hello' }];
303-
return connection.execBulkLoad(request, rows);
307+
if (semver.lt(tediousVersion, '18.0.0')) {
308+
request.addRow({ c1: 1 });
309+
request.addRow({ c1: 2, c2: 'hello' });
310+
// @ts-ignore
311+
return connection.execBulkLoad(request);
312+
} else {
313+
const rows = [{ c1: 1 }, { c1: 2, c2: 'hello' }];
314+
// @ts-ignore
315+
return connection.execBulkLoad(request, rows);
316+
}
304317
}
305318

306319
(connection.execBulkLoad as any)(request, [

plugins/node/instrumentation-tedious/test/instrumentation.test.ts

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import {
3737
import * as assert from 'assert';
3838
import { TediousInstrumentation } from '../src';
3939
import makeApi from './api';
40-
import type { Connection, ConnectionConfiguration } from 'tedious';
40+
import type { tedious } from './api';
4141
import * as semver from 'semver';
4242

4343
const port = Number(process.env.MSSQL_PORT) || 1433;
@@ -50,28 +50,30 @@ const instrumentation = new TediousInstrumentation();
5050
instrumentation.enable();
5151
instrumentation.disable();
5252

53-
const config: ConnectionConfiguration & { userName: string; password: string } =
54-
{
55-
userName: user,
56-
password,
57-
server: host,
58-
authentication: {
59-
type: 'default',
60-
options: {
61-
userName: user,
62-
password,
63-
},
64-
},
53+
const config: tedious['ConnectionConfig'] & {
54+
userName: string;
55+
password: string;
56+
} = {
57+
userName: user,
58+
password,
59+
server: host,
60+
authentication: {
61+
type: 'default',
6562
options: {
66-
port,
67-
database,
68-
encrypt: true,
69-
// Required for <11.0.8
70-
trustServerCertificate: true,
71-
rowCollectionOnRequestCompletion: true,
72-
rowCollectionOnDone: true,
63+
userName: user,
64+
password,
7365
},
74-
};
66+
},
67+
options: {
68+
port,
69+
database,
70+
encrypt: true,
71+
// Required for <11.0.8
72+
trustServerCertificate: true,
73+
rowCollectionOnRequestCompletion: true,
74+
rowCollectionOnDone: true,
75+
},
76+
};
7577

7678
const processVersion = process.version;
7779
const tediousVersion = testUtils.getPackageVersion('tedious');
@@ -85,7 +87,7 @@ const incompatVersions =
8587
describe('tedious', () => {
8688
let tedious: any;
8789
let contextManager: AsyncHooksContextManager;
88-
let connection: Connection;
90+
let connection: tedious['Connection'];
8991
const provider = new BasicTracerProvider();
9092
const shouldTest = process.env.RUN_MSSQL_TESTS; // For CI: assumes local db is already available
9193
const shouldTestLocally = process.env.RUN_MSSQL_TESTS_LOCAL; // For local: spins up local db via docker
@@ -124,7 +126,7 @@ describe('tedious', () => {
124126
context.setGlobalContextManager(contextManager);
125127
instrumentation.setTracerProvider(provider);
126128
instrumentation.enable();
127-
tedious = makeApi(require('tedious'));
129+
tedious = makeApi(require('tedious'), tediousVersion);
128130
connection = await tedious.createConnection(config).catch((err: any) => {
129131
console.error('with config:', config);
130132
throw err;

0 commit comments

Comments
 (0)