nip/tests/test_container_manager.nim

82 lines
1.9 KiB
Nim

## Test container manager functionality
import std/[os, strutils, options]
import ../src/nimpak/build/container_manager
proc testContainerDetection() =
echo "Testing container runtime detection..."
let runtimeOpt = detectContainerRuntime()
if runtimeOpt.isSome:
let runtime = runtimeOpt.get()
echo "✓ Detected: ", runtime.runtime
echo " Version: ", runtime.version
echo " Path: ", runtime.path
echo " Rootless: ", runtime.rootless
else:
echo "✗ No container runtime detected"
echo " This is expected if Podman/Docker/nerdctl is not installed"
proc testAllRuntimes() =
echo "\nTesting all runtime detection..."
let runtimes = getAllRuntimes()
if runtimes.len == 0:
echo "✗ No runtimes found"
else:
echo "✓ Found ", runtimes.len, " runtime(s):"
for runtime in runtimes:
echo " - ", runtime.runtime, " (", runtime.version, ")"
proc testContainerManager() =
echo "\nTesting ContainerManager..."
let cm = newContainerManager()
if cm.isAvailable():
echo "✓ Container manager available"
echo " Runtime: ", cm.runtime
echo " Command: ", cm.getRuntimeCommand()
echo " Rootless: ", cm.rootless
else:
echo "✗ Container manager not available"
echo " Install Podman: sudo pacman -S podman"
proc testImageOperations() =
echo "\nTesting image operations..."
let cm = newContainerManager()
if not cm.isAvailable():
echo "✗ Skipping (no runtime available)"
return
# List images
echo "Listing images..."
let images = cm.listImages()
echo "✓ Found ", images.len, " images"
if images.len > 0:
echo " First few images:"
for i, image in images:
if i >= 3: break
echo " - ", image
proc main() =
echo "Container Manager Tests"
echo "======================="
echo ""
testContainerDetection()
testAllRuntimes()
testContainerManager()
testImageOperations()
echo ""
echo "Tests complete!"
when isMainModule:
main()