{"id":39690991,"url":"https://github.com/intersystems-community/intersystems-testingmanager","last_synced_at":"2026-04-12T18:23:39.814Z","repository":{"id":166079631,"uuid":"450660519","full_name":"intersystems-community/intersystems-testingmanager","owner":"intersystems-community","description":"A VS Code extension to surface in the testing view any unit tests built with the InterSystems %UnitTest framework.","archived":false,"fork":false,"pushed_at":"2025-09-25T16:09:39.000Z","size":3843,"stargazers_count":3,"open_issues_count":6,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-03T01:40:03.020Z","etag":null,"topics":["intersystems","testing","vscode","vscode-extension"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intersystems-community.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-21T22:43:17.000Z","updated_at":"2026-01-07T22:51:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"7430ac42-7f10-4620-845f-0d6a951abe77","html_url":"https://github.com/intersystems-community/intersystems-testingmanager","commit_stats":null,"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/intersystems-community/intersystems-testingmanager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intersystems-community%2Fintersystems-testingmanager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intersystems-community%2Fintersystems-testingmanager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intersystems-community%2Fintersystems-testingmanager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intersystems-community%2Fintersystems-testingmanager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intersystems-community","download_url":"https://codeload.github.com/intersystems-community/intersystems-testingmanager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intersystems-community%2Fintersystems-testingmanager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29525498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T21:45:09.491Z","status":"ssl_error","status_checked_at":"2026-02-16T21:44:58.452Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["intersystems","testing","vscode","vscode-extension"],"created_at":"2026-01-18T10:06:04.045Z","updated_at":"2026-02-17T00:03:43.521Z","avatar_url":"https://github.com/intersystems-community.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# InterSystems Testing Manager\n\n\u003e **New in Version 2.0 - Test Coverage**\n\u003e \n\u003e The v2.0 release was awarded first place in the [InterSystems Developer Tools Contest 2025](https://openexchange.intersystems.com/contest/42) in both voting categories, Experts and Community Members.\n\nThis extension uses VS Code's [Testing API](https://code.visualstudio.com/api/extension-guides/testing) to discover, run and debug unit test classes built with the [%UnitTest testing framework](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=TUNT_WhatIsPercentUnitTest) of the InterSystems IRIS platforms, plus Cach\u0026eacute;-based predecessors supporting the `/api/atelier` REST service.\n\nIt augments the ObjectScript, InterSystems Language Server and Server Manager extensions, which are elements of the [InterSystems ObjectScript Extension Pack](https://marketplace.visualstudio.com/items?itemName=intersystems-community.objectscript-pack).\n\nClasses extending `%UnitTest.TestCase` are shown in VS Code's Test Explorer view, from where they can be run and any failures investigated. An additional folder in Test Explorer gives easy access to the results of recent test runs on the server.\n\nInterSystems Testing Manager works with both of the source code location paradigms supported by the ObjectScript extension. Your unit test classes can either be mastered in VS Code's local filesystem (the 'client-side editing' paradigm) or in a server namespace (the ['server-side editing'](https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=GVSCO_serverflow) paradigm). In both cases the actual test runs occur in a server namespace.\n\n![Client-side paradigm animation](images/README/Overview-Client.gif)\n\n_Client-side editing workspace_\n\n![Server-side paradigm animation](images/README/Overview-Server.gif)\n\n_Server-side editing workspace_\n\nWhen used alongside [Test Coverage Tool](https://openexchange.intersystems.com/package/Test-Coverage-Tool) this extension presents coverage inside VS Code:\n\n![Test coverage example](images/README/Coverage-example.png)\n\n_Coverage example showing coverage of Test Coverage Tool's own unit tests_\n\nIn the above screenshot the Test Coverage view has been dragged to the secondary sidebar.\n\n\nDisplaying which code lines your tests cover aids the improvement of those tests. The greater the percentage of code lines covered by testing, the more likely your tests will detect regressions.\n\nBelow is an example from the [InterSystems Package Manager](https://github.com/intersystems/ipm) repository. Two test classes ran code in the %IPM.Repo.Definition class, but neither of them covered line 88 in the screenshot below:\n\n![Tests missed part of a method](images/README/Coverage-missed-part-of-method.png)\n\n_Tests failed to cover line 88_\n\nThe optional Test Coverage Toolbar at the top of the class's editor and the coverage decorations in the Explorer tree combine to promote good testing habits.\n\nIn order to support topologies in which client-side-managed test classes have to be run in the namespace of a remote server, this extension uses the `/_vscode` web application on the test-running server, no matter whether local or remote.\n\n## Server Preparations\n\n1. Using the server's **Management Portal**, go to **System Administration \u003e Security \u003e Applications \u003e Web Applications** and look for an application named `/_vscode`.\n\n    - If it doesn't exist:\n      - **EITHER** use IPM (ZPM) to install [vscode-per-namespace-settings](https://openexchange.intersystems.com/package/vscode-per-namespace-settings) and then note the new `/_vscode` web application's **Physical Path**.\n      - **OR** follow [these instructions](https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=GVSCO_serverflow#GVSCO_serverflow_folderspec). Make a note of the **Physical Path** value you entered. The convention suggested in the linked instructions is to use a `.vscode` subfolder of the server's install folder, for example `C:\\InterSystems\\IRIS\\.vscode` on Windows.\n\n    - If the `/_vscode` web application already exists, note its **Physical Path**.\n\n2. Using an IRIS terminal session on the server, set the `^UnitTestRoot` global in each namespace you will run unit tests in via the extension. Start with the path string noted in the previous step, appending two subfolders to it. The first must match the uppercase namespace name and the second must be `UnitTestRoot`. For example, in the USER namespace of a default Windows install of IRIS:\n    ```\n    USER\u003eset ^UnitTestRoot=\"C:\\InterSystems\\IRIS\\.vscode\\USER\\UnitTestRoot\"\n    ```\n\u003e If you previously used the `%UnitTest` framework in a namespace, be aware that you are probably replacing an existing value. Consider taking a note of that in case you need to revert.\n\n3. If you want to gather and display test coverage data, set up [Test Coverage Tool](https://openexchange.intersystems.com/package/Test-Coverage-Tool) in the namespace(s) where your tests will execute.\n\n## Workspace Preparations\n\nFor a workspace using client-side editing, test classes are by default sought in `.cls` files under the `internal/testing/unit_tests` subfolder, using the conventional layout of one additional subfolder per package-name element. If your test classes are located elsewhere, use the `intersystems.testingManager.client.relativeTestRoot` setting to point there.\n\n\u003e By setting this at the workspace level you can have different file layouts for different projects.\n\nTo gather test coverage data you will need at least one `coverage.list` file in your tree of test classes. See the Test Coverage Tool documentation for information about what this file should contain.\n\nWhen using client-side editing your `coverage.list` file(s) must be in or below your `relativeTestRoot` client-side folder.\n\nWhen using server-side editing, put a single `coverage.list` file in the server-side folder named in your ^UnitTestRoot global.\n\nIf no `coverage.list` file is found during a coverage run then the output in the Test Results tab of the VS Code Panel will include the line `No code coverage found (!)`.\n\n## Running Tests\n\nVS Code provides several different ways to run tests.\n\nIn the Test Explorer view expand the first root folder, which is captioned 'Local Tests' or 'Server Tests' depending on which paradigm your workspace uses.\n\nA subfolder is shown for each root folder of your workspace, which may be a multi-root one. Within this you are shown the test classes. The 'Local Tests' tree uses a hierarchical structure with one subfolder per segment of the package name. The 'Server Tests' tree uses a flat structure.\n\nAt the level of an individual test class the final expansion shows a leaf for each `TestXXX` method.\n\nHovering over any level of a tests tree will reveal action buttons that run all the tests from this level down. The 'Run Test' button does so without stopping at any breakpoints, in contrast to the 'Debug Test' button. At class or method level a 'Go to Test' button opens the class code and positions the cursor appropriately. At higher levels this button navigates to Explorer View.\n\nWhen a test class is open in an editor tab it displays icons in the gutter at the top of the class and at the start of each test method. These show the outcome of the most recent run, if any, and can be clicked to perform testing operations.\n\nThe `...` menu of the Testing panel in Test Explorer includes several useful commands, including ones to collapse the tree and to clear all locally-stored test results.\n\n## Debugging Tests\nAfter opening a test class, click in the gutter to set a VS Code breakpoint in the normal manner. Then launch the test-run with the Debug option on the context menu of the testing icons in the gutter.\n\n## Obtaining Test Coverage Information\nUse the 'Run with Coverage' option to submit your tests to [Test Coverage Tool](https://openexchange.intersystems.com/package/Test-Coverage-Tool). When the run finishes the 'TEST COVERAGE' view will appear, usually below the 'TEST EXPLORER'. Use this to discover what proportion of executable code lines were covered by the most recent coverage run. Open sources to see color markers on line numbers showing covered (green) and not covered (red) lines. Learn more in the [VS Code documentation](https://code.visualstudio.com/docs/debugtest/testing#_test-coverage).\n\n## Recent Testing History\n\nThe %UnitTest framework persists results of runs in server-side tables. The 'Recent History' root folder lets you explore the most recent ten sets of results for each server and namespace the workspace uses.\n\nHovering on a run's folder reveals an action button which launches %UnitTest's own results browser in an external web browser.\n\n## Known Limitations\n\nThis extension has some known quirks and limitations:\n\n- The extension uses server-side REST support for debugging even when tests are not being debugged. Debug support is broken in InterSystems IRIS 2021.1.3, and maybe also in earlier 2021.1.x versions. Either upgrade to a later version or request an ad-hoc patch from InterSystems.\n- Launching the IRIS debugger requires a document on the target server namespace to be open and active. This extension opens one automatically at the beginning of all types of test (Run, Debug and Run With Coverage).\n- The very first coverage-type run after installation may report that the Test Coverage Tool is missing. Use the Refresh Tests button on the Test Explorer view, then retry your coverage run.\n- The extension has only been tested with InterSystems IRIS instances that use the English locale. Its technique for parsing the output from %UnitTest may fail when used with other locales.\n- The `/autoload` feature of %UnitTest is not currently supported. This is only relevant to client-side mode.\n- The loading and deleting of unit test classes which occurs when using client-side mode will raise corresponding events on any source control class that the target namespace may have been configured to use.\n\n## Feedback\n\nInitial development of this extension by [George James Software](https://georgejames.com) was sponsored by [InterSystems](https://intersystems.com).\n\nPlease create issues at https://github.com/intersystems-community/intersystems-testingmanager/issues to report bugs, questions or suggestions for improvement.\n\nWe also invite you to post about this extension at https://community.intersystems.com\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintersystems-community%2Fintersystems-testingmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintersystems-community%2Fintersystems-testingmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintersystems-community%2Fintersystems-testingmanager/lists"}