Skip to content

Commit 4087909

Browse files
Fix invalid serde serialization for processes name
1 parent 3c6ff37 commit 4087909

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

src/serde.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ impl Serialize for crate::Process {
8181
// `19` corresponds to the (maximum) number of fields.
8282
let mut state = serializer.serialize_struct("Process", 19)?;
8383

84-
state.serialize_field("name", &self.name())?;
84+
state.serialize_field("name", &self.name().to_string_lossy())?;
8585
state.serialize_field("cmd", &self.cmd())?;
8686
state.serialize_field("exe", &self.exe())?;
8787
state.serialize_field("pid", &self.pid().as_u32())?;
@@ -500,3 +500,34 @@ impl Serialize for crate::Uid {
500500
serializer.serialize_newtype_struct("Uid", &self.to_string())
501501
}
502502
}
503+
504+
#[cfg(test)]
505+
mod tests {
506+
#[test]
507+
fn test_serde_process_name() {
508+
if !crate::IS_SUPPORTED_SYSTEM {
509+
return;
510+
}
511+
let mut s = crate::System::new();
512+
s.refresh_processes_specifics(
513+
crate::ProcessesToUpdate::All,
514+
false,
515+
crate::ProcessRefreshKind::nothing(),
516+
);
517+
518+
if s.processes().is_empty() {
519+
panic!("no processes?");
520+
}
521+
522+
for p in s.processes().values() {
523+
let values = match serde_json::to_value(p) {
524+
Ok(serde_json::Value::Object(values)) => values,
525+
other => panic!("expected object, found `{other:?}`"),
526+
};
527+
match values.get("name") {
528+
Some(serde_json::Value::String(_)) => {}
529+
value => panic!("expected a string, found `{value:?}`"),
530+
}
531+
}
532+
}
533+
}

0 commit comments

Comments
 (0)