From 5160f814d929e0936c3d920087e0c4d16040ae9c Mon Sep 17 00:00:00 2001 From: w0rp Date: Wed, 22 Nov 2017 23:23:14 +0000 Subject: Fix #988 - Support --fix-dry-run for ESLint by processing the JSON output --- test/fixers/test_eslint_fixer_callback.vader | 36 ++++++++++++++++++++++++++++ test/test_fuzzy_json_decode.vader | 8 +++++++ 2 files changed, 44 insertions(+) (limited to 'test') diff --git a/test/fixers/test_eslint_fixer_callback.vader b/test/fixers/test_eslint_fixer_callback.vader index 8a5eaa4e..afb267a2 100644 --- a/test/fixers/test_eslint_fixer_callback.vader +++ b/test/fixers/test_eslint_fixer_callback.vader @@ -69,6 +69,18 @@ Execute(The version check should be correct): \ }, \ ale#fixers#eslint#Fix(bufnr('')) +Execute(--fix-dry-run should be used for 4.9.0 and up): + call ale#test#SetFilename('../eslint-test-files/react-app/subdir/testfile.js') + + AssertEqual + \ { + \ 'command': (has('win32') ? 'node.exe ' : '') + \ . ale#Escape(ale#path#Winify(g:dir . '/../eslint-test-files/react-app/node_modules/eslint/bin/eslint.js')) + \ . ' --stdin-filename %s --stdin --fix-dry-run --format=json', + \ 'process_with': 'ale#fixers#eslint#ProcessFixDryRunOutput', + \ }, + \ ale#fixers#eslint#ApplyFixForVersion(bufnr(''), ['4.9.0']) + Execute(--fix-to-stdout should be used for eslint_d): call ale#test#SetFilename('../eslint-test-files/app-with-eslint-d/testfile.js') @@ -114,3 +126,27 @@ Execute(The version number should be cached): \ 'command': '', \ }, \ ale#fixers#eslint#Fix(bufnr('')) + + " Call it again without the version output. We should use the newer command. + AssertEqual + \ { + \ 'command': (has('win32') ? 'node.exe ' : '') + \ . ale#Escape(ale#path#Winify(g:dir . '/../eslint-test-files/react-app/node_modules/eslint/bin/eslint.js')) + \ . ' --stdin-filename %s --stdin --fix-dry-run --format=json', + \ 'process_with': 'ale#fixers#eslint#ProcessFixDryRunOutput', + \ }, + \ ale#fixers#eslint#ApplyFixForVersion(bufnr(''), []) + +Execute(The --fix-dry-run post-processor should handle JSON output correctly): + AssertEqual + \ [], + \ ale#fixers#eslint#ProcessFixDryRunOutput(bufnr(''), []) + AssertEqual + \ [], + \ ale#fixers#eslint#ProcessFixDryRunOutput(bufnr(''), ['']) + AssertEqual + \ [], + \ ale#fixers#eslint#ProcessFixDryRunOutput(bufnr(''), ['[{}]']) + AssertEqual + \ ['foo', 'bar'], + \ ale#fixers#eslint#ProcessFixDryRunOutput(bufnr(''), ['[{"output": "foo\nbar"}]']) diff --git a/test/test_fuzzy_json_decode.vader b/test/test_fuzzy_json_decode.vader index 4ac0ca1b..4b1c6088 100644 --- a/test/test_fuzzy_json_decode.vader +++ b/test/test_fuzzy_json_decode.vader @@ -6,6 +6,14 @@ Execute(FuzzyJSONDecode should return the default for empty Strings): AssertEqual [], ale#util#FuzzyJSONDecode('', []) AssertEqual {}, ale#util#FuzzyJSONDecode('', {}) +Execute(FuzzyJSONDecode should return the default value for ['']): + AssertEqual [], ale#util#FuzzyJSONDecode([''], []) + AssertEqual {}, ale#util#FuzzyJSONDecode([''], {}) + +Execute(FuzzyJSONDecode should return the default value for only whitespace lines): + AssertEqual [], ale#util#FuzzyJSONDecode(['', "\n"], []) + AssertEqual {}, ale#util#FuzzyJSONDecode(['', "\n"], {}) + Execute(FuzzyJSONDecode should return the default for Lists with invalid JSON): AssertEqual [], ale#util#FuzzyJSONDecode(['x'], []) AssertEqual {}, ale#util#FuzzyJSONDecode(['x'], {}) -- cgit v1.2.3