Skip to content

fix(init): use System PATH on Windows for correct priority#58

Merged
CalvinAllen merged 2 commits intomainfrom
fix/windows-system-path
Dec 9, 2025
Merged

fix(init): use System PATH on Windows for correct priority#58
CalvinAllen merged 2 commits intomainfrom
fix/windows-system-path

Conversation

@CalvinAllen
Copy link
Contributor

Summary

Windows combines PATH as System + User, meaning system installations always take priority over user PATH entries. This fix modifies System PATH instead of User PATH to ensure dtvem shims take priority over system-level installations (e.g., C:\Program Files\nodejs).

Changes

  • Modify System PATH (HKLM) instead of User PATH (HKCU) on Windows
  • Check for admin privileges before attempting modification
  • Prompt for UAC elevation if not already elevated
  • Use ShellExecute with "runas" verb to re-launch with elevation
  • Detect if shims already exist but not at beginning and offer to fix
  • Simplify init.go to delegate all PATH logic to AddToPath

Unix/macOS behavior unchanged (prepend to shell config files).

Test plan

  • Run dtvem init as non-admin - should prompt for elevation
  • Accept elevation prompt - UAC dialog should appear
  • Verify shims directory is added to beginning of System PATH
  • Run dtvem init again - should report already configured
  • Test on Unix/macOS - should still modify shell config files

Fixes #55

🤖 Generated with Claude Code

@github-actions
Copy link
Contributor

github-actions bot commented Dec 9, 2025

Test Coverage Report - macos-arm64

Total Coverage: 17.5%

Coverage by Package

github.com/dtvem/dtvem/src/cmd/current.go:39:					showAllVersions				0.0%
github.com/dtvem/dtvem/src/cmd/current.go:97:					showSingleVersion			0.0%
github.com/dtvem/dtvem/src/cmd/current.go:129:					init					100.0%
github.com/dtvem/dtvem/src/cmd/freeze.go:175:					init					100.0%
github.com/dtvem/dtvem/src/cmd/global.go:10:					setRuntimeVersion			0.0%
github.com/dtvem/dtvem/src/cmd/global.go:53:					init					100.0%
github.com/dtvem/dtvem/src/cmd/init.go:55:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:47:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:53:					installSingle				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:79:					buildInstallTasks			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:104:					isVersionInstalled			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:120:					showInstallationPlan			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:137:					promptInstallConfirmation		0.0%
github.com/dtvem/dtvem/src/cmd/install.go:153:					executeInstalls				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:177:					showInstallSummary			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:198:					installBulk				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:29:					listAllRuntimes				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:70:					listSingleRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/list.go:102:					init					100.0%
github.com/dtvem/dtvem/src/cmd/listall.go:125:					init					100.0%
github.com/dtvem/dtvem/src/cmd/local.go:34:					init					100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:214:					parseSelection				100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:240:					promptCleanupOldInstallations		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:301:					getUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:333:					getSystemUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:358:					executeUninstallCommand			0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:373:					init					100.0%
github.com/dtvem/dtvem/src/cmd/reshim.go:51:					init					100.0%
github.com/dtvem/dtvem/src/cmd/root.go:31:					Execute					0.0%
github.com/dtvem/dtvem/src/cmd/root.go:38:					init					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:23:					main					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:30:					runShim					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:112:				handleNoConfiguredVersion		0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:147:				findInSystemPath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:199:				shouldAutoInstall			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:204:				getShimName				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:218:				mapShimToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:247:				adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:295:				executeCommand				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:321:				executeCommandWithWait			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:352:				promptReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:376:				runReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:393:				findDtvemExecutable			0.0%
github.com/dtvem/dtvem/src/cmd/uninstall.go:123:				init					100.0%
github.com/dtvem/dtvem/src/cmd/version.go:22:					init					100.0%
github.com/dtvem/dtvem/src/cmd/where.go:110:					init					100.0%
github.com/dtvem/dtvem/src/cmd/which.go:101:					mapCommandToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:121:					adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:165:					init					100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:23:				DefaultPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:31:				initPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:42:				getRootDir				83.3%
github.com/dtvem/dtvem/src/internal/config/paths.go:59:				RuntimeVersionPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:65:				GlobalConfigPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:71:				ShimPath				75.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:81:				EnsureDirectories			0.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:100:			LocalConfigDir				75.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:109:			LocalConfigPath				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:19:			ResolveVersion				0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:37:			findLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:80:			readVersionFile				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:101:			ReadAllRuntimes				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:117:			FindLocalRuntimesFile			93.8%
github.com/dtvem/dtvem/src/internal/config/version.go:155:			GlobalVersion				75.0%
github.com/dtvem/dtvem/src/internal/config/version.go:167:			SetGlobalVersion			84.6%
github.com/dtvem/dtvem/src/internal/config/version.go:198:			SetLocalVersion				64.3%
github.com/dtvem/dtvem/src/internal/download/download.go:15:			File					0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:61:			FileWithProgress			0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:114:			Read					0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:15:			ExtractZip				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:38:			extractZipFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:77:			ExtractTarGz				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:118:			extractTarFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:167:			StripTopLevelDir			0.0%
github.com/dtvem/dtvem/src/internal/path/path.go:12:				IsInPath				90.9%
github.com/dtvem/dtvem/src/internal/path/path.go:39:				ShimsDir				75.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:17:			DetectShell				0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:28:			GetShellConfigFile			0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:56:			AddToPath				0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:132:			containsPathModification		0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:21:	RunAllTests				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:37:	TestName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:55:	TestDisplayName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:68:	TestGetInstallPath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:95:	TestGetExecutablePath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:116:	TestGetGlobalPackages			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:136:	TestGetManualPackageInstallCommand	0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:184:	TestListInstalled			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:207:	TestListAvailable			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:229:	TestIsInstalled				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:250:	TestGetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:261:	TestGetLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:272:	TestGetCurrentVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:283:	TestInstallGlobalPackages		0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:20:			NewRegistry				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:27:			Register				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:41:			Get					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:54:			List					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:66:			GetAll					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:78:			Has					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:87:			Unregister				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:102:			Register				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:107:			Get					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:112:			List					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:117:			GetAll					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:122:			Has					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:127:			Unregister				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:132:			GetRegistry				0.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:17:			NewVersion				100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:26:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:31:			Equal					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:43:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:69:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:74:			ParseVersions				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:22:				NewManager				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:37:				findShimExecutable			0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:65:				CreateShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:84:				CreateShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:94:				RemoveShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:105:			ListShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:134:			Rehash					0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:212:			copyFile				92.3%
github.com/dtvem/dtvem/src/internal/shim/manager.go:240:			RuntimeShims				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:253:			findExecutables				0.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:5:			ContainsSubstring			100.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:11:			hasSubstring				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:28:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:34:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:40:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:46:				Info					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:52:				Progress				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:58:				Println					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:63:				Printf					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:68:				Header					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:75:				Highlight				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:80:				HighlightVersion			100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:90:				PromptInstall				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:121:				PromptInstallMissing			0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:15:				NewSpinner				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:26:				Start					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:31:				Stop					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:36:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:42:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:48:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:54:				UpdateMessage				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:60:				WithSpinner				0.0%
github.com/dtvem/dtvem/src/main.go:11:						main					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:29:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:34:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:39:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:44:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:49:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:136:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:175:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:189:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:195:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:226:			ListAvailable				83.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:271:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:294:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:307:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:312:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:317:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:322:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:332:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:337:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:342:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:401:			getNodeVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:416:			getNodeInstallLocations			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:444:			findNvmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:501:			findFnmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:549:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:588:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:620:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:628:			findNpmInInstall			42.9%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:662:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:693:			init					50.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:32:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:37:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:42:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:47:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:53:			downloadAndExtract			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:96:			determineSourceDir			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:113:			installPipIfNeeded			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:130:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:188:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:225:			getStandaloneBuildURL			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:269:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:283:			installPip				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:321:			enableSitePackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:351:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:357:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:388:			ListAvailable				90.6%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:456:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:481:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:494:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:499:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:504:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:509:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:519:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:524:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:529:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:581:			getPythonVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:600:			getPythonInstallLocations		0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:643:			findPyenvVersions			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:705:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:742:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:774:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:782:			findPipInInstall			54.5%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:814:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:831:			init					50.0%

📊 Full HTML coverage report available in workflow artifacts

@github-actions
Copy link
Contributor

github-actions bot commented Dec 9, 2025

Test Coverage Report - linux-amd64

Total Coverage: 17.5%

Coverage by Package

github.com/dtvem/dtvem/src/cmd/current.go:39:					showAllVersions				0.0%
github.com/dtvem/dtvem/src/cmd/current.go:97:					showSingleVersion			0.0%
github.com/dtvem/dtvem/src/cmd/current.go:129:					init					100.0%
github.com/dtvem/dtvem/src/cmd/freeze.go:175:					init					100.0%
github.com/dtvem/dtvem/src/cmd/global.go:10:					setRuntimeVersion			0.0%
github.com/dtvem/dtvem/src/cmd/global.go:53:					init					100.0%
github.com/dtvem/dtvem/src/cmd/init.go:55:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:47:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:53:					installSingle				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:79:					buildInstallTasks			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:104:					isVersionInstalled			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:120:					showInstallationPlan			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:137:					promptInstallConfirmation		0.0%
github.com/dtvem/dtvem/src/cmd/install.go:153:					executeInstalls				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:177:					showInstallSummary			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:198:					installBulk				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:29:					listAllRuntimes				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:70:					listSingleRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/list.go:102:					init					100.0%
github.com/dtvem/dtvem/src/cmd/listall.go:125:					init					100.0%
github.com/dtvem/dtvem/src/cmd/local.go:34:					init					100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:214:					parseSelection				100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:240:					promptCleanupOldInstallations		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:301:					getUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:333:					getSystemUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:358:					executeUninstallCommand			0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:373:					init					100.0%
github.com/dtvem/dtvem/src/cmd/reshim.go:51:					init					100.0%
github.com/dtvem/dtvem/src/cmd/root.go:31:					Execute					0.0%
github.com/dtvem/dtvem/src/cmd/root.go:38:					init					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:23:					main					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:30:					runShim					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:112:				handleNoConfiguredVersion		0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:147:				findInSystemPath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:199:				shouldAutoInstall			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:204:				getShimName				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:218:				mapShimToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:247:				adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:295:				executeCommand				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:321:				executeCommandWithWait			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:352:				promptReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:376:				runReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:393:				findDtvemExecutable			0.0%
github.com/dtvem/dtvem/src/cmd/uninstall.go:123:				init					100.0%
github.com/dtvem/dtvem/src/cmd/version.go:22:					init					100.0%
github.com/dtvem/dtvem/src/cmd/where.go:110:					init					100.0%
github.com/dtvem/dtvem/src/cmd/which.go:101:					mapCommandToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:121:					adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:165:					init					100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:23:				DefaultPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:31:				initPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:42:				getRootDir				83.3%
github.com/dtvem/dtvem/src/internal/config/paths.go:59:				RuntimeVersionPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:65:				GlobalConfigPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:71:				ShimPath				75.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:81:				EnsureDirectories			0.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:100:			LocalConfigDir				75.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:109:			LocalConfigPath				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:19:			ResolveVersion				0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:37:			findLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:80:			readVersionFile				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:101:			ReadAllRuntimes				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:117:			FindLocalRuntimesFile			93.8%
github.com/dtvem/dtvem/src/internal/config/version.go:155:			GlobalVersion				75.0%
github.com/dtvem/dtvem/src/internal/config/version.go:167:			SetGlobalVersion			84.6%
github.com/dtvem/dtvem/src/internal/config/version.go:198:			SetLocalVersion				64.3%
github.com/dtvem/dtvem/src/internal/download/download.go:15:			File					0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:61:			FileWithProgress			0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:114:			Read					0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:15:			ExtractZip				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:38:			extractZipFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:77:			ExtractTarGz				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:118:			extractTarFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:167:			StripTopLevelDir			0.0%
github.com/dtvem/dtvem/src/internal/path/path.go:12:				IsInPath				90.9%
github.com/dtvem/dtvem/src/internal/path/path.go:39:				ShimsDir				75.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:17:			DetectShell				0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:28:			GetShellConfigFile			0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:56:			AddToPath				0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:132:			containsPathModification		0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:21:	RunAllTests				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:37:	TestName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:55:	TestDisplayName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:68:	TestGetInstallPath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:95:	TestGetExecutablePath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:116:	TestGetGlobalPackages			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:136:	TestGetManualPackageInstallCommand	0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:184:	TestListInstalled			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:207:	TestListAvailable			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:229:	TestIsInstalled				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:250:	TestGetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:261:	TestGetLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:272:	TestGetCurrentVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:283:	TestInstallGlobalPackages		0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:20:			NewRegistry				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:27:			Register				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:41:			Get					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:54:			List					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:66:			GetAll					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:78:			Has					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:87:			Unregister				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:102:			Register				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:107:			Get					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:112:			List					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:117:			GetAll					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:122:			Has					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:127:			Unregister				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:132:			GetRegistry				0.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:17:			NewVersion				100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:26:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:31:			Equal					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:43:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:69:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:74:			ParseVersions				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:22:				NewManager				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:37:				findShimExecutable			0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:65:				CreateShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:84:				CreateShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:94:				RemoveShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:105:			ListShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:134:			Rehash					0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:212:			copyFile				92.3%
github.com/dtvem/dtvem/src/internal/shim/manager.go:240:			RuntimeShims				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:253:			findExecutables				0.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:5:			ContainsSubstring			100.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:11:			hasSubstring				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:28:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:34:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:40:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:46:				Info					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:52:				Progress				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:58:				Println					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:63:				Printf					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:68:				Header					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:75:				Highlight				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:80:				HighlightVersion			100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:90:				PromptInstall				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:121:				PromptInstallMissing			0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:15:				NewSpinner				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:26:				Start					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:31:				Stop					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:36:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:42:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:48:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:54:				UpdateMessage				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:60:				WithSpinner				0.0%
github.com/dtvem/dtvem/src/main.go:11:						main					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:29:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:34:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:39:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:44:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:49:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:136:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:175:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:189:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:195:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:226:			ListAvailable				83.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:271:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:294:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:307:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:312:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:317:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:322:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:332:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:337:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:342:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:401:			getNodeVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:416:			getNodeInstallLocations			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:444:			findNvmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:501:			findFnmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:549:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:588:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:620:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:628:			findNpmInInstall			42.9%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:662:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:693:			init					50.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:32:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:37:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:42:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:47:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:53:			downloadAndExtract			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:96:			determineSourceDir			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:113:			installPipIfNeeded			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:130:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:188:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:225:			getStandaloneBuildURL			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:269:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:283:			installPip				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:321:			enableSitePackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:351:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:357:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:388:			ListAvailable				90.6%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:456:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:481:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:494:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:499:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:504:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:509:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:519:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:524:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:529:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:581:			getPythonVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:600:			getPythonInstallLocations		0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:643:			findPyenvVersions			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:705:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:742:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:774:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:782:			findPipInInstall			54.5%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:814:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:831:			init					50.0%

📊 Full HTML coverage report available in workflow artifacts

@github-actions
Copy link
Contributor

github-actions bot commented Dec 9, 2025

Test Coverage Report - macos-amd64

Total Coverage: 17.5%

Coverage by Package

github.com/dtvem/dtvem/src/cmd/current.go:39:					showAllVersions				0.0%
github.com/dtvem/dtvem/src/cmd/current.go:97:					showSingleVersion			0.0%
github.com/dtvem/dtvem/src/cmd/current.go:129:					init					100.0%
github.com/dtvem/dtvem/src/cmd/freeze.go:175:					init					100.0%
github.com/dtvem/dtvem/src/cmd/global.go:10:					setRuntimeVersion			0.0%
github.com/dtvem/dtvem/src/cmd/global.go:53:					init					100.0%
github.com/dtvem/dtvem/src/cmd/init.go:55:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:47:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:53:					installSingle				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:79:					buildInstallTasks			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:104:					isVersionInstalled			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:120:					showInstallationPlan			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:137:					promptInstallConfirmation		0.0%
github.com/dtvem/dtvem/src/cmd/install.go:153:					executeInstalls				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:177:					showInstallSummary			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:198:					installBulk				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:29:					listAllRuntimes				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:70:					listSingleRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/list.go:102:					init					100.0%
github.com/dtvem/dtvem/src/cmd/listall.go:125:					init					100.0%
github.com/dtvem/dtvem/src/cmd/local.go:34:					init					100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:214:					parseSelection				100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:240:					promptCleanupOldInstallations		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:301:					getUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:333:					getSystemUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:358:					executeUninstallCommand			0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:373:					init					100.0%
github.com/dtvem/dtvem/src/cmd/reshim.go:51:					init					100.0%
github.com/dtvem/dtvem/src/cmd/root.go:31:					Execute					0.0%
github.com/dtvem/dtvem/src/cmd/root.go:38:					init					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:23:					main					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:30:					runShim					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:112:				handleNoConfiguredVersion		0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:147:				findInSystemPath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:199:				shouldAutoInstall			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:204:				getShimName				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:218:				mapShimToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:247:				adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:295:				executeCommand				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:321:				executeCommandWithWait			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:352:				promptReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:376:				runReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:393:				findDtvemExecutable			0.0%
github.com/dtvem/dtvem/src/cmd/uninstall.go:123:				init					100.0%
github.com/dtvem/dtvem/src/cmd/version.go:22:					init					100.0%
github.com/dtvem/dtvem/src/cmd/where.go:110:					init					100.0%
github.com/dtvem/dtvem/src/cmd/which.go:101:					mapCommandToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:121:					adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:165:					init					100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:23:				DefaultPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:31:				initPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:42:				getRootDir				83.3%
github.com/dtvem/dtvem/src/internal/config/paths.go:59:				RuntimeVersionPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:65:				GlobalConfigPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:71:				ShimPath				75.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:81:				EnsureDirectories			0.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:100:			LocalConfigDir				75.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:109:			LocalConfigPath				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:19:			ResolveVersion				0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:37:			findLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:80:			readVersionFile				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:101:			ReadAllRuntimes				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:117:			FindLocalRuntimesFile			93.8%
github.com/dtvem/dtvem/src/internal/config/version.go:155:			GlobalVersion				75.0%
github.com/dtvem/dtvem/src/internal/config/version.go:167:			SetGlobalVersion			84.6%
github.com/dtvem/dtvem/src/internal/config/version.go:198:			SetLocalVersion				64.3%
github.com/dtvem/dtvem/src/internal/download/download.go:15:			File					0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:61:			FileWithProgress			0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:114:			Read					0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:15:			ExtractZip				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:38:			extractZipFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:77:			ExtractTarGz				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:118:			extractTarFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:167:			StripTopLevelDir			0.0%
github.com/dtvem/dtvem/src/internal/path/path.go:12:				IsInPath				90.9%
github.com/dtvem/dtvem/src/internal/path/path.go:39:				ShimsDir				75.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:17:			DetectShell				0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:28:			GetShellConfigFile			0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:56:			AddToPath				0.0%
github.com/dtvem/dtvem/src/internal/path/path_unix.go:132:			containsPathModification		0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:21:	RunAllTests				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:37:	TestName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:55:	TestDisplayName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:68:	TestGetInstallPath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:95:	TestGetExecutablePath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:116:	TestGetGlobalPackages			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:136:	TestGetManualPackageInstallCommand	0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:184:	TestListInstalled			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:207:	TestListAvailable			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:229:	TestIsInstalled				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:250:	TestGetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:261:	TestGetLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:272:	TestGetCurrentVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:283:	TestInstallGlobalPackages		0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:20:			NewRegistry				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:27:			Register				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:41:			Get					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:54:			List					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:66:			GetAll					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:78:			Has					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:87:			Unregister				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:102:			Register				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:107:			Get					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:112:			List					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:117:			GetAll					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:122:			Has					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:127:			Unregister				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:132:			GetRegistry				0.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:17:			NewVersion				100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:26:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:31:			Equal					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:43:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:69:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:74:			ParseVersions				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:22:				NewManager				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:37:				findShimExecutable			0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:65:				CreateShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:84:				CreateShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:94:				RemoveShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:105:			ListShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:134:			Rehash					0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:212:			copyFile				92.3%
github.com/dtvem/dtvem/src/internal/shim/manager.go:240:			RuntimeShims				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:253:			findExecutables				0.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:5:			ContainsSubstring			100.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:11:			hasSubstring				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:28:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:34:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:40:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:46:				Info					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:52:				Progress				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:58:				Println					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:63:				Printf					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:68:				Header					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:75:				Highlight				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:80:				HighlightVersion			100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:90:				PromptInstall				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:121:				PromptInstallMissing			0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:15:				NewSpinner				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:26:				Start					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:31:				Stop					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:36:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:42:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:48:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:54:				UpdateMessage				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:60:				WithSpinner				0.0%
github.com/dtvem/dtvem/src/main.go:11:						main					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:29:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:34:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:39:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:44:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:49:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:136:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:175:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:189:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:195:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:226:			ListAvailable				83.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:271:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:294:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:307:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:312:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:317:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:322:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:332:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:337:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:342:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:401:			getNodeVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:416:			getNodeInstallLocations			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:444:			findNvmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:501:			findFnmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:549:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:588:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:620:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:628:			findNpmInInstall			42.9%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:662:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:693:			init					50.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:32:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:37:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:42:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:47:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:53:			downloadAndExtract			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:96:			determineSourceDir			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:113:			installPipIfNeeded			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:130:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:188:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:225:			getStandaloneBuildURL			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:269:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:283:			installPip				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:321:			enableSitePackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:351:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:357:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:388:			ListAvailable				90.6%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:456:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:481:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:494:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:499:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:504:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:509:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:519:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:524:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:529:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:581:			getPythonVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:600:			getPythonInstallLocations		0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:643:			findPyenvVersions			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:705:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:742:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:774:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:782:			findPipInInstall			54.5%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:814:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:831:			init					50.0%

📊 Full HTML coverage report available in workflow artifacts

@github-actions
Copy link
Contributor

github-actions bot commented Dec 9, 2025

Test Coverage Report - windows-amd64

Total Coverage: 17.4%

Coverage by Package

github.com/dtvem/dtvem/src/cmd/current.go:39:					showAllVersions				0.0%
github.com/dtvem/dtvem/src/cmd/current.go:97:					showSingleVersion			0.0%
github.com/dtvem/dtvem/src/cmd/current.go:129:					init					100.0%
github.com/dtvem/dtvem/src/cmd/freeze.go:175:					init					100.0%
github.com/dtvem/dtvem/src/cmd/global.go:10:					setRuntimeVersion			0.0%
github.com/dtvem/dtvem/src/cmd/global.go:53:					init					100.0%
github.com/dtvem/dtvem/src/cmd/init.go:55:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:47:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:53:					installSingle				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:79:					buildInstallTasks			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:104:					isVersionInstalled			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:120:					showInstallationPlan			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:137:					promptInstallConfirmation		0.0%
github.com/dtvem/dtvem/src/cmd/install.go:153:					executeInstalls				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:177:					showInstallSummary			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:198:					installBulk				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:29:					listAllRuntimes				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:70:					listSingleRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/list.go:102:					init					100.0%
github.com/dtvem/dtvem/src/cmd/listall.go:125:					init					100.0%
github.com/dtvem/dtvem/src/cmd/local.go:34:					init					100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:214:					parseSelection				100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:240:					promptCleanupOldInstallations		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:301:					getUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:333:					getSystemUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:358:					executeUninstallCommand			0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:373:					init					100.0%
github.com/dtvem/dtvem/src/cmd/reshim.go:51:					init					100.0%
github.com/dtvem/dtvem/src/cmd/root.go:31:					Execute					0.0%
github.com/dtvem/dtvem/src/cmd/root.go:38:					init					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:23:					main					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:30:					runShim					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:112:				handleNoConfiguredVersion		0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:147:				findInSystemPath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:199:				shouldAutoInstall			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:204:				getShimName				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:218:				mapShimToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:247:				adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:295:				executeCommand				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:321:				executeCommandWithWait			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:352:				promptReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:376:				runReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:393:				findDtvemExecutable			0.0%
github.com/dtvem/dtvem/src/cmd/uninstall.go:123:				init					100.0%
github.com/dtvem/dtvem/src/cmd/version.go:22:					init					100.0%
github.com/dtvem/dtvem/src/cmd/where.go:110:					init					100.0%
github.com/dtvem/dtvem/src/cmd/which.go:101:					mapCommandToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:121:					adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:165:					init					100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:23:				DefaultPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:31:				initPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:42:				getRootDir				83.3%
github.com/dtvem/dtvem/src/internal/config/paths.go:59:				RuntimeVersionPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:65:				GlobalConfigPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:71:				ShimPath				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:81:				EnsureDirectories			0.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:100:			LocalConfigDir				75.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:109:			LocalConfigPath				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:19:			ResolveVersion				0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:37:			findLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:80:			readVersionFile				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:101:			ReadAllRuntimes				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:117:			FindLocalRuntimesFile			93.8%
github.com/dtvem/dtvem/src/internal/config/version.go:155:			GlobalVersion				75.0%
github.com/dtvem/dtvem/src/internal/config/version.go:167:			SetGlobalVersion			84.6%
github.com/dtvem/dtvem/src/internal/config/version.go:198:			SetLocalVersion				64.3%
github.com/dtvem/dtvem/src/internal/download/download.go:15:			File					0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:61:			FileWithProgress			0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:114:			Read					0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:15:			ExtractZip				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:38:			extractZipFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:77:			ExtractTarGz				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:118:			extractTarFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:167:			StripTopLevelDir			0.0%
github.com/dtvem/dtvem/src/internal/path/path.go:12:				IsInPath				100.0%
github.com/dtvem/dtvem/src/internal/path/path.go:39:				ShimsDir				75.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:34:			AddToPath				0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:57:			checkSystemPath				0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:89:			isAdmin					0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:98:			promptForElevation			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:129:			relaunchElevated			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:156:			modifySystemPath			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:210:			broadcastSettingChange			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:224:			DetectShell				0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:233:			GetShellConfigFile			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:239:			IsSetxAvailable				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:21:	RunAllTests				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:37:	TestName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:55:	TestDisplayName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:68:	TestGetInstallPath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:95:	TestGetExecutablePath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:116:	TestGetGlobalPackages			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:136:	TestGetManualPackageInstallCommand	0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:184:	TestListInstalled			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:207:	TestListAvailable			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:229:	TestIsInstalled				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:250:	TestGetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:261:	TestGetLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:272:	TestGetCurrentVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:283:	TestInstallGlobalPackages		0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:20:			NewRegistry				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:27:			Register				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:41:			Get					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:54:			List					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:66:			GetAll					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:78:			Has					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:87:			Unregister				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:102:			Register				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:107:			Get					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:112:			List					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:117:			GetAll					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:122:			Has					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:127:			Unregister				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:132:			GetRegistry				0.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:17:			NewVersion				100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:26:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:31:			Equal					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:43:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:69:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:74:			ParseVersions				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:22:				NewManager				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:37:				findShimExecutable			0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:65:				CreateShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:84:				CreateShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:94:				RemoveShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:105:			ListShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:134:			Rehash					0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:212:			copyFile				92.3%
github.com/dtvem/dtvem/src/internal/shim/manager.go:240:			RuntimeShims				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:253:			findExecutables				0.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:5:			ContainsSubstring			100.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:11:			hasSubstring				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:28:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:34:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:40:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:46:				Info					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:52:				Progress				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:58:				Println					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:63:				Printf					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:68:				Header					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:75:				Highlight				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:80:				HighlightVersion			100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:90:				PromptInstall				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:121:				PromptInstallMissing			0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:15:				NewSpinner				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:26:				Start					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:31:				Stop					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:36:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:42:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:48:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:54:				UpdateMessage				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:60:				WithSpinner				0.0%
github.com/dtvem/dtvem/src/main.go:11:						main					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:29:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:34:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:39:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:44:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:49:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:136:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:175:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:189:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:195:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:226:			ListAvailable				83.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:271:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:294:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:307:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:312:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:317:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:322:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:332:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:337:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:342:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:401:			getNodeVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:416:			getNodeInstallLocations			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:444:			findNvmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:501:			findFnmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:549:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:588:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:620:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:628:			findNpmInInstall			57.1%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:662:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:693:			init					50.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:32:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:37:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:42:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:47:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:53:			downloadAndExtract			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:96:			determineSourceDir			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:113:			installPipIfNeeded			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:130:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:188:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:225:			getStandaloneBuildURL			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:269:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:283:			installPip				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:321:			enableSitePackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:351:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:357:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:388:			ListAvailable				90.6%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:456:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:481:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:494:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:499:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:504:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:509:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:519:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:524:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:529:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:581:			getPythonVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:600:			getPythonInstallLocations		0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:643:			findPyenvVersions			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:705:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:742:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:774:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:782:			findPipInInstall			54.5%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:814:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:831:			init					50.0%

📊 Full HTML coverage report available in workflow artifacts

@github-actions
Copy link
Contributor

github-actions bot commented Dec 9, 2025

Test Coverage Report - windows-arm64

Total Coverage: 17.4%

Coverage by Package

github.com/dtvem/dtvem/src/cmd/current.go:39:					showAllVersions				0.0%
github.com/dtvem/dtvem/src/cmd/current.go:97:					showSingleVersion			0.0%
github.com/dtvem/dtvem/src/cmd/current.go:129:					init					100.0%
github.com/dtvem/dtvem/src/cmd/freeze.go:175:					init					100.0%
github.com/dtvem/dtvem/src/cmd/global.go:10:					setRuntimeVersion			0.0%
github.com/dtvem/dtvem/src/cmd/global.go:53:					init					100.0%
github.com/dtvem/dtvem/src/cmd/init.go:55:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:47:					init					100.0%
github.com/dtvem/dtvem/src/cmd/install.go:53:					installSingle				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:79:					buildInstallTasks			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:104:					isVersionInstalled			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:120:					showInstallationPlan			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:137:					promptInstallConfirmation		0.0%
github.com/dtvem/dtvem/src/cmd/install.go:153:					executeInstalls				0.0%
github.com/dtvem/dtvem/src/cmd/install.go:177:					showInstallSummary			0.0%
github.com/dtvem/dtvem/src/cmd/install.go:198:					installBulk				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:29:					listAllRuntimes				0.0%
github.com/dtvem/dtvem/src/cmd/list.go:70:					listSingleRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/list.go:102:					init					100.0%
github.com/dtvem/dtvem/src/cmd/listall.go:125:					init					100.0%
github.com/dtvem/dtvem/src/cmd/local.go:34:					init					100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:214:					parseSelection				100.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:240:					promptCleanupOldInstallations		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:301:					getUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:333:					getSystemUninstallInstructions		0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:358:					executeUninstallCommand			0.0%
github.com/dtvem/dtvem/src/cmd/migrate.go:373:					init					100.0%
github.com/dtvem/dtvem/src/cmd/reshim.go:51:					init					100.0%
github.com/dtvem/dtvem/src/cmd/root.go:31:					Execute					0.0%
github.com/dtvem/dtvem/src/cmd/root.go:38:					init					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:23:					main					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:30:					runShim					0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:112:				handleNoConfiguredVersion		0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:147:				findInSystemPath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:199:				shouldAutoInstall			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:204:				getShimName				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:218:				mapShimToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:247:				adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:295:				executeCommand				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:321:				executeCommandWithWait			0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:352:				promptReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:376:				runReshim				0.0%
github.com/dtvem/dtvem/src/cmd/shim/main.go:393:				findDtvemExecutable			0.0%
github.com/dtvem/dtvem/src/cmd/uninstall.go:123:				init					100.0%
github.com/dtvem/dtvem/src/cmd/version.go:22:					init					100.0%
github.com/dtvem/dtvem/src/cmd/where.go:110:					init					100.0%
github.com/dtvem/dtvem/src/cmd/which.go:101:					mapCommandToRuntime			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:121:					adjustExecutablePath			0.0%
github.com/dtvem/dtvem/src/cmd/which.go:165:					init					100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:23:				DefaultPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:31:				initPaths				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:42:				getRootDir				83.3%
github.com/dtvem/dtvem/src/internal/config/paths.go:59:				RuntimeVersionPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:65:				GlobalConfigPath			100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:71:				ShimPath				100.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:81:				EnsureDirectories			0.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:100:			LocalConfigDir				75.0%
github.com/dtvem/dtvem/src/internal/config/paths.go:109:			LocalConfigPath				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:19:			ResolveVersion				0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:37:			findLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/config/version.go:80:			readVersionFile				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:101:			ReadAllRuntimes				100.0%
github.com/dtvem/dtvem/src/internal/config/version.go:117:			FindLocalRuntimesFile			93.8%
github.com/dtvem/dtvem/src/internal/config/version.go:155:			GlobalVersion				75.0%
github.com/dtvem/dtvem/src/internal/config/version.go:167:			SetGlobalVersion			84.6%
github.com/dtvem/dtvem/src/internal/config/version.go:198:			SetLocalVersion				64.3%
github.com/dtvem/dtvem/src/internal/download/download.go:15:			File					0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:61:			FileWithProgress			0.0%
github.com/dtvem/dtvem/src/internal/download/download.go:114:			Read					0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:15:			ExtractZip				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:38:			extractZipFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:77:			ExtractTarGz				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:118:			extractTarFile				0.0%
github.com/dtvem/dtvem/src/internal/download/extract.go:167:			StripTopLevelDir			0.0%
github.com/dtvem/dtvem/src/internal/path/path.go:12:				IsInPath				100.0%
github.com/dtvem/dtvem/src/internal/path/path.go:39:				ShimsDir				75.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:34:			AddToPath				0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:57:			checkSystemPath				0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:89:			isAdmin					0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:98:			promptForElevation			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:129:			relaunchElevated			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:156:			modifySystemPath			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:210:			broadcastSettingChange			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:224:			DetectShell				0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:233:			GetShellConfigFile			0.0%
github.com/dtvem/dtvem/src/internal/path/path_windows.go:239:			IsSetxAvailable				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:21:	RunAllTests				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:37:	TestName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:55:	TestDisplayName				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:68:	TestGetInstallPath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:95:	TestGetExecutablePath			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:116:	TestGetGlobalPackages			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:136:	TestGetManualPackageInstallCommand	0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:184:	TestListInstalled			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:207:	TestListAvailable			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:229:	TestIsInstalled				0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:250:	TestGetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:261:	TestGetLocalVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:272:	TestGetCurrentVersion			0.0%
github.com/dtvem/dtvem/src/internal/runtime/provider_test_harness.go:283:	TestInstallGlobalPackages		0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:20:			NewRegistry				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:27:			Register				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:41:			Get					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:54:			List					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:66:			GetAll					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:78:			Has					100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:87:			Unregister				100.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:102:			Register				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:107:			Get					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:112:			List					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:117:			GetAll					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:122:			Has					0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:127:			Unregister				0.0%
github.com/dtvem/dtvem/src/internal/runtime/registry.go:132:			GetRegistry				0.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:17:			NewVersion				100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:26:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:31:			Equal					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:43:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:69:			String					100.0%
github.com/dtvem/dtvem/src/internal/runtime/version.go:74:			ParseVersions				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:22:				NewManager				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:37:				findShimExecutable			0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:65:				CreateShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:84:				CreateShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:94:				RemoveShim				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:105:			ListShims				0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:134:			Rehash					0.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:212:			copyFile				92.3%
github.com/dtvem/dtvem/src/internal/shim/manager.go:240:			RuntimeShims				100.0%
github.com/dtvem/dtvem/src/internal/shim/manager.go:253:			findExecutables				0.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:5:			ContainsSubstring			100.0%
github.com/dtvem/dtvem/src/internal/testutil/strings.go:11:			hasSubstring				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:28:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:34:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:40:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:46:				Info					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:52:				Progress				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:58:				Println					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:63:				Printf					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:68:				Header					0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:75:				Highlight				100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:80:				HighlightVersion			100.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:90:				PromptInstall				0.0%
github.com/dtvem/dtvem/src/internal/ui/output.go:121:				PromptInstallMissing			0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:15:				NewSpinner				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:26:				Start					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:31:				Stop					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:36:				Success					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:42:				Error					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:48:				Warning					0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:54:				UpdateMessage				0.0%
github.com/dtvem/dtvem/src/internal/ui/spinner.go:60:				WithSpinner				0.0%
github.com/dtvem/dtvem/src/main.go:11:						main					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:29:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:34:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:39:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:44:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:49:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:136:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:175:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:189:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:195:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:226:			ListAvailable				83.3%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:271:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:294:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:307:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:312:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:317:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:322:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:332:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:337:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:342:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:401:			getNodeVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:416:			getNodeInstallLocations			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:444:			findNvmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:501:			findFnmVersions				0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:549:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:588:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:620:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:628:			findNpmInInstall			57.1%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:662:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/node/provider.go:693:			init					50.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:32:			NewProvider				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:37:			Name					100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:42:			DisplayName				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:47:			Shims					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:53:			downloadAndExtract			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:96:			determineSourceDir			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:113:			installPipIfNeeded			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:130:			Install					0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:188:			getDownloadURL				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:225:			getStandaloneBuildURL			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:269:			createShims				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:283:			installPip				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:321:			enableSitePackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:351:			Uninstall				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:357:			ListInstalled				33.3%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:388:			ListAvailable				90.6%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:456:			ExecutablePath				70.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:481:			IsInstalled				57.1%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:494:			InstallPath				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:499:			GlobalVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:504:			SetGlobalVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:509:			LocalVersion				75.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:519:			SetLocalVersion				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:524:			CurrentVersion				100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:529:			DetectInstalled				0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:581:			getPythonVersion			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:600:			getPythonInstallLocations		0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:643:			findPyenvVersions			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:705:			GlobalPackages				18.8%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:742:			InstallGlobalPackages			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:774:			ManualPackageInstallCommand		100.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:782:			findPipInInstall			54.5%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:814:			ShouldReshimAfter			0.0%
github.com/dtvem/dtvem/src/runtimes/python/provider.go:831:			init					50.0%

📊 Full HTML coverage report available in workflow artifacts

Windows combines PATH as System + User, meaning system installations
always take priority. This fix modifies System PATH instead of User PATH
to ensure dtvem shims take priority over system-level installations.

Changes:
- Modify System PATH (HKLM) instead of User PATH (HKCU) on Windows
- Check for admin privileges before attempting modification
- Prompt for UAC elevation if not already elevated
- Use ShellExecute with "runas" verb to re-launch with elevation
- Detect if shims already exist but not at beginning and offer to fix
- Simplify init.go to delegate all PATH logic to AddToPath

Unix/macOS behavior unchanged (prepend to shell config files).

Fixes #55

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@CalvinAllen CalvinAllen force-pushed the fix/windows-system-path branch from 8a33ce0 to c691266 Compare December 9, 2025 19:42
@CalvinAllen CalvinAllen merged commit 92c5247 into main Dec 9, 2025
8 checks passed
@CalvinAllen CalvinAllen deleted the fix/windows-system-path branch December 9, 2025 19:57
CalvinAllen added a commit that referenced this pull request Dec 9, 2025
fix(init): use System PATH on Windows for correct priority
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

fix(init): use System PATH on Windows for correct priority

1 participant