Skip to content

Commit e0e06be

Browse files
committed
fix: macos test failures due to concurrent file access
- convert nedb file-based database setup to use in-memory databases when running in test mode - remove the single process requirement for tests, run tests in parallel
1 parent 219770e commit e0e06be

File tree

5 files changed

+20
-27
lines changed

5 files changed

+20
-27
lines changed

package-lock.json

Lines changed: 0 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/db/file/pushes.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,13 @@ if (!fs.existsSync('./.data')) fs.mkdirSync('./.data');
1313
/* istanbul ignore if */
1414
if (!fs.existsSync('./.data/db')) fs.mkdirSync('./.data/db');
1515

16-
const db = new Datastore({ filename: './.data/db/pushes.db', autoload: true });
16+
// export for testing purposes
17+
export let db: Datastore;
18+
if (process.env.NODE_ENV === 'test') {
19+
db = new Datastore({ inMemoryOnly: true, autoload: true });
20+
} else {
21+
db = new Datastore({ filename: './.data/db/pushes.db', autoload: true });
22+
}
1723
try {
1824
db.ensureIndex({ fieldName: 'id', unique: true });
1925
} catch (e) {

src/db/file/repo.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@ if (!fs.existsSync('./.data')) fs.mkdirSync('./.data');
1414
if (!fs.existsSync('./.data/db')) fs.mkdirSync('./.data/db');
1515

1616
// export for testing purposes
17-
export const db = new Datastore({ filename: './.data/db/repos.db', autoload: true });
18-
17+
export let db: Datastore;
18+
if (process.env.NODE_ENV === 'test') {
19+
db = new Datastore({ inMemoryOnly: true, autoload: true });
20+
} else {
21+
db = new Datastore({ filename: './.data/db/pushes.db', autoload: true });
22+
}
1923
try {
2024
db.ensureIndex({ fieldName: 'url', unique: true });
2125
} catch (e) {

src/db/file/users.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ if (!fs.existsSync('./.data')) fs.mkdirSync('./.data');
1111
/* istanbul ignore if */
1212
if (!fs.existsSync('./.data/db')) fs.mkdirSync('./.data/db');
1313

14-
const db = new Datastore({ filename: './.data/db/users.db', autoload: true });
14+
// export for testing purposes
15+
export let db: Datastore;
16+
if (process.env.NODE_ENV === 'test') {
17+
db = new Datastore({ inMemoryOnly: true, autoload: true });
18+
} else {
19+
db = new Datastore({ filename: './.data/db/pushes.db', autoload: true });
20+
}
1521

1622
// Using a unique constraint with the index
1723
try {

vitest.config.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@ import { defineConfig } from 'vitest/config';
22

33
export default defineConfig({
44
test: {
5-
pool: 'forks',
6-
poolOptions: {
7-
forks: {
8-
singleFork: true, // Run all tests in a single process
9-
},
10-
},
115
coverage: {
126
provider: 'v8',
137
reportsDirectory: './coverage',

0 commit comments

Comments
 (0)