History

refactor

Sebastian Thiel committed 6 years ago

Commit 987787e1 parent 512ed6c4 files · +137 −140Browse files

Showing the changes to git-object/tests (3 of 4 files). Show all

Unified · Split

3 files
  1. git-object/tests/owned/mod.rs +2 −137
  2. git-object/tests/owned/object.rs +110 −0
  3. git-object/tests/owned/tag.rs +22 −0
git-object/tests/owned/mod.rs+2−137
@@ -1,137 +1,2 @@
1mod object {1mod object;
2 mod time {2mod tag;
3 use bstr::ByteSlice;
4 use git_object::{Sign, Time};
5
6 #[test]
7 fn write_to() {
8 for (time, expected) in &[
9 (
10 Time {
11 time: 500,
12 offset: 9000,
13 sign: Sign::Plus,
14 },
15 "500 +0230",
16 ),
17 (
18 Time {
19 time: 189009009,
20 offset: 36000,
21 sign: Sign::Minus,
22 },
23 "189009009 -1000",
24 ),
25 (
26 Time {
27 time: 0,
28 offset: 0,
29 sign: Sign::Minus,
30 },
31 "0 -0000",
32 ),
33 ] {
34 let mut output = Vec::new();
35 time.write_to(&mut output).unwrap();
36 assert_eq!(output.as_bstr(), expected);
37 }
38 }
39 }
40
41 mod signature {
42 mod write_to {
43 mod invalid {
44 use git_object::{owned, Sign, Time};
45
46 #[test]
47 fn name() {
48 let signature = owned::Signature {
49 name: "invalid < middlename".into(),
50 email: "ok".into(),
51 time: default_time(),
52 };
53 assert_eq!(
54 format!("{:?}", signature.write_to(Vec::new())),
55 "Err(Custom { kind: Other, error: IllegalCharacter })"
56 );
57 }
58
59 #[test]
60 fn email() {
61 let signature = owned::Signature {
62 name: "ok".into(),
63 email: "server>.example.com".into(),
64 time: default_time(),
65 };
66 assert_eq!(
67 format!("{:?}", signature.write_to(Vec::new())),
68 "Err(Custom { kind: Other, error: IllegalCharacter })"
69 );
70 }
71
72 #[test]
73 fn name_with_newline() {
74 let signature = owned::Signature {
75 name: "hello\nnewline".into(),
76 email: "name@example.com".into(),
77 time: default_time(),
78 };
79 assert_eq!(
80 format!("{:?}", signature.write_to(Vec::new())),
81 "Err(Custom { kind: Other, error: IllegalCharacter })"
82 );
83 }
84
85 fn default_time() -> Time {
86 Time {
87 time: 0,
88 offset: 0,
89 sign: Sign::Plus,
90 }
91 }
92 }
93 }
94
95 use bstr::ByteSlice;
96 use git_object::{borrowed, owned};
97
98 #[test]
99 fn round_trip() {
100 for input in &[
101 &b"Sebastian Thiel <byronimo@gmail.com> 1 -0030"[..],
102 ".. ☺️Sebastian 王知明 Thiel🙌 .. <byronimo@gmail.com> 1528473343 +0230".as_bytes(),
103 ".. whitespace \t is explicitly allowed - unicode aware trimming must be done elsewhere <byronimo@gmail.com> 1528473343 +0230".as_bytes(),
104 ] {
105 let signature: owned::Signature = borrowed::Signature::from_bytes(input).unwrap().into();
106 let mut output = Vec::new();
107 signature.write_to(&mut output).unwrap();
108 assert_eq!(output.as_bstr(), input.as_bstr());
109 }
110 }
111 }
112}
113
114mod tag {
115 use crate::fixture_bytes;
116 use bstr::ByteSlice;
117 use git_object::{borrowed, owned};
118
119 // Git checks out text files with different line feeds, which causes parsing failure.
120 // No way to configure this in the checkout action :/
121 #[cfg_attr(windows, ignore)]
122 #[test]
123 fn round_trip() {
124 for input in &[
125 "tag/empty.txt",
126 "tag/whitespace.txt",
127 "tag/with-newlines.txt",
128 "tag/signed.txt",
129 ] {
130 let input = fixture_bytes(input);
131 let tag: owned::Tag = borrowed::Tag::from_bytes(&input).unwrap().into();
132 let mut output = Vec::new();
133 tag.write_to(&mut output).unwrap();
134 assert_eq!(input.as_bstr(), output.as_bstr());
135 }
136 }
137}
git-object/tests/owned/object.rs+110−0
@@ -0,0 +1,110 @@
1mod time {
2 use bstr::ByteSlice;
3 use git_object::{Sign, Time};
4
5 #[test]
6 fn write_to() {
7 for (time, expected) in &[
8 (
9 Time {
10 time: 500,
11 offset: 9000,
12 sign: Sign::Plus,
13 },
14 "500 +0230",
15 ),
16 (
17 Time {
18 time: 189009009,
19 offset: 36000,
20 sign: Sign::Minus,
21 },
22 "189009009 -1000",
23 ),
24 (
25 Time {
26 time: 0,
27 offset: 0,
28 sign: Sign::Minus,
29 },
30 "0 -0000",
31 ),
32 ] {
33 let mut output = Vec::new();
34 time.write_to(&mut output).unwrap();
35 assert_eq!(output.as_bstr(), expected);
36 }
37 }
38}
39
40mod signature {
41 mod write_to {
42 mod invalid {
43 use git_object::{owned, Sign, Time};
44
45 #[test]
46 fn name() {
47 let signature = owned::Signature {
48 name: "invalid < middlename".into(),
49 email: "ok".into(),
50 time: default_time(),
51 };
52 assert_eq!(
53 format!("{:?}", signature.write_to(Vec::new())),
54 "Err(Custom { kind: Other, error: IllegalCharacter })"
55 );
56 }
57
58 #[test]
59 fn email() {
60 let signature = owned::Signature {
61 name: "ok".into(),
62 email: "server>.example.com".into(),
63 time: default_time(),
64 };
65 assert_eq!(
66 format!("{:?}", signature.write_to(Vec::new())),
67 "Err(Custom { kind: Other, error: IllegalCharacter })"
68 );
69 }
70
71 #[test]
72 fn name_with_newline() {
73 let signature = owned::Signature {
74 name: "hello\nnewline".into(),
75 email: "name@example.com".into(),
76 time: default_time(),
77 };
78 assert_eq!(
79 format!("{:?}", signature.write_to(Vec::new())),
80 "Err(Custom { kind: Other, error: IllegalCharacter })"
81 );
82 }
83
84 fn default_time() -> Time {
85 Time {
86 time: 0,
87 offset: 0,
88 sign: Sign::Plus,
89 }
90 }
91 }
92 }
93
94 use bstr::ByteSlice;
95 use git_object::{borrowed, owned};
96
97 #[test]
98 fn round_trip() {
99 for input in &[
100 &b"Sebastian Thiel <byronimo@gmail.com> 1 -0030"[..],
101 ".. ☺️Sebastian 王知明 Thiel🙌 .. <byronimo@gmail.com> 1528473343 +0230".as_bytes(),
102 ".. whitespace \t is explicitly allowed - unicode aware trimming must be done elsewhere <byronimo@gmail.com> 1528473343 +0230".as_bytes(),
103 ] {
104 let signature: owned::Signature = borrowed::Signature::from_bytes(input).unwrap().into();
105 let mut output = Vec::new();
106 signature.write_to(&mut output).unwrap();
107 assert_eq!(output.as_bstr(), input.as_bstr());
108 }
109 }
110}
git-object/tests/owned/tag.rs+22−0
@@ -0,0 +1,22 @@
1use crate::fixture_bytes;
2use bstr::ByteSlice;
3use git_object::{borrowed, owned};
4
5// Git checks out text files with different line feeds, which causes parsing failure.
6// No way to configure this in the checkout action :/
7#[cfg_attr(windows, ignore)]
8#[test]
9fn round_trip() {
10 for input in &[
11 "tag/empty.txt",
12 "tag/whitespace.txt",
13 "tag/with-newlines.txt",
14 "tag/signed.txt",
15 ] {
16 let input = fixture_bytes(input);
17 let tag: owned::Tag = borrowed::Tag::from_bytes(&input).unwrap().into();
18 let mut output = Vec::new();
19 tag.write_to(&mut output).unwrap();
20 assert_eq!(input.as_bstr(), output.as_bstr());
21 }
22}