1
0
Fork 0
mirror of https://github.com/pnx/neotest-phpunit synced 2026-06-16 03:54:55 +02:00

Fix issue with tests that start with "it"

This commit is contained in:
Michael Utz 2022-11-16 17:11:56 +03:00
parent 6e04f7b2e7
commit c017340679
2 changed files with 138 additions and 380 deletions

View file

@ -1,407 +1,164 @@
local utils = require("neotest-phpunit.utils")
local utils = require("neotest-pest.utils")
describe("get_test_results", function()
it("parses output when testing a method", function()
it("parses output with whole file", function()
local output_file = "/tmp/nvimhYaIPj/3"
local xml_output = {
testsuites = {
testsuite = {
_attr = {
assertions = "1",
assertions = "17",
errors = "0",
failures = "0",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php",
name = "ExampleTest",
skipped = "0",
tests = "1",
time = "0.002292",
warnings = "0",
},
testcase = {
_attr = {
assertions = "1",
class = "ExampleTest",
classname = "ExampleTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php",
line = "7",
name = "test_that_true_is_true",
time = "0.002292",
},
},
},
},
}
local expected = {
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php::7"] = {
["output_file"] = "/tmp/nvimhYaIPj/3",
["short"] = [[EXAMPLETEST
-> PASSED - test_that_true_is_true]],
["status"] = "passed",
},
}
assert.are.same(utils.get_test_results(xml_output, output_file), expected)
end)
it("parses output when testing a file", function()
local output_file = "/tmp/nvimhYaIPj/3"
local xml_output = {
testsuites = {
testsuite = {
_attr = {
assertions = "2",
errors = "0",
failures = "0",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
name = "TestProject\\UserTest",
skipped = "0",
tests = "2",
time = "0.001525",
warnings = "0",
},
testcase = {
{
_attr = {
assertions = "3",
class = "TestProject\\UserTest",
classname = "TestProject.UserTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
line = "13",
name = "testClassConstructor",
time = "0.000949",
},
},
{
_attr = {
assertions = "2",
class = "TestProject\\UserTest",
classname = "TestProject.UserTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
line = "22",
name = "testTellName",
time = "0.000135",
},
},
},
},
},
}
local expected = {
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php::13"] = {
["output_file"] = "/tmp/nvimhYaIPj/3",
["short"] = [[TESTPROJECT.USERTEST
-> PASSED - testClassConstructor]],
["status"] = "passed",
},
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php::22"] = {
["output_file"] = "/tmp/nvimhYaIPj/3",
["short"] = [[TESTPROJECT.USERTEST
-> PASSED - testTellName]],
["status"] = "passed",
},
}
assert.are.same(utils.get_test_results(xml_output, output_file), expected)
end)
it("parses a file even if there is a failure", function()
local output_file = "/tmp/nvimhYaIPj/3"
local xml_output = {
testsuites = {
testsuite = {
_attr = {
assertions = "2",
errors = "0",
failures = "1",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php",
name = "ExampleTest",
skipped = "0",
tests = "2",
time = "0.001008",
warnings = "0",
},
testcase = {
{
_attr = {
assertions = "1",
class = "ExampleTest",
classname = "ExampleTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php",
line = "12",
name = "test_that_false_is_true",
time = "0.000141",
},
failure = {
[[ExampleTest::test_that_false_is_true
Failed asserting that false is true.
/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php:14]],
_attr = {
type = "PHPUnit\\Framework\\ExpectationFailedException",
},
},
},
},
},
},
}
local expected = {
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php::12"] = {
errors = {
{
line = "12",
},
},
output_file = "/tmp/nvimhYaIPj/3",
status = "failed",
},
}
assert.are.same(utils.get_test_results(xml_output, output_file), expected)
end)
it("parses multiple files", function()
local output_file = "/tmp/nvimhYaIPj/3"
local xml_output = {
testsuites = {
testsuite = {
_attr = {
assertions = "18",
errors = "0",
failures = "1",
name = "",
skipped = "0",
tests = "8",
time = "0.001904",
warnings = "0",
tests = "7",
time = "0.006846",
warnings = "0"
},
testsuite = {
{
testsuite = { {
_attr = {
assertions = "1",
errors = "0",
failures = "0",
file = "/Users/michaelutz/Code/neotest-pest/tests/Examples/some/deep/nesting/NestingTest.php",
name = "P\\Tests\\Examples\\some\\deep\\nesting\\NestingTest",
skipped = "0",
tests = "1",
time = "0.002344",
warnings = "0"
},
testcase = {
_attr = {
assertions = "1",
class = "Tests\\Examples\\some\\deep\\nesting\\NestingTest",
classname = "Tests.Examples.some.deep.nesting.NestingTest",
file = "/Users/michaelutz/Code/neotest-pest/tests/Examples/some/deep/nesting/NestingTest.php",
name = "is true",
time = "0.002344"
}
}
}, {
_attr = {
assertions = "15",
errors = "0",
failures = "0",
file = "/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php",
name = "P\\Tests\\Feature\\UserTest",
skipped = "0",
tests = "5",
time = "0.004385",
warnings = "0"
},
testcase = { {
_attr = {
assertions = "3",
class = "Tests\\Feature\\UserTest",
classname = "Tests.Feature.UserTest",
file = "/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php",
name = "class constructor",
time = "0.000941"
}
}, {
_attr = {
assertions = "2",
errors = "0",
failures = "1",
name = "Unit",
skipped = "0",
tests = "2",
time = "0.001233",
warnings = "0",
},
testsuite = {
_attr = {
assertions = "2",
errors = "0",
failures = "1",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php",
name = "ExampleTest",
skipped = "0",
tests = "2",
time = "0.001233",
warnings = "0",
},
testcase = {
{
_attr = {
assertions = "1",
class = "ExampleTest",
classname = "ExampleTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php",
line = "7",
name = "test_that_true_is_true",
time = "0.001027",
},
},
{
_attr = {
assertions = "1",
class = "ExampleTest",
classname = "ExampleTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php",
line = "13",
name = "this_should_fail",
time = "0.000207",
},
failure = {
[[ExampleTest::this_should_fail
Failed asserting that false is true.
/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php:15]],
_attr = {
type = "PHPUnit\\Framework\\ExpectationFailedException",
},
},
},
},
},
},
{
class = "Tests\\Feature\\UserTest",
classname = "Tests.Feature.UserTest",
file = "/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php",
name = "tellName",
time = "0.000494"
}
}, {
_attr = {
assertions = "16",
errors = "0",
failures = "0",
name = "Examples",
skipped = "0",
tests = "6",
time = "0.000671",
warnings = "0",
},
testsuite = {
{
_attr = {
assertions = "15",
errors = "0",
failures = "0",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
name = "TestProject\\UserTest",
skipped = "0",
tests = "5",
time = "0.000646",
warnings = "0",
},
testcase = {
{
_attr = {
assertions = "3",
class = "TestProject\\UserTest",
classname = "TestProject.UserTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
line = "13",
name = "testClassConstructor",
time = "0.000145",
},
},
{
_attr = {
assertions = "2",
class = "TestProject\\UserTest",
classname = "TestProject.UserTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
line = "22",
name = "testTellName",
time = "0.000143",
},
},
{
_attr = {
assertions = "2",
class = "TestProject\\UserTest",
classname = "TestProject.UserTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
line = "30",
name = "testTellAge",
time = "0.000026",
},
},
{
_attr = {
assertions = "3",
class = "TestProject\\UserTest",
classname = "TestProject.UserTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
line = "38",
name = "testAddFavoriteMovie",
time = "0.000149",
},
},
{
_attr = {
assertions = "5",
class = "TestProject\\UserTest",
classname = "TestProject.UserTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php",
line = "47",
name = "testRemoveFavoriteMovie",
time = "0.000183",
},
},
},
},
{
_attr = {
assertions = "1",
errors = "0",
failures = "0",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/some/deep/nesting/NestingTest.php",
name = "NestingTest",
skipped = "0",
tests = "1",
time = "0.000025",
warnings = "0",
},
testcase = {
_attr = {
assertions = "1",
class = "NestingTest",
classname = "NestingTest",
file = "/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/some/deep/nesting/NestingTest.php",
line = "7",
name = "test_something_that_is_true",
time = "0.000025",
},
},
},
},
assertions = "2",
class = "Tests\\Feature\\UserTest",
classname = "Tests.Feature.UserTest",
file = "/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php",
name = "can tellAge",
time = "0.000384"
}
}, {
_attr = {
assertions = "3",
class = "Tests\\Feature\\UserTest",
classname = "Tests.Feature.UserTest",
file = "/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php",
name = "addFavoriteMovie",
time = "0.000959"
}
}, {
_attr = {
assertions = "5",
class = "Tests\\Feature\\UserTest",
classname = "Tests.Feature.UserTest",
file = "/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php",
name = "removeFavoriteMovie",
time = "0.001608"
}
} }
}, {
_attr = {
assertions = "1",
errors = "0",
failures = "0",
file = "/Users/michaelutz/Code/neotest-pest/tests/Unit/ExampleTest.php",
name = "P\\Tests\\Unit\\ExampleTest",
skipped = "0",
tests = "1",
time = "0.000116",
warnings = "0"
},
},
},
},
testcase = {
_attr = {
assertions = "1",
class = "Tests\\Unit\\ExampleTest",
classname = "Tests.Unit.ExampleTest",
file = "/Users/michaelutz/Code/neotest-pest/tests/Unit/ExampleTest.php",
name = "example",
time = "0.000116"
}
}
} }
}
}
}
local expected = {
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php::13"] = {
output_file = "/tmp/nvimhYaIPj/3",
short = [[TESTPROJECT.USERTEST
-> PASSED - testClassConstructor]],
status = "passed",
["/Users/michaelutz/Code/neotest-pest/tests/Examples/some/deep/nesting/NestingTest.php::is true"] = {
output_file = output_file,
short = "TESTS.EXAMPLES.SOME.DEEP.NESTING.NESTINGTEST\n-> PASSED - is true",
status = "passed"
},
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php::22"] = {
output_file = "/tmp/nvimhYaIPj/3",
short = [[TESTPROJECT.USERTEST
-> PASSED - testTellName]],
status = "passed",
["/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php::addFavoriteMovie"] = {
output_file = output_file,
short = "TESTS.FEATURE.USERTEST\n-> PASSED - addFavoriteMovie",
status = "passed"
},
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php::30"] = {
output_file = "/tmp/nvimhYaIPj/3",
short = [[TESTPROJECT.USERTEST
-> PASSED - testTellAge]],
status = "passed",
["/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php::can tellAge"] = {
output_file = output_file,
short = "TESTS.FEATURE.USERTEST\n-> PASSED - can tellAge",
status = "passed"
},
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php::38"] = {
output_file = "/tmp/nvimhYaIPj/3",
short = [[TESTPROJECT.USERTEST
-> PASSED - testAddFavoriteMovie]],
status = "passed",
["/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php::class constructor"] = {
output_file = output_file,
short = "TESTS.FEATURE.USERTEST\n-> PASSED - class constructor",
status = "passed"
},
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/UserTest.php::47"] = {
output_file = "/tmp/nvimhYaIPj/3",
short = [[TESTPROJECT.USERTEST
-> PASSED - testRemoveFavoriteMovie]],
status = "passed",
["/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php::removeFavoriteMovie"] = {
output_file = output_file,
short = "TESTS.FEATURE.USERTEST\n-> PASSED - removeFavoriteMovie",
status = "passed"
},
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Examples/some/deep/nesting/NestingTest.php::7"] = {
output_file = "/tmp/nvimhYaIPj/3",
short = [[NESTINGTEST
-> PASSED - test_something_that_is_true]],
status = "passed",
},
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php::13"] = {
errors = {
{
line = "13",
},
},
output_file = "/tmp/nvimhYaIPj/3",
status = "failed",
},
["/Users/Oli/Code/Projects/neotest-phpunit/tests/Unit/ExampleTest.php::7"] = {
output_file = "/tmp/nvimhYaIPj/3",
short = [[EXAMPLETEST
-> PASSED - test_that_true_is_true]],
status = "passed",
["/Users/michaelutz/Code/neotest-pest/tests/Feature/UserTest.php::tellName"] = {
output_file = output_file,
short = "TESTS.FEATURE.USERTEST\n-> PASSED - tellName",
status = "passed"
},
["/Users/michaelutz/Code/neotest-pest/tests/Unit/ExampleTest.php::example"] = {
output_file = output_file,
short = "TESTS.UNIT.EXAMPLETEST\n-> PASSED - example",
status = "passed"
}
}
assert.are.same(utils.get_test_results(xml_output, output_file), expected)