diff --git a/src/clipboard.rs b/src/clipboard.rs index 2b6c8ba83..89b96f876 100644 --- a/src/clipboard.rs +++ b/src/clipboard.rs @@ -698,7 +698,7 @@ mod proto { let content = if compress { compressed } else { - s.bytes().collect::>() + d }; Clipboard { compress, @@ -794,6 +794,29 @@ mod proto { msg }) } + + #[cfg(all(test, not(target_os = "android")))] + mod tests { + use super::{from_clipboard, special_to_proto}; + use arboard::ClipboardData; + + #[test] + fn preserves_uncompressed_special_clipboard_data() { + let data = vec![0x01, 0x02, 0x03]; + let name = "custom-format".to_owned(); + + let clipboard = special_to_proto(data.clone(), name.clone()); + + assert!(!clipboard.compress); + assert_eq!(clipboard.content.as_ref(), data.as_slice()); + assert_eq!(clipboard.special_name, name); + assert!(matches!( + from_clipboard(clipboard), + Some(ClipboardData::Special((restored_name, restored_data))) + if restored_name == name && restored_data == data + )); + } + } } #[cfg(all(test, not(target_os = "android")))]