diff --git a/v0.5/Cargo.lock b/v0.5/Cargo.lock index 00d6a965b..4a852cc0b 100644 --- a/v0.5/Cargo.lock +++ b/v0.5/Cargo.lock @@ -62,12 +62,34 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bstr" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "cpufeatures" version = "0.2.14" @@ -112,6 +134,12 @@ dependencies = [ "log", ] +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "equivalent" version = "1.0.1" @@ -122,12 +150,11 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" name = "fastn-p1" version = "0.1.0" dependencies = [ - "itertools", + "insta", "lalrpop", "lalrpop-util 0.21.0", "logos", "serde", - "serde_json", ] [[package]] @@ -152,6 +179,19 @@ dependencies = [ "version_check", ] +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + [[package]] name = "hashbrown" version = "0.15.0" @@ -177,6 +217,21 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "insta" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60" +dependencies = [ + "console", + "globset", + "lazy_static", + "linked-hash-map", + "serde", + "similar", + "walkdir", +] + [[package]] name = "itertools" version = "0.13.0" @@ -186,12 +241,6 @@ dependencies = [ "either", ] -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - [[package]] name = "keccak" version = "0.1.5" @@ -254,6 +303,12 @@ version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "lock_api" version = "0.4.12" @@ -437,12 +492,6 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - [[package]] name = "same-file" version = "1.0.6" @@ -478,18 +527,6 @@ dependencies = [ "syn", ] -[[package]] -name = "serde_json" -version = "1.0.132" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - [[package]] name = "sha3" version = "0.10.8" @@ -500,6 +537,12 @@ dependencies = [ "keccak", ] +[[package]] +name = "similar" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" + [[package]] name = "siphasher" version = "0.3.11" diff --git a/v0.5/fastn-p1/Cargo.toml b/v0.5/fastn-p1/Cargo.toml index 4b6a3e9b4..08c76414d 100644 --- a/v0.5/fastn-p1/Cargo.toml +++ b/v0.5/fastn-p1/Cargo.toml @@ -15,8 +15,11 @@ logos.workspace = true lalrpop-util.workspace = true [dev-dependencies] -itertools.workspace = true -serde_json.workspace = true +insta = { version = "1.38", features = ["yaml", "glob"] } [build-dependencies] -lalrpop.workspace = true \ No newline at end of file +lalrpop.workspace = true + +[profile.dev.package] +insta.opt-level = 3 +similar.opt-level = 3 \ No newline at end of file diff --git a/v0.5/fastn-p1/src/lib.rs b/v0.5/fastn-p1/src/lib.rs index fe0a9d947..83bf8daa3 100644 --- a/v0.5/fastn-p1/src/lib.rs +++ b/v0.5/fastn-p1/src/lib.rs @@ -8,8 +8,6 @@ mod lexer; pub mod parse_v2; mod parser_v3; mod section; -#[cfg(test)] -mod test; mod token; use lalrpop_util::lalrpop_mod; @@ -156,11 +154,26 @@ pub enum SingleError { // HeaderNotFound, } -// #[test] -fn grammar_test() { - let input = "-- foo bar():"; - let lexer = fastn_p1::lexer::Lexer::new(input); - let parser = fastn_p1::grammar::SectionParser::new(); - let ast = parser.parse(input, lexer).unwrap(); - dbg!(ast); +#[cfg(test)] +mod test { + // #[test] + fn grammar_test() { + let input = "-- foo bar():"; + let lexer = fastn_p1::lexer::Lexer::new(input); + let parser = fastn_p1::grammar::SectionParser::new(); + let ast = parser.parse(input, lexer).unwrap(); + dbg!(ast); + } + + #[test] + fn test_parse_output() { + insta::glob!("..", "t/*.ftd", |path| { + let s = { + let mut s = std::fs::read_to_string(&path).unwrap(); + s.push('\n'); + s + }; + insta::assert_yaml_snapshot!(fastn_p1::ParseOutput::new("foo", &s)); + }) + } } diff --git a/v0.5/fastn-p1/src/snapshots/.gitattributes b/v0.5/fastn-p1/src/snapshots/.gitattributes new file mode 100644 index 000000000..3c3f58997 --- /dev/null +++ b/v0.5/fastn-p1/src/snapshots/.gitattributes @@ -0,0 +1 @@ +*.snap linguist-generated \ No newline at end of file diff --git a/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@000-tutorial.ftd.snap b/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@000-tutorial.ftd.snap new file mode 100644 index 000000000..490e2097b --- /dev/null +++ b/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@000-tutorial.ftd.snap @@ -0,0 +1,24 @@ +--- +source: fastn-p1/src/lib.rs +expression: "fastn_p1::ParseOutput::new(\"foo\", &s)" +input_file: fastn-p1/t/000-tutorial.ftd +--- +doc_name: foo +module_doc: + start: 51 + end: 220 +items: + - span: + start: 0 + end: 50 + value: Comment + - span: + start: 221 + end: 283 + value: Comment + - span: + start: 285 + end: 320 + value: + Error: UnexpectedDocComment +line_starts: [] diff --git a/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@001-empty.ftd.snap b/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@001-empty.ftd.snap new file mode 100644 index 000000000..aaf472d33 --- /dev/null +++ b/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@001-empty.ftd.snap @@ -0,0 +1,9 @@ +--- +source: fastn-p1/src/lib.rs +expression: "fastn_p1::ParseOutput::new(\"foo\", &s)" +input_file: fastn-p1/t/001-empty.ftd +--- +doc_name: foo +module_doc: ~ +items: [] +line_starts: [] diff --git a/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@002-few-comments.ftd.snap b/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@002-few-comments.ftd.snap new file mode 100644 index 000000000..0cbd314cc --- /dev/null +++ b/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@002-few-comments.ftd.snap @@ -0,0 +1,25 @@ +--- +source: fastn-p1/src/lib.rs +expression: "fastn_p1::ParseOutput::new(\"foo\", &s)" +input_file: fastn-p1/t/002-few-comments.ftd +--- +doc_name: foo +module_doc: ~ +items: + - span: + start: 0 + end: 25 + value: Comment + - span: + start: 26 + end: 52 + value: Comment + - span: + start: 52 + end: 81 + value: Comment + - span: + start: 84 + end: 162 + value: Comment +line_starts: [] diff --git a/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@003-module-doc.ftd.snap b/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@003-module-doc.ftd.snap new file mode 100644 index 000000000..51fab3351 --- /dev/null +++ b/v0.5/fastn-p1/src/snapshots/fastn_p1__test__parse_output@003-module-doc.ftd.snap @@ -0,0 +1,19 @@ +--- +source: fastn-p1/src/lib.rs +expression: "fastn_p1::ParseOutput::new(\"foo\", &s)" +input_file: fastn-p1/t/003-module-doc.ftd +--- +doc_name: foo +module_doc: + start: 22 + end: 77 +items: + - span: + start: 0 + end: 21 + value: Comment + - span: + start: 78 + end: 99 + value: Comment +line_starts: [] diff --git a/v0.5/fastn-p1/src/test/mod.rs b/v0.5/fastn-p1/src/test/mod.rs deleted file mode 100644 index 48e4d8310..000000000 --- a/v0.5/fastn-p1/src/test/mod.rs +++ /dev/null @@ -1,62 +0,0 @@ -#![allow(dead_code)] - -mod sorted_json; - -#[test] -fn test_all() { - // we are storing files in folder named `t` and not inside `tests`, because `cargo test` - // re-compiles the crate, and we don't want to recompile the crate for every test - let cli_args: Vec = std::env::args().collect(); - let fix = cli_args.iter().any(|v| v.eq("fix=true")); - match cli_args.iter().find_map(|v| v.strip_prefix("path=")) { - Some(path) => p1(path, fix), - None => { - for file in find_all_files_matching_extension_recursively("t/", "ftd") { - p1(&file, fix); - } - } - } -} - -fn p1(file: impl AsRef + std::fmt::Debug, fix: bool) { - let json = file.as_ref().with_extension("json"); - let s = { - let mut s = std::fs::read_to_string(&file).unwrap(); - s.push('\n'); - s - }; - println!("testing {file:?}"); - let output = fastn_p1::ParseOutput::new("foo", &s); - let expected_json = - fastn_p1::test::sorted_json::to_json(&serde_json::to_value(&output).unwrap()); - if fix { - println!("fixing {file:?}"); - std::fs::write(json, expected_json).unwrap(); - return; - } - println!("testing {file:?}"); - let t = std::fs::read_to_string(&json).unwrap(); - assert_eq!(&t, &expected_json, "Expected JSON: {expected_json}") -} - -pub fn find_all_files_matching_extension_recursively( - dir: impl AsRef + std::fmt::Debug, - extension: &str, -) -> Vec { - let mut files = vec![]; - for entry in std::fs::read_dir(dir).unwrap() { - let entry = entry.unwrap(); - let path = entry.path(); - if path.is_dir() { - files.extend(find_all_files_matching_extension_recursively( - &path, extension, - )); - } else { - match path.extension() { - Some(ext) if ext == extension => files.push(path), - _ => continue, - } - } - } - files -} diff --git a/v0.5/fastn-p1/src/test/sorted_json.rs b/v0.5/fastn-p1/src/test/sorted_json.rs deleted file mode 100644 index 796ebb12c..000000000 --- a/v0.5/fastn-p1/src/test/sorted_json.rs +++ /dev/null @@ -1,291 +0,0 @@ -pub fn to_json(v: &serde_json::Value) -> String { - let s = String::new(); - to_json_(v, s, "") -} - -fn escape_json_string(out: &mut String, s: &str) { - out.push('\"'); - - let bytes = s.as_bytes(); - - let mut start = 0; - - for (i, &byte) in bytes.iter().enumerate() { - let escape = ESCAPE[byte as usize]; - if escape == 0 { - continue; - } - - if start < i { - out.push_str(&s[start..i]); - } - - let char_escape = CharEscape::from_escape_table(escape, byte); - out.push_str(&write_char_escape(char_escape)); - - start = i + 1; - } - - if start != bytes.len() { - out.push_str(&s[start..]); - } - - out.push('\"'); -} - -const TAB: &str = " "; - -fn to_json_(v: &serde_json::Value, mut out: String, prefix: &str) -> String { - // pretty printer for json that prints the dict keys in sorted order - let prefix2 = format!("{}{}", prefix, TAB); - match v { - serde_json::Value::String(s) => escape_json_string(&mut out, s), - serde_json::Value::Null => out.push_str("null"), - serde_json::Value::Bool(b) => { - if *b { - out.push_str("true") - } else { - out.push_str("false") - } - } - serde_json::Value::Number(n) => out.push_str(&format!("{}", n)), - serde_json::Value::Array(a) => { - let len = a.len(); - if len == 0 { - out.push_str("[]"); - } else { - out.push_str("[\n"); - for (idx, item) in itertools::enumerate(a.iter()) { - out.push_str(&prefix2); - out = to_json_(item, out, &prefix2); - if idx < len - 1 { - out.push_str(",\n"); - } - } - out.push('\n'); - out.push_str(prefix); - out.push(']'); - } - } - serde_json::Value::Object(m) => { - let len = m.len(); - if len == 0 { - out.push_str("{}"); - } else { - out.push_str("{\n"); - for (idx, k) in itertools::enumerate(itertools::sorted(m.keys())) { - let v = m.get(k).unwrap(); - out.push_str(&prefix2); - escape_json_string(&mut out, k); - out.push_str(": "); - out = to_json_(v, out, &prefix2); - if idx < len - 1 { - out.push_str(",\n"); - } - } - out.push('\n'); - out.push_str(prefix); - out.push('}'); - } - } - } - out -} - -const BB: u8 = b'b'; // \x08 -const TT: u8 = b't'; // \x09 -const NN: u8 = b'n'; // \x0A -const FF: u8 = b'f'; // \x0C -const RR: u8 = b'r'; // \x0D -const QU: u8 = b'"'; // \x22 -const BS: u8 = b'\\'; // \x5C -const U: u8 = b'u'; // \x00...\x1F except the ones above - -// Lookup table of escape sequences. A value of b'x' at index i means that byte -// i is escaped as "\x" in JSON. A value of 0 means that byte i is not escaped. -#[rustfmt::skip] -static ESCAPE: [u8; 256] = [ - // 1 2 3 4 5 6 7 8 9 A B C D E F - U, U, U, U, U, U, U, U, BB, TT, NN, U, FF, RR, U, U, // 0 - U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, // 1 - 0, 0, QU, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, BS, 0, 0, 0, // 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // F -]; - -/// Represents a character escape code in a type-safe manner. -pub enum CharEscape { - /// An escaped quote `"` - Quote, - /// An escaped reverse solidus `\` - ReverseSolidus, - // /// An escaped solidus `/` - // Solidus, - /// An escaped backspace character (usually escaped as `\b`) - Backspace, - /// An escaped form feed character (usually escaped as `\f`) - FormFeed, - /// An escaped line feed character (usually escaped as `\n`) - LineFeed, - /// An escaped carriage return character (usually escaped as `\r`) - CarriageReturn, - /// An escaped tab character (usually escaped as `\t`) - Tab, - /// An escaped ASCII plane control character (usually escaped as - /// `\u00XX` where `XX` are two hex characters) - AsciiControl(u8), -} - -impl CharEscape { - #[inline] - fn from_escape_table(escape: u8, byte: u8) -> CharEscape { - match escape { - self::BB => CharEscape::Backspace, - self::TT => CharEscape::Tab, - self::NN => CharEscape::LineFeed, - self::FF => CharEscape::FormFeed, - self::RR => CharEscape::CarriageReturn, - self::QU => CharEscape::Quote, - self::BS => CharEscape::ReverseSolidus, - self::U => CharEscape::AsciiControl(byte), - _ => unreachable!(), - } - } -} - -#[inline] -fn write_char_escape(char_escape: CharEscape) -> String { - use self::CharEscape::*; - - let mut out: Vec = vec![]; - match char_escape { - Quote => out.extend(b"\\\""), - ReverseSolidus => out.extend(b"\\\\"), - // Solidus => out.extend(b"\\/"), - Backspace => out.extend(b"\\b"), - FormFeed => out.extend(b"\\f"), - LineFeed => out.extend(b"\\n"), - CarriageReturn => out.extend(b"\\r"), - Tab => out.extend(b"\\t"), - AsciiControl(byte) => { - static HEX_DIGITS: [u8; 16] = *b"0123456789abcdef"; - let bytes = &[ - b'\\', - b'u', - b'0', - b'0', - HEX_DIGITS[(byte >> 4) as usize], - HEX_DIGITS[(byte & 0xF) as usize], - ]; - out.extend(bytes); - } - }; - String::from_utf8(out).unwrap() -} - -#[cfg(test)] -mod tests { - use serde_json::{value::Number, Value}; - - #[track_caller] - fn a(v: Value, out: &'static str) { - assert_eq!(super::to_json(&v), out); - } - - #[test] - fn to_json() { - a(serde_json::json! {null}, "null"); - a(serde_json::json! {1}, "1"); - a(Value::Number(Number::from_f64(1.0).unwrap()), "1.0"); - a( - Value::Number(Number::from_f64(-1.0002300e2).unwrap()), - "-100.023", - ); - a(serde_json::json! {"foo"}, "\"foo\""); - a( - serde_json::json! {r#"hello "world""#}, - r#""hello \"world\"""#, - ); - a( - serde_json::json! {[1, 2]}, - "[ - 1, - 2 -]", - ); - a( - serde_json::json! {[1, 2, []]}, - "[ - 1, - 2, - [] -]", - ); - a( - serde_json::json! {[1, 2, [1, 2, [1, 2]]]}, - "[ - 1, - 2, - [ - 1, - 2, - [ - 1, - 2 - ] - ] -]", - ); - a( - serde_json::json! {{"yo": 1, "lo": 2, "no": {}}}, - "{ - \"lo\": 2, - \"no\": {}, - \"yo\": 1 -}", - ); - a( - serde_json::json! {{"yo": 1, "lo": 2, "baz": {"one": 1, "do": 2, "tres": {"x": "x", "y": "y"}}}}, - "{ - \"baz\": { - \"do\": 2, - \"one\": 1, - \"tres\": { - \"x\": \"x\", - \"y\": \"y\" - } - }, - \"lo\": 2, - \"yo\": 1 -}", - ); - a( - serde_json::json! {{"yo": 1, "lo": 2, "baz": {"one": 1, "do": 2, "tres": ["x", "x", "y", "y"]}}}, - "{ - \"baz\": { - \"do\": 2, - \"one\": 1, - \"tres\": [ - \"x\", - \"x\", - \"y\", - \"y\" - ] - }, - \"lo\": 2, - \"yo\": 1 -}", - ); - } -} diff --git a/v0.5/fastn-p1/src/token.rs b/v0.5/fastn-p1/src/token.rs index 8d4531279..18d4deeb2 100644 --- a/v0.5/fastn-p1/src/token.rs +++ b/v0.5/fastn-p1/src/token.rs @@ -78,7 +78,7 @@ mod test { #[test] fn test() { use logos::Logos; - let source = include_str!("../t/002-tutorial.ftd"); + let source = include_str!("../t/000-tutorial.ftd"); assert_eq!( dbg!(super::Token::lexer(source).spanned().collect::>()).len(), 434 diff --git a/v0.5/fastn-p1/t/002-tutorial.ftd b/v0.5/fastn-p1/t/000-tutorial.ftd similarity index 100% rename from v0.5/fastn-p1/t/002-tutorial.ftd rename to v0.5/fastn-p1/t/000-tutorial.ftd diff --git a/v0.5/fastn-p1/t/001-empty.json b/v0.5/fastn-p1/t/001-empty.json deleted file mode 100644 index 6946736f9..000000000 --- a/v0.5/fastn-p1/t/001-empty.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "doc_name": "foo", - "items": [], - "line_starts": [], - "module_doc": null -} \ No newline at end of file diff --git a/v0.5/fastn-p1/t/002-few-comments.json b/v0.5/fastn-p1/t/002-few-comments.json deleted file mode 100644 index 210145369..000000000 --- a/v0.5/fastn-p1/t/002-few-comments.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "doc_name": "foo", - "items": [ - { - "span": { - "end": 25, - "start": 0 - }, - "value": "Comment" - }, - { - "span": { - "end": 52, - "start": 26 - }, - "value": "Comment" - }, - { - "span": { - "end": 81, - "start": 52 - }, - "value": "Comment" - }, - { - "span": { - "end": 162, - "start": 84 - }, - "value": "Comment" - } - ], - "line_starts": [], - "module_doc": null -} \ No newline at end of file diff --git a/v0.5/fastn-p1/t/002-tutorial.json b/v0.5/fastn-p1/t/002-tutorial.json deleted file mode 100644 index fc782dc35..000000000 --- a/v0.5/fastn-p1/t/002-tutorial.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "doc_name": "foo", - "items": [ - { - "span": { - "end": 50, - "start": 0 - }, - "value": "Comment" - }, - { - "span": { - "end": 283, - "start": 221 - }, - "value": "Comment" - }, - { - "span": { - "end": 320, - "start": 285 - }, - "value": { - "Error": "UnexpectedDocComment" - } - } - ], - "line_starts": [], - "module_doc": { - "end": 220, - "start": 51 - } -} \ No newline at end of file diff --git a/v0.5/fastn-p1/t/003-module-doc.json b/v0.5/fastn-p1/t/003-module-doc.json deleted file mode 100644 index 853392d09..000000000 --- a/v0.5/fastn-p1/t/003-module-doc.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "doc_name": "foo", - "items": [ - { - "span": { - "end": 21, - "start": 0 - }, - "value": "Comment" - }, - { - "span": { - "end": 99, - "start": 78 - }, - "value": "Comment" - } - ], - "line_starts": [], - "module_doc": { - "end": 77, - "start": 22 - } -} \ No newline at end of file