@@ -468,6 +468,55 @@ def test_install_kustomize(config: Config, capfd, tmp_path, github_token):
468468 assert outlines [4 ] == f"GITHUB_TOKEN={ github_token } "
469469
470470
471+ @patch .object (tools , "do_install" )
472+ @pytest .mark .parametrize (
473+ "managed,output" ,
474+ [
475+ (
476+ {
477+ "helm" : "2025-07-11T11:04:40" ,
478+ "jb" : "2025-07-11T10:58:11" ,
479+ "kustomize" : "2025-07-11T11:05:05" ,
480+ },
481+ "All required tools are already managed by Commodore.\n \n "
482+ + "Use `commodore tool upgrade --all` to upgrade all tools "
483+ + "to their latest versions.\n " ,
484+ ),
485+ (
486+ {"jb" : "2025-07-11T10:58:11" },
487+ "Installing tool helm\n "
488+ + "Tool jb already managed, skipping...\n "
489+ + "Installing tool kustomize\n " ,
490+ ),
491+ ],
492+ )
493+ def test_install_missing_tools (
494+ mock_do_install : MagicMock ,
495+ config : Config ,
496+ capsys ,
497+ managed : dict [str , str ],
498+ output : str ,
499+ ):
500+ config .managed_tools = managed
501+
502+ tools .install_missing_tools (config )
503+
504+ assert mock_do_install .call_count == len (tools .REQUIRED_TOOLS ) - len (managed )
505+
506+ out , _ = capsys .readouterr ()
507+ assert out == output
508+
509+
510+ def test_install_script_invalid_version (config : Config ):
511+ with pytest .raises (ValueError ) as exc :
512+ tools .install_script (config , "jb" , "v0.6.3" )
513+
514+ assert (
515+ str (exc .value )
516+ == "Function install_script() expects parameter `version` to not be prefixed with 'v'."
517+ )
518+
519+
471520def test_upgrade_tool_not_installed (config : Config , capsys ):
472521 config .managed_tools = {}
473522 tools .upgrade_tool (config , "jb" , None )
@@ -510,3 +559,38 @@ def do_inst(_config: Config, tool: str, version: Optional[str]):
510559 tools .upgrade_tool (config , "jb" , None )
511560
512561 assert jb_file .exists () != managed_jb
562+
563+
564+ @patch .object (tools , "do_upgrade" )
565+ @pytest .mark .parametrize (
566+ "managed,output" ,
567+ [
568+ (
569+ {},
570+ "No tools managed by Commodore yet.\n \n "
571+ + "Use `commodore tool install --missing` to install the latest "
572+ + "version for all required tools.\n " ,
573+ ),
574+ (
575+ {"jb" : "2025-07-11T10:58:11" },
576+ "Tool helm not managed, skipping...\n "
577+ + "Upgrading tool jb\n "
578+ + "Tool kustomize not managed, skipping...\n " ,
579+ ),
580+ ],
581+ )
582+ def test_upgrade_all_tools (
583+ mock_do_upgrade : MagicMock ,
584+ config : Config ,
585+ capsys ,
586+ managed : dict [str , str ],
587+ output : str ,
588+ ):
589+ config .managed_tools = managed
590+
591+ tools .upgrade_all_tools (config )
592+
593+ assert mock_do_upgrade .call_count == len (managed )
594+
595+ out , _ = capsys .readouterr ()
596+ assert out == output
0 commit comments