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..735d77ae0 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/actual.js @@ -0,0 +1 @@ +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..eeb2f04a3 --- /dev/null +++ b/packages/babel-plugin-transform-regexp-constructors/__tests__/fixtures/escape/expected.js @@ -0,0 +1 @@ +var x = /\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/; - ` - ); -});