def record_telemetry_settings( main_settings, state_dir, is_enabled, ): # We want to update the user's machrc file. However, the main settings object # contains config from "$topsrcdir/machrc" (if it exists) which we don't want # to accidentally include. So, we have to create a brand new mozbuild-specific # settings, update it, then write to it. settings_path = os.path.join(state_dir, "machrc") file_settings = ConfigSettings() file_settings.register_provider(TelemetrySettings) try: file_settings.load_file(settings_path) except configparser.Error as e: print( "Your mach configuration file at `{path}` cannot be parsed:\n{error}".format( path=settings_path, error=e ) ) return file_settings.mach_telemetry.is_enabled = is_enabled file_settings.mach_telemetry.is_set_up = True with open(settings_path, "w") as f: file_settings.write(f) # Telemetry will want this elsewhere in the mach process, so we'll slap the # new values on the main settings object. main_settings.mach_telemetry.is_enabled = is_enabled main_settings.mach_telemetry.is_set_up = True
def test_file_reading_single(self): temp = NamedTemporaryFile(mode='wt') temp.write(CONFIG1) temp.flush() s = ConfigSettings() s.register_provider(Provider1) s.load_file(temp.name) self.assertEqual(s.foo.bar, 'bar_value')
def test_file_writing(self): s = ConfigSettings() s.register_provider(Provider2) s.a.string = 'foo' s.a.boolean = False temp = NamedTemporaryFile('wt') s.write(temp) temp.flush() s2 = ConfigSettings() s2.register_provider(Provider2) s2.load_file(temp.name) self.assertEqual(s.a.string, s2.a.string) self.assertEqual(s.a.boolean, s2.a.boolean)
def test_file_reading_missing(self): """Missing files should silently be ignored.""" s = ConfigSettings() s.load_file('/tmp/foo.ini')
def read(path): s = ConfigSettings() s.register_provider(TelemetrySettings) s.register_provider(OtherSettings) s.load_file(path) return s