load-babel-config.spec.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import loadBabelConfig from '../lib/load-babel-config'
  2. import { resolve } from 'path'
  3. import {
  4. createReadStream,
  5. createWriteStream,
  6. readFileSync,
  7. renameSync
  8. } from 'fs'
  9. import clearModule from 'clear-module'
  10. import cache from '../lib/cache'
  11. describe('load-babel-config.js', () => {
  12. beforeEach(() => {
  13. cache.flushAll()
  14. clearModule.all()
  15. })
  16. it('reads default babel if there is no .babelrc', () => {
  17. const babelRcPath = resolve(__dirname, '../.babelrc')
  18. const babelRcOriginal = JSON.parse(readFileSync(babelRcPath, { encoding: 'utf8' }))
  19. const tempPath = resolve(__dirname, '../.renamed')
  20. renameSync(babelRcPath, tempPath)
  21. const babelConfig = loadBabelConfig()
  22. try {
  23. expect(babelConfig).not.toBe(babelRcOriginal)
  24. } catch (err) {
  25. renameSync(tempPath, babelRcPath)
  26. throw err
  27. }
  28. renameSync(tempPath, babelRcPath)
  29. const babelConfigCached = loadBabelConfig()
  30. expect(babelConfigCached).not.toBe(babelConfig)
  31. expect(babelConfigCached).toEqual(babelConfig)
  32. })
  33. it('reads default babel if there is .babelrc', () => {
  34. const babelRcPath = resolve(__dirname, '../.babelrc')
  35. const babelRcCopiedPath = resolve(__dirname, '../.babelrc_cp')
  36. createReadStream(babelRcPath).pipe(createWriteStream(babelRcCopiedPath))
  37. const babelRcOriginal = JSON.parse(readFileSync(babelRcPath, { encoding: 'utf8' }))
  38. const babelConfig = loadBabelConfig()
  39. expect(babelConfig).toEqual(babelRcOriginal)
  40. const tempPath = resolve(__dirname, '../.renamed')
  41. renameSync(babelRcCopiedPath, tempPath)
  42. const babelConfigCached = loadBabelConfig()
  43. try {
  44. expect(babelConfig).not.toBe(babelConfigCached)
  45. expect(babelConfig).toEqual(babelConfigCached)
  46. } catch (err) {
  47. renameSync(tempPath, babelRcCopiedPath)
  48. throw err
  49. }
  50. })
  51. })