Browse Source

Test post parsing

master
Dylan Baker 6 years ago
parent
commit
4cfa3b276d
4 changed files with 96 additions and 0 deletions
  1. 63
    0
      Cargo.lock
  2. 1
    0
      Cargo.toml
  3. 1
    0
      src/main.rs
  4. 31
    0
      src/post.rs

+ 63
- 0
Cargo.lock View File

48
  "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
48
  "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
49
 ]
49
 ]
50
 
50
 
51
+[[package]]
52
+name = "cloudabi"
53
+version = "0.0.3"
54
+source = "registry+https://github.com/rust-lang/crates.io-index"
55
+dependencies = [
56
+ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
57
+]
58
+
59
+[[package]]
60
+name = "fuchsia-zircon"
61
+version = "0.3.3"
62
+source = "registry+https://github.com/rust-lang/crates.io-index"
63
+dependencies = [
64
+ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
65
+ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
66
+]
67
+
68
+[[package]]
69
+name = "fuchsia-zircon-sys"
70
+version = "0.3.3"
71
+source = "registry+https://github.com/rust-lang/crates.io-index"
72
+
51
 [[package]]
73
 [[package]]
52
 name = "lazy_static"
74
 name = "lazy_static"
53
 version = "1.2.0"
75
 version = "1.2.0"
68
  "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
90
  "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
69
 ]
91
 ]
70
 
92
 
93
+[[package]]
94
+name = "rand"
95
+version = "0.5.5"
96
+source = "registry+https://github.com/rust-lang/crates.io-index"
97
+dependencies = [
98
+ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
99
+ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
100
+ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
101
+ "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
102
+ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
103
+]
104
+
105
+[[package]]
106
+name = "rand_core"
107
+version = "0.2.2"
108
+source = "registry+https://github.com/rust-lang/crates.io-index"
109
+dependencies = [
110
+ "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
111
+]
112
+
113
+[[package]]
114
+name = "rand_core"
115
+version = "0.3.0"
116
+source = "registry+https://github.com/rust-lang/crates.io-index"
117
+
71
 [[package]]
118
 [[package]]
72
 name = "redox_syscall"
119
 name = "redox_syscall"
73
 version = "0.1.42"
120
 version = "0.1.42"
139
  "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
186
  "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
140
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
187
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
141
  "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
188
  "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
189
+ "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
142
 ]
190
 ]
143
 
191
 
144
 [[package]]
192
 [[package]]
156
 version = "1.0.2"
204
 version = "1.0.2"
157
 source = "registry+https://github.com/rust-lang/crates.io-index"
205
 source = "registry+https://github.com/rust-lang/crates.io-index"
158
 
206
 
207
+[[package]]
208
+name = "uuid"
209
+version = "0.7.1"
210
+source = "registry+https://github.com/rust-lang/crates.io-index"
211
+dependencies = [
212
+ "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
213
+]
214
+
159
 [[package]]
215
 [[package]]
160
 name = "vec_map"
216
 name = "vec_map"
161
 version = "0.8.1"
217
 version = "0.8.1"
192
 "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
248
 "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
193
 "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
249
 "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
194
 "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e"
250
 "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e"
251
+"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
252
+"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
253
+"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
195
 "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
254
 "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
196
 "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d"
255
 "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d"
197
 "checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16"
256
 "checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16"
257
+"checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c"
258
+"checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372"
259
+"checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db"
198
 "checksum redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cf8fb82a4d1c9b28f1c26c574a5b541f5ffb4315f6c9a791fa47b6a04438fe93"
260
 "checksum redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cf8fb82a4d1c9b28f1c26c574a5b541f5ffb4315f6c9a791fa47b6a04438fe93"
199
 "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
261
 "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
200
 "checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467"
262
 "checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467"
206
 "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86"
268
 "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86"
207
 "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
269
 "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
208
 "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737"
270
 "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737"
271
+"checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6"
209
 "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
272
 "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
210
 "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
273
 "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
211
 "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0"
274
 "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0"

+ 1
- 0
Cargo.toml View File

7
 clap = "2.32.0"
7
 clap = "2.32.0"
8
 lazy_static = "1.2.0"
8
 lazy_static = "1.2.0"
9
 regex = "1"
9
 regex = "1"
10
+uuid = { version = "0.7", features = ["v4"] }

+ 1
- 0
src/main.rs View File

2
 #[macro_use]
2
 #[macro_use]
3
 extern crate lazy_static;
3
 extern crate lazy_static;
4
 extern crate regex;
4
 extern crate regex;
5
+extern crate uuid;
5
 
6
 
6
 use std::env;
7
 use std::env;
7
 use std::fs;
8
 use std::fs;

+ 31
- 0
src/post.rs View File

29
         slug: String::from(slug),
29
         slug: String::from(slug),
30
     }
30
     }
31
 }
31
 }
32
+
33
+mod tests {
34
+    use super::*;
35
+    use std::{env, fs};
36
+    use uuid::Uuid;
37
+
38
+    #[test]
39
+    fn test_parse_post() {
40
+        let temp_dir = env::temp_dir();
41
+        let working_dir = temp_dir.join(&Uuid::new_v4().to_string());
42
+        fs::create_dir(&working_dir).unwrap();
43
+        env::set_current_dir(&working_dir).unwrap();
44
+
45
+        let cwd = env::current_dir().unwrap();
46
+        fs::create_dir(cwd.join("posts")).unwrap();
47
+
48
+        let slug = Uuid::new_v4().to_string();
49
+        let filename = format!("{}.md", slug);
50
+        fs::write(
51
+            cwd.join("posts").join(&filename),
52
+            "# This is a post\n\nHere is some content that goes in the post",
53
+        ).unwrap();
54
+
55
+        let post = parse_post(cwd.join("posts").join(&filename));
56
+        assert_eq!("This is a post", post.title);
57
+        assert_eq!("Here is some content that goes in the post", post.body);
58
+        assert_eq!(slug, post.slug);
59
+
60
+        fs::remove_dir_all(temp_dir.join(&working_dir)).unwrap();
61
+    }
62
+}

Loading…
Cancel
Save