import unittest from pathlib import Path from deploy_tool.path_manager import EnvironmentUpdate, build_environment_update, merge_path_entries, apply_user_environment class FakeRegistry: def __init__(self): self.values = {} self.broadcasted = False def get_value(self, name): return self.values.get(name, "") def set_value(self, name, value): self.values[name] = value def broadcast_change(self): self.broadcasted = True class PathManagerTests(unittest.TestCase): def test_merge_path_entries_appends_without_duplicates(self): current = r"C:\Windows;C:\Java\bin" merged = merge_path_entries(current, [Path(r"C:\Java\bin"), Path(r"C:\mysql\bin")]) self.assertEqual(merged, r"C:\Windows;C:\Java\bin;C:\mysql\bin") def test_build_environment_update_sets_java_home_from_bin(self): update = build_environment_update("JDK", Path(r"C:\Program Files\Eclipse Adoptium\jdk-8\bin\java.exe")) self.assertEqual(update.path_entries, [Path(r"C:\Program Files\Eclipse Adoptium\jdk-8\bin")]) self.assertEqual(update.env_vars["JAVA_HOME"], r"C:\Program Files\Eclipse Adoptium\jdk-8") def test_apply_user_environment_writes_path_and_env_vars(self): registry = FakeRegistry() registry.values["Path"] = r"C:\Windows" update = EnvironmentUpdate(path_entries=[Path(r"C:\Tools\bin")], env_vars={"JAVA_HOME": r"C:\Java"}) apply_user_environment(update, registry) self.assertEqual(registry.values["Path"], r"C:\Windows;C:\Tools\bin") self.assertEqual(registry.values["JAVA_HOME"], r"C:\Java") self.assertTrue(registry.broadcasted) if __name__ == "__main__": unittest.main()