fix(tooling): repair test, i18n and docs verification gates (#3331)

This commit is contained in:
Hampus authored and GitHub committed 2026-10-09 01:38:34 +02:00
1 parent ece622e800
commit f390e610b9
107 files changed
+5144 -3004

No files matched your search

+74
View File
@@ -102,6 +102,34 @@ impl ReviewedUnchangedStore {
self.dirty_locales.insert(locale.to_string());
}
pub fn locales(&self) -> impl Iterator<Item = (&str, &[ReviewedUnchangedEntry])> {
self.data
.locales
.iter()
.map(|(locale, entries)| (locale.as_str(), entries.as_slice()))
}
pub fn retain_locale(
&mut self,
locale: &str,
mut keep: impl FnMut(&ReviewedUnchangedEntry) -> bool,
) -> usize {
let Some(entries) = self.data.locales.get_mut(locale) else {
return 0;
};
let before = entries.len();
entries.retain(|entry| keep(entry));
let removed = before - entries.len();
if removed == 0 {
return 0;
}
if entries.is_empty() {
self.data.locales.remove(locale);
}
self.dirty_locales.insert(locale.to_string());
removed
}
pub fn clear_locale(&mut self, locale: &str) {
if self.data.locales.remove(locale).is_some() {
self.dirty_locales.insert(locale.to_string());
@@ -256,6 +284,52 @@ mod tests {
assert!(!loaded.contains("de", Some("button"), "Audio"));
}
#[test]
fn retain_locale_drops_entries_and_saves_only_that_locale() {
let temp = tempdir().unwrap();
let path = temp.path().join("reviewed.json");
let mut store = ReviewedUnchangedStore::load(&path).unwrap();
store.mark("de", None, "Audio");
store.mark("de", None, "Gone");
store.mark("fr", None, "Gone");
store.save_if_dirty().unwrap();
let mut store = ReviewedUnchangedStore::load(&path).unwrap();
assert_eq!(store.retain_locale("de", |entry| entry.msgid != "Gone"), 1);
assert_eq!(store.retain_locale("de", |_| true), 0);
assert_eq!(store.retain_locale("nl", |_| false), 0);
store.save_if_dirty().unwrap();
let loaded = ReviewedUnchangedStore::load(&path).unwrap();
assert!(loaded.contains("de", None, "Audio"));
assert!(!loaded.contains("de", None, "Gone"));
assert!(loaded.contains("fr", None, "Gone"));
}
#[test]
fn retain_locale_removes_emptied_locale() {
let temp = tempdir().unwrap();
let path = temp.path().join("reviewed.json");
let mut store = ReviewedUnchangedStore::load(&path).unwrap();
store.mark("de", Some("button"), "Save");
store.mark("fr", None, "Avatar");
store.save_if_dirty().unwrap();
let mut store = ReviewedUnchangedStore::load(&path).unwrap();
assert_eq!(store.retain_locale("de", |_| false), 1);
store.save_if_dirty().unwrap();
let loaded = ReviewedUnchangedStore::load(&path).unwrap();
assert_eq!(
loaded
.locales()
.map(|(locale, _)| locale)
.collect::<Vec<_>>(),
vec!["fr"]
);
assert!(!fs::read_to_string(&path).unwrap().contains("\"de\""));
}
#[test]
fn merge_save_preserves_other_locale_changes() {
let temp = tempdir().unwrap();