Skip to content

Commit 9dc68e6

Browse files
committed
Raise a ValueError instead of panicking for invalid language
1 parent 6455f6c commit 9dc68e6

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/lib.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,14 @@ mod rustfluent {
3333
ftl_filenames: &'_ Bound<'_, PyList>,
3434
strict: bool,
3535
) -> PyResult<Self> {
36-
let langid: LanguageIdentifier = language.parse().expect("Parsing failed");
36+
let langid: LanguageIdentifier = match language.parse() {
37+
Ok(langid) => langid,
38+
Err(_) => {
39+
return Err(PyValueError::new_err(format!(
40+
"Invalid language: '{language}'"
41+
)));
42+
}
43+
};
3744
let mut bundle = FluentBundle::new_concurrent(vec![langid]);
3845

3946
for file_path in ftl_filenames.iter() {

tests/test_python_interface.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ def test_variables_of_different_types(description, identifier, variables, expect
6969
assert result == expected
7070

7171

72+
def test_invalid_language():
73+
with pytest.raises(ValueError) as exc_info:
74+
fluent.Bundle("$", [])
75+
76+
assert str(exc_info.value) == "Invalid language: '$'"
77+
78+
7279
@pytest.mark.parametrize(
7380
"key",
7481
(

0 commit comments

Comments
 (0)