From 49371dc06e863bfbc75d8501d13aa1f6f2471f97 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 5 Apr 2024 08:32:18 +1300 Subject: [PATCH 1/7] test: move into `test` directory --- .eslintignore | 2 +- package/__tests__/config.js => test/package/config.test.js | 0 .../__tests__/dev_server.js => test/package/dev_server.test.js | 0 .../development.js => test/package/development.test.js | 0 package/__tests__/env.js => test/package/env.test.js | 0 .../__tests__/base.js => test/package/environments/base.test.js | 0 .../package/environments/development.test.js | 0 .../package/environments/production.test.js | 0 package/__tests__/index.js => test/package/index.test.js | 0 .../__tests__/production.js => test/package/production.test.js | 0 .../rules/__tests__ => test/package/rules}/__utils__/webpack.js | 0 .../__tests__/babel.js => test/package/rules/babel.test.js | 0 .../__tests__/esbuild.js => test/package/rules/esbuild.test.js | 0 .../rules/__tests__/file.js => test/package/rules/file.test.js | 0 .../__tests__/index.js => test/package/rules/index.test.js | 0 .../rules/__tests__/raw.js => test/package/rules/raw.test.js | 0 .../rules/__tests__/swc.js => test/package/rules/swc.test.js | 0 package/__tests__/staging.js => test/package/staging.test.js | 0 package/__tests__/test.js => test/package/test.test.js | 0 19 files changed, 1 insertion(+), 1 deletion(-) rename package/__tests__/config.js => test/package/config.test.js (100%) rename package/__tests__/dev_server.js => test/package/dev_server.test.js (100%) rename package/__tests__/development.js => test/package/development.test.js (100%) rename package/__tests__/env.js => test/package/env.test.js (100%) rename package/environments/__tests__/base.js => test/package/environments/base.test.js (100%) rename package/environments/__tests__/development.js => test/package/environments/development.test.js (100%) rename package/environments/__tests__/production.js => test/package/environments/production.test.js (100%) rename package/__tests__/index.js => test/package/index.test.js (100%) rename package/__tests__/production.js => test/package/production.test.js (100%) rename {package/rules/__tests__ => test/package/rules}/__utils__/webpack.js (100%) rename package/rules/__tests__/babel.js => test/package/rules/babel.test.js (100%) rename package/rules/__tests__/esbuild.js => test/package/rules/esbuild.test.js (100%) rename package/rules/__tests__/file.js => test/package/rules/file.test.js (100%) rename package/rules/__tests__/index.js => test/package/rules/index.test.js (100%) rename package/rules/__tests__/raw.js => test/package/rules/raw.test.js (100%) rename package/rules/__tests__/swc.js => test/package/rules/swc.test.js (100%) rename package/__tests__/staging.js => test/package/staging.test.js (100%) rename package/__tests__/test.js => test/package/test.test.js (100%) diff --git a/.eslintignore b/.eslintignore index 3dab79585..b98944492 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,4 @@ lib/* node_modules/* vendor/* -**/__tests__/**/* +**/environments/**/* diff --git a/package/__tests__/config.js b/test/package/config.test.js similarity index 100% rename from package/__tests__/config.js rename to test/package/config.test.js diff --git a/package/__tests__/dev_server.js b/test/package/dev_server.test.js similarity index 100% rename from package/__tests__/dev_server.js rename to test/package/dev_server.test.js diff --git a/package/__tests__/development.js b/test/package/development.test.js similarity index 100% rename from package/__tests__/development.js rename to test/package/development.test.js diff --git a/package/__tests__/env.js b/test/package/env.test.js similarity index 100% rename from package/__tests__/env.js rename to test/package/env.test.js diff --git a/package/environments/__tests__/base.js b/test/package/environments/base.test.js similarity index 100% rename from package/environments/__tests__/base.js rename to test/package/environments/base.test.js diff --git a/package/environments/__tests__/development.js b/test/package/environments/development.test.js similarity index 100% rename from package/environments/__tests__/development.js rename to test/package/environments/development.test.js diff --git a/package/environments/__tests__/production.js b/test/package/environments/production.test.js similarity index 100% rename from package/environments/__tests__/production.js rename to test/package/environments/production.test.js diff --git a/package/__tests__/index.js b/test/package/index.test.js similarity index 100% rename from package/__tests__/index.js rename to test/package/index.test.js diff --git a/package/__tests__/production.js b/test/package/production.test.js similarity index 100% rename from package/__tests__/production.js rename to test/package/production.test.js diff --git a/package/rules/__tests__/__utils__/webpack.js b/test/package/rules/__utils__/webpack.js similarity index 100% rename from package/rules/__tests__/__utils__/webpack.js rename to test/package/rules/__utils__/webpack.js diff --git a/package/rules/__tests__/babel.js b/test/package/rules/babel.test.js similarity index 100% rename from package/rules/__tests__/babel.js rename to test/package/rules/babel.test.js diff --git a/package/rules/__tests__/esbuild.js b/test/package/rules/esbuild.test.js similarity index 100% rename from package/rules/__tests__/esbuild.js rename to test/package/rules/esbuild.test.js diff --git a/package/rules/__tests__/file.js b/test/package/rules/file.test.js similarity index 100% rename from package/rules/__tests__/file.js rename to test/package/rules/file.test.js diff --git a/package/rules/__tests__/index.js b/test/package/rules/index.test.js similarity index 100% rename from package/rules/__tests__/index.js rename to test/package/rules/index.test.js diff --git a/package/rules/__tests__/raw.js b/test/package/rules/raw.test.js similarity index 100% rename from package/rules/__tests__/raw.js rename to test/package/rules/raw.test.js diff --git a/package/rules/__tests__/swc.js b/test/package/rules/swc.test.js similarity index 100% rename from package/rules/__tests__/swc.js rename to test/package/rules/swc.test.js diff --git a/package/__tests__/staging.js b/test/package/staging.test.js similarity index 100% rename from package/__tests__/staging.js rename to test/package/staging.test.js diff --git a/package/__tests__/test.js b/test/package/test.test.js similarity index 100% rename from package/__tests__/test.js rename to test/package/test.test.js From 32fe28ecfeb3043adaaf3fb6db82f37a42ffae6c Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 5 Apr 2024 08:35:26 +1300 Subject: [PATCH 2/7] test: update import paths --- test/package/config.test.js | 10 +++---- test/package/dev_server.test.js | 10 +++---- test/package/development.test.js | 6 ++--- test/package/env.test.js | 10 +++---- test/package/environments/base.test.js | 14 +++++----- test/package/environments/development.test.js | 14 +++++----- test/package/environments/production.test.js | 26 +++++++++---------- test/package/index.test.js | 10 +++---- test/package/production.test.js | 4 +-- test/package/rules/babel.test.js | 6 ++--- test/package/rules/esbuild.test.js | 6 ++--- test/package/rules/file.test.js | 6 ++--- test/package/rules/index.test.js | 2 +- test/package/rules/raw.test.js | 2 +- test/package/rules/swc.test.js | 6 ++--- test/package/staging.test.js | 4 +-- test/package/test.test.js | 4 +-- 17 files changed, 70 insertions(+), 70 deletions(-) diff --git a/test/package/config.test.js b/test/package/config.test.js index 54256e433..f6ba36fb1 100644 --- a/test/package/config.test.js +++ b/test/package/config.test.js @@ -1,12 +1,12 @@ /* global test expect, describe */ -const { chdirTestApp, resetEnv } = require('../utils/helpers') +const { chdirTestApp, resetEnv } = require('../../package/utils/helpers') const { resolve } = require('path') const rootPath = process.cwd() chdirTestApp() -const config = require('../config') +const config = require('../../package/config') describe('Config', () => { beforeEach(() => jest.resetModules() && resetEnv()) @@ -14,14 +14,14 @@ describe('Config', () => { test('public path', () => { process.env.RAILS_ENV = 'development' - const config = require('../config') + const config = require('../../package/config') expect(config.publicPath).toEqual('/packs/') }) test('public path with asset host', () => { process.env.RAILS_ENV = 'development' process.env.SHAKAPACKER_ASSET_HOST = 'http://foo.com/' - const config = require('../config') + const config = require('../../package/config') expect(config.publicPath).toEqual('http://foo.com/packs/') }) @@ -40,7 +40,7 @@ describe('Config', () => { test('should allow overriding manifestPath', () => { process.env.SHAKAPACKER_CONFIG = 'config/shakapacker_manifest_path.yml' - const config = require('../config') + const config = require('../../package/config') expect(config.manifestPath).toEqual(resolve('app/javascript/manifest.json')) }) }) diff --git a/test/package/dev_server.test.js b/test/package/dev_server.test.js index cb930198c..a85063ea8 100644 --- a/test/package/dev_server.test.js +++ b/test/package/dev_server.test.js @@ -1,6 +1,6 @@ /* global test expect, describe */ -const { chdirTestApp } = require('../utils/helpers') +const { chdirTestApp } = require('../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() @@ -16,7 +16,7 @@ describe('DevServer', () => { process.env.SHAKAPACKER_DEV_SERVER_PORT = 5000 process.env.SHAKAPACKER_DEV_SERVER_DISABLE_HOST_CHECK = false - const devServer = require('../dev_server') + const devServer = require('../../package/dev_server') expect(devServer).toBeDefined() expect(devServer.host).toEqual('0.0.0.0') expect(devServer.port).toEqual('5000') @@ -24,7 +24,7 @@ describe('DevServer', () => { }) test('with custom env prefix', () => { - const config = require('../config') + const config = require('../../package/config') config.dev_server.env_prefix = 'TEST_SHAKAPACKER_DEV_SERVER' process.env.NODE_ENV = 'development' @@ -32,7 +32,7 @@ describe('DevServer', () => { process.env.TEST_SHAKAPACKER_DEV_SERVER_HOST = '0.0.0.0' process.env.TEST_SHAKAPACKER_DEV_SERVER_PORT = 5000 - const devServer = require('../dev_server') + const devServer = require('../../package/dev_server') expect(devServer).toBeDefined() expect(devServer.host).toEqual('0.0.0.0') expect(devServer.port).toEqual('5000') @@ -41,6 +41,6 @@ describe('DevServer', () => { test('with NODE_ENV and RAILS_ENV set to production', () => { process.env.RAILS_ENV = 'production' process.env.NODE_ENV = 'production' - expect(require('../dev_server')).toEqual({}) + expect(require('../../package/dev_server')).toEqual({}) }) }) diff --git a/test/package/development.test.js b/test/package/development.test.js index b39f30a9e..072734089 100644 --- a/test/package/development.test.js +++ b/test/package/development.test.js @@ -1,7 +1,7 @@ /* test expect, describe, afterAll, beforeEach */ const { resolve } = require('path') -const { chdirTestApp, resetEnv } = require('../utils/helpers') +const { chdirTestApp, resetEnv } = require('../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() @@ -17,7 +17,7 @@ describe('Development environment', () => { process.env.RAILS_ENV = 'development' process.env.NODE_ENV = 'development' process.env.WEBPACK_SERVE = 'true' - const { generateWebpackConfig } = require('../index') + const { generateWebpackConfig } = require('../../package/index') const webpackConfig = generateWebpackConfig() @@ -29,7 +29,7 @@ describe('Development environment', () => { process.env.RAILS_ENV = 'development' process.env.NODE_ENV = 'development' process.env.WEBPACK_SERVE = undefined - const { generateWebpackConfig } = require('../index') + const { generateWebpackConfig } = require('../../package/index') const webpackConfig = generateWebpackConfig() diff --git a/test/package/env.test.js b/test/package/env.test.js index d399a21d7..7e5161947 100644 --- a/test/package/env.test.js +++ b/test/package/env.test.js @@ -1,6 +1,6 @@ /* global test expect, describe */ -const { chdirTestApp } = require('../utils/helpers') +const { chdirTestApp } = require('../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() @@ -12,7 +12,7 @@ describe('Env', () => { test('with NODE_ENV and RAILS_ENV set to development', () => { process.env.RAILS_ENV = 'development' process.env.NODE_ENV = 'development' - expect(require('../env')).toEqual({ + expect(require('../../package/env')).toEqual({ railsEnv: 'development', nodeEnv: 'development', isProduction: false, @@ -24,7 +24,7 @@ describe('Env', () => { test('with undefined NODE_ENV and RAILS_ENV set to development', () => { process.env.RAILS_ENV = 'development' delete process.env.NODE_ENV - expect(require('../env')).toEqual({ + expect(require('../../package/env')).toEqual({ railsEnv: 'development', nodeEnv: 'production', isProduction: true, @@ -36,7 +36,7 @@ describe('Env', () => { test('with undefined NODE_ENV and RAILS_ENV', () => { delete process.env.NODE_ENV delete process.env.RAILS_ENV - expect(require('../env')).toEqual({ + expect(require('../../package/env')).toEqual({ railsEnv: 'production', nodeEnv: 'production', isProduction: true, @@ -48,7 +48,7 @@ describe('Env', () => { test('with a non-standard environment', () => { process.env.RAILS_ENV = 'staging' process.env.NODE_ENV = 'staging' - expect(require('../env')).toEqual({ + expect(require('../../package/env')).toEqual({ railsEnv: 'staging', nodeEnv: 'production', isProduction: true, diff --git a/test/package/environments/base.test.js b/test/package/environments/base.test.js index 4bd6121e4..8674d0692 100644 --- a/test/package/environments/base.test.js +++ b/test/package/environments/base.test.js @@ -3,15 +3,15 @@ // environment.js expects to find config/shakapacker.yml and resolved modules from // the root of a Rails project -const { chdirTestApp, chdirCwd, resetEnv } = require('../../utils/helpers') +const { chdirTestApp, chdirCwd, resetEnv } = require('../../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() const { resolve } = require('path') -const baseConfig = require('../base') -const config = require("../../config"); +const baseConfig = require('../../../package/environments/base') +const config = require("../../../package/config"); describe('Base config', () => { beforeEach(() => jest.resetModules() && resetEnv()) @@ -30,7 +30,7 @@ describe('Base config', () => { test('should return true for css_extract_ignore_order_warnings when configured', () => { process.env.SHAKAPACKER_CONFIG = 'config/shakapacker_css_extract_ignore_order_warnings.yml' - const config = require("../../config"); + const config = require("../../../package/config"); expect(config.css_extract_ignore_order_warnings).toEqual(true) }) @@ -47,8 +47,8 @@ describe('Base config', () => { test('should returns top level and nested entry points with config.nested_entries == true', () => { process.env.SHAKAPACKER_CONFIG = 'config/shakapacker_nested_entries.yml' - const config = require("../../config"); - const baseConfig = require('../base') + const config = require("../../../package/config"); + const baseConfig = require('../../../package/environments/base') expect(config.nested_entries).toEqual(true) @@ -72,7 +72,7 @@ describe('Base config', () => { }) test('should return default loader rules for each file in config/loaders', () => { - const rules = require('../../rules') + const rules = require('../../../package/rules') const defaultRules = Object.keys(rules) const configRules = baseConfig.module.rules diff --git a/test/package/environments/development.test.js b/test/package/environments/development.test.js index 08be5a0c4..a8c725be8 100644 --- a/test/package/environments/development.test.js +++ b/test/package/environments/development.test.js @@ -1,6 +1,6 @@ /* global test expect, describe, afterAll, beforeEach */ -const { chdirTestApp, resetEnv } = require('../../utils/helpers') +const { chdirTestApp, resetEnv } = require('../../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() @@ -14,9 +14,9 @@ describe('Development specific config', () => { describe('with config.useContentHash = true', () => { test('sets filename to use contentHash', () => { - const config = require("../../config"); + const config = require("../../../package/config"); config.useContentHash = true - const environmentConfig = require('../development') + const environmentConfig = require('../../../package/environments/development') expect(environmentConfig.output.filename).toEqual('js/[name]-[contenthash].js') expect(environmentConfig.output.chunkFilename).toEqual( @@ -27,9 +27,9 @@ describe('Development specific config', () => { describe('with config.useContentHash = false', () => { test('sets filename without using contentHash', () => { - const config = require("../../config"); + const config = require("../../../package/config"); config.useContentHash = false - const environmentConfig = require('../development') + const environmentConfig = require('../../../package/environments/development') expect(environmentConfig.output.filename).toEqual('js/[name].js') expect(environmentConfig.output.chunkFilename).toEqual( @@ -40,9 +40,9 @@ describe('Development specific config', () => { describe('with unset config.useContentHash', () => { test('sets filename without using contentHash', () => { - const config = require("../../config"); + const config = require("../../../package/config"); delete config.useContentHash - const environmentConfig = require('../development') + const environmentConfig = require('../../../package/environments/development') expect(environmentConfig.output.filename).toEqual('js/[name].js') expect(environmentConfig.output.chunkFilename).toEqual( diff --git a/test/package/environments/production.test.js b/test/package/environments/production.test.js index 521e1a5fc..1b584d984 100644 --- a/test/package/environments/production.test.js +++ b/test/package/environments/production.test.js @@ -1,6 +1,6 @@ /* global test expect, describe, afterAll, beforeEach */ -const { chdirTestApp, resetEnv } = require('../../utils/helpers') +const { chdirTestApp, resetEnv } = require('../../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() @@ -14,9 +14,9 @@ describe('Production specific config', () => { describe('with config.useContentHash = true', () => { test('sets filename to use contentHash', () => { - const config = require("../../config"); + const config = require("../../../package/config"); config.useContentHash = true - const environmentConfig = require('../production') + const environmentConfig = require('../../../package/environments/production') expect(environmentConfig.output.filename).toEqual('js/[name]-[contenthash].js') expect(environmentConfig.output.chunkFilename).toEqual( @@ -26,9 +26,9 @@ describe('Production specific config', () => { test("doesn't shows any warning message", () => { const consoleWarnSpy = jest.spyOn(console, 'warn'); - const config = require("../../config"); + const config = require("../../../package/config"); config.useContentHash = true - const environmentConfig = require('../production') + const environmentConfig = require('../../../package/environments/production') expect(consoleWarnSpy).not.toHaveBeenCalledWith( expect.stringMatching(/Setting 'useContentHash' to 'false' in the production environment/) @@ -40,9 +40,9 @@ describe('Production specific config', () => { describe('with config.useContentHash = false', () => { test('sets filename to use contentHash', () => { - const config = require("../../config"); + const config = require("../../../package/config"); config.useContentHash = false - const environmentConfig = require('../production') + const environmentConfig = require('../../../package/environments/production') expect(environmentConfig.output.filename).toEqual('js/[name]-[contenthash].js') expect(environmentConfig.output.chunkFilename).toEqual( @@ -52,9 +52,9 @@ describe('Production specific config', () => { test('shows a warning message', () => { const consoleWarnSpy = jest.spyOn(console, 'warn'); - const config = require("../../config"); + const config = require("../../../package/config"); config.useContentHash = false - const environmentConfig = require('../production') + const environmentConfig = require('../../../package/environments/production') expect(consoleWarnSpy).toHaveBeenCalledWith( expect.stringMatching(/Setting 'useContentHash' to 'false' in the production environment/) @@ -66,9 +66,9 @@ describe('Production specific config', () => { describe('with unset config.useContentHash', () => { test('sets filename to use contentHash', () => { - const config = require("../../config"); + const config = require("../../../package/config"); delete config.useContentHash - const environmentConfig = require('../production') + const environmentConfig = require('../../../package/environments/production') expect(environmentConfig.output.filename).toEqual('js/[name]-[contenthash].js') expect(environmentConfig.output.chunkFilename).toEqual( @@ -78,9 +78,9 @@ describe('Production specific config', () => { test("doesn't shows any warning message", () => { const consoleWarnSpy = jest.spyOn(console, 'warn'); - const config = require("../../config"); + const config = require("../../../package/config"); delete config.useContentHash - const environmentConfig = require('../production') + const environmentConfig = require('../../../package/environments/production') expect(consoleWarnSpy).not.toHaveBeenCalledWith( expect.stringMatching(/Setting 'useContentHash' to 'false' in the production environment/) diff --git a/test/package/index.test.js b/test/package/index.test.js index 8957ad5c8..5b565d69a 100644 --- a/test/package/index.test.js +++ b/test/package/index.test.js @@ -1,5 +1,5 @@ -const index = require('../index') -const { generateWebpackConfig } = require("../index"); +const index = require('../../package/index') +const { generateWebpackConfig } = require("../../package/index"); describe('index', () => { test('exports webpack-merge v5 functions', () => { @@ -9,7 +9,7 @@ describe('index', () => { }) test('webpackConfig returns an immutable object', () => { - const { generateWebpackConfig } = require('../index') + const { generateWebpackConfig } = require('../../package/index') const webpackConfig1 = generateWebpackConfig() const webpackConfig2 = generateWebpackConfig() @@ -22,7 +22,7 @@ describe('index', () => { }) test('webpackConfig merges extra config', () => { - const { generateWebpackConfig } = require('../index') + const { generateWebpackConfig } = require('../../package/index') const webpackConfig = generateWebpackConfig({ newKey: 'new value', @@ -37,7 +37,7 @@ describe('index', () => { }) test('webpackConfig errors if multiple configs are provided', () => { - const { generateWebpackConfig } = require('../index') + const { generateWebpackConfig } = require('../../package/index') expect(() => generateWebpackConfig({}, {})).toThrow( 'use webpack-merge to merge configs before passing them to Shakapacker' diff --git a/test/package/production.test.js b/test/package/production.test.js index bc1b60355..da3142850 100644 --- a/test/package/production.test.js +++ b/test/package/production.test.js @@ -1,7 +1,7 @@ /* test expect, describe, afterAll, beforeEach */ const { resolve } = require('path') -const { chdirTestApp, chdirCwd } = require('../utils/helpers') +const { chdirTestApp, chdirCwd } = require('../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() @@ -16,7 +16,7 @@ describe('Production environment', () => { process.env.RAILS_ENV = 'production' process.env.NODE_ENV = 'production' - const { generateWebpackConfig } = require('../index') + const { generateWebpackConfig } = require('../../package/index') const webpackConfig = generateWebpackConfig() diff --git a/test/package/rules/babel.test.js b/test/package/rules/babel.test.js index 26961034d..ab7075cbd 100644 --- a/test/package/rules/babel.test.js +++ b/test/package/rules/babel.test.js @@ -6,10 +6,10 @@ const { createTestCompiler, createTrackLoader, } = require("./__utils__/webpack"); -const babelConfig = require("../babel"); +const babelConfig = require("../../../package/rules/babel"); -jest.mock("../../config", () => { - const original = jest.requireActual("../../config"); +jest.mock("../../../package/config", () => { + const original = jest.requireActual("../../../package/config"); return { ...original, additional_paths: [...original.additional_paths, "node_modules/included"], diff --git a/test/package/rules/esbuild.test.js b/test/package/rules/esbuild.test.js index 33fc407e4..de48d4bf3 100644 --- a/test/package/rules/esbuild.test.js +++ b/test/package/rules/esbuild.test.js @@ -6,10 +6,10 @@ const { createTestCompiler, createTrackLoader, } = require("./__utils__/webpack"); -const esbuildConfig = require("../esbuild"); +const esbuildConfig = require("../../../package/rules/esbuild"); -jest.mock("../../config", () => { - const original = jest.requireActual("../../config"); +jest.mock("../../../package/config", () => { + const original = jest.requireActual("../../../package/config"); return { ...original, webpack_loader: "esbuild", diff --git a/test/package/rules/file.test.js b/test/package/rules/file.test.js index ff5544c9f..ab85a1763 100644 --- a/test/package/rules/file.test.js +++ b/test/package/rules/file.test.js @@ -1,7 +1,7 @@ -const file = require('../file') +const file = require('../../../package/rules/file') -jest.mock("../../config", () => { - const original = jest.requireActual("../../config"); +jest.mock("../../../package/config", () => { + const original = jest.requireActual("../../../package/config"); return { ...original, additional_paths: [...original.additional_paths, "app/assets"], diff --git a/test/package/rules/index.test.js b/test/package/rules/index.test.js index 521234c48..b2f25ccf2 100644 --- a/test/package/rules/index.test.js +++ b/test/package/rules/index.test.js @@ -1,4 +1,4 @@ -const rules = require('../index') +const rules = require('../../../package/rules/index') describe('index', () => { test('rule tests are regexes', () => { diff --git a/test/package/rules/raw.test.js b/test/package/rules/raw.test.js index fb19cb27c..dba15ac99 100644 --- a/test/package/rules/raw.test.js +++ b/test/package/rules/raw.test.js @@ -1,4 +1,4 @@ -const raw = require('../raw') +const raw = require('../../../package/rules/raw') describe('raw', () => { test('test expected file types', () => { diff --git a/test/package/rules/swc.test.js b/test/package/rules/swc.test.js index c9448bae6..759f20626 100644 --- a/test/package/rules/swc.test.js +++ b/test/package/rules/swc.test.js @@ -5,10 +5,10 @@ const { createTestCompiler, createTrackLoader, } = require("./__utils__/webpack"); -const swcConfig = require("../swc"); +const swcConfig = require("../../../package/rules/swc"); -jest.mock("../../config", () => { - const original = jest.requireActual("../../config"); +jest.mock("../../../package/config", () => { + const original = jest.requireActual("../../../package/config"); return { ...original, webpack_loader: "swc", diff --git a/test/package/staging.test.js b/test/package/staging.test.js index ad1cd36e8..b0594b5a2 100644 --- a/test/package/staging.test.js +++ b/test/package/staging.test.js @@ -1,7 +1,7 @@ /* test expect, describe, afterAll, beforeEach */ const { resolve } = require('path') -const { chdirTestApp } = require('../utils/helpers') +const { chdirTestApp } = require('../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() @@ -16,7 +16,7 @@ describe('Custom environment', () => { process.env.RAILS_ENV = 'staging' delete process.env.NODE_ENV - const { generateWebpackConfig } = require('../index') + const { generateWebpackConfig } = require('../../package/index') const webpackConfig = generateWebpackConfig() diff --git a/test/package/test.test.js b/test/package/test.test.js index 794516132..7f957e413 100644 --- a/test/package/test.test.js +++ b/test/package/test.test.js @@ -1,7 +1,7 @@ /* test expect, describe, afterAll, beforeEach */ const { resolve } = require('path') -const { chdirTestApp } = require('../utils/helpers') +const { chdirTestApp } = require('../../package/utils/helpers') const rootPath = process.cwd() chdirTestApp() @@ -16,7 +16,7 @@ describe('Test environment', () => { process.env.RAILS_ENV = 'test' process.env.NODE_ENV = 'test' - const { generateWebpackConfig } = require('../index') + const { generateWebpackConfig } = require('../../package/index') const webpackConfig = generateWebpackConfig() From 022ccba262cf8f3fdc5bd588e8840ea9da8a9cf6 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 5 Apr 2024 09:01:11 +1300 Subject: [PATCH 3/7] test: update jest config --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a421e56fc..4db664a19 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,12 @@ }, "jest": { "roots": [ - "/package" + "/test" ], "testPathIgnorePatterns": [ "/__fixtures__/", "/__utils__/" - ], - "testRegex": "(/__tests__/.*|(\\.|/))\\.jsx?$" + ] }, "dependencies": { "js-yaml": "^4.1.0", From 445c2c3fe86ab4407a12818f7620ba6a5e090d49 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 5 Apr 2024 09:06:31 +1300 Subject: [PATCH 4/7] refactor: move test helpers --- package/utils/helpers.js | 16 ---------------- .../rules/__utils__/webpack.js => helpers.js} | 17 +++++++++++++++++ test/package/config.test.js | 2 +- test/package/dev_server.test.js | 2 +- test/package/development.test.js | 2 +- test/package/env.test.js | 2 +- test/package/environments/base.test.js | 2 +- test/package/environments/development.test.js | 2 +- test/package/environments/production.test.js | 2 +- test/package/index.test.js | 2 +- test/package/production.test.js | 2 +- test/package/rules/babel.test.js | 2 +- test/package/rules/esbuild.test.js | 2 +- test/package/rules/swc.test.js | 2 +- test/package/staging.test.js | 2 +- test/package/test.test.js | 2 +- 16 files changed, 31 insertions(+), 30 deletions(-) rename test/{package/rules/__utils__/webpack.js => helpers.js} (81%) diff --git a/package/utils/helpers.js b/package/utils/helpers.js index bb9695757..86327b0a6 100644 --- a/package/utils/helpers.js +++ b/package/utils/helpers.js @@ -1,17 +1,4 @@ const isBoolean = (str) => /^true/.test(str) || /^false/.test(str) -const chdirTestApp = () => { - try { - return process.chdir('spec/shakapacker/test_app') - } catch (e) { - return null - } -} - -const chdirCwd = () => process.chdir(process.cwd()) - -const resetEnv = () => { - process.env = {} -} const ensureTrailingSlash = (path) => (path.endsWith('/') ? path : `${path}/`) @@ -55,12 +42,9 @@ const loaderMatches = (configLoader, loaderToCheck, fn) => { } module.exports = { - chdirTestApp, - chdirCwd, isBoolean, ensureTrailingSlash, canProcess, moduleExists, - resetEnv, loaderMatches } diff --git a/test/package/rules/__utils__/webpack.js b/test/helpers.js similarity index 81% rename from test/package/rules/__utils__/webpack.js rename to test/helpers.js index b4b385351..f041c47a7 100644 --- a/test/package/rules/__utils__/webpack.js +++ b/test/helpers.js @@ -40,7 +40,24 @@ const createTestCompiler = (config, fs = createInMemoryFs()) => { return compiler; }; +const chdirTestApp = () => { + try { + return process.chdir('spec/shakapacker/test_app') + } catch (e) { + return null + } +} + +const chdirCwd = () => process.chdir(process.cwd()) + +const resetEnv = () => { + process.env = {} +} + module.exports = { + chdirTestApp, + chdirCwd, + resetEnv, createTrackLoader, node_modules, node_modules_included, diff --git a/test/package/config.test.js b/test/package/config.test.js index f6ba36fb1..96154cfe6 100644 --- a/test/package/config.test.js +++ b/test/package/config.test.js @@ -1,6 +1,6 @@ /* global test expect, describe */ -const { chdirTestApp, resetEnv } = require('../../package/utils/helpers') +const { chdirTestApp, resetEnv } = require('../helpers') const { resolve } = require('path') const rootPath = process.cwd() diff --git a/test/package/dev_server.test.js b/test/package/dev_server.test.js index a85063ea8..bf13e2af9 100644 --- a/test/package/dev_server.test.js +++ b/test/package/dev_server.test.js @@ -1,6 +1,6 @@ /* global test expect, describe */ -const { chdirTestApp } = require('../../package/utils/helpers') +const { chdirTestApp } = require('../helpers') const rootPath = process.cwd() chdirTestApp() diff --git a/test/package/development.test.js b/test/package/development.test.js index 072734089..0b82076c1 100644 --- a/test/package/development.test.js +++ b/test/package/development.test.js @@ -1,7 +1,7 @@ /* test expect, describe, afterAll, beforeEach */ const { resolve } = require('path') -const { chdirTestApp, resetEnv } = require('../../package/utils/helpers') +const { chdirTestApp, resetEnv } = require('../helpers') const rootPath = process.cwd() chdirTestApp() diff --git a/test/package/env.test.js b/test/package/env.test.js index 7e5161947..6d8f2e0be 100644 --- a/test/package/env.test.js +++ b/test/package/env.test.js @@ -1,6 +1,6 @@ /* global test expect, describe */ -const { chdirTestApp } = require('../../package/utils/helpers') +const { chdirTestApp } = require('../helpers') const rootPath = process.cwd() chdirTestApp() diff --git a/test/package/environments/base.test.js b/test/package/environments/base.test.js index 8674d0692..1e35829bc 100644 --- a/test/package/environments/base.test.js +++ b/test/package/environments/base.test.js @@ -3,7 +3,7 @@ // environment.js expects to find config/shakapacker.yml and resolved modules from // the root of a Rails project -const { chdirTestApp, chdirCwd, resetEnv } = require('../../../package/utils/helpers') +const { chdirTestApp, chdirCwd, resetEnv } = require('../../helpers') const rootPath = process.cwd() chdirTestApp() diff --git a/test/package/environments/development.test.js b/test/package/environments/development.test.js index a8c725be8..61740ef27 100644 --- a/test/package/environments/development.test.js +++ b/test/package/environments/development.test.js @@ -1,6 +1,6 @@ /* global test expect, describe, afterAll, beforeEach */ -const { chdirTestApp, resetEnv } = require('../../../package/utils/helpers') +const { chdirTestApp, resetEnv } = require('../../helpers') const rootPath = process.cwd() chdirTestApp() diff --git a/test/package/environments/production.test.js b/test/package/environments/production.test.js index 1b584d984..c11c55bf7 100644 --- a/test/package/environments/production.test.js +++ b/test/package/environments/production.test.js @@ -1,6 +1,6 @@ /* global test expect, describe, afterAll, beforeEach */ -const { chdirTestApp, resetEnv } = require('../../../package/utils/helpers') +const { chdirTestApp, resetEnv } = require('../../helpers') const rootPath = process.cwd() chdirTestApp() diff --git a/test/package/index.test.js b/test/package/index.test.js index 5b565d69a..7127a92a3 100644 --- a/test/package/index.test.js +++ b/test/package/index.test.js @@ -1,5 +1,5 @@ const index = require('../../package/index') -const { generateWebpackConfig } = require("../../package/index"); +const { generateWebpackConfig } = require('../helpers') describe('index', () => { test('exports webpack-merge v5 functions', () => { diff --git a/test/package/production.test.js b/test/package/production.test.js index da3142850..42bc0d2af 100644 --- a/test/package/production.test.js +++ b/test/package/production.test.js @@ -1,7 +1,7 @@ /* test expect, describe, afterAll, beforeEach */ const { resolve } = require('path') -const { chdirTestApp, chdirCwd } = require('../../package/utils/helpers') +const { chdirTestApp, chdirCwd } = require('../helpers') const rootPath = process.cwd() chdirTestApp() diff --git a/test/package/rules/babel.test.js b/test/package/rules/babel.test.js index ab7075cbd..c4797b4bc 100644 --- a/test/package/rules/babel.test.js +++ b/test/package/rules/babel.test.js @@ -5,7 +5,7 @@ const { node_modules_included, createTestCompiler, createTrackLoader, -} = require("./__utils__/webpack"); +} = require("../../helpers"); const babelConfig = require("../../../package/rules/babel"); jest.mock("../../../package/config", () => { diff --git a/test/package/rules/esbuild.test.js b/test/package/rules/esbuild.test.js index de48d4bf3..191f6595d 100644 --- a/test/package/rules/esbuild.test.js +++ b/test/package/rules/esbuild.test.js @@ -5,7 +5,7 @@ const { node_modules_included, createTestCompiler, createTrackLoader, -} = require("./__utils__/webpack"); +} = require("../../helpers"); const esbuildConfig = require("../../../package/rules/esbuild"); jest.mock("../../../package/config", () => { diff --git a/test/package/rules/swc.test.js b/test/package/rules/swc.test.js index 759f20626..69db8b336 100644 --- a/test/package/rules/swc.test.js +++ b/test/package/rules/swc.test.js @@ -4,7 +4,7 @@ const { node_modules_included, createTestCompiler, createTrackLoader, -} = require("./__utils__/webpack"); +} = require("../../helpers"); const swcConfig = require("../../../package/rules/swc"); jest.mock("../../../package/config", () => { diff --git a/test/package/staging.test.js b/test/package/staging.test.js index b0594b5a2..a8e77453c 100644 --- a/test/package/staging.test.js +++ b/test/package/staging.test.js @@ -1,7 +1,7 @@ /* test expect, describe, afterAll, beforeEach */ const { resolve } = require('path') -const { chdirTestApp } = require('../../package/utils/helpers') +const { chdirTestApp } = require('../helpers') const rootPath = process.cwd() chdirTestApp() diff --git a/test/package/test.test.js b/test/package/test.test.js index 7f957e413..6e3869145 100644 --- a/test/package/test.test.js +++ b/test/package/test.test.js @@ -1,7 +1,7 @@ /* test expect, describe, afterAll, beforeEach */ const { resolve } = require('path') -const { chdirTestApp } = require('../../package/utils/helpers') +const { chdirTestApp } = require('../helpers') const rootPath = process.cwd() chdirTestApp() From 96d73087555a4e5c56f3cfa3b80ebad4d633262d Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 5 Apr 2024 09:47:29 +1300 Subject: [PATCH 5/7] test: move jest config into dedicated file --- jest.config.js | 7 +++++++ package.json | 9 --------- 2 files changed, 7 insertions(+), 9 deletions(-) create mode 100644 jest.config.js diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 000000000..248610d77 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + roots: ["/test"], + testPathIgnorePatterns: [ + "/__fixtures__/", + "/__utils__/" + ] +} diff --git a/package.json b/package.json index 4db664a19..06ca558f4 100644 --- a/package.json +++ b/package.json @@ -22,15 +22,6 @@ "lint": "eslint package/", "test": "jest" }, - "jest": { - "roots": [ - "/test" - ], - "testPathIgnorePatterns": [ - "/__fixtures__/", - "/__utils__/" - ] - }, "dependencies": { "js-yaml": "^4.1.0", "path-complete-extname": "^1.0.0" From d55ebaac252abc9f037e2c3fbdb46f62b40cdf1b Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 5 Apr 2024 09:50:01 +1300 Subject: [PATCH 6/7] docs: add changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8304919d..4b224fd5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,8 @@ Changes since the last non-beta release. - Remove `isArray` utility (just use `Array.isArray` directly) and renamed a few files [PR 454](https://github.com/shakacode/shakapacker/pull/454) by [G-Rath](https://github.com/g-rath). +- Make JavaScript test helper utilities internal (`chdirTestApp`, `chdirCwd`, `resetEnv`) [PR 458](https://github.com/shakacode/shakapacker/pull/458) by [G-Rath](https://github.com/g-rath). + ## [v7.2.3] - March 23, 2024 ### Added From aaaee340de205c3ff6f470ccfe4d9a987f8b28fa Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 5 Apr 2024 09:51:24 +1300 Subject: [PATCH 7/7] chore: remove unneeded eslint ignore --- .eslintignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.eslintignore b/.eslintignore index b98944492..d3266ca7c 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,3 @@ lib/* node_modules/* vendor/* -**/environments/**/*