intersystems-community / intersystems-testingmanager

A VS Code extension to surface in the testing view any unit tests built with the InterSystems %UnitTest framework.
MIT License
2 stars 2 forks source link

Client Side Editing: TestCase classes that extend %UnitTest.TestCase indirectly are not "runnable" #27

Open tanifgit opened 8 months ago

tanifgit commented 8 months ago

If you have a test case class that extends %UnitTest.TestCase but in an indirect way (i.e. a class that is not named %UnitTest.TestCase, but rather a class that in turn extends it; or somewhere up the hierarchy, which could be common practice for organizations managing their test cases), the classes will not show with their methods/tests, and will not be runnable.

I believe that while the server-side editing related code (ServerTests.ts): { query: 'CALL %Dictionary.ClassDefinition_SubclassOf('%UnitTest.TestCase', '${(namespace === "%SYS" ? "" : "@")}') '}, Runs a query that will indeed return all sub-classes, the client-side editing related code (LocalTests.ts) performs this kind of check:

if (lineText.startsWith('Class ')) {
                                if (!lineText.includes('%UnitTest.TestCase')) {
                                    break;
                                }

Which naturally will only find classes that explicitly have the %UnitTest.TestCase in their Extends definition.

isc-bsaviano commented 7 months ago

@tanifgit Since version 2.12.0 the vscode-objectscript extension has had %UnitTest running capabilities built in. It should allow the running of local test classes that aren't direct subclasses of %UnitTest.TestCase. You can read the docs for that new feature here.