49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
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()
|