fix: restore usage statistics after core upgrades
- Persist explicit opt-out in the app's config.toml - Remove usage_statistics_disabled when users re-enable statistics - Enable statistics on core startup unless explicitly disabled - Add regression tests for v7/v8 compatibility and opt-out persistence
This commit is contained in:
1 parent
c24bb1556b
commit
dccc45f57d
6 files changed
+60
-5
No files matched your search
@@ -1,6 +1,39 @@
|
||||
use super::support::*;
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn usage_statistics_opt_out_is_removed_when_reenabled() {
|
||||
let home = agent_test_home("usage-opt-out");
|
||||
let path = home.join("config.toml");
|
||||
let mut config = GuiConfigFile::default();
|
||||
config.usage_statistics_disabled = Some(true);
|
||||
write_gui_config_to_path(&config, &path).unwrap();
|
||||
let content = fs::read_to_string(&path).unwrap();
|
||||
assert!(content.contains("usage_statistics_disabled = true"));
|
||||
let restored: GuiConfigFile = toml::from_str(&content).unwrap();
|
||||
assert_eq!(restored.usage_statistics_disabled, Some(true));
|
||||
config.usage_statistics_disabled = None;
|
||||
write_gui_config_to_path(&config, &path).unwrap();
|
||||
assert!(!fs::read_to_string(&path).unwrap().contains("usage_statistics_disabled"));
|
||||
fs::remove_dir_all(home).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn usage_statistics_startup_repairs_stale_values_unless_explicitly_disabled() {
|
||||
for preference in ["", "usage_statistics_disabled = false\n", "usage_statistics_disabled = true\n"] {
|
||||
let config: GuiConfigFile = toml::from_str(&format!("usage-statistics-enabled = false\n{preference}")).unwrap();
|
||||
for template in ["usage-statistics-enabled: false\n", "config-version: 8\nobservability: {usage: {usage-statistics-enabled: false}}\n"] {
|
||||
for current in [None, Some("usage-statistics-enabled: false\n"), Some(template)] {
|
||||
let merged = merge_core_config_yaml(template, current, &config).unwrap();
|
||||
let document = serde_norway::from_str(&merged).unwrap();
|
||||
let settings = core_config_settings_from_value(&document).unwrap();
|
||||
assert_eq!(settings.usage_statistics_enabled, config.usage_statistics_disabled != Some(true));
|
||||
assert!(!merged.contains("usage_statistics_disabled"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn gui_field_edit_preserves_comments_and_unknown_configuration() {
|
||||
let home = agent_test_home("gui-field-edit");
|
||||
|
||||
@@ -1967,6 +1967,7 @@ fn startup_preserves_all_user_owned_yaml_and_only_applies_gui_managed_values() {
|
||||
error_logs_max_files: 25,
|
||||
usage_statistics_enabled: false,
|
||||
redis_usage_queue_retention_seconds: 180,
|
||||
usage_statistics_disabled: Some(true),
|
||||
request_log: true,
|
||||
plugins_enabled: true,
|
||||
routing_strategy: "fill-first".to_string(),
|
||||
|
||||
Reference in new issue
Block a user