Merge pull request #8059 from backstage/rugvip/clifail
cli: fix failing create tests on windows
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
import fs from 'fs-extra';
|
||||
import mockFs from 'mock-fs';
|
||||
import { sep, resolve as resolvePath } from 'path';
|
||||
import { paths } from '../../paths';
|
||||
import { Task } from '../../tasks';
|
||||
import { FactoryRegistry } from '../FactoryRegistry';
|
||||
@@ -75,22 +76,22 @@ describe('backendPlugin factory', () => {
|
||||
'',
|
||||
'Creating backend plugin backstage-plugin-test-backend',
|
||||
'Checking Prerequisites:',
|
||||
'availability plugins/test-backend ✔',
|
||||
'creating temp dir ✔',
|
||||
`availability plugins${sep}test-backend`,
|
||||
'creating temp dir',
|
||||
'Executing Template:',
|
||||
'copying .eslintrc.js ✔',
|
||||
'templating README.md.hbs ✔',
|
||||
'templating package.json.hbs ✔',
|
||||
'copying tsconfig.json ✔',
|
||||
'copying index.ts ✔',
|
||||
'templating run.ts.hbs ✔',
|
||||
'copying setupTests.ts ✔',
|
||||
'copying router.test.ts ✔',
|
||||
'copying router.ts ✔',
|
||||
'templating standaloneServer.ts.hbs ✔',
|
||||
'copying .eslintrc.js',
|
||||
'templating README.md.hbs',
|
||||
'templating package.json.hbs',
|
||||
'copying tsconfig.json',
|
||||
'copying index.ts',
|
||||
'templating run.ts.hbs',
|
||||
'copying setupTests.ts',
|
||||
'copying router.test.ts',
|
||||
'copying router.ts',
|
||||
'templating standaloneServer.ts.hbs',
|
||||
'Installing:',
|
||||
'moving plugins/test-backend ✔',
|
||||
'backend adding dependency ✔',
|
||||
`moving plugins${sep}test-backend`,
|
||||
'backend adding dependency',
|
||||
]);
|
||||
|
||||
await expect(
|
||||
@@ -103,11 +104,11 @@ describe('backendPlugin factory', () => {
|
||||
|
||||
expect(Task.forCommand).toHaveBeenCalledTimes(2);
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn install', {
|
||||
cwd: '/root/plugins/test-backend',
|
||||
cwd: resolvePath('/root/plugins/test-backend'),
|
||||
optional: true,
|
||||
});
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn lint --fix', {
|
||||
cwd: '/root/plugins/test-backend',
|
||||
cwd: resolvePath('/root/plugins/test-backend'),
|
||||
optional: true,
|
||||
});
|
||||
});
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
import fs from 'fs-extra';
|
||||
import mockFs from 'mock-fs';
|
||||
import { sep } from 'path';
|
||||
import { createMockOutputStream, mockPaths } from './testUtils';
|
||||
import { CreateContext } from '../../types';
|
||||
import { executePluginPackageTemplate } from './tasks';
|
||||
@@ -88,14 +89,14 @@ some-package@^1.1.0:
|
||||
expect(modified).toBe(true);
|
||||
expect(output).toEqual([
|
||||
'Checking Prerequisites:',
|
||||
'availability /target ✔',
|
||||
'creating temp dir ✔',
|
||||
`availability ..${sep}target`,
|
||||
'creating temp dir',
|
||||
'Executing Template:',
|
||||
'templating package.json.hbs ✔',
|
||||
'copying not-templated.txt ✔',
|
||||
'templating templated.txt.hbs ✔',
|
||||
'templating package.json.hbs',
|
||||
'copying not-templated.txt',
|
||||
'templating templated.txt.hbs',
|
||||
'Installing:',
|
||||
'moving /target ✔',
|
||||
`moving ..${sep}target`,
|
||||
]);
|
||||
await expect(fs.readFile('/target/package.json', 'utf8')).resolves.toBe(`{
|
||||
"name": "my-testing-plugin",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
import fs from 'fs-extra';
|
||||
import chalk from 'chalk';
|
||||
import { resolve as resolvePath } from 'path';
|
||||
import { resolve as resolvePath, relative as relativePath } from 'path';
|
||||
import { paths } from '../../../paths';
|
||||
import { Task, templatingTask } from '../../../tasks';
|
||||
import { Lockfile } from '../../../versioning';
|
||||
@@ -41,7 +41,7 @@ export async function executePluginPackageTemplate(
|
||||
}
|
||||
|
||||
Task.section('Checking Prerequisites');
|
||||
const shortPluginDir = targetDir.replace(`${paths.targetRoot}/`, '');
|
||||
const shortPluginDir = relativePath(paths.targetRoot, targetDir);
|
||||
await Task.forItem('availability', shortPluginDir, async () => {
|
||||
if (await fs.pathExists(targetDir)) {
|
||||
throw new Error(
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* eslint-disable no-control-regex */
|
||||
|
||||
import { WriteStream } from 'tty';
|
||||
import { resolve as resolvePath } from 'path';
|
||||
import { paths } from '../../../paths';
|
||||
@@ -59,10 +61,15 @@ export function createMockOutputStream() {
|
||||
cursorTo: () => {},
|
||||
clearLine: () => {},
|
||||
moveCursor: () => {},
|
||||
write: (msg: string) =>
|
||||
// Clean up colors and whitespace
|
||||
// eslint-disable-next-line no-control-regex
|
||||
output.push(msg.replace(/\x1B\[\d\dm/g, '').trim()),
|
||||
write: (msg: string) => {
|
||||
let clean = msg;
|
||||
// Remove terminal color escape sequences
|
||||
clean = clean.replace(/\x1B\[\d\dm/g, '');
|
||||
// Remove any non-ascii
|
||||
clean = clean.replace(/[^\x00-\x7F]+/g, '');
|
||||
clean = clean.trim();
|
||||
output.push(clean);
|
||||
},
|
||||
} as unknown as WriteStream & { fd: any },
|
||||
] as const;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
import fs from 'fs-extra';
|
||||
import mockFs from 'mock-fs';
|
||||
import { sep, resolve as resolvePath } from 'path';
|
||||
import { paths } from '../../paths';
|
||||
import { Task } from '../../tasks';
|
||||
import { FactoryRegistry } from '../FactoryRegistry';
|
||||
@@ -88,29 +89,29 @@ describe('frontendPlugin factory', () => {
|
||||
'',
|
||||
'Creating backend plugin backstage-plugin-test',
|
||||
'Checking Prerequisites:',
|
||||
'availability plugins/test ✔',
|
||||
'creating temp dir ✔',
|
||||
`availability plugins${sep}test`,
|
||||
'creating temp dir',
|
||||
'Executing Template:',
|
||||
'copying .eslintrc.js ✔',
|
||||
'templating README.md.hbs ✔',
|
||||
'templating package.json.hbs ✔',
|
||||
'copying tsconfig.json ✔',
|
||||
'templating index.tsx.hbs ✔',
|
||||
'templating index.ts.hbs ✔',
|
||||
'templating plugin.test.ts.hbs ✔',
|
||||
'templating plugin.ts.hbs ✔',
|
||||
'templating routes.ts.hbs ✔',
|
||||
'copying setupTests.ts ✔',
|
||||
'templating ExampleComponent.test.tsx.hbs ✔',
|
||||
'templating ExampleComponent.tsx.hbs ✔',
|
||||
'copying index.ts ✔',
|
||||
'templating ExampleFetchComponent.test.tsx.hbs ✔',
|
||||
'templating ExampleFetchComponent.tsx.hbs ✔',
|
||||
'copying index.ts ✔',
|
||||
'copying .eslintrc.js',
|
||||
'templating README.md.hbs',
|
||||
'templating package.json.hbs',
|
||||
'copying tsconfig.json',
|
||||
'templating index.tsx.hbs',
|
||||
'templating index.ts.hbs',
|
||||
'templating plugin.test.ts.hbs',
|
||||
'templating plugin.ts.hbs',
|
||||
'templating routes.ts.hbs',
|
||||
'copying setupTests.ts',
|
||||
'templating ExampleComponent.test.tsx.hbs',
|
||||
'templating ExampleComponent.tsx.hbs',
|
||||
'copying index.ts',
|
||||
'templating ExampleFetchComponent.test.tsx.hbs',
|
||||
'templating ExampleFetchComponent.tsx.hbs',
|
||||
'copying index.ts',
|
||||
'Installing:',
|
||||
'moving plugins/test ✔',
|
||||
'app adding dependency ✔',
|
||||
'app adding import ✔',
|
||||
`moving plugins${sep}test`,
|
||||
'app adding dependency',
|
||||
'app adding import',
|
||||
]);
|
||||
|
||||
await expect(
|
||||
@@ -136,11 +137,11 @@ const router = (
|
||||
|
||||
expect(Task.forCommand).toHaveBeenCalledTimes(2);
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn install', {
|
||||
cwd: '/root/plugins/test',
|
||||
cwd: resolvePath('/root/plugins/test'),
|
||||
optional: true,
|
||||
});
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn lint --fix', {
|
||||
cwd: '/root/plugins/test',
|
||||
cwd: resolvePath('/root/plugins/test'),
|
||||
optional: true,
|
||||
});
|
||||
});
|
||||
@@ -205,11 +206,11 @@ const router = (
|
||||
|
||||
expect(Task.forCommand).toHaveBeenCalledTimes(2);
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn install', {
|
||||
cwd: '/root/plugins/test',
|
||||
cwd: resolvePath('/root/plugins/test'),
|
||||
optional: true,
|
||||
});
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn lint --fix', {
|
||||
cwd: '/root/plugins/test',
|
||||
cwd: resolvePath('/root/plugins/test'),
|
||||
optional: true,
|
||||
});
|
||||
});
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
import fs from 'fs-extra';
|
||||
import mockFs from 'mock-fs';
|
||||
import { sep, resolve as resolvePath } from 'path';
|
||||
import { paths } from '../../paths';
|
||||
import { Task } from '../../tasks';
|
||||
import { FactoryRegistry } from '../FactoryRegistry';
|
||||
@@ -70,17 +71,17 @@ describe('pluginCommon factory', () => {
|
||||
'',
|
||||
'Creating backend plugin backstage-plugin-test-common',
|
||||
'Checking Prerequisites:',
|
||||
'availability plugins/test-common ✔',
|
||||
'creating temp dir ✔',
|
||||
`availability plugins${sep}test-common`,
|
||||
'creating temp dir',
|
||||
'Executing Template:',
|
||||
'copying .eslintrc.js ✔',
|
||||
'templating README.md.hbs ✔',
|
||||
'templating package.json.hbs ✔',
|
||||
'copying tsconfig.json ✔',
|
||||
'templating index.ts.hbs ✔',
|
||||
'copying setupTests.ts ✔',
|
||||
'copying .eslintrc.js',
|
||||
'templating README.md.hbs',
|
||||
'templating package.json.hbs',
|
||||
'copying tsconfig.json',
|
||||
'templating index.ts.hbs',
|
||||
'copying setupTests.ts',
|
||||
'Installing:',
|
||||
'moving plugins/test-common ✔',
|
||||
`moving plugins${sep}test-common`,
|
||||
]);
|
||||
|
||||
await expect(
|
||||
@@ -96,11 +97,11 @@ describe('pluginCommon factory', () => {
|
||||
|
||||
expect(Task.forCommand).toHaveBeenCalledTimes(2);
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn install', {
|
||||
cwd: '/root/plugins/test-common',
|
||||
cwd: resolvePath('/root/plugins/test-common'),
|
||||
optional: true,
|
||||
});
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn lint --fix', {
|
||||
cwd: '/root/plugins/test-common',
|
||||
cwd: resolvePath('/root/plugins/test-common'),
|
||||
optional: true,
|
||||
});
|
||||
});
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
import fs from 'fs-extra';
|
||||
import mockFs from 'mock-fs';
|
||||
import { sep, resolve as resolvePath } from 'path';
|
||||
import { paths } from '../../paths';
|
||||
import { Task } from '../../tasks';
|
||||
import { FactoryRegistry } from '../FactoryRegistry';
|
||||
@@ -70,20 +71,20 @@ describe('scaffolderModule factory', () => {
|
||||
'',
|
||||
'Creating module backstage-plugin-scaffolder-backend-module-test',
|
||||
'Checking Prerequisites:',
|
||||
'availability plugins/scaffolder-backend-module-test ✔',
|
||||
'creating temp dir ✔',
|
||||
`availability plugins${sep}scaffolder-backend-module-test`,
|
||||
'creating temp dir',
|
||||
'Executing Template:',
|
||||
'copying .eslintrc.js ✔',
|
||||
'templating README.md.hbs ✔',
|
||||
'templating package.json.hbs ✔',
|
||||
'copying tsconfig.json ✔',
|
||||
'templating index.ts.hbs ✔',
|
||||
'copying index.ts ✔',
|
||||
'copying example.test.ts ✔',
|
||||
'copying example.ts ✔',
|
||||
'copying index.ts ✔',
|
||||
'copying .eslintrc.js',
|
||||
'templating README.md.hbs',
|
||||
'templating package.json.hbs',
|
||||
'copying tsconfig.json',
|
||||
'templating index.ts.hbs',
|
||||
'copying index.ts',
|
||||
'copying example.test.ts',
|
||||
'copying example.ts',
|
||||
'copying index.ts',
|
||||
'Installing:',
|
||||
'moving plugins/scaffolder-backend-module-test ✔',
|
||||
`moving plugins${sep}scaffolder-backend-module-test`,
|
||||
]);
|
||||
|
||||
await expect(
|
||||
@@ -99,11 +100,11 @@ describe('scaffolderModule factory', () => {
|
||||
|
||||
expect(Task.forCommand).toHaveBeenCalledTimes(2);
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn install', {
|
||||
cwd: '/root/plugins/scaffolder-backend-module-test',
|
||||
cwd: resolvePath('/root/plugins/scaffolder-backend-module-test'),
|
||||
optional: true,
|
||||
});
|
||||
expect(Task.forCommand).toHaveBeenCalledWith('yarn lint --fix', {
|
||||
cwd: '/root/plugins/scaffolder-backend-module-test',
|
||||
cwd: resolvePath('/root/plugins/scaffolder-backend-module-test'),
|
||||
optional: true,
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user