From 77b1551b1fa2c71ddee17d8583afd00f016afb99 Mon Sep 17 00:00:00 2001 From: Mitch Burton Date: Tue, 25 Jul 2023 12:23:22 -0600 Subject: [PATCH] use utf-8 for client config file --- landscape/client/configuration.py | 2 ++ landscape/client/tests/test_configuration.py | 21 ++++++++++++++++++++ landscape/lib/config.py | 1 + 3 files changed, 24 insertions(+) diff --git a/landscape/client/configuration.py b/landscape/client/configuration.py index 278da7cf1..558679d49 100644 --- a/landscape/client/configuration.py +++ b/landscape/client/configuration.py @@ -107,6 +107,8 @@ class LandscapeSetupConfiguration(BrokerConfiguration): "import_from", ) + encoding = "utf-8" + def _load_external_options(self): """Handle the --import parameter. diff --git a/landscape/client/tests/test_configuration.py b/landscape/client/tests/test_configuration.py index f93007d8e..890f5e35d 100644 --- a/landscape/client/tests/test_configuration.py +++ b/landscape/client/tests/test_configuration.py @@ -1196,6 +1196,27 @@ def test_silent_setup_no_register_with_default_preseed_params( "urgent_exchange_interval = 60\n", ) + @mock.patch("landscape.client.configuration.SysVConfig") + def test_silent_setup_unicode_computer_title(self, mock_sysvconfig): + """ + Setup accepts a non-ascii computer title and registration is + attempted. + """ + config = self.get_config(["--silent", "-a", "account", "-t", "mélody"]) + setup(config) + mock_sysvconfig().set_start_on_boot.assert_called_once_with(True) + mock_sysvconfig().restart_landscape.assert_called_once_with() + self.assertConfigEqual( + self.get_content(config), + f"""\ +[client] +computer_title = mélody +data_path = {config.data_path} +account_name = account +url = https://landscape.canonical.com/message-system +""", + ) + @mock.patch("landscape.client.configuration.SysVConfig") def test_silent_setup_without_computer_title(self, mock_sysvconfig): """A computer title is required.""" diff --git a/landscape/lib/config.py b/landscape/lib/config.py index 810dfc003..6b0fe6b05 100644 --- a/landscape/lib/config.py +++ b/landscape/lib/config.py @@ -242,6 +242,7 @@ def _get_config_object(self, alternative_config=None): list_values=False, raise_errors=False, write_empty_values=True, + encoding=getattr(self, "encoding", None), ) except ConfigObjError as e: logger = getLogger()