From: Huck Boles Date: Mon, 8 May 2023 22:01:15 +0000 (-0500) Subject: test site written X-Git-Url: https://git.huck.website/?a=commitdiff_plain;h=f3c71abe947409d97c12a34a815f74cf4d7801a2;p=metaforge.git test site written --- diff --git a/src/tests/test_files/expanded b/src/tests/test_files/expanded new file mode 100644 index 0000000..32b6f03 --- /dev/null +++ b/src/tests/test_files/expanded @@ -0,0 +1,17 @@ +TESTS: + +var1 [VALUE]: GOOD +var2 [BLANK]: +var3 [VAL WITH SPACES]: GOOD GOOD + +arr1 [VALUE]: GOOD +arr3 [BLANK]: + +Pattern subs: + +test [WITH ARRAY]:

GOOD

GOOD GOOD

+test.sub_pat:

SUBPATTERN

+test.default:

DEFAULT

+test.blank: + +This comment should not be rendered: diff --git a/src/tests/test_files/test_expanded b/src/tests/test_files/test_expanded deleted file mode 100644 index c43616c..0000000 --- a/src/tests/test_files/test_expanded +++ /dev/null @@ -1,18 +0,0 @@ -TESTS: - -var1 [val1]: val1 -var2 [BLANK]: -var3 [value with spaces]: value with spaces - -arr1 [val1]: val1 -arr3 [BLANK]: - -Pattern subs: - -pat1 [with array]:

value

value with spaces

-pat2: - .sub_pat:

SUBPATTERN

- .default:

DEFAULT

- .blank: - -This comment should not be rendered: diff --git a/src/tests/test_files/test_site/pattern/base/default.meta b/src/tests/test_files/test_site/pattern/base/default.meta index e69de29..e820c4c 100644 --- a/src/tests/test_files/test_site/pattern/base/default.meta +++ b/src/tests/test_files/test_site/pattern/base/default.meta @@ -0,0 +1,3 @@ + + &{SOURCE} + diff --git a/src/tests/test_files/test_site/pattern/test/array.meta b/src/tests/test_files/test_site/pattern/test/array.meta new file mode 100644 index 0000000..c8f73d7 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/array.meta @@ -0,0 +1 @@ +@{array} diff --git a/src/tests/test_files/test_site/pattern/test/blank/default.meta b/src/tests/test_files/test_site/pattern/test/blank/default.meta new file mode 100644 index 0000000..7b3a785 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/blank/default.meta @@ -0,0 +1 @@ +BAD diff --git a/src/tests/test_files/test_site/pattern/test/default/default.meta b/src/tests/test_files/test_site/pattern/test/default/default.meta new file mode 100644 index 0000000..f49b816 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/default/default.meta @@ -0,0 +1 @@ +GOOD diff --git a/src/tests/test_files/test_site/pattern/test/new/default.meta b/src/tests/test_files/test_site/pattern/test/new/default.meta new file mode 100644 index 0000000..7b3a785 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/new/default.meta @@ -0,0 +1 @@ +BAD diff --git a/src/tests/test_files/test_site/pattern/test/new/new.meta b/src/tests/test_files/test_site/pattern/test/new/new.meta new file mode 100644 index 0000000..f49b816 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/new/new.meta @@ -0,0 +1 @@ +GOOD diff --git a/src/tests/test_files/test_site/pattern/test/overwrite/default.meta b/src/tests/test_files/test_site/pattern/test/overwrite/default.meta new file mode 100644 index 0000000..7b3a785 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/overwrite/default.meta @@ -0,0 +1 @@ +BAD diff --git a/src/tests/test_files/test_site/pattern/test/overwrite/overwrite.meta b/src/tests/test_files/test_site/pattern/test/overwrite/overwrite.meta new file mode 100644 index 0000000..f49b816 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/overwrite/overwrite.meta @@ -0,0 +1 @@ +GOOD diff --git a/src/tests/test_files/test_site/pattern/test/parent/default.meta b/src/tests/test_files/test_site/pattern/test/parent/default.meta new file mode 100644 index 0000000..7b3a785 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/parent/default.meta @@ -0,0 +1 @@ +BAD diff --git a/src/tests/test_files/test_site/pattern/test/parent/parent.meta b/src/tests/test_files/test_site/pattern/test/parent/parent.meta new file mode 100644 index 0000000..f49b816 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/parent/parent.meta @@ -0,0 +1 @@ +GOOD diff --git a/src/tests/test_files/test_site/pattern/test/pattern.meta b/src/tests/test_files/test_site/pattern/test/pattern.meta index 4c083a4..f49b816 100644 --- a/src/tests/test_files/test_site/pattern/test/pattern.meta +++ b/src/tests/test_files/test_site/pattern/test/pattern.meta @@ -1,15 +1 @@ - -

This is a test for pattern.meta files

- -

inserted variable: ${var}

- - &{pat} - - @{array} - - - +GOOD diff --git a/src/tests/test_files/test_site/pattern/test/sub_pat/default.meta b/src/tests/test_files/test_site/pattern/test/sub_pat/default.meta new file mode 100644 index 0000000..f49b816 --- /dev/null +++ b/src/tests/test_files/test_site/pattern/test/sub_pat/default.meta @@ -0,0 +1 @@ +GOOD diff --git a/src/tests/test_files/test_site/source/expand.meta b/src/tests/test_files/test_site/source/expand.meta index 4e1db92..1a5f54d 100644 --- a/src/tests/test_files/test_site/source/expand.meta +++ b/src/tests/test_files/test_site/source/expand.meta @@ -1,37 +1,36 @@ ${ - var1 = "val1" + var1 = "GOOD" var2 = BLANK - var3 = 'value with spaces' + var3 = 'GOOD GOOD' } @{ - arr1 = ['val1'] + arr1 = ['GOOD'] arr2 = [] - pat1.arr = ["value", "value with spaces"] + test.array = ["GOOD", "GOOD GOOD"] } &{ - pat1 = "pattern" - pat2.sub_pat = 'sub_pattern' - pat2.default = DEFAULT - pat2.blank = BLANK + test = "array" + test.sub_pat = 'sub_pattern' + test.default = DEFAULT + test.blank = BLANK } TESTS: -var1 [val1]: ${var1} +var1 [VALUE]: ${var1} var2 [BLANK]: ${var2} -var3 [value with spaces]: ${var3} +var3 [VAL WITH SPACES]: ${var3} -arr1 [val1]: @{arr1} -arr3 [BLANK]: @{arr2} +arr1 [VALUE]: @{arr1} +arr2 [BLANK]: @{arr2} Pattern subs: -pat1 [with array]: &{pat1} -pat2: - .sub_pat: &{pat2.sub_pat} - .default: &{pat2.default} - .blank: &{pat2.blank} +test [WITH ARRAY]: &{test} +test.sub_pat: &{test.sub_pat} +test.default: &{test.default} +test.blank: &{test.blank} This comment should not be rendered: -{arr1} diff --git a/src/tests/test_files/test_site/source/root.meta b/src/tests/test_files/test_site/source/root.meta deleted file mode 100644 index e69de29..0000000 diff --git a/src/tests/test_files/test_site/source/sub_dir/sub_source.meta b/src/tests/test_files/test_site/source/sub_dir/sub_source.meta index e69de29..2ddc53b 100644 --- a/src/tests/test_files/test_site/source/sub_dir/sub_source.meta +++ b/src/tests/test_files/test_site/source/sub_dir/sub_source.meta @@ -0,0 +1,33 @@ +${ + overwrite = 'GOOD' + new = 'GOOD' + blank = BLANK +} + +@{ + overwrite = ['GOOD'] + new = ['GOOD'] +} + +&{ + test.overwrite = 'overwrite' + test.new = 'new' + test.blank = BLANK + test.default = DEFAULT +} + +This is a test for a file in a sub_directory to test +overwriting variables and patterns. + +var [OVERWRITE]: ${overwrite} +var [PARENT]: ${parent} +var [NEW]: ${new} +var [BLANK]: ${blank} + +arr [OVERWRITE]: @{overwrite} +arr [NEW]: @{new} + +pat [OVERWRITE]: &{test.overwrite} +pat [NEW]: &{test.new} +pat [BLANK]: &{test.blank} +pat [DEFAULT]: &{test.default} diff --git a/src/tests/test_files/test_site/source/test_source.meta b/src/tests/test_files/test_site/source/test_source.meta index 818a5f9..68aad64 100644 --- a/src/tests/test_files/test_site/source/test_source.meta +++ b/src/tests/test_files/test_site/source/test_source.meta @@ -1,30 +1,30 @@ ${ - var = "good" - single = 'quotes' + var = "GOOD" + single_quotes = 'GOOD' blank = BLANK } @{ - sub.array = ["sub","value"] - arr = ["split",'up',"values"] - with_spaces = [ "stuff", "with" , "spaces" ] + sub.array = ["GOOD","GOOD"] + arr = ["GOOD",'GOOD',"GOOD"] + with_spaces = [ "GOOD", "GOOD" , "GOOD" ] } &{ - pat = "pattern" - pat.sub_pat = DEFAULT + test = "pattern" + test.sub_pat = DEFAULT blank_pat = BLANK } -#THIS IS A TEST +variables ${var} -with included variables: ${var} +patterns &{pat} -and patterns: &{pat} - -and subpatterns: &{pat.sub_pat} +subpatterns &{pat.sub_pat} -{ and inline comments } -and arrays: @{arr} and nested @{sub.array} + +arrays @{arr} +nested_array: @{sub.array} and all the other symbols: !@#$%^&*(){}_+ diff --git a/src/tests/test_metafile.rs b/src/tests/test_metafile.rs index 68b7ab3..c8263ac 100644 --- a/src/tests/test_metafile.rs +++ b/src/tests/test_metafile.rs @@ -1,53 +1,32 @@ use crate::{metafile_to_string, parse_file, source, RootDirs, Source, Substitution}; use color_eyre::Result; use pretty_assertions::assert_eq; -use std::path::PathBuf; +use std::fs; -static SOURCE: &str = include_str!("./test_files/test_site/source/test_source.meta"); -static PATTERN: &str = include_str!("./test_files/test_site/pattern/test/pattern.meta"); -static PRE_EXPAND: &str = include_str!("./test_files/test_site/source/expand.meta"); -static POST_EXPAND: &str = include_str!("./test_files/test_expanded"); - -// builds a tmp_dir then runs multiple tests on it, then deletes the tmpdir -// so we don't have to rebuild entire tmpdir every test -fn test_on_tmp_dir(tests: Vec Result<()>>) -> Result<()> { - let tmp_dir = std::env::temp_dir(); - - let dirs = RootDirs { - source: tmp_dir.join("source"), - build: tmp_dir.join("site"), - pattern: tmp_dir.join("pattern"), - }; - - for test in tests.iter() { - std::fs::remove_dir_all(&dirs.build)?; - std::fs::create_dir(&dirs.build)?; - test(&dirs)?; - } - - std::fs::remove_dir_all(tmp_dir)?; - Ok(()) -} +static SOURCE: &str = include_str!("test_files/test_site/source/test_source.meta"); +static PATTERN: &str = include_str!("test_files/test_site/pattern/test/pattern.meta"); +static PRE_EXPAND: &str = include_str!("test_files/test_site/source/expand.meta"); +static POST_EXPAND: &str = include_str!("test_files/expanded"); #[test] fn test_metafile_gets() -> Result<()> { let source = parse_file(SOURCE)?; - assert_eq!(source.get_var("var").unwrap(), "good"); - assert_eq!(source.get_var("single").unwrap(), "quotes"); + assert_eq!(source.get_var("var").unwrap(), "GOOD"); + assert_eq!(source.get_var("single_quotes").unwrap(), "GOOD"); assert_eq!(source.get_var("blank"), None); assert_eq!(source.get_var("not_defined"), None); - assert_eq!(source.get_arr("sub.array").unwrap(), ["sub", "value"]); - assert_eq!(source.get_arr("arr").unwrap(), ["split", "up", "values"]); + assert_eq!(source.get_arr("sub.array").unwrap(), ["GOOD", "GOOD"]); + assert_eq!(source.get_arr("arr").unwrap(), ["GOOD", "GOOD", "GOOD"]); assert_eq!( source.get_arr("with_spaces").unwrap(), - ["stuff", "with", "spaces"] + ["GOOD", "GOOD", "GOOD"] ); assert_eq!(source.get_arr("not_defined"), None); - assert_eq!(source.get_pat("pat").unwrap(), "pattern"); - assert_eq!(source.get_pat("pat.sub_pat"), None); + assert_eq!(source.get_pat("test").unwrap(), "pattern"); + assert_eq!(source.get_pat("test.sub_pat"), None); assert_eq!(source.get_pat("blank_pat"), None); assert_eq!(source.get_pat("not_defined"), None); @@ -58,56 +37,87 @@ fn test_metafile_gets() -> Result<()> { fn parse_meta_file() -> Result<()> { let source = parse_file(SOURCE)?; - assert_eq!(source.variables.get("var").unwrap(), &"good"); + assert_eq!(source.variables.get("var").unwrap(), &"GOOD"); assert_eq!(source.variables.get("blank"), None); assert_eq!(source.variables.get("not_here"), None); assert_eq!( source.arrays.get("sub.array").unwrap(), - &vec!["sub", "value"] + &vec!["GOOD", "GOOD"] ); assert_eq!( source.arrays.get("arr").unwrap(), - &vec!["split", "up", "values"] + &vec!["GOOD", "GOOD", "GOOD"] ); assert_eq!( source.arrays.get("with_spaces").unwrap(), - &vec!["stuff", "with", "spaces"] + &vec!["GOOD", "GOOD", "GOOD"] ); assert_eq!(source.arrays.get("not_defined"), None); - assert_eq!(source.patterns.get("pat").unwrap(), &"pattern"); - assert_eq!(source.patterns.get("pat.sub_pat"), None); + assert_eq!(source.patterns.get("test").unwrap(), &"pattern"); + assert_eq!(source.patterns.get("test.sub_pat"), None); assert_eq!(source.patterns.get("blank_pat"), None); assert_eq!(source.patterns.get("not_defined"), None); Ok(()) } +#[ignore = "Need to rewrite pattern test file"] #[test] fn parse_pattern_file() -> Result<()> { let mut pattern_src = parse_file(PATTERN)?.source.into_iter(); pattern_src.next(); - assert_eq!(pattern_src.next().unwrap(), source!(var("var"))); + assert_eq!(pattern_src.next().unwrap(), source!(var("variable"))); pattern_src.next(); - assert_eq!(pattern_src.next().unwrap(), source!(pat("pat"))); assert_eq!(pattern_src.next().unwrap(), source!(arr("array"))); pattern_src.next(); - assert_eq!(pattern_src.next().unwrap(), source!(var("blank"))); + assert_eq!(pattern_src.next().unwrap(), source!(pat("pattern"))); + pattern_src.next(); + assert_eq!(pattern_src.next(), None); Ok(()) } +#[ignore = "Need to setup tmp dir first"] #[test] fn builder_tests() -> Result<()> { // vector of tests to perform on tmp_dir let mut tests: Vec Result<()>> = Vec::default(); tests.push(test_metafile_to_str); + + // run tests on tmp dir test_on_tmp_dir(tests)?; Ok(()) } +// builds a tmp_dir +// runs multiple tests on it, +// sanitizes build_dir between tests +// deletes the tmpdir +// so we don't have to rebuild entire tmpdir every test +fn test_on_tmp_dir(tests: Vec Result<()>>) -> Result<()> { + let tmp_dir = std::env::temp_dir(); + + let dirs = RootDirs { + source: tmp_dir.join("source"), + build: tmp_dir.join("site"), + pattern: tmp_dir.join("pattern"), + }; + + for test in tests.iter() { + // delete and remake build dir + fs::remove_dir_all(&dirs.build)?; + fs::create_dir(&dirs.build)?; + // run test + test(&dirs)?; + } + + fs::remove_dir_all(tmp_dir)?; + Ok(()) +} + fn test_metafile_to_str(dirs: &RootDirs) -> Result<()> { let metafile = parse_file(PRE_EXPAND)?;