convert-to-chai.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const path = require('path');
  2. const glob = require('glob');
  3. const fs = require('fs-extra');
  4. const utils = require('@jupyterlab/buildutils/lib/utils');
  5. // yarn add chai && yarn add --dev @types/chai
  6. // Remove expect.js from package.json
  7. const source = path.resolve('./test-apputils');
  8. const pkgSrc = utils.readJSONFile(path.join(source, 'package.json'));
  9. const chaiVer = pkgSrc.dependencies['chai'];
  10. const chaiTypeVer = pkgSrc.devDependencies['@types/chai'];
  11. const target = path.resolve(process.argv[2]);
  12. if (!target) {
  13. console.error('Specify a target dir');
  14. process.exit(1);
  15. }
  16. const targetPkg = utils.readJSONFile(path.join(target, 'package.json'));
  17. delete targetPkg.dependencies['expect.js'];
  18. targetPkg.dependencies['chai'] = chaiVer;
  19. targetPkg.devDependencies['@types/chai'] = chaiTypeVer;
  20. utils.writePackageData(path.join(target, 'package.json'), targetPkg);
  21. glob.sync(path.join(target, 'src', '*.ts*')).forEach(function(filePath) {
  22. let src = fs.readFileSync(filePath, 'utf8');
  23. src = src
  24. .split("import expect = require('expect.js')")
  25. .join("import { expect } from 'chai'");
  26. src = src.split('to.be(undefined)').join('to.be.undefined');
  27. src = src.split('to.be(void 0)').join('to.be.undefined');
  28. src = src.split('to.be(null)').join('to.be.null');
  29. src = src.split('to.not.throwError(').join('to.not.throw(');
  30. src = src.split('to.throwError(').join('to.throw(');
  31. src = src.split('to.not.be.ok()').join('to.not.be.ok');
  32. src = src.split('to.not.be.empty()').join('to.not.be.empty');
  33. src = src.split('to.be(').join('to.equal(');
  34. src = src.split('to.not.be(').join('to.not.equal(');
  35. src = src.split('to.be.ok()').join('to.be.ok');
  36. src = src.split('to.be.empty()').join('to.be.empty');
  37. src = src.split('to.eql(').join('to.deep.equal(');
  38. src = src.split('to.be.a(').join('to.be.an.instanceof(');
  39. src = src.split('to.be.an(').join('to.be.an.instanceof(');
  40. src = src.split(').to.be.empty()').join('.length).to.equal(0)');
  41. src = src.split('let ').join('const ');
  42. src = src.split('const called').join('let called');
  43. fs.writeFileSync(filePath, src, 'utf8');
  44. });