Add frontmatter, markdown, path, xml, rss, and web packages
Sync local packages into the registry repo and update index.json and README.md to include all 9 packages.
This commit is contained in:
65
packages/path/test_snapshot.lux
Normal file
65
packages/path/test_snapshot.lux
Normal file
@@ -0,0 +1,65 @@
|
||||
import lib
|
||||
|
||||
// Snapshot tests: verify complete path decomposition output against golden values
|
||||
|
||||
// Snapshot: decompose a typical web project file
|
||||
fn test_snapshot_web_project_file(): Unit with {Test} = {
|
||||
let path = "/home/user/project/src/components/Button.tsx"
|
||||
Test.assertEqualMsg("Button.tsx", lib.basename(path), "snap: basename")
|
||||
Test.assertEqualMsg("/home/user/project/src/components", lib.dirname(path), "snap: dirname")
|
||||
Test.assertEqualMsg("tsx", match lib.extension(path) { Some(e) => e, None => "" }, "snap: extension")
|
||||
Test.assertEqualMsg("Button", lib.stem(path), "snap: stem")
|
||||
Test.assertEqualMsg("/home/user/project/src/components/Button", lib.stripExtension(path), "snap: stripExtension")
|
||||
Test.assertEqualMsg(true, lib.isAbsolute(path), "snap: isAbsolute")
|
||||
Test.assertEqualMsg(false, lib.isRelative(path), "snap: isRelative")
|
||||
Test.assertEqualMsg(true, lib.hasExtension(path, "tsx"), "snap: hasExtension tsx")
|
||||
Test.assertEqualMsg(false, lib.hasExtension(path, "ts"), "snap: hasExtension ts")
|
||||
Test.assertEqualMsg("/home/user/project/src/components/Button.jsx", lib.replaceExtension(path, "jsx"), "snap: replaceExtension")
|
||||
}
|
||||
|
||||
// Snapshot: decompose a markdown blog post path
|
||||
fn test_snapshot_blog_post(): Unit with {Test} = {
|
||||
let path = "content/posts/2025/my-first-post.md"
|
||||
Test.assertEqualMsg("my-first-post.md", lib.basename(path), "snap: basename")
|
||||
Test.assertEqualMsg("content/posts/2025", lib.dirname(path), "snap: dirname")
|
||||
Test.assertEqualMsg("md", match lib.extension(path) { Some(e) => e, None => "" }, "snap: extension")
|
||||
Test.assertEqualMsg("my-first-post", lib.stem(path), "snap: stem")
|
||||
Test.assertEqualMsg("content/posts/2025/my-first-post", lib.stripExtension(path), "snap: stripExtension")
|
||||
Test.assertEqualMsg(false, lib.isAbsolute(path), "snap: isAbsolute")
|
||||
Test.assertEqualMsg(true, lib.isRelative(path), "snap: isRelative")
|
||||
Test.assertEqualMsg("content/posts/2025/my-first-post.html", lib.replaceExtension(path, "html"), "snap: replaceExtension")
|
||||
}
|
||||
|
||||
// Snapshot: SSG path transformation pipeline
|
||||
fn test_snapshot_ssg_pipeline(): Unit with {Test} = {
|
||||
let input = "pages/about.md"
|
||||
let slug = lib.stem(input)
|
||||
let outputDir = lib.join("_site", slug)
|
||||
let indexFile = lib.join(outputDir, "index.html")
|
||||
Test.assertEqualMsg("about", slug, "snap: slug")
|
||||
Test.assertEqualMsg("_site/about", outputDir, "snap: output dir")
|
||||
Test.assertEqualMsg("_site/about/index.html", indexFile, "snap: index file")
|
||||
Test.assertEqualMsg("_site/about", lib.dirname(indexFile), "snap: dirname of index")
|
||||
Test.assertEqualMsg("index.html", lib.basename(indexFile), "snap: basename of index")
|
||||
Test.assertEqualMsg("index", lib.stem(indexFile), "snap: stem of index")
|
||||
}
|
||||
|
||||
// Snapshot: dotfile handling
|
||||
fn test_snapshot_dotfiles(): Unit with {Test} = {
|
||||
Test.assertEqualMsg(".gitignore", lib.basename("/project/.gitignore"), "snap: dotfile basename")
|
||||
Test.assertEqualMsg("/project", lib.dirname("/project/.gitignore"), "snap: dotfile dirname")
|
||||
Test.assertEqualMsg(".gitignore", lib.stem(".gitignore"), "snap: dotfile stem")
|
||||
Test.assertEqualMsg("json", match lib.extension(".eslintrc.json") { Some(e) => e, None => "" }, "snap: dotconfig extension")
|
||||
Test.assertEqualMsg(".eslintrc", lib.stem(".eslintrc.json"), "snap: dotconfig stem")
|
||||
}
|
||||
|
||||
// Snapshot: path join normalization
|
||||
fn test_snapshot_join_normalization(): Unit with {Test} = {
|
||||
Test.assertEqualMsg("/a/b", lib.join("/a", "b"), "snap: normal join")
|
||||
Test.assertEqualMsg("/a/b", lib.join("/a/", "b"), "snap: trailing slash join")
|
||||
Test.assertEqualMsg("/a/b", lib.join("/a", "/b"), "snap: leading slash join")
|
||||
Test.assertEqualMsg("/a/b", lib.join("/a/", "/b"), "snap: both slash join")
|
||||
Test.assertEqualMsg("b", lib.join("", "b"), "snap: empty first join")
|
||||
Test.assertEqualMsg("a", lib.join("a", ""), "snap: empty second join")
|
||||
Test.assertEqualMsg("", lib.join("", ""), "snap: both empty join")
|
||||
}
|
||||
Reference in New Issue
Block a user