@@ -81,7 +81,7 @@ impl Serialize for crate::Process {
81
81
// `19` corresponds to the (maximum) number of fields.
82
82
let mut state = serializer. serialize_struct ( "Process" , 19 ) ?;
83
83
84
- state. serialize_field ( "name" , & self . name ( ) ) ?;
84
+ state. serialize_field ( "name" , & self . name ( ) . to_string_lossy ( ) ) ?;
85
85
state. serialize_field ( "cmd" , & self . cmd ( ) ) ?;
86
86
state. serialize_field ( "exe" , & self . exe ( ) ) ?;
87
87
state. serialize_field ( "pid" , & self . pid ( ) . as_u32 ( ) ) ?;
@@ -500,3 +500,34 @@ impl Serialize for crate::Uid {
500
500
serializer. serialize_newtype_struct ( "Uid" , & self . to_string ( ) )
501
501
}
502
502
}
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