fix(test-runner): escape backslashes in win cli (#11763)

This commit is contained in:
Pavel Feldman 2022-01-31 17:48:05 -08:00 committed by GitHub
parent 2336692e8a
commit c5d852f1bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 2 deletions

View File

@ -181,7 +181,7 @@ function forceRegExp(pattern: string): RegExp {
const match = pattern.match(/^\/(.*)\/([gi]*)$/);
if (match)
return new RegExp(match[1], match[2]);
return new RegExp(pattern, 'gi');
return new RegExp(pattern.replace(/\\/g, '\\\\'), 'gi');
}
function overridesFromOptions(options: { [key: string]: any }): Config {

View File

@ -15,6 +15,7 @@
*/
import { test, expect } from './playwright-test-fixtures';
import path from 'path';
test('should filter by file name', async ({ runInlineTest }) => {
const result = await runInlineTest({
@ -93,6 +94,14 @@ test('should run nothing for missing line', async ({ runInlineTest }) => {
expect(result.failed).toBe(1);
});
test('should escape path on windows', async ({ runInlineTest }) => {
const result = await runInlineTest({
'foo/test.spec.ts': `pwt.test('fails', () => { expect(1).toBe(2); });`,
}, undefined, undefined, { additionalArgs: [path.join('foo', 'test.spec.ts')] });
expect(result.exitCode).toBe(1);
expect(result.failed).toBe(1);
});
test('should focus a single nested test spec', async ({ runInlineTest }) => {
const result = await runInlineTest({
'foo.test.ts': `

View File

@ -185,7 +185,7 @@ test('should match cli string argument', async ({ runInlineTest }) => {
const { test } = pwt;
test('pass', ({}) => {});
`
}, {}, {}, { additionalArgs: [`dir\\${path.sep}a`] });
}, {}, {}, { additionalArgs: [`dir${path.sep}a`] });
expect(result.passed).toBe(1);
expect(result.report.suites.map(s => s.file).sort()).toEqual(['a.test.ts']);
expect(result.exitCode).toBe(0);