From abb0889895326a3c4f5fa4e0b6d25e4e187feb76 Mon Sep 17 00:00:00 2001 From: Vignesh Shanmugam Date: Tue, 19 Dec 2017 15:30:07 +0100 Subject: [PATCH 1/2] refactor(tests) tests to fixtures - regexpConstructors --- .../fixtures/const-references/actual.js | 4 + .../fixtures/const-references/expected.js | 4 + .../__tests__/fixtures/empty-string/actual.js | 1 + .../fixtures/empty-string/expected.js | 1 + .../__tests__/fixtures/escape/actual.js | 1 + .../__tests__/fixtures/escape/expected.js | 1 + .../__tests__/fixtures/expressions/actual.js | 1 + .../fixtures/expressions/expected.js | 1 + .../fixtures/forward-slash/actual.js | 2 + .../fixtures/forward-slash/expected.js | 2 + .../__tests__/fixtures/newline/actual.js | 1 + .../__tests__/fixtures/newline/expected.js | 1 + .../__tests__/fixtures/no-arguments/actual.js | 1 + .../fixtures/no-arguments/expected.js | 1 + .../__tests__/fixtures/null/actual.js | 1 + .../__tests__/fixtures/null/expected.js | 1 + .../__tests__/fixtures/string/actual.js | 2 + .../__tests__/fixtures/string/expected.js | 2 + .../fixtures/unicode-newline/actual.js | 1 + .../fixtures/unicode-newline/expected.js | 1 + .../__tests__/fixtures/whitespaces/actual.js | 1 + .../fixtures/whitespaces/expected.js | 1 + .../__tests__/index.js | 2 + .../transform-regexp-constructors-test.js | 148 ------------------ 24 files changed, 34 insertions(+), 148 deletions(-) create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/const-references/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/const-references/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/empty-string/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/empty-string/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/expressions/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/expressions/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/forward-slash/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/forward-slash/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/newline/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/newline/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/no-arguments/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/no-arguments/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/null/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/null/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/string/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/string/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/unicode-newline/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/unicode-newline/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/whitespaces/actual.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/whitespaces/expected.js create mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/index.js delete mode 100644 packages/babel-plugin-transform-regexp-constructors/__tests__/transform-regexp-constructors-test.js diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/const-references/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/const-references/actual.js new file mode 100644 index 000000000..886a14a27 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/const-references/actual.js @@ -0,0 +1,4 @@ +const foo = "ab+"; +const bar = "c\\w"; +const flags = "g"; +const ret = new RegExp(foo + bar + "d", flags); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/const-references/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/const-references/expected.js new file mode 100644 index 000000000..253517033 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/const-references/expected.js @@ -0,0 +1,4 @@ +const foo = "ab+"; +const bar = "c\\w"; +const flags = "g"; +const ret = /ab+c\wd/g; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/empty-string/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/empty-string/actual.js new file mode 100644 index 000000000..60b897152 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/empty-string/actual.js @@ -0,0 +1 @@ +var x = new RegExp(""); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/empty-string/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/empty-string/expected.js new file mode 100644 index 000000000..7a6287d47 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/empty-string/expected.js @@ -0,0 +1 @@ +var x = /(?:)/; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js new file mode 100644 index 000000000..684afddcc --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js @@ -0,0 +1 @@ +String.raw`var x = new RegExp('\\w+\\s')`; diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js new file mode 100644 index 000000000..022213490 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js @@ -0,0 +1 @@ +String.raw`var x = new RegExp('\\w+\\s')`; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/expressions/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/expressions/actual.js new file mode 100644 index 000000000..7e86ff8e5 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/expressions/actual.js @@ -0,0 +1 @@ +var x = new RegExp(foo(), "g"); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/expressions/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/expressions/expected.js new file mode 100644 index 000000000..72f59d819 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/expressions/expected.js @@ -0,0 +1 @@ +var x = new RegExp(foo(), "g"); \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/forward-slash/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/forward-slash/actual.js new file mode 100644 index 000000000..69b4d5dce --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/forward-slash/actual.js @@ -0,0 +1,2 @@ +var x = new RegExp("/x/"); +var y = new RegExp("\\/"); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/forward-slash/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/forward-slash/expected.js new file mode 100644 index 000000000..bb7683022 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/forward-slash/expected.js @@ -0,0 +1,2 @@ +var x = /\/x\//; +var y = /\//; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/newline/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/newline/actual.js new file mode 100644 index 000000000..81939e90c --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/newline/actual.js @@ -0,0 +1 @@ +var x = new RegExp("\\n"); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/newline/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/newline/expected.js new file mode 100644 index 000000000..b29880f63 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/newline/expected.js @@ -0,0 +1 @@ +var x = /\n/; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/no-arguments/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/no-arguments/actual.js new file mode 100644 index 000000000..30d8b7819 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/no-arguments/actual.js @@ -0,0 +1 @@ +var x = new RegExp(); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/no-arguments/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/no-arguments/expected.js new file mode 100644 index 000000000..7a6287d47 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/no-arguments/expected.js @@ -0,0 +1 @@ +var x = /(?:)/; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/null/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/null/actual.js new file mode 100644 index 000000000..342434d1d --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/null/actual.js @@ -0,0 +1 @@ +var x = new RegExp("\0"); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/null/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/null/expected.js new file mode 100644 index 000000000..e6af8b13a --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/null/expected.js @@ -0,0 +1 @@ +var x = /\0/; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/string/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/string/actual.js new file mode 100644 index 000000000..cde9db8b2 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/string/actual.js @@ -0,0 +1,2 @@ +var x = new RegExp("ab+c"); +var y = new RegExp("ab+c", "gimuy"); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/string/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/string/expected.js new file mode 100644 index 000000000..ce8307250 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/string/expected.js @@ -0,0 +1,2 @@ +var x = /ab+c/; +var y = /ab+c/gimuy; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/unicode-newline/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/unicode-newline/actual.js new file mode 100644 index 000000000..5edf6f6c9 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/unicode-newline/actual.js @@ -0,0 +1 @@ +var x = new RegExp("\u2028\u2029"); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/unicode-newline/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/unicode-newline/expected.js new file mode 100644 index 000000000..bc5843ceb --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/unicode-newline/expected.js @@ -0,0 +1 @@ +var x = /\u2028\u2029/; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/whitespaces/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/whitespaces/actual.js new file mode 100644 index 000000000..e70dd9bfd --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/whitespaces/actual.js @@ -0,0 +1 @@ +var x = new RegExp("\b\f\v\t\r\n\n"); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/whitespaces/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/whitespaces/expected.js new file mode 100644 index 000000000..074d3ea03 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/whitespaces/expected.js @@ -0,0 +1 @@ +var x = /[\b]\f\v \r\n\n/; \ No newline at end of file diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/index.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/index.js new file mode 100644 index 000000000..d7c81a111 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/index.js @@ -0,0 +1,2 @@ +const runner = require("test-runner"); +runner(__dirname); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/transform-regexp-constructors-test.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/transform-regexp-constructors-test.js deleted file mode 100644 index 13295fc2f..000000000 --- a/packages/babel-plugin-transform-regexp-constructors/__tests__/transform-regexp-constructors-test.js +++ /dev/null @@ -1,148 +0,0 @@ -jest.autoMockOff(); - -const thePlugin = require("test-transform")(require("../src/index")); - -describe("transform-regexp-constructors-plugin", () => { - thePlugin( - "should not duplicate forward-slash escapes", - String.raw` - var x = new RegExp('\\/'); - `, - String.raw` - var x = /\//; - ` - ); - - thePlugin( - "should transform `\n` properly", - String.raw` - var x = new RegExp('\\n'); - `, - String.raw` - var x = /\n/; - ` - ); - - thePlugin( - "should transform unicode newlines properly", - String.raw` - var x = new RegExp('\u2028\u2029'); - `, - String.raw` - var x = /\u2028\u2029/; - ` - ); - - thePlugin( - "should transform RegExp constructors with string literals", - ` - var x = new RegExp('ab+c'); - `, - ` - var x = /ab+c/; - ` - ); - - thePlugin( - "should transform RegExp calls with string literals", - ` - var x = RegExp('ab+c'); - `, - ` - var x = /ab+c/; - ` - ); - - thePlugin( - "should transform RegExp constructors with flags", - ` - var x = new RegExp('ab+c', 'gimuy'); - `, - ` - var x = /ab+c/gimuy; - ` - ); - - thePlugin( - "should transform RegExp escapes", - String.raw` - var x = new RegExp('\\w+\\s'); - `, - String.raw` - var x = /\w+\s/; - ` - ); - - thePlugin( - "should not transform RegExp constructors with expressions", - ` - var x = new RegExp(foo(), 'g'); - ` - ); - - thePlugin( - "should transform RegExp constructor with no arguments into `/(?:)/`", - ` - var x = new RegExp(); - `, - ` - var x = /(?:)/; - ` - ); - - thePlugin( - "should transform RegExp constructor with an empty string argument into `/(?:)/`", - ` - var x = new RegExp(''); - `, - ` - var x = /(?:)/; - ` - ); - - thePlugin( - "should resolve expressions and const references in the constructor", - String.raw` - const foo = "ab+"; - const bar = "c\\w"; - const flags = "g"; - const ret = new RegExp(foo + bar + "d", flags); - `, - String.raw` - const foo = "ab+"; - const bar = "c\\w"; - const flags = "g"; - const ret = /ab+c\wd/g; - ` - ); - - thePlugin( - "should prettify special whitespaces", - String.raw` - var x = new RegExp('\b\f\v\t\r\n\n'); - `, - String.raw` - var x = /[\b]\f\v \r\n\n/; - ` - ); - - thePlugin( - "should escape forward slashes", - String.raw` - var x = new RegExp('/x/'); - `, - String.raw` - var x = /\/x\//; - ` - ); - - thePlugin( - "should keep NUL", - String.raw` - var x = new RegExp('\0'); - `, - String.raw` - var x = /\0/; - ` - ); -}); From 80c5471364820838f8ab3e43af73b9a832ad72f3 Mon Sep 17 00:00:00 2001 From: Vignesh Shanmugam Date: Tue, 19 Dec 2017 22:01:48 +0100 Subject: [PATCH 2/2] address review comments --- .../__tests__/fixtures/escape/actual.js | 2 +- .../__tests__/fixtures/escape/expected.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js index 684afddcc..735d77ae0 100644 --- a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js @@ -1 +1 @@ -String.raw`var x = new RegExp('\\w+\\s')`; +var x = new RegExp("\\w+\\s"); diff --git a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js index 022213490..eeb2f04a3 100644 --- a/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js @@ -1 +1 @@ -String.raw`var x = new RegExp('\\w+\\s')`; \ No newline at end of file +var x = /\w+\s/; \ No newline at end of file