54 lines
1.5 KiB
Nim
54 lines
1.5 KiB
Nim
import std/[unittest, os, tempfiles, strutils]
|
|
import nip/archives
|
|
import nip/manifest_parser
|
|
|
|
suite "NIP Archive Tests":
|
|
|
|
setup:
|
|
let tempDir = createTempDir("nip_test_archive_", "")
|
|
let sourceDir = tempDir / "source"
|
|
let outputDir = tempDir / "output"
|
|
let extractDir = tempDir / "extract"
|
|
|
|
createDir(sourceDir)
|
|
createDir(outputDir)
|
|
createDir(extractDir)
|
|
|
|
teardown:
|
|
removeDir(tempDir)
|
|
|
|
test "Create and Extract Archive":
|
|
# 1. Create Source Content
|
|
writeFile(sourceDir / "hello.txt", "Hello World")
|
|
createDir(sourceDir / "subdir")
|
|
writeFile(sourceDir / "subdir/config.cfg", "key=value")
|
|
|
|
# 2. Create Manifest
|
|
let manifest = PackageManifest(
|
|
name: "test-pkg",
|
|
version: parseSemanticVersion("1.0.0"),
|
|
license: "MIT"
|
|
)
|
|
|
|
# 3. Create Archive
|
|
let archivePath = outputDir / "test.nip"
|
|
createArchive(manifest, sourceDir, archivePath)
|
|
|
|
check fileExists(archivePath)
|
|
check verifyArchive(archivePath)
|
|
|
|
# 4. Extract Archive
|
|
extractArchive(archivePath, extractDir)
|
|
|
|
# 5. Verify Content
|
|
check fileExists(extractDir / "manifest.kdl")
|
|
check fileExists(extractDir / "files/hello.txt")
|
|
check fileExists(extractDir / "files/subdir/config.cfg")
|
|
|
|
check readFile(extractDir / "files/hello.txt") == "Hello World"
|
|
|
|
# 6. Verify Manifest Content
|
|
let extractedManifest = parseManifest(readFile(extractDir / "manifest.kdl"), NIP, FormatKDL)
|
|
check extractedManifest.name == "test-pkg"
|
|
check $extractedManifest.version == "1.0.0"
|