forge.config.test.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. const test = require('node:test')
  2. const assert = require('node:assert/strict')
  3. const fs = require('fs')
  4. const path = require('path')
  5. const config = require('./forge.config')
  6. const repoRoot = path.resolve(__dirname, '..')
  7. function normalizeResourcePath(resourcePath) {
  8. return path.resolve(resourcePath)
  9. }
  10. function collectExtraResources() {
  11. return (config.packagerConfig?.extraResource || []).map(normalizeResourcePath)
  12. }
  13. function isCoveredByExtraResources(targetPath, extraResources) {
  14. const normalizedTarget = path.resolve(targetPath)
  15. return extraResources.some((resource) =>
  16. normalizedTarget === resource || normalizedTarget.startsWith(resource + path.sep)
  17. )
  18. }
  19. test('packager includes all JavaScript files under dist/', () => {
  20. const distDir = path.resolve(repoRoot, 'dist')
  21. const distJsFiles = fs
  22. .readdirSync(distDir)
  23. .filter((name) => name.endsWith('.js'))
  24. .map((name) => path.join(distDir, name))
  25. assert.ok(
  26. distJsFiles.length > 0,
  27. 'Expected dist/ to contain at least one JavaScript file for packaging checks'
  28. )
  29. const extraResources = collectExtraResources()
  30. for (const jsFile of distJsFiles) {
  31. assert.ok(
  32. isCoveredByExtraResources(jsFile, extraResources),
  33. `Expected extraResource to include or cover ${jsFile}`
  34. )
  35. }
  36. })
  37. test('packager includes dist/build directory', () => {
  38. const distBuildDir = path.resolve(repoRoot, 'dist/build')
  39. assert.ok(
  40. fs.existsSync(distBuildDir),
  41. 'Expected dist/build directory to exist for packaging checks'
  42. )
  43. const extraResources = collectExtraResources()
  44. assert.ok(
  45. isCoveredByExtraResources(distBuildDir, extraResources),
  46. `Expected extraResource to include or cover ${distBuildDir}`
  47. )
  48. })