]> git.huck.website - metaforge.git/commitdiff
test site written
authorHuck Boles <huck@huck.website>
Mon, 8 May 2023 22:01:15 +0000 (17:01 -0500)
committerHuck Boles <huck@huck.website>
Mon, 8 May 2023 22:01:15 +0000 (17:01 -0500)
19 files changed:
src/tests/test_files/expanded [new file with mode: 0644]
src/tests/test_files/test_expanded [deleted file]
src/tests/test_files/test_site/pattern/base/default.meta
src/tests/test_files/test_site/pattern/test/array.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/blank/default.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/default/default.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/new/default.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/new/new.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/overwrite/default.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/overwrite/overwrite.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/parent/default.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/parent/parent.meta [new file with mode: 0644]
src/tests/test_files/test_site/pattern/test/pattern.meta
src/tests/test_files/test_site/pattern/test/sub_pat/default.meta [new file with mode: 0644]
src/tests/test_files/test_site/source/expand.meta
src/tests/test_files/test_site/source/root.meta [deleted file]
src/tests/test_files/test_site/source/sub_dir/sub_source.meta
src/tests/test_files/test_site/source/test_source.meta
src/tests/test_metafile.rs

diff --git a/src/tests/test_files/expanded b/src/tests/test_files/expanded
new file mode 100644 (file)
index 0000000..32b6f03
--- /dev/null
@@ -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]: <p>GOOD</p><p>GOOD GOOD</p>
+test.sub_pat: <h1>SUBPATTERN</h1>
+test.default: <h1>DEFAULT</h1>
+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 (file)
index c43616c..0000000
+++ /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]: <p>value</p><p>value with spaces</p>
-pat2: 
-    .sub_pat: <h1>SUBPATTERN</h1>
-    .default: <h1>DEFAULT</h1>
-    .blank: 
-
-This comment should not be rendered: 
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e820c4ca768603d66bb240e3ee1704f9bda75ab6 100644 (file)
@@ -0,0 +1,3 @@
+<body>
+    &{SOURCE}
+</body>
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 (file)
index 0000000..c8f73d7
--- /dev/null
@@ -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 (file)
index 0000000..7b3a785
--- /dev/null
@@ -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 (file)
index 0000000..f49b816
--- /dev/null
@@ -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 (file)
index 0000000..7b3a785
--- /dev/null
@@ -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 (file)
index 0000000..f49b816
--- /dev/null
@@ -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 (file)
index 0000000..7b3a785
--- /dev/null
@@ -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 (file)
index 0000000..f49b816
--- /dev/null
@@ -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 (file)
index 0000000..7b3a785
--- /dev/null
@@ -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 (file)
index 0000000..f49b816
--- /dev/null
@@ -0,0 +1 @@
+GOOD
index 4c083a413006db340e7e1c0a56610f651407cfdf..f49b81645e9b3e194103fb700187016b10427bf5 100644 (file)
@@ -1,15 +1 @@
-<body>
-    <h1>This is a test for pattern.meta files</h1>
-
-    <p> inserted variable: ${var}</p>
-
-    &{pat}
-
-    @{array}
-
-    <ul>
-        <li> with-{ inline comment} html </li>
-        <li> type syntax including :${blank} blank variables
-        <li> and symbols: !@$%#&*(){}
-    </ul>
-</body>
+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 (file)
index 0000000..f49b816
--- /dev/null
@@ -0,0 +1 @@
+GOOD
index 4e1db928b722f54fdbab2d6cdd29f77f52a7de15..1a5f54db8623b8cfdbf9b6f8d98e8f92bbb941ed 100644 (file)
@@ -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 (file)
index e69de29..0000000
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2ddc53b913f24447009d7e368e5ceda73cb86498 100644 (file)
@@ -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}
index 818a5f9ab84f7af99502b53073d94dd7f6b245f1..68aad64efe55ef19f64888cc64df66d0ad84d3aa 100644 (file)
@@ -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: !@#$%^&*(){}_+
index 68b7ab3c4544ebd024f6c7017cfcdf8612cea65f..c8263ac55d00ec7c7f073f7c6a9ccddbd3ffd1ae 100644 (file)
@@ -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<fn(dirs: &RootDirs) -> 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<fn(dirs: &RootDirs) -> 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<fn(dirs: &RootDirs) -> 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)?;