mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 13:05:32 +09:00
chore(repo): remove dead code and useless tests (#3375)
This commit is contained in:
1 parent
7e177a1c90
commit
1cd62eb661
1391 files changed
+783
-120415
No files matched your search
@@ -11,6 +11,3 @@ regex = "1.13"
|
||||
reqwest = { version = "0.13.5", default-features = false, features = ["blocking", "json", "rustls"] }
|
||||
serde = { version = "1.0.229", features = ["derive"] }
|
||||
serde_json = "1.0.151"
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3.27.0"
|
||||
@@ -41,8 +41,7 @@ pub fn auto_main(args: &[String]) -> Result<u8> {
|
||||
let i18n_llm_model = env_value("I18N_LLM_MODEL", &env_overrides, "")
|
||||
.if_empty(|| env_value("OPENROUTER_MODEL", &env_overrides, DEFAULT_OPENROUTER_MODEL));
|
||||
let bypass_run_gate = args.iter().any(|arg| {
|
||||
matches!(arg.as_str(), "--self-test" | "--help" | "-h" | "--dry-run")
|
||||
|| arg.starts_with("--dry-run=")
|
||||
matches!(arg.as_str(), "--help" | "-h" | "--dry-run") || arg.starts_with("--dry-run=")
|
||||
});
|
||||
let explicitly_disabled = matches!(
|
||||
fluxer_auto_i18n.to_lowercase().as_str(),
|
||||
@@ -191,22 +190,3 @@ impl EmptyFallback for String {
|
||||
if self.is_empty() { fallback() } else { self }
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn parses_simple_export_lines() {
|
||||
assert_eq!(
|
||||
parse_export_line(" export OPENROUTER_MODEL=\"translator\" "),
|
||||
Some(("OPENROUTER_MODEL".to_string(), "translator".to_string()))
|
||||
);
|
||||
assert_eq!(
|
||||
parse_export_line("export FLUXER_AUTO_I18N=1"),
|
||||
Some(("FLUXER_AUTO_I18N".to_string(), "1".to_string()))
|
||||
);
|
||||
assert_eq!(parse_export_line("OPENROUTER_MODEL=translator"), None);
|
||||
assert_eq!(parse_export_line("export 1BAD=value"), None);
|
||||
}
|
||||
}
|
||||
@@ -180,112 +180,3 @@ pub fn reset_static_json_translations(
|
||||
.collect::<BTreeMap<_, _>>();
|
||||
render(&config.kind, &cleared)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn simple() -> StaticJsonCatalogConfig {
|
||||
StaticJsonCatalogConfig {
|
||||
kind: StaticTsCatalogKind::SimpleMessages,
|
||||
source_path: PathBuf::from("weblate/messages.json"),
|
||||
}
|
||||
}
|
||||
|
||||
fn email() -> StaticJsonCatalogConfig {
|
||||
StaticJsonCatalogConfig {
|
||||
kind: StaticTsCatalogKind::EmailTemplates,
|
||||
source_path: PathBuf::from("weblate/messages.json"),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reads_simple_entries_pairing_source_with_locale() {
|
||||
let entries = read_static_json_entries(
|
||||
&simple(),
|
||||
"{\"a.b\":\"Hello\",\"c.d\":\"Bye\"}",
|
||||
"{\"a.b\":\"Hallo\"}",
|
||||
false,
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(entries.len(), 2);
|
||||
assert_eq!(entries[0].msgctxt.as_deref(), Some("a.b"));
|
||||
assert_eq!(entries[0].msgid, "Hello");
|
||||
assert_eq!(entries[0].msgstr, "Hallo");
|
||||
assert_eq!(entries[1].msgstr, "");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reset_blanks_every_value() {
|
||||
let entries =
|
||||
read_static_json_entries(&simple(), "{\"a\":\"Hello\"}", "{\"a\":\"Hallo\"}", true)
|
||||
.unwrap();
|
||||
assert_eq!(entries[0].msgstr, "");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn writes_tab_indented_sorted_json_with_a_trailing_newline() {
|
||||
let rendered = rebuild_static_json_allow_replacing(
|
||||
&simple(),
|
||||
"{\"b\":\"Two\",\"a\":\"One\"}",
|
||||
"{\"a\":\"One\",\"b\":\"Two\"}",
|
||||
&[Translation {
|
||||
msgctxt: Some("a".to_string()),
|
||||
msgid: "One".to_string(),
|
||||
msgstr: "Eins".to_string(),
|
||||
reviewed_unchanged: false,
|
||||
notes: String::new(),
|
||||
}],
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(rendered, "{\n\t\"a\": \"Eins\",\n\t\"b\": \"Two\"\n}\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn keeps_email_template_fields_nested() {
|
||||
let entries = read_static_json_entries(
|
||||
&email(),
|
||||
"{\"welcome\":{\"subject\":\"Hi\",\"body\":\"Text\"}}",
|
||||
"{\"welcome\":{\"subject\":\"Hallo\",\"body\":\"\"}}",
|
||||
false,
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(entries[0].msgctxt.as_deref(), Some("welcome.body"));
|
||||
assert_eq!(entries[1].msgctxt.as_deref(), Some("welcome.subject"));
|
||||
let rendered = rebuild_static_json_allow_replacing(
|
||||
&email(),
|
||||
"{\"welcome\":{\"subject\":\"Hi\",\"body\":\"Text\"}}",
|
||||
"{\"welcome\":{\"subject\":\"Hallo\",\"body\":\"\"}}",
|
||||
&[Translation {
|
||||
msgctxt: Some("welcome.body".to_string()),
|
||||
msgid: "Text".to_string(),
|
||||
msgstr: "Inhalt".to_string(),
|
||||
reviewed_unchanged: false,
|
||||
notes: String::new(),
|
||||
}],
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
rendered,
|
||||
"{\n\t\"welcome\": {\n\t\t\"body\": \"Inhalt\",\n\t\t\"subject\": \"Hallo\"\n\t}\n}\n"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ignores_translations_the_source_no_longer_defines() {
|
||||
let rendered = rebuild_static_json_allow_replacing(
|
||||
&simple(),
|
||||
"{\"a\":\"One\"}",
|
||||
"{\"a\":\"Eins\"}",
|
||||
&[Translation {
|
||||
msgctxt: Some("gone".to_string()),
|
||||
msgid: "Gone".to_string(),
|
||||
msgstr: "Weg".to_string(),
|
||||
reviewed_unchanged: false,
|
||||
notes: String::new(),
|
||||
}],
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(rendered, "{\n\t\"a\": \"Eins\"\n}\n");
|
||||
}
|
||||
}
|
||||
@@ -86,29 +86,3 @@ fn trim_special_response_tokens(content: &str) -> &str {
|
||||
trimmed = next.trim();
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn cleans_common_llm_response_wrappers() {
|
||||
assert_eq!(
|
||||
clean_translation_response("Translation: Bonjour"),
|
||||
"Bonjour"
|
||||
);
|
||||
assert_eq!(clean_translation_response("\"Bonjour\""), "Bonjour");
|
||||
assert_eq!(
|
||||
clean_translation_response("{\"localized\":\"Bonjour\"}"),
|
||||
"Bonjour"
|
||||
);
|
||||
assert_eq!(
|
||||
clean_translation_response("```text\nBonjour\n```"),
|
||||
"Bonjour"
|
||||
);
|
||||
assert_eq!(
|
||||
clean_translation_response("```json\n{\"0\":\"bonjour\"}\n```<|im_end|>"),
|
||||
"{\"0\":\"bonjour\"}"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -232,26 +232,3 @@ fn truncate_error_body(body: &str) -> String {
|
||||
}
|
||||
truncated
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn parses_comma_separated_fallback_models() {
|
||||
assert_eq!(
|
||||
parse_openrouter_fallback_models("a, b,,c "),
|
||||
vec!["a".to_string(), "b".to_string(), "c".to_string()]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn extracts_text_from_openai_style_message() {
|
||||
let data = json!({
|
||||
"choices": [
|
||||
{"message": {"content": [{"type": "text", "text": "Hej"}]}}
|
||||
]
|
||||
});
|
||||
assert_eq!(extract_chat_message_content(&data), Some("Hej".to_string()));
|
||||
}
|
||||
}
|
||||
@@ -134,30 +134,3 @@ fn floor_char_boundary(value: &str, limit: usize) -> usize {
|
||||
}
|
||||
boundary
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn en_gb_prompt_keeps_strict_preservation_guidance() {
|
||||
let prompt = build_system_prompt("en-GB");
|
||||
assert!(prompt.contains("Do not translate \"US\" to \"UK\""));
|
||||
assert!(prompt.contains("Keep our words."));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn compact_guidance_truncates_on_clean_boundary() {
|
||||
let content = "First paragraph.\n\nSecond paragraph that should be truncated.\n\nThird.";
|
||||
let compact = compact_guidance_excerpt(content, 35);
|
||||
assert!(compact.ends_with("[excerpt truncated]"));
|
||||
assert!(compact.starts_with("First paragraph."));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn compact_guidance_truncates_utf8_safely() {
|
||||
let content = "Brand term: caf\u{00e9} caf\u{00e9} caf\u{00e9} caf\u{00e9}.";
|
||||
let compact = compact_guidance_excerpt(content, 18);
|
||||
assert!(compact.ends_with("[excerpt truncated]"));
|
||||
}
|
||||
}
|
||||
@@ -259,91 +259,3 @@ impl Drop for SidecarLock {
|
||||
let _ = fs::remove_file(&self.path);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use tempfile::tempdir;
|
||||
|
||||
#[test]
|
||||
fn stores_entries_sorted_and_deduplicated() {
|
||||
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("de", None, "Audio");
|
||||
store.mark("de", None, "Audio");
|
||||
store.save_if_dirty().unwrap();
|
||||
|
||||
let saved = fs::read_to_string(&path).unwrap();
|
||||
assert!(saved.contains("\"version\": 1"));
|
||||
|
||||
let loaded = ReviewedUnchangedStore::load(&path).unwrap();
|
||||
assert!(loaded.contains("de", None, "Audio"));
|
||||
assert!(loaded.contains("de", Some("button"), "Save"));
|
||||
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();
|
||||
let path = temp.path().join("reviewed.json");
|
||||
let mut first = ReviewedUnchangedStore::load(&path).unwrap();
|
||||
let mut second = ReviewedUnchangedStore::load(&path).unwrap();
|
||||
|
||||
first.mark("de", None, "Audio");
|
||||
second.mark("fr", None, "Avatar");
|
||||
first.save_if_dirty().unwrap();
|
||||
second.save_if_dirty().unwrap();
|
||||
|
||||
let loaded = ReviewedUnchangedStore::load(&path).unwrap();
|
||||
assert!(loaded.contains("de", None, "Audio"));
|
||||
assert!(loaded.contains("fr", None, "Avatar"));
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user