diff --git a/bin/results.coffee b/bin/results.coffee index 9cc2e49..30cbb5a 100755 --- a/bin/results.coffee +++ b/bin/results.coffee @@ -83,8 +83,9 @@ class TestRunner if typeof obj[key] is 'object' and obj[key] isnt null if obj[key]["type"]? and obj[key]["expression"]?["callee"]?["name"]? if obj[key]["type"] is "ExpressionStatement" and obj[key]["expression"]["callee"]["name"] is "it" - if obj[key]["expression"]?["arguments"]?[0]?["value"]? and obj[key]["expression"]?["arguments"]?[1]?["loc"]? - @astData.push({name: obj[key]["expression"]["arguments"][0]["value"], loc: obj[key]["expression"]["arguments"][1]["loc"]}) + name = @read_test_name(obj[key]["expression"]?["arguments"]?[0]) + if name? and obj[key]["expression"]?["arguments"]?[1]?["loc"]? + @astData.push({name: name, loc: obj[key]["expression"]["arguments"][1]["loc"]}) else console.log("incorrect") else @@ -93,6 +94,17 @@ class TestRunner search_keys(obj[key]) search_keys(ast) + read_test_name: (node) => + return unless node? + return node.value if typeof node.value is "string" + return unless node.type is "BinaryExpression" and node.operator is "+" + + left = @read_test_name(node.left) + right = @read_test_name(node.right) + return unless left? and right? + + left + right + write_result: (status, test_cases = [], message = "") -> result = version: 2 diff --git a/tests/example-multiline-test-name/example-multiline-test-name.coffee b/tests/example-multiline-test-name/example-multiline-test-name.coffee new file mode 100644 index 0000000..65eb826 --- /dev/null +++ b/tests/example-multiline-test-name/example-multiline-test-name.coffee @@ -0,0 +1,4 @@ +class ExampleMultilineTestName + answer: -> 42 + +module.exports = ExampleMultilineTestName diff --git a/tests/example-multiline-test-name/example-multiline-test-name.spec.coffee b/tests/example-multiline-test-name/example-multiline-test-name.spec.coffee new file mode 100644 index 0000000..261dad2 --- /dev/null +++ b/tests/example-multiline-test-name/example-multiline-test-name.spec.coffee @@ -0,0 +1,9 @@ +ExampleMultilineTestName = require './example-multiline-test-name' + +describe 'Multiline test name', -> + example = new ExampleMultilineTestName() + + it 'supports test descriptions that are split ' + + 'across lines', -> + result = example.answer() + expect(result).toEqual 42 diff --git a/tests/example-multiline-test-name/expected_results.json b/tests/example-multiline-test-name/expected_results.json new file mode 100644 index 0000000..e12a691 --- /dev/null +++ b/tests/example-multiline-test-name/expected_results.json @@ -0,0 +1,12 @@ +{ + "version": 2, + "status": "pass", + "tests": [ + { + "name": "supports test descriptions that are split across lines", + "test_code": "result = example.answer()\nexpect(result).toEqual 42", + "status": "pass", + "message": null + } + ] +} \ No newline at end of file