local Runner = require('tests.indent.common').Runner -- local XFAIL = require("tests.indent.common").XFAIL local run = Runner:new(it, 'tests/indent', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) describe('indent JavaScript:', function() describe('whole file:', function() run:whole_file({ 'ecma/' }, { expected_failures = {}, }) end) describe('new line:', function() for _, info in ipairs({ { 1, 2 }, { 2, 4 }, { 3, 4 }, }) do run:new_line( 'ecma/binary_expression.js', { on_line = info[1], text = '//', indent = info[2] }, info[3], info[4] ) end run:new_line('ecma/new-line-after-class.js', { on_line = 2, text = '', indent = 0 }) for _, info in ipairs({ { 4, 2 }, { 6, 0 }, }) do run:new_line( 'ecma/callback.js', { on_line = info[1], text = '//', indent = info[2] }, info[3], info[4] ) end for _, info in ipairs({ { 1, 2 }, { 2, 4 }, { 3, 6 }, { 5, 4 }, { 8, 2 }, { 11, 4 }, { 13, 4 }, }) do run:new_line( 'ecma/class.js', { on_line = info[1], text = '//', indent = info[2] }, info[3], info[4] ) end for _, info in ipairs({ { 2, 2 }, { 5, 2 }, { 7, 0 }, { 12, 4 }, { 18, 2 }, { 19, 2 }, { 20, 2 }, { 25, 2 }, { 42, 8 }, { 43, 10 }, { 44, 12 }, { 48, 4 }, { 49, 4 }, { 50, 2 }, }) do run:new_line( 'ecma/func.js', { on_line = info[1], text = '//', indent = info[2] }, info[3], info[4] ) end for _, info in ipairs({ { 1, 2 }, { 2, 2 }, { 3, 2 }, { 5, 4 }, { 6, 4 }, { 8, 2 }, { 9, 2 }, { 12, 2 }, { 13, 0 }, { 16, 0 }, { 19, 2 }, }) do run:new_line( 'ecma/if_else.js', { on_line = info[1], text = 'hello()', indent = info[2] }, info[3], info[4] ) end for _, info in ipairs({ { 2, 2 }, { 5, 0 }, }) do run:new_line( 'ecma/object.js', { on_line = info[1], text = '//', indent = info[2] }, info[3], info[4] ) end for _, info in ipairs({ { 3, 6 }, { 4, 6 }, }) do run:new_line( 'ecma/ternary.js', { on_line = info[1], text = '//', indent = info[2] }, info[3], info[4] ) end for _, info in ipairs({ { 1, 2 }, { 2, 2 }, { 3, 2 }, { 4, 2 }, { 5, 2 }, { 6, 2 }, { 7, 0 }, }) do run:new_line( 'ecma/try_catch.js', { on_line = info[1], text = 'hello()', indent = info[2] }, info[3], info[4] ) end for _, info in ipairs({ { 1, 2 }, { 2, 0 }, }) do run:new_line( 'ecma/variable.js', { on_line = info[1], text = 'hello()', indent = info[2] }, info[3], info[4] ) end for _, line in ipairs({ 2, 6 }) do run:new_line('ecma/issue-2515.js', { on_line = line, text = '{}', indent = 4 }) end for _, info in ipairs({ { line = 2, indent = 0 } }) do run:new_line( 'ecma/array-issue3382.js', { on_line = info.line, text = 'foo();', indent = info.indent } ) end end) end)