Girish Ramakrishnan
d0a66f1701
Back to mocha!
...
sorry i ever left you dear mocha
node:test has two major issues:
* --bail does not work and requires strange modules and incantations.
I was able to work around this with a custom module.
* the test reporter reports _after_ the suite is run. this makes debugging
really hard. the debugs that we print all happen before the test suite summary.
poor design overall.
2026-02-19 13:24:14 +01:00
Girish Ramakrishnan
c176ac600b
migrate tests to node:test
2026-02-19 10:13:22 +01:00
Girish Ramakrishnan
113aba0897
remove the cors test
2026-02-17 17:15:30 +01:00
Girish Ramakrishnan
36aa641cb9
migrate to "export default"
...
also, set no-use-before-define in linter
2026-02-14 15:43:24 +01:00
Girish Ramakrishnan
96dc79cfe6
Migrate codebase from CommonJS to ES Modules
...
- Convert all require()/module.exports to import/export across 260+ files
- Add "type": "module" to package.json to enable ESM by default
- Add migrations/package.json with "type": "commonjs" to keep db-migrate compatible
- Convert eslint.config.js to ESM with sourceType: "module"
- Replace __dirname/__filename with import.meta.dirname/import.meta.filename
- Replace require.main === module with process.argv[1] === import.meta.filename
- Remove 'use strict' directives (implicit in ESM)
- Convert dynamic require() in switch statements to static import lookup maps
(dns.js, domains.js, backupformats.js, backupsites.js, network.js)
- Extract self-referencing exports.CONSTANT patterns into standalone const
declarations (apps.js, services.js, locks.js, users.js, mail.js, etc.)
- Lazify SERVICES object in services.js to avoid circular dependency TDZ issues
- Add clearMailQueue() to mailer.js for ESM-safe queue clearing in tests
- Add _setMockApp() to ldapserver.js for ESM-safe test mocking
- Add _setMockResolve() wrapper to dig.js for ESM-safe DNS mocking in tests
- Convert backupupload.js to use dynamic imports so --check exits before
loading the module graph (which requires BOX_ENV)
- Update check-install to use ESM import for infra_version.js
- Convert scripts/ (hotfix, release, remote_hotfix.js, find-unused-translations)
- All 1315 tests passing
Migration stats (AI-assisted using Cursor with Claude):
- Wall clock time: ~3-4 hours
- Assistant completions: ~80-100
- Estimated token usage: ~1-2M tokens
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 15:11:45 +01:00
Girish Ramakrishnan
6ac0cd421a
use the @cloudron/superagent module
2025-07-10 10:56:05 +02:00
Girish Ramakrishnan
8e58349bfa
replace with custom superagent based on fetch API
2025-02-15 15:14:09 +01:00
Girish Ramakrishnan
68a3c267e5
move config route under dashboard
...
it's essentially giving info for various parts of the ui
2023-08-12 22:25:49 +05:30
Girish Ramakrishnan
7709e155e0
more async'ification
2021-09-07 11:21:06 -07:00
Girish Ramakrishnan
77f5cb183b
merge appdb.js into apps.js
2021-08-23 15:35:38 -07:00
Girish Ramakrishnan
9b74bb73aa
config.js is dead, long live config.js
...
we use settings now
2019-07-26 14:51:51 -07:00
Girish Ramakrishnan
12eae1eff2
Make port a constant
2019-07-25 16:08:54 -07:00
Girish Ramakrishnan
9e74b666fb
More caas removal
2019-05-08 20:01:14 -07:00
Johannes Zellner
54c96d98d1
Remove all individual test timeouts and ignore timeouts toplevel
2018-12-03 12:24:04 +01:00
Girish Ramakrishnan
305a3c94d0
Rework the progress API to use the task progress
2018-11-19 21:06:44 -08:00
Girish Ramakrishnan
0c5cb9c98f
Remove settings.initialize/uninitialize
...
this simplifies the startup sequence
2018-11-10 14:55:23 -08:00
Girish Ramakrishnan
5996a107ed
Return a bogus version to fix the tests
2018-10-27 12:26:39 -07:00
Girish Ramakrishnan
cab9bc3a61
Unify the config routes into /api/v1/config
...
No more separate config routes for different types of user
2018-06-28 17:40:57 -07:00
Girish Ramakrishnan
ee66893875
more config.fqdn() removal in tests
2018-01-24 14:58:37 -08:00
Girish Ramakrishnan
e6eb54d572
More test fixing
2017-11-27 18:19:20 -08:00
Girish Ramakrishnan
68c26c1d12
Fix route/ tests
2017-11-27 16:01:52 -08:00
Girish Ramakrishnan
8b11692e37
cron: ensure all jobs are cleaned up
2017-11-27 12:44:04 -08:00
Girish Ramakrishnan
21afc71d89
add tests for storage backends
2017-10-02 23:08:16 -07:00
Girish Ramakrishnan
2a45a9bbd4
test: rate limit is now in nginx
2017-04-04 13:12:50 -07:00
Johannes Zellner
08f3b0b612
Add rate limit test
2017-01-16 16:48:17 +01:00
Girish Ramakrishnan
3335936e35
fix cors crash with malformed origin
2016-07-07 16:42:45 -07:00
Girish Ramakrishnan
a863b8fa22
fix cors test
2016-07-02 06:03:33 -05:00
Girish Ramakrishnan
a4ea693c3c
update superagent
...
the latest superchanged changed the meaning of 'error'. Previously,
error implied a network error. With the latest superagent, error means
a REST api error i.e 4xx, 5xx are flagged as errors.
error && !error.response means network error
2015-12-15 09:53:37 -08:00
Girish Ramakrishnan
df9d321ac3
app.portBindings and newManifest.tcpPorts may be null
2015-07-20 00:10:36 -07:00