mirror of
https://github.com/axios/axios.git
synced 2026-04-13 02:51:56 +08:00
* feat: implement prettier and fix all issues * fix: failing tests * fix: implement feedback from codel, ai etc * chore: dont throw in trim function Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * fix: incorrect fix --------- Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
185 lines
4.7 KiB
JavaScript
185 lines
4.7 KiB
JavaScript
import assert from 'assert';
|
|
import * as axios from '../../index.js';
|
|
import axiosFactory from '../../lib/axios.js';
|
|
import utils from '../../lib/utils.js';
|
|
import { fileURLToPath } from 'url';
|
|
import path from 'path';
|
|
import util from 'util';
|
|
import cp from 'child_process';
|
|
import fs from 'fs-extra';
|
|
|
|
const BACKUP_PATH = './backup/';
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
|
const exec = util.promisify(cp.exec);
|
|
|
|
const spawn = (command, args) =>
|
|
new Promise((resolve, reject) => {
|
|
cp.spawn(command, args, {
|
|
shell: true,
|
|
stdio: 'inherit',
|
|
})
|
|
.once('error', reject)
|
|
.on('close', (code) => (code ? reject(new Error(`Exit code ${code}`)) : resolve()));
|
|
});
|
|
|
|
const { Axios } = axiosFactory;
|
|
|
|
const ignoreList = ['default'];
|
|
|
|
const instance = axiosFactory.create({});
|
|
|
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
|
|
const remove = async (file) => {
|
|
console.log(`✓ Remove entry '${file}'...`);
|
|
try {
|
|
await sleep(1000);
|
|
await fs.remove(file);
|
|
} catch (err) {
|
|
console.warn(err.message);
|
|
}
|
|
};
|
|
|
|
describe('module', function () {
|
|
before(async () => {
|
|
console.log('✓ Creating build backup...');
|
|
await fs.copy('./dist/', BACKUP_PATH);
|
|
console.log('✓ Exec build script...');
|
|
await exec('npm run build');
|
|
console.log('✓ Running tests...');
|
|
});
|
|
|
|
after(async () => {
|
|
console.log('✓ Restore build from the backup...');
|
|
await fs.copy(BACKUP_PATH, './dist/');
|
|
await remove(BACKUP_PATH);
|
|
});
|
|
|
|
describe('export', function () {
|
|
it('should have consistent ESM export', function () {
|
|
const namedExport = {};
|
|
const factoryExport = {};
|
|
|
|
Object.entries(axiosFactory).forEach(([key, value]) => {
|
|
if (!utils.hasOwnProp(Axios, key) && !(key in instance) && ignoreList.indexOf(key) === -1) {
|
|
factoryExport[key] = value;
|
|
}
|
|
});
|
|
|
|
Object.entries(axios).forEach(([key, value]) => {
|
|
key !== 'default' && ignoreList.indexOf(key) === -1 && (namedExport[key] = value);
|
|
});
|
|
|
|
assert.deepStrictEqual(namedExport, factoryExport);
|
|
});
|
|
|
|
describe('CommonJS', () => {
|
|
const pkgPath = path.join(__dirname, './cjs');
|
|
|
|
after(async () => {
|
|
await remove(path.join(pkgPath, './node_modules'));
|
|
});
|
|
|
|
it('should be able to be loaded with require', async function () {
|
|
this.timeout(30000);
|
|
|
|
await exec(`npm test --prefix ${pkgPath}`);
|
|
});
|
|
});
|
|
|
|
describe('ESM', () => {
|
|
const pkgPath = path.join(__dirname, './esm');
|
|
|
|
after(async () => {
|
|
await remove(path.join(pkgPath, './node_modules'));
|
|
});
|
|
|
|
it('should be able to be loaded with import', async function () {
|
|
this.timeout(30000);
|
|
|
|
await exec(`npm test --prefix ${pkgPath}`);
|
|
});
|
|
});
|
|
|
|
describe('TS', () => {
|
|
const pkgPath = path.join(__dirname, './ts');
|
|
|
|
after(async () => {
|
|
await remove(path.join(pkgPath, './node_modules'));
|
|
});
|
|
|
|
it('should be able to be loaded with import', async function () {
|
|
this.timeout(30000);
|
|
|
|
await exec(`npm test --prefix ${pkgPath}`, {});
|
|
});
|
|
});
|
|
|
|
describe("TS require('axios')", () => {
|
|
const pkgPath = path.join(__dirname, './ts-require');
|
|
|
|
after(async () => {
|
|
await remove(path.join(pkgPath, './node_modules'));
|
|
});
|
|
|
|
it('should be able to be loaded with require', async function () {
|
|
this.timeout(30000);
|
|
|
|
await exec(`npm test --prefix ${pkgPath}`, {});
|
|
});
|
|
});
|
|
|
|
describe("TS require('axios').default", () => {
|
|
const pkgPath = path.join(__dirname, './ts-require-default');
|
|
|
|
after(async () => {
|
|
await remove(path.join(pkgPath, './node_modules'));
|
|
});
|
|
|
|
it('should be able to be loaded with require', async function () {
|
|
this.timeout(30000);
|
|
|
|
await exec(`npm test --prefix ${pkgPath}`, {});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('typings', () => {
|
|
describe('ESM', () => {
|
|
const pkgPath = path.join(__dirname, './typings/esm');
|
|
|
|
after(async () => {
|
|
await remove(path.join(pkgPath, './node_modules'));
|
|
});
|
|
|
|
it('should pass types check', async function () {
|
|
this.timeout(30000);
|
|
|
|
await spawn(`npm test --prefix ${pkgPath}`, [], {
|
|
shell: true,
|
|
stdio: 'pipe',
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('CommonJS', () => {
|
|
const pkgPath = path.join(__dirname, './typings/cjs');
|
|
|
|
after(async () => {
|
|
await remove(path.join(pkgPath, './node_modules'));
|
|
});
|
|
|
|
it('should pass types check', async function () {
|
|
this.timeout(30000);
|
|
|
|
await spawn(`npm test --prefix ${pkgPath}`, [], {
|
|
shell: true,
|
|
stdio: 'pipe',
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|