Commit Graph

497 Commits

Author SHA1 Message Date
David Tolnay
da346a8878
Replace try! macro in test suite 2018-12-31 21:46:14 -05:00
David Tolnay
05ab569a80
Update ui tests to 2018 edition 2018-12-31 21:38:13 -05:00
David Tolnay
ab3f4971f0
Move compiletest out of the unstable feature flag 2018-12-31 21:28:39 -05:00
David Tolnay
47e238aa13
Add missing imports in ui tests
There is a new fallback as of nightly-2018-12-29 that makes these emit a
new error unrelated to Serde.
2018-12-29 00:19:29 -05:00
David Tolnay
e49b6c708b
Add main function to ui tests without main
These emit a new error not relevant to Serde as of nightly-2018-12-29.
2018-12-29 00:18:55 -05:00
David Tolnay
eb7250792b
Format with rustfmt 2018-12-10 2018-12-28 12:19:32 -05:00
David Tolnay
7e5066b878
Merge pull request #1450 from motu42/master
Bug fix to support the tag attribute on braced structs with zero fields
2018-12-27 21:48:14 -05:00
Johannes Willbold
889e17816f Bug fix for #1449
Modified serialize_struct_as_struct.
Added test test_internally_tagged_braced_struct_with_zero_fields
2018-12-28 02:50:24 +01:00
David Tolnay
32728d2f1d
Format with rustfmt 2018-12-10 2018-12-27 19:52:26 -05:00
David Tolnay
807a097387
Fix spelling in ui test name 2018-12-27 19:51:53 -05:00
Johannes Willbold
2359417804 Added ui tests, Limited serde(tag = "...") to structs with named field
Added ui test struct-representation/internally-tagged-unit
Added ui test struct-representation/internally-tagged-tuple
    
Limited the serde(tag = "...") to enums and structs with named field
2018-12-28 01:29:33 +01:00
Johannes Willbold
8aa5c2b45d Removed deprected ui/enum-representation/internally-tagged-struct test 2018-12-27 20:53:08 +01:00
Johannes Willbold
414fd694c0 Allowed serde(tag="...") on structs
Added test test_internally_tagged_struct
Renamed EnumTag to TagType as it now also used for structs 
Modified serialize_struct_as_struct
2018-12-27 20:18:36 +01:00
David Tolnay
16daba8ea9
Format with rustfmt 2018-11-30 2018-12-10 22:09:34 -08:00
David Tolnay
8b4074ee77
Tests for tuple default attribute 2018-12-10 22:09:33 -08:00
hcpl
14a3da9b16 Improve UI test coverage
With this commit I believe I've covered all `compile_error!`-based
errors.
2018-11-30 03:07:31 +02:00
hcpl
034db9f20f Improve overall quality of compile_error! errors
Also updates UI tests.
2018-11-30 02:51:49 +02:00
David Tolnay
58b3af4c29
Copyright/license headers
The following changes are included:

- Delete per-file license notices at the top of each file.
- Delete the first paragraph of LICENSE-MIT (an inaccurate
  pseudo-copyright line), leaving only the text of the MIT license.

Nothing about the license of Serde code has changed, only our
understanding of how to correctly communicate that license has changed.

This mirrors an equivalent change being applied in the rust-lang/rust
repository.
2018-11-24 15:53:09 -08:00
David Tolnay
4821d09a48
Move all compile-fail tests to ui tests
The update-references.sh script makes these much easier to update in
bulk compared to compile-fail tests.
2018-11-24 15:43:19 -08:00
David Tolnay
b3d9d51b51
Simplify compiletest setup 2018-11-24 15:35:49 -08:00
David Tolnay
9afc5fef11
Format with rustfmt 1.0.0-nightly 2018-11-21 01:13:17 -08:00
David Tolnay
f1e8dcf38e
Run test suite on asmjs 2018-09-15 15:25:55 -07:00
David Tolnay
66a9ccb10e
Ignore renamed_and_removed_lints lint
The recommended replacement involving clippy::all has not been
stabilized yet.
2018-09-11 23:05:33 -07:00
David Tolnay
53fe1b328e
Format with rustfmt 0.99.4 2018-09-11 23:00:08 -07:00
roblabla
0156f1355a Remove obsolete compile-fail test 2018-09-10 17:15:22 +00:00
roblabla
7870b58356 Add tests for serde(other) in enum 2018-09-10 16:25:02 +00:00
David Tolnay
2a4b8ce42d
Fix panic deserializing flattened any after flattened struct 2018-09-08 16:55:34 -07:00
David Reid
389b9b5fe7 Add a test for an internally tagged unit enum flattened with a second internally tagged unit enum. 2018-09-06 14:55:10 -07:00
David Reid
27478b6f71 Internally tagged unit enum variants should ignore unknown fields. 2018-09-06 14:29:49 -07:00
David Tolnay
d0464fbff7
Add Emscripten build in Travis 2018-09-02 12:34:13 -07:00
David Tolnay
d23a40c1bb
Format with rustfmt 0.99.2 2018-09-01 23:03:41 -07:00
David Tolnay
5b7b8abf9f
Move some compile-fail errors based on proc-macro2 update 2018-08-28 20:35:49 -07:00
David Tolnay
1175d54fb7
Stabilize raw_identifiers 2018-08-24 19:49:13 -04:00
David Tolnay
a3ae14d090
Test raw identifiers 2018-08-22 21:09:37 -04:00
David Tolnay
5985b7edaf
Format with rustfmt 0.99.2 2018-08-14 19:59:20 -07:00
David Tolnay
d28a0e66c8
Fix old reference to serde_codegen 2018-08-12 10:54:59 -07:00
David Tolnay
0ca4db1616
Move untagged borrow test case into codegen tests 2018-08-12 10:54:29 -07:00
David Tolnay
72b3438dfc
Merge pull request #1338 from toidiu/ak-untagged-enum
test borrowing untagged enum
2018-08-12 10:49:15 -07:00
David Tolnay
e26960f7f8
Remove useless run-pass test
When originally added, this test used to contain a `#![plugin(clippy)]`.
This was removed at some point along the way, at which point this test
no longer tests anything. It prints:

    warning: unknown lint: `identity_op`
     --> src/main.rs:1:9
      |
    1 | #![deny(identity_op)]
      |         ^^^^^^^^^^^
      |
      = note: #[warn(unknown_lints)] on by default

which is swallowed and ignored by compiletest.

Nowadays Clippy handles warnings inside of macro expanded code
intelligently and this is something they would be responsible for
testing.
2018-08-06 22:57:46 -07:00
David Tolnay
28db9d4989
Format with rustfmt 0.99.1 2018-08-06 22:40:28 -07:00
Caio
8b2e6baf78 Implement Serialize and Deserialize for RangeInclusive 2018-08-05 10:45:50 -03:00
toidiu
3ca0597a7e test borrowing untagged enum 2018-07-12 17:12:27 -04:00
David Tolnay
4e54aaf796
Format with rustfmt 0.8.2 2018-07-08 19:02:44 -07:00
David Tolnay
84e384196d
Implement Serialize for core::fmt::Arguments 2018-06-26 23:58:16 -07:00
David Tolnay
94853752a1
Stabilize some unstable tests in test suite 2018-06-03 00:31:20 -07:00
David Tolnay
22b1af7eb3
Test never_type 2018-06-03 00:22:11 -07:00
David Tolnay
0a71fe329c
Format the compile-test sources with rustfmt 0.8.2 2018-06-02 22:30:55 -07:00
David Tolnay
a4acc83282
Place compile-fail expected errors on their own line 2018-06-02 22:28:05 -07:00
David Tolnay
7ad3d17e59
Merge pull request #1297 from adamcrume/master
Use compile_error! instead of panicking
2018-06-02 22:00:24 -07:00
Adam Crume
05e931b9a5 Update tests and use quote! macro 2018-06-02 21:11:42 -07:00
David Tolnay
d5ec3efe49
Merge pull request #1299 from dtolnay/flattenmap
Allow multiple flattened maps to see the same fields
2018-06-01 13:00:45 -07:00
David Tolnay
5ee2fc0562
Allow multiple flattened maps to see the same fields
Before this change, flattening anything after a flattened map was
nonsensical because the later flattened field would always observe no
input fields.

    #[derive(Deserialize)]
    struct S {
        #[serde(flatten)]
        map: Map<K, V>,
        #[serde(flatten)]
        other: Other, // always empty
    }

This change makes a flattened map not consume any of the input fields,
leaving them available to later flattened fields in the same struct. The
new behavior is useful when two flattened fields that both use
deserialize_map care about disjoint subsets of the fields in the input.

    #[derive(Deserialize)]
    struct S {
        // Looks at fields with a "player1_" prefix.
        #[serde(flatten, with = "prefix_player1")]
        player1: Player,
        // Looks at fields with a "player2_" prefix.
        #[serde(flatten, with = "prefix_player2")]
        player2: Player,
    }
2018-06-01 12:50:23 -07:00
Konrad Borowski
c3b9ee314b Use try_borrow for serializing RefCell 2018-06-01 09:09:40 +02:00
David Tolnay
927ec7d38e
Implement Copy for value deserializers of primitive types 2018-05-26 15:56:57 -07:00
David Tolnay
ea118e11a0
Test the 128-bit IntoDeserializer impls 2018-05-26 15:21:37 -07:00
David Tolnay
9083cf4b00
Test integer128 impls 2018-05-20 22:17:35 -07:00
David Tolnay
b13875dd97
Add compile-fail tests for transparent error messages 2018-05-20 21:55:50 -07:00
David Tolnay
1335f85213
Test transparent attribute 2018-05-20 21:55:21 -07:00
David Tolnay
4fa2a50f62
Format with rustfmt 0.7.0 2018-05-19 17:33:30 -07:00
David Tolnay
16d1265e17
Fix generated code for deserializing untagged newtype variant 2018-05-19 17:20:14 -07:00
David Tolnay
4305260174
Support flattened untagged Options in struct fields 2018-05-11 22:14:16 -07:00
David Tolnay
368961e961
Support deserializing flattened untagged enum 2018-05-10 08:33:47 -07:00
David Tolnay
b2b36e1764
Accept implicitly borrowed data inside of Option 2018-05-08 12:19:09 -07:00
David Tolnay
4ad140ea70
Improve error for struct deserialized from array that is too short 2018-05-08 12:03:35 -07:00
David Tolnay
67777eb585
Account for skip_serializing_if in tuple struct length 2018-05-08 11:49:37 -07:00
David Tolnay
b4e51fcc77
Respect skip_serializing in tuple structs and variants 2018-05-08 11:37:52 -07:00
David Tolnay
be7fe2a5eb
Introduce bound attribute on enum variants 2018-05-08 11:16:10 -07:00
David Tolnay
c4181f46be
Respect variant skip attribute in inferred bounds 2018-05-07 21:30:00 -07:00
David Tolnay
7e3efaf6c5
Improve error when a 'de lifetime parameter already exists 2018-05-07 21:15:44 -07:00
David Tolnay
12fe42ed45
Support empty adjacently tagged enum 2018-05-07 21:02:42 -07:00
David Tolnay
0025ef9aba
Detect deserialize on a struct ending in dynamically sized slice 2018-05-07 11:52:59 -07:00
David Tolnay
4687c1b52b
Test Weak deserialize impls 2018-05-07 11:23:18 -07:00
David Tolnay
a58abae193
Test Weak serialize impls 2018-05-07 11:23:17 -07:00
David Tolnay
eecc0870fc
Test for pub(restricted) 2018-05-06 23:22:27 -07:00
David Tolnay
3cd9d071c2
Fix adjacently tagged empty tuple variant or struct variant 2018-05-06 21:50:40 -07:00
David Tolnay
972cc06fed
Format the flatten tests using rustfmt 0.6.1 2018-05-06 21:38:41 -07:00
David Tolnay
2009b4da5f
Remove old flatten in enum compile-fail test 2018-05-06 21:26:40 -07:00
David Tolnay
0b72c86a35
Add tests for flatten in enums 2018-05-06 21:23:20 -07:00
David Tolnay
d8120e19bc
Support deserializing a flattened internally tagged enum 2018-05-05 21:52:16 -07:00
David Tolnay
97eff8e875
Format with rustfmt 0.6.1 2018-05-05 00:56:12 -07:00
David Tolnay
b78f434086
Pretend remote derives are not dead code 2018-05-02 14:23:59 -07:00
David Tolnay
cb2b92f828
Handle flatten + deserialize_with 2018-05-01 22:25:06 -07:00
David Tolnay
d82d1707d6
Format with rustfmt 0.6.0 2018-04-30 01:42:46 -07:00
David Tolnay
bceda5fb18
Unpack a layer of NewtypeStruct when content is newtype 2018-04-23 11:04:42 -07:00
David Tolnay
3c4961c48e
Lenient byte and string deserialization from buffered content 2018-04-19 10:21:55 -07:00
David Tolnay
202c10147e
Fix deserialize_with on a struct variant with one field 2018-04-12 23:44:53 -07:00
Osspial
4415d10c61 Fix associated types only working for first generic parameter
Also, removes extraneous `where for`
2018-04-12 16:44:34 -04:00
Osspial
def8d6e8af Add associated type test 2018-04-10 11:16:32 -04:00
David Tolnay
860241aa88
Merge pull request #1205 from mitsuhiko/bugfix/tuple-struct-flatten
Produce error message for use of flatten in tuple structs
2018-04-02 07:09:39 +02:00
Armin Ronacher
77376f39ea Produce error message for use of flatten in tuple structs 2018-04-01 22:11:21 +02:00
Armin Ronacher
302fac91a3 Produce error message for use of flatten within struct variant 2018-04-01 22:01:24 +02:00
David Tolnay
42430902e2
Special case remote = "Self" 2018-03-27 10:56:05 +02:00
David Tolnay
5c9c97c0ce
Remove test that fails to parse flatten attribute 2018-03-25 12:33:50 +02:00
Armin Ronacher
3d647f4063 Fixed a compilefail test for flatten on enums 2018-03-20 23:26:22 +01:00
Armin Ronacher
27f935f036 Correctly serialize newtype variants for flatten 2018-03-20 23:05:05 +01:00
Armin Ronacher
99614c7266 Added flatten on enum compile fail test 2018-03-20 22:15:47 +01:00
Armin Ronacher
bb2ecb3bc4 Added compilefail tests for flatten conflicts 2018-03-20 22:04:12 +01:00
Armin Ronacher
e4ef087735 Added support for borrowing when flattening 2018-03-20 15:19:36 +01:00
Armin Ronacher
8637dda60f Refactored a test 2018-03-20 13:38:08 +01:00
Armin Ronacher
f02dbf381b Added non string key support for flattening 2018-03-19 00:57:58 +01:00
Armin Ronacher
7cf184624a Use more consistent error messages for bad flattening 2018-03-18 23:46:28 +01:00
Armin Ronacher
c5a3128492 Added a more complex flattening test 2018-03-18 23:01:13 +01:00
Armin Ronacher
58d52e784b Remove #[serde(repr = "map")] 2018-03-18 18:30:46 +01:00
Armin Ronacher
61b167be9a Attempted support for in_place deserialization for structs as map 2018-03-18 18:22:06 +01:00
Armin Ronacher
f1af2dc5ab Added support for newtype variant serialization 2018-03-18 13:10:54 +01:00
Armin Ronacher
ebc61baab2 Added newtype struct support for flattening 2018-03-18 13:02:00 +01:00
Armin Ronacher
ffcde25b6e Fixed some clippy warnings 2018-03-17 00:49:00 +01:00
Armin Ronacher
b8602a7e43 Added test for tag/content enum flattening 2018-03-16 23:05:48 +01:00
Armin Ronacher
a8c8c2028e Added support for struct variant enum serialization 2018-03-16 23:05:48 +01:00
Armin Ronacher
b4ef7ac323 Updated tests for flatten 2018-03-16 23:05:48 +01:00
Armin Ronacher
583c0d8d14 Make proc-macro2/nightly happy 2018-03-16 23:05:22 +01:00
Armin Ronacher
77b07f3fbf Added tests for unknown_fields_into 2018-03-16 23:05:22 +01:00
David Tolnay
72ecb9064c
Fix parsing of qself in paths in attributes 2018-03-15 10:02:40 -07:00
David Tolnay
30361ac6d0
Clean up workaround that required too many parentheses
The issue has been fixed in the compiler and these extra call site parentheses
are no longer required.
2018-03-09 00:22:27 -08:00
David Tolnay
f288a41768
Test the new errors on conflicting enum tags 2018-03-08 09:31:25 -08:00
David Tolnay
d6f07f2f47
Ignore redundant_field_names lint 2018-02-27 11:13:26 -08:00
David Tolnay
9db784bccd
Ignore decimal_literal_representation in test suite 2018-01-29 21:52:21 -08:00
David Tolnay
1bdf5ecec4
Ignore unused_parens warning on the proc macro workaround 2018-01-21 17:54:06 -08:00
David Tolnay
6e01f220b1
Ignore clippy flagging our workaround 2018-01-13 14:28:12 -08:00
Martin Lindhe
ae0373643c fix some typos 2018-01-03 15:16:45 +01:00
David Tolnay
ed6a1de311
Auto format attributes on their own line 2017-12-23 20:24:57 -08:00
David Tolnay
ee75e6c0e9
Format with rustfmt-nightly 0.3.4 2017-12-23 20:17:52 -08:00
David Tolnay
0dac13e4db
Resolve conflict with pr 1115 2017-12-11 20:59:54 -08:00
Jeroen Bollen
c887a0b472 Solved #1105.
When a field should be skipped during deserialization, it will not use its own Default implementation
when the container structure has `#[serde(default)]` set.
2017-12-06 21:14:02 +01:00
David Tolnay
e0eea551b4
Fix missing absolute paths in deserialize_seq 2017-11-29 19:45:22 -08:00
David Tolnay
436cafb0a3
Catch wrong field names length in serde_test 2017-11-12 10:16:43 -08:00
David Tolnay
9e7a3437d9
Allow internally tagged newtype variant containing unit struct 2017-11-06 23:32:36 -08:00
David Tolnay
f6ac232580
Merge pull request #1084 from Marwes/serde_test_readable_
Add an API for making tests for readable/compact representations
2017-11-06 22:05:29 -08:00
Markus Westerlind
aad7a7987f Add an example to the Configure trait 2017-11-06 10:35:22 +01:00
David Tolnay
6437167930
Merge pull request #1083 from serde-rs/ty-macro
Fix bounds for macro named the same as a type parameter
2017-11-05 12:56:57 -08:00
David Tolnay
b8a40551a2
Fix bounds for macro named the same as a type parameter 2017-11-05 12:18:39 -08:00
David Tolnay
40db31691a
Allow borrow attribute on newtype variants 2017-11-05 12:10:40 -08:00
David Tolnay
d5e5c520ac
Ignore skipped fields when looking for borrowed lifetimes 2017-11-03 10:08:02 -07:00
David Tolnay
2a557a1e36
Clippy false positive on needless_lifetimes has been fixed 2017-10-31 22:42:53 -07:00
David Tolnay
ab0848f780
Follow clippy advice about unreadable literal 2017-10-31 22:42:12 -07:00
David Tolnay
9b08915a18
Add tests for std::num::Wrapping impls 2017-10-31 09:32:58 -07:00
David Tolnay
aa03fd5d1a
Duplicate error messages have been fixed 2017-10-27 21:08:41 -04:00
David Tolnay
e198afb0c1
Add missing copyright notices 2017-10-22 16:01:19 -07:00
David Tolnay
9be3d32016
Remove redundant readable/compact tests
This functionality is covered well enough by the std::net types.
2017-10-17 23:16:21 -07:00
David Tolnay
5daf1b89a1
Consolidate readable/compact deserialization tests 2017-10-17 23:15:35 -07:00
David Tolnay
f8f5d0ca2f
No need for readable setting for the ignore test 2017-10-17 23:09:50 -07:00
David Tolnay
4ed0362c8e
Panic by default in serde_test is_human_readable
The serde_test Serializer and Deserializer panic in is_human_readable unless the
readableness has been set explicitly through one of the hidden functions. This
is to force types that have distinct readable/compact representations to be
tested explicitly in one or the other, rather than with a plain assert_tokens
which arbitrarily picks one.

We need to follow up by designing a better API in serde_test to expose this
publicly. For now serde_test cannot be used to test types that rely on
is_human_readable. (The hidden functions are meant for our test suite only.)
2017-10-17 09:49:42 -07:00
David Tolnay
030459a040 Merge pull request #1044 from Marwes/human_readable
Serialize to binary if the serde format is not human readable
2017-10-15 16:39:58 -07:00
David Tolnay
b98a9a8f9b
Support deserializing internally tagged enum from seq
During serialization, internally tagged enums invoke the Serializer's
serialize_struct. In JSON this turns into a map which uses visit_map
when deserialized. But some formats employ visit_seq when
deserializing a struct. One example is rmp-serde. Such formats were
previously unable to deserialize an internally tagged enum. This
change fixes it by adding visit_seq for internally tagged enums.
2017-09-17 13:45:12 -07:00
Markus Westerlind
e36915300f Properly deserialize non-readable IpAddr and SocketAddr 2017-09-14 17:08:17 +02:00
Markus Westerlind
85c05d301a Fix the non-readble IpAddr serialize implementations 2017-09-11 17:40:02 +02:00
Markus Westerlind
ad3335e5d6 Serialize non-human-readble ip addresses as tuples
Since we know exactly how many bytes we should serialize as we can hint
to the serializer that it is not required which further reduces the
serialized size when compared to just serializing as bytes.
2017-09-11 15:54:53 +02:00
David Tolnay
8403fa018e Merge pull request #1052 from serde-rs/static
Special case for 'static fields
2017-09-09 12:50:11 -07:00
David Tolnay
0085d05e55
Special case for 'static fields 2017-09-09 12:39:14 -07:00
David Tolnay
2eed855bff
Fix trivial numeric cast in visit_u64 2017-09-09 12:37:00 -07:00
David Tolnay
8a630fea7c
Suppress cast_lossless lint in test suite 2017-09-09 11:08:19 -07:00
David Tolnay
2e597ed3f0
Remove unused functions in with-variant tests
Macro expansion fails before it would generate code to call any of these.
2017-09-09 10:58:32 -07:00
David Tolnay
15b2714058 Merge pull request #1015 from spinda/with-variant
implement (de)serialize_with for variants
2017-09-09 10:49:24 -07:00
David Tolnay
9ce107de25
Merge pull request 963 from sfackler/u64-identifier
Conflicts:
    serde_derive/src/de.rs
2017-09-08 21:35:41 -07:00
David Tolnay
e47284c0e0 Merge pull request #1043 from greyblake/screaming-kebab-case
SCREAMING-KEBAB-CASE support
2017-09-08 21:30:01 -07:00
Markus Westerlind
0dccbb1f11 Serialize to binary if the serde format is not human readable
This implements the KISS suggested in https://github.com/serde-rs/serde/issues/790.
It is possible that one of the other approaches may be better but this
seemed like the simplest one to reignite som discussion.

Personally I find the original suggestion of adding two traits perhaps slightly
cleaner in theory but I think it ends up more complicated in the end
since the added traits also need to be duplicated to to the `Seed`
traits.

Closes #790
2017-09-07 16:20:57 +02:00
Steven Fackler
95407a4ca5 Support field ident deserialization from u32 2017-09-05 21:55:33 -07:00
Sergey Potapov
e67d941b78 Support for SCREAMING-KEBAB-CASE 2017-09-05 22:07:08 +02:00
David Tolnay
972da59ebc
Deserialize unsized Arc and Rc 2017-09-04 10:56:42 -07:00
David Tolnay
e4ea2a56e9
Serialize unsized Arc and Rc 2017-09-04 10:31:03 -07:00
Michael Smith
552971196d
Fix Clippy errors in variant serialize_with tests 2017-08-16 12:04:39 -07:00
David Tolnay
0681cd5003
Replace deprecated compiletest::default_config() 2017-08-15 22:10:18 -07:00
David Tolnay
d965367238
No longer need feature(into_boxed_c_str) 2017-08-15 22:08:23 -07:00
Michael Smith
9fc180e62f
Implement deserialize_with for variants
Complements variant serialize_with and closes #1013.
2017-08-14 14:41:05 -07:00
Michael Smith
5b815b7001
Implement serialize_with for variants
As discussed in #1013, serialize_with functions attached to variants receive an
argument for each inner value contained within the variant. Internally such a
function is wired up to the serializer as if the variant were a newtype variant.
2017-08-14 11:17:08 -07:00
David Tolnay
f36a1e0895
Inherit the visibility of remote struct definition 2017-07-25 23:52:06 -07:00
Markus Westerlind
85bccf42b6 Fix SystemTime serialization test on Windows
Windows's `SystemTime` do not have nanosecond resolution which caused the test duration to be truncated b1363a73ed/src/libstd/sys/windows/time.rs (L177)
2017-07-16 12:16:07 +02:00
David Tolnay
fa9057fa31 Merge pull request #949 from WiSaGaN/feature/support-system-time
Support std::time::SystemTime
2017-07-11 21:17:56 -07:00
Wangshan Lu
0084d82a50 Add tests for SystemTime 2017-07-12 12:01:40 +08:00
David Tolnay
9c679d9082
Test for serializing BTreeSet 2017-07-09 10:16:49 -07:00
David Tolnay
b0f9d2a0ba
Exclude macros file from being tested by itself 2017-07-09 09:24:29 -07:00
David Tolnay
f39b1db96a
Additional errors for some reason 2017-07-09 09:22:20 -07:00
David Tolnay
1d3e921ba6
Fix deserializer bounds on remote derive 2017-06-29 20:12:44 -07:00
Steven Fackler
8e8694261b Fix identifier deserialization from non-u32
Closes #962
2017-06-19 20:23:14 -07:00
David Tolnay
4fdba725fe
Revert "Support deserialization of struct keys from integers"
This is not as useful as expected because the Serializer does not know the real
index of each struct field being serialized. The best it can do is keep a
counter, which goes wrong if fields are conditionally skipped.

This reverts commit eec7101894.
2017-06-18 09:11:21 -07:00
Steven Fackler
eec7101894 Support deserialization of struct keys from integers
serde-cbor supports a "packed" serialization flag which causes keys to
be serialized as their indices, but the deserializer currently has to
hardcode support for this format. We can simply support deserialization
of struct keys from integers as we already do for enum variants.
2017-06-17 18:12:07 -07:00
spikefoo
1669c69714 Add a combined #serde[(skip)] field attribute 2017-05-16 12:33:26 +03:00
David Tolnay
cda1fc46b0
Fix internally tagged struct variant containing unit variant containing borrowed string 2017-05-14 12:39:42 -07:00
David Tolnay
c1259fbc87
Support borrowing within internally tagged enum 2017-05-10 19:56:05 -07:00
Paul Collier
f347b2d363 impl Deserialize for &'a Path 2017-05-10 13:03:03 -04:00
Ted Driggs
2440b59aae Address feedback on PR #905
* Added error test when deny_unknown_fields enabled
* Fixed next_relevant_key to use absolute paths
2017-04-27 12:21:32 -07:00
Ted Driggs
873cfbe9ab Fix #816 - adjacently-tagged enums honor deny_unknown_fields 2017-04-27 11:24:09 -07:00
David Tolnay
15341780a2
Use struct variants in test suite 2017-04-19 13:06:31 -07:00
David Tolnay
26a6ba177c
Remove error from serde_test public API 2017-04-19 11:54:48 -07:00
David Tolnay
86deb8db79
Remove seq_fixed_size in favor of tuple 2017-04-17 12:07:49 -07:00
David Tolnay
cdfd445528
Generate deserialize impls for identifiers 2017-04-14 21:53:48 -07:00
David Tolnay
3f920f645c
License boilerplate 2017-04-13 17:34:42 -07:00
David Tolnay
ea8fb97beb
Format in rfc style 2017-04-13 12:32:29 -07:00
David Tolnay
0d82bbf74f
Rename ValueDeserializer trait to IntoDeserializer 2017-04-11 23:20:35 -07:00
David Tolnay
517270a943 Merge pull request #858 from serde-rs/remote
Derive for remote types
2017-04-10 12:33:38 -07:00
David Tolnay
6a6606cd64
Test unknown field in remote struct 2017-04-10 12:23:02 -07:00
David Tolnay
174867295b
Test missing field in remote struct 2017-04-10 12:22:51 -07:00
David Tolnay
ad5bf04c4e
Test for incorrect remote type deserializing 2017-04-10 12:15:40 -07:00
David Tolnay
2deacf8eaa
Detect incorrect remote type without getter 2017-04-10 12:12:00 -07:00
David Tolnay
e133b8b708
Fix unused import on windows 2017-04-09 14:11:27 -07:00
David Tolnay
78f682590a
Merge branch 'origin/1.0' into 'origin/remote'
Conflicts:
    serde_derive/src/de.rs
2017-04-09 13:19:04 -07:00
David Tolnay
1986c17052
Remove conversion from empty seq to unit struct 2017-04-09 13:08:05 -07:00
David Tolnay
5ec317a899
More compile-fail tests for remote derive 2017-04-09 11:11:27 -07:00
David Tolnay
9d8987bde8
Require getters to return the correct type 2017-04-09 10:59:54 -07:00
David Tolnay
a6d172111b
Derive for remote types 2017-04-09 10:15:46 -07:00
David Tolnay
995f2b3f76
Ignore clippy false positive 2017-04-07 09:21:30 -07:00
David Tolnay
6388019ad4
Relax impls for [T; 0] 2017-04-05 17:34:13 -07:00
David Tolnay
aa30ef827c
Move Bytes and ByteBuf to their own crate
Moved to https://github.com/serde-rs/bytes.
2017-04-05 15:21:27 -07:00
David Tolnay
e66033e53e
Remove implicit conversion from float to integer 2017-04-05 11:25:12 -07:00
David Tolnay
51d3fb1ebc
Update token names in test suite 2017-04-05 10:40:14 -07:00
David Tolnay
67ed7a0edd
Eliminate Sep tokens in serde_test 2017-04-05 09:42:27 -07:00
David Tolnay
c3d9b42cdf
Fix handling of option and newtype in IgnoredAny 2017-04-05 09:19:22 -07:00
David Tolnay
cabc299447 Merge pull request #839 from serde-rs/conv
Remove questionable type conversions
2017-04-05 08:11:50 -07:00
David Tolnay
b43554fbb1
Require slice of tokens in serde_test::Deserializer 2017-04-05 00:22:00 -07:00
David Tolnay
5871fb9ce0
Remove lifetime from serde_test::Token 2017-04-05 00:17:50 -07:00
David Tolnay
d03ecda333
Test that conversions do not happen 2017-04-04 18:50:40 -07:00
David Tolnay
7a722d5060
Remove questionable conversion tests 2017-04-04 18:38:58 -07:00
David Tolnay
20ff9ba89b
Add tests of deserializing borrows 2017-04-04 10:47:21 -07:00
David Tolnay
fb48111e46
Derive for borrowed fields 2017-04-03 00:40:45 -07:00
David Tolnay
d3a2f5e268
Add a 'de lifetime to the deserialize traits 2017-03-29 00:10:34 -07:00
Alex Crichton
ce687431f3 Implement Serialize/Deserialize for OsStr/OsString
This commit implements the two serde traits for the libstd `OsStr` and
`OsString` types. This came up as a use case during implementing sccache where
we're basically just doing IPC to communicate paths around. Additionally the
`Path` and `PathBuf` implementations have been updated to delegate to the os
string ones.

These types are platform-specific, however, so the serialization/deserialization
isn't trivial. Currently this "fakes" a newtype variant for Unix/Windows to
prevent cross-platform serialization/deserialization. This means if you're doing
IPC within the same OS (e.g. Windows to Windows) then serialization should be
infallible. If you're doing IPC across platforms (e.g.  Unix to Windows) then
using `OsString` is guaranteed to fail as bytes from one OS won't deserialize on
the other (even if they're unicode).
2017-03-27 11:44:50 -07:00
David Tolnay
42b2fd8eec
Improve error message parsing from and into 2017-03-18 09:22:44 -07:00
John Baublitz
bc946e4fd7 Macro attributes to specify From and Into trait types for structs and enums (#817)
* serde macro support for type conversions through From and Into trait

* Revisions requested by dtolnay

* Additional changes requested by dtolnay
2017-03-18 09:22:27 -07:00
Robert O'Callahan
cc0d045f5c Add Deserialize impl for std::ops::Range
Resolves #796
2017-03-10 08:39:34 +13:00
Robert O'Callahan
aebe1fddab Add Serialize impl for std::ops::Range 2017-03-10 00:35:04 +13:00
David Tolnay
dd6989d551
Actually run unstable tests 2017-03-08 21:02:15 -08:00
Jon Gjengset
0c2fed49e2
Add Deserialize impl for CStr
Fixes #810
2017-03-08 23:57:26 -05:00
David Tolnay
6d9397d573
Implement deserialize_enum for U32Deserializer 2017-03-07 09:05:33 -08:00
David Tolnay
cc06f070d1
Use the existing CString error message 2017-03-05 13:59:18 -08:00
Jon Gjengset
d90eecd4a2
Add tests for CStr(ing) ser/de 2017-03-03 18:06:04 -05:00
David Tolnay
abc081ce9c
Test rename_all attribute 2017-02-25 11:58:34 -08:00
David Tolnay
75e6da02d3
Split up test suite so it compiles in parallel 2017-02-24 15:39:18 -08:00
David Tolnay
d4ea4a7eef
Add test for enums containing enums
Fixes #775.
2017-02-24 13:50:47 -08:00
David Tolnay
9a3c1243f4
Deserialization of Haskell style enums 2017-02-20 20:05:06 -08:00
David Tolnay
3d6e086d3e
Support custom paths in container attribute serde(default="...") 2017-02-20 17:06:00 -08:00
Thomas de Zeeuw
7bee779514 Only allow #[serde(default)]` on structs 2017-02-21 00:15:00 +01:00
Thomas de Zeeuw
9444db5f19 Add support for #[serde(default)] on structs
This allows structs to use the default value for each field defined in
the struct’s `std::default::Default` implementation, rather then the
default value for the field’s type.

```
struct StructDefault {
    a: i32,
    b: String,
}

impl Default for StructDefault {
    fn default() -> StructDefault {
        StructDefault{
            a: 100,
            b: "default".to_string(),
        }
    }
}
```

The code above will now return `100` for field `a` and `”default”` for
`b`, rather then `0` and `””` respectively.
2017-02-20 22:35:31 +01:00
David Tolnay
a3fe03c323
Serialization of Haskell style enums 2017-02-19 16:04:39 -08:00
Elliott Slaughter
4538143d00 Initial work to support serialization of adjacently tagged enums. 2017-02-18 20:46:37 -08:00
David Tolnay
c590df13b9
Add compile-fail test for the with attribute 2017-02-16 18:43:04 -08:00
David Tolnay
f500db6e91
Pair serialize_with and deserialize_with into one attribute 2017-02-14 17:36:50 -08:00
David Tolnay
45a36f1219
Fix proc macro panic message in tests 2017-02-08 08:12:32 -08:00
David Tolnay
02e6c04e9f
Check for sequence end 2017-02-02 22:13:32 -08:00
David Tolnay
ff21d557c7
Untagged and internally tagged enums 2017-02-02 18:48:30 -08:00
David Tolnay
b7ca574bb3
Use absolute paths to Ok and Err 2017-02-01 09:42:12 -08:00
Oliver Schneider
368784949e move to cargo clippy instead of using the clippy plugin (#733)
* move to cargo clippy instead of using the clippy plugin

fixes #729

* non-exectable scripts must be run with `sh`

* don't build serde in the clippy travis job

* only run clippy tests if installing clippy succeeds

* why is travis so picky?

* no more serde_codegen

* serde_test_suite_deps has no features

* don't use empty loops, llvm optimizes them to undefined behaviour

* abort the clippy job when clippy lints are triggered

* use caches on travis to speed up builds

* why are we even using `travis-cargo`?

* need to reinstall clippy frequently due to nightly updates

* command line tools are hard
2017-01-31 09:09:37 -08:00
David Tolnay
a9b5cc4830
Fix invalid_length message for tuples and arrays 2017-01-28 15:00:54 -08:00
David Tolnay
dd13fd3a34
Isolate the compiletest dependencies 2017-01-27 14:53:30 -08:00
David Tolnay
91f628727b
Clean up the compile_tests script 2017-01-27 14:37:28 -08:00
David Tolnay
09c69da909
Move test macro to where it is used 2017-01-25 20:55:55 -08:00
David Tolnay
7ee175f448
Remove duplicate btreemap macro 2017-01-25 20:54:31 -08:00
David Tolnay
7a2bfdc1dd
Consistent underscores in root directory 2017-01-25 20:45:33 -08:00