From 009fd289adb5a8913b51669fc3b6174931c969fc Mon Sep 17 00:00:00 2001 From: antonk52 Date: Wed, 7 Feb 2024 23:09:22 +0000 Subject: [PATCH] tests for loading config files from cjs and esm projects --- src/spec/cjs-project/cjs.config.cjs | 3 + src/spec/cjs-project/cjs.config.js | 3 + src/spec/cjs-project/cjs.config.mjs | 3 + src/spec/cjs-project/package.json | 12 ++ src/spec/esm-project/esm.config.cjs | 3 + src/spec/esm-project/esm.config.js | 3 + src/spec/esm-project/esm.config.mjs | 3 + src/spec/esm-project/package.json | 12 ++ src/spec/index.spec.ts | 208 ++++++++++++++++++++++++++++ 9 files changed, 250 insertions(+) create mode 100644 src/spec/cjs-project/cjs.config.cjs create mode 100644 src/spec/cjs-project/cjs.config.js create mode 100644 src/spec/cjs-project/cjs.config.mjs create mode 100644 src/spec/cjs-project/package.json create mode 100644 src/spec/esm-project/esm.config.cjs create mode 100644 src/spec/esm-project/esm.config.js create mode 100644 src/spec/esm-project/esm.config.mjs create mode 100644 src/spec/esm-project/package.json diff --git a/src/spec/cjs-project/cjs.config.cjs b/src/spec/cjs-project/cjs.config.cjs new file mode 100644 index 0000000..7f9f5cd --- /dev/null +++ b/src/spec/cjs-project/cjs.config.cjs @@ -0,0 +1,3 @@ +module.exports = { + cjs: true, +}; diff --git a/src/spec/cjs-project/cjs.config.js b/src/spec/cjs-project/cjs.config.js new file mode 100644 index 0000000..7f9f5cd --- /dev/null +++ b/src/spec/cjs-project/cjs.config.js @@ -0,0 +1,3 @@ +module.exports = { + cjs: true, +}; diff --git a/src/spec/cjs-project/cjs.config.mjs b/src/spec/cjs-project/cjs.config.mjs new file mode 100644 index 0000000..1b48915 --- /dev/null +++ b/src/spec/cjs-project/cjs.config.mjs @@ -0,0 +1,3 @@ +export default { + esm: true, +}; diff --git a/src/spec/cjs-project/package.json b/src/spec/cjs-project/package.json new file mode 100644 index 0000000..e030537 --- /dev/null +++ b/src/spec/cjs-project/package.json @@ -0,0 +1,12 @@ +{ + "name": "cjs-project", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/src/spec/esm-project/esm.config.cjs b/src/spec/esm-project/esm.config.cjs new file mode 100644 index 0000000..7f9f5cd --- /dev/null +++ b/src/spec/esm-project/esm.config.cjs @@ -0,0 +1,3 @@ +module.exports = { + cjs: true, +}; diff --git a/src/spec/esm-project/esm.config.js b/src/spec/esm-project/esm.config.js new file mode 100644 index 0000000..1b48915 --- /dev/null +++ b/src/spec/esm-project/esm.config.js @@ -0,0 +1,3 @@ +export default { + esm: true, +}; diff --git a/src/spec/esm-project/esm.config.mjs b/src/spec/esm-project/esm.config.mjs new file mode 100644 index 0000000..1b48915 --- /dev/null +++ b/src/spec/esm-project/esm.config.mjs @@ -0,0 +1,3 @@ +export default { + esm: true, +}; diff --git a/src/spec/esm-project/package.json b/src/spec/esm-project/package.json new file mode 100644 index 0000000..c306273 --- /dev/null +++ b/src/spec/esm-project/package.json @@ -0,0 +1,12 @@ +{ + "name": "esm-package", + "type": "module", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/src/spec/index.spec.ts b/src/spec/index.spec.ts index acccf27..d4dff97 100644 --- a/src/spec/index.spec.ts +++ b/src/spec/index.spec.ts @@ -116,6 +116,214 @@ describe('options', () => { expect(ccResult).toEqual({config, filepath}); }); + describe('esm-project', () => { + it('async search js', async () => { + const stopDir = __dirname; + const filepath = path.join( + stopDir, + 'esm-project', + 'esm.config.js', + ); + const searchFrom = path.join( + stopDir, + 'esm-project', + 'a', + 'b', + 'c', + ); + + const options = { + searchPlaces: ['esm.config.js'], + stopDir, + }; + + const config = {esm: true}; + + const result = await lilconfig('test-app', options).search( + searchFrom, + ); + const ccResult = await cosmiconfig( + 'test-app', + options, + ).search(searchFrom); + + expect(result).toEqual({config, filepath}); + expect(ccResult).toEqual({config, filepath}); + }); + + it('async search mjs', async () => { + const stopDir = __dirname; + const filepath = path.join( + stopDir, + 'esm-project', + 'esm.config.mjs', + ); + const searchFrom = path.join( + stopDir, + 'esm-project', + 'a', + 'b', + 'c', + ); + + const options = { + searchPlaces: ['esm.config.mjs'], + stopDir, + }; + + const config = {esm: true}; + + const result = await lilconfig('test-app', options).search( + searchFrom, + ); + const ccResult = await cosmiconfig( + 'test-app', + options, + ).search(searchFrom); + + expect(result).toEqual({config, filepath}); + expect(ccResult).toEqual({config, filepath}); + }); + + it('async search cjs', async () => { + const stopDir = __dirname; + const filepath = path.join( + stopDir, + 'esm-project', + 'esm.config.cjs', + ); + const searchFrom = path.join( + stopDir, + 'esm-project', + 'a', + 'b', + 'c', + ); + + const options = { + searchPlaces: ['esm.config.cjs'], + stopDir, + }; + + const config = {cjs: true}; + + const result = await lilconfig('test-app', options).search( + searchFrom, + ); + const ccResult = await cosmiconfig( + 'test-app', + options, + ).search(searchFrom); + + expect(result).toEqual({config, filepath}); + expect(ccResult).toEqual({config, filepath}); + }); + }); + + describe('cjs-project', () => { + it('async search js', async () => { + const stopDir = __dirname; + const filepath = path.join( + stopDir, + 'cjs-project', + 'cjs.config.js', + ); + const searchFrom = path.join( + stopDir, + 'cjs-project', + 'a', + 'b', + 'c', + ); + + const options = { + searchPlaces: ['cjs.config.js'], + stopDir, + }; + + const config = {cjs: true}; + + const result = await lilconfig('test-app', options).search( + searchFrom, + ); + const ccResult = await cosmiconfig( + 'test-app', + options, + ).search(searchFrom); + + expect(result).toEqual({config, filepath}); + expect(ccResult).toEqual({config, filepath}); + }); + + it('async search mjs', async () => { + const stopDir = __dirname; + const filepath = path.join( + stopDir, + 'cjs-project', + 'cjs.config.mjs', + ); + const searchFrom = path.join( + stopDir, + 'cjs-project', + 'a', + 'b', + 'c', + ); + + const options = { + searchPlaces: ['cjs.config.mjs'], + stopDir, + }; + + const config = {esm: true}; + + const result = await lilconfig('test-app', options).search( + searchFrom, + ); + const ccResult = await cosmiconfig( + 'test-app', + options, + ).search(searchFrom); + + expect(result).toEqual({config, filepath}); + expect(ccResult).toEqual({config, filepath}); + }); + + it('async search cjs', async () => { + const stopDir = __dirname; + const filepath = path.join( + stopDir, + 'cjs-project', + 'cjs.config.cjs', + ); + const searchFrom = path.join( + stopDir, + 'cjs-project', + 'a', + 'b', + 'c', + ); + + const options = { + searchPlaces: ['cjs.config.cjs'], + stopDir, + }; + + const config = {cjs: true}; + + const result = await lilconfig('test-app', options).search( + searchFrom, + ); + const ccResult = await cosmiconfig( + 'test-app', + options, + ).search(searchFrom); + + expect(result).toEqual({config, filepath}); + expect(ccResult).toEqual({config, filepath}); + }); + }); + it('async noExt', async () => { const searchPath = path.join(__dirname, 'search'); const filepath = path.join(searchPath, 'noExtension');