From 8a07df085d601459f6ed2c5f7bfb5ed3dd6c20ff Mon Sep 17 00:00:00 2001 From: Ty Overby Date: Sat, 26 Sep 2015 18:05:33 -0700 Subject: [PATCH 1/3] Allow failure for stable and beta versions of rust. --- .travis.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.travis.yml b/.travis.yml index f73e291..42fe126 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,9 @@ language: rust rust: + - stable + - beta - nightly + after_success: | [ $TRAVIS_BRANCH = master ] && [ $TRAVIS_PULL_REQUEST = false ] && @@ -12,3 +15,7 @@ after_success: | env: global: - secure: SZSxNqg9wiGx8EnJhifJ2kb/aCRcLim9TzTQyfurPqd8qVGkDOeVjTtbs+VTxLVXYtMJAz+YYnrQDwsu8kc/uYpQajU+gRMqNGEP5gNj3Ha5iNGDasAS6piIHQSMROayZ+D9g22nlGnjk8t9eZtLHC/Z8IWMCnjcIHvqMFY6cgI= +matrix: + allow_failures: + - rust: stable + - rust: beta From d9183a8a26efdabf00c7a5b642f0067b5ddd4127 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 26 Nov 2015 17:21:30 +0100 Subject: [PATCH 2/3] Update byteorder crate --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 268f6b0..ef4d6d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ description = "A binary serialization / deserialization strategy and implementat [dependencies] rustc-serialize = "0.3.*" -byteorder = "0.3.*" +byteorder = "0.4.*" num = "*" serde = "*" From 7662a57727000a6eeb35f4ff6954e981ead10ffd Mon Sep 17 00:00:00 2001 From: Ty Overby Date: Tue, 19 Jan 2016 08:46:33 -0800 Subject: [PATCH 3/3] add more useful syntax error messages --- src/serde/reader.rs | 16 ++++++++-------- tests/test.rs | 15 +++++++++++++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/serde/reader.rs b/src/serde/reader.rs index f47fa81..495bfde 100644 --- a/src/serde/reader.rs +++ b/src/serde/reader.rs @@ -46,7 +46,7 @@ pub enum DeserializeError { /// If decoding a message takes more than the provided size limit, this /// error is returned. SizeLimit, - SyntaxError, + SyntaxError(String), EndOfStreamError, UnknownFieldError, MissingFieldError, @@ -58,7 +58,7 @@ impl Error for DeserializeError { DeserializeError::IoError(ref err) => Error::description(err), DeserializeError::InvalidEncoding(ref ib) => ib.desc, DeserializeError::SizeLimit => "the size limit for decoding has been reached", - DeserializeError::SyntaxError => "syntax error", + DeserializeError::SyntaxError(ref s) => &*s, DeserializeError::EndOfStreamError => "Unexpected EOF while reading a multi-byte number", DeserializeError::UnknownFieldError => "unknown field error", DeserializeError::MissingFieldError => "missing field error", @@ -70,7 +70,7 @@ impl Error for DeserializeError { DeserializeError::IoError(ref err) => err.cause(), DeserializeError::InvalidEncoding(_) => None, DeserializeError::SizeLimit => None, - DeserializeError::SyntaxError => None, + DeserializeError::SyntaxError(_) => None, DeserializeError::EndOfStreamError => None, DeserializeError::UnknownFieldError => None, DeserializeError::MissingFieldError => None, @@ -98,7 +98,7 @@ impl From for DeserializeError { use serde_crate::de::value::Error; match err { - Error::SyntaxError => DeserializeError::SyntaxError, + Error::SyntaxError => DeserializeError::SyntaxError("syntax error".to_string()), Error::EndOfStreamError => { DeserializeError::EndOfStreamError } @@ -117,8 +117,8 @@ impl fmt::Display for DeserializeError { write!(fmt, "InvalidEncoding: {}", ib), DeserializeError::SizeLimit => write!(fmt, "SizeLimit"), - DeserializeError::SyntaxError => - write!(fmt, "SyntaxError"), + DeserializeError::SyntaxError(ref d) => + write!(fmt, "SyntaxError: {}", d), DeserializeError::EndOfStreamError => write!(fmt, "EndOfStreamError"), DeserializeError::UnknownFieldError => @@ -130,8 +130,8 @@ impl fmt::Display for DeserializeError { } impl serde::de::Error for DeserializeError { - fn syntax(_: &str) -> DeserializeError { - DeserializeError::SyntaxError + fn syntax(desc: &str) -> DeserializeError { + DeserializeError::SyntaxError(desc.into()) } fn end_of_stream() -> DeserializeError { diff --git a/tests/test.rs b/tests/test.rs index 33d8e73..b017c55 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -1,4 +1,4 @@ -#![feature(plugin, custom_derive)] +#![feature(plugin, custom_derive, custom_attribute)] #![plugin(serde_macros)] extern crate bincode; @@ -243,7 +243,7 @@ fn deserializing_errors() { fn isize_invalid_deserialize(res: DeserializeResult) { match res { Err(DeserializeError::InvalidEncoding(_)) => {}, - Err(DeserializeError::SyntaxError) => {}, + Err(DeserializeError::SyntaxError(_)) => {}, _ => panic!("Expecting InvalidEncoding, got {:?}", res), } } @@ -475,3 +475,14 @@ fn test_multi_strings_encode() { fn test_multi_strings_serialize() { assert!(serialize(&("foo", "bar", "baz"), Infinite).is_ok()); } + +/* +#[test] +fn path_buf() { + use std::path::{Path, PathBuf}; + let path = Path::new("foo").to_path_buf(); + let serde_encoded = bincode::serde::serialize(&path, Infinite).unwrap(); + let decoded: PathBuf = bincode::serde::deserialize(&serde_encoded).unwrap(); + assert!(path.to_str() == decoded.to_str()); +} +*/