Skip to content

Commit 81bf1a7

Browse files
authored
fix(NODE-6732): test and fix webpack bundling (#230)
1 parent 35749ba commit 81bf1a7

File tree

11 files changed

+8927
-3
lines changed

11 files changed

+8927
-3
lines changed

.github/workflows/webpack.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Webpack
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Use Node.js LTS
17+
uses: actions/setup-node@v4
18+
with:
19+
node-version: 'lts/*'
20+
21+
- name: "Install dependencies"
22+
shell: bash
23+
run: |
24+
npm install
25+
26+
- name: "Install dependencies in the Webpack bundle test package"
27+
shell: bash
28+
working-directory: ./test/bundling/webpack
29+
run: |
30+
npm install
31+
32+
- name: "Install local kerberos into Webpack bundle test package"
33+
shell: bash
34+
working-directory: ./test/bundling/webpack
35+
run: |
36+
npm run install:kerberos
37+
38+
- name: "Run webpack build"
39+
shell: bash
40+
working-directory: ./test/bundling/webpack
41+
run: |
42+
npm run build

lib/kerberos.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
const { loadBindings, defineOperation } = require('./util');
44

5-
65
const kerberos = loadBindings();
76
const KerberosClient = kerberos.KerberosClient;
87
const KerberosServer = kerberos.KerberosServer;

lib/util.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,14 @@ function loadBindings() {
8484
try {
8585
return require('../build/Release/kerberos.node');
8686
} catch {
87-
return require('../build/Debug/kerberos.node');
87+
// Webpack will fail when just returning the require, so we need to wrap
88+
// in a try/catch and rethrow.
89+
/* eslint no-useless-catch: 0 */
90+
try {
91+
return require('../build/Debug/kerberos.node');
92+
} catch (error) {
93+
throw error;
94+
}
8895
}
8996
}
9097

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
"check:lint": "ESLINT_USE_FLAT_CONFIG=false eslint lib test",
6161
"precommit": "check-clang-format",
6262
"docs": "jsdoc2md --template etc/README.hbs --plugin dmd-clear --files lib/kerberos.js > README.md",
63-
"test": "mocha test",
63+
"test": "mocha 'test/*_tests.js'",
6464
"prebuild": "prebuild --runtime napi --strip --verbose --all"
6565
},
6666
"engines": {

test/bundling/webpack/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dist/
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'use strict';
2+
3+
const { execSync } = require('node:child_process');
4+
const { readFileSync } = require('node:fs');
5+
const { resolve } = require('node:path');
6+
7+
const xtrace = (...args) => {
8+
console.log(`running: ${args[0]}`);
9+
return execSync(...args);
10+
};
11+
12+
const kerberosRoot = resolve(__dirname, '../../..');
13+
console.log(`kerberos package root: ${kerberosRoot}`);
14+
15+
const kerberosVersion = JSON.parse(
16+
readFileSync(resolve(kerberosRoot, 'package.json'), { encoding: 'utf8' })
17+
).version;
18+
console.log(`kerberos Version: ${kerberosVersion}`);
19+
20+
xtrace('npm pack --pack-destination test/bundling/webpack', { cwd: kerberosRoot });
21+
22+
xtrace(`npm install --no-save kerberos-${kerberosVersion}.tgz`);
23+
24+
console.log('kerberos installed!');

0 commit comments

Comments
 (0)