nip/tests/test_nip_parse_debug.nim

87 lines
3.4 KiB
Nim

## Debug test for NIP manifest parsing
import std/[times, options]
import nip/nip_manifest
import nip/manifest_parser
# Create a simple manifest
let manifest = NIPManifest(
name: "testapp",
version: SemanticVersion(major: 1, minor: 2, patch: 3),
buildDate: now(),
metadata: AppInfo(
description: "Test app",
license: "MIT",
tags: @["test", "example"]
),
provenance: ProvenanceInfo(
source: "https://example.com",
sourceHash: "xxh3-123",
buildTimestamp: now()
),
buildConfig: BuildConfiguration(
configureFlags: @["--enable-test"],
compilerFlags: @["-O2"],
compilerVersion: "gcc-13.0.0",
targetArchitecture: "x86_64",
libc: "musl",
allocator: "jemalloc",
buildSystem: "cmake"
),
casChunks: @[
ChunkReference(hash: "xxh3-chunk1", size: 1024, chunkType: Binary, path: "bin/app")
],
desktop: DesktopMetadata(
desktopFile: DesktopFileSpec(
name: "Test App",
exec: "/usr/bin/testapp",
icon: "testapp",
terminal: false,
categories: @["Utility"],
keywords: @["test"]
),
icons: @[IconSpec(size: 48, path: "icons/test.png", format: "png")],
mimeTypes: @["text/plain"],
appId: "org.example.testapp"
),
namespace: NamespaceConfig(
namespaceType: "user",
permissions: Permissions(
network: true,
gpu: false,
audio: true,
camera: false,
microphone: false,
filesystem: @[FilesystemAccess(path: "/home", mode: ReadOnly)],
dbus: DBusAccess(session: @["org.freedesktop.Notifications"], system: @[], own: @[])
),
mounts: @[Mount(source: "/host", target: "/app", mountType: Bind, readOnly: true)]
),
buildHash: "xxh3-buildhash",
signature: SignatureInfo(algorithm: "ed25519", keyId: "key-123", signature: "sig-456")
)
# Generate KDL
echo "=== Generated KDL ==="
let kdl = generateNIPManifest(manifest)
echo kdl
echo ""
# Parse it back
echo "=== Parsing KDL ==="
let parsed = parseNIPManifest(kdl)
# Compare fields
echo "=== Comparison ==="
echo "Name: ", manifest.name, " vs ", parsed.name, " - ", manifest.name == parsed.name
echo "Version: ", manifest.version, " vs ", parsed.version, " - ", manifest.version == parsed.version
echo "Description: ", manifest.metadata.description, " vs ", parsed.metadata.description, " - ", manifest.metadata.description == parsed.metadata.description
echo "License: ", manifest.metadata.license, " vs ", parsed.metadata.license, " - ", manifest.metadata.license == parsed.metadata.license
echo "Tags: ", manifest.metadata.tags, " vs ", parsed.metadata.tags, " - ", manifest.metadata.tags == parsed.metadata.tags
echo "Source: ", manifest.provenance.source, " vs ", parsed.provenance.source, " - ", manifest.provenance.source == parsed.provenance.source
echo "Build hash: ", manifest.buildHash, " vs ", parsed.buildHash, " - ", manifest.buildHash == parsed.buildHash
echo "App ID: ", manifest.desktop.appId, " vs ", parsed.desktop.appId, " - ", manifest.desktop.appId == parsed.desktop.appId
echo "Namespace type: ", manifest.namespace.namespaceType, " vs ", parsed.namespace.namespaceType, " - ", manifest.namespace.namespaceType == parsed.namespace.namespaceType
echo "Network perm: ", manifest.namespace.permissions.network, " vs ", parsed.namespace.permissions.network, " - ", manifest.namespace.permissions.network == parsed.namespace.permissions.network
echo "CAS chunks: ", manifest.casChunks.len, " vs ", parsed.casChunks.len, " - ", manifest.casChunks.len == parsed.casChunks.len