@@ -17,11 +17,13 @@ function checkpointctl() {
1717function setup() {
1818 TEST_TMP_DIR1=$( mktemp -d)
1919 TEST_TMP_DIR2=$( mktemp -d)
20+ NON_ROOT_TMP1=$( sudo -u ' nobody' mktemp -d)
2021}
2122
2223function teardown() {
2324 [ " $TEST_TMP_DIR1 " != " " ] && rm -rf " $TEST_TMP_DIR1 "
2425 [ " $TEST_TMP_DIR2 " != " " ] && rm -rf " $TEST_TMP_DIR2 "
26+ [ " $NON_ROOT_TMP1 " != " " ] && rm -rf " $NON_ROOT_TMP1 "
2527}
2628
2729@test " Run checkpointctl" {
@@ -301,6 +303,31 @@ function teardown() {
301303 [[ ${lines[10]} == * " piggie/piggie" * ]]
302304}
303305
306+ @test " Run checkpointctl inspect with tar file and --ps-tree-cmd as non-root" {
307+ if [ " $CHECKPOINTCTL " == " ../checkpointctl.coverage" ]; then
308+ skip " non-root test cannot access the coverage directory"
309+ fi
310+ cp data/config.dump \
311+ data/spec.dump " $TEST_TMP_DIR1 "
312+ mkdir " $TEST_TMP_DIR1 " /checkpoint
313+ cp test-imgs/pstree.img \
314+ test-imgs/core-* .img \
315+ test-imgs/pagemap-* .img \
316+ test-imgs/pages-* .img \
317+ test-imgs/mm-* .img " $TEST_TMP_DIR1 " /checkpoint
318+ ( cd " $TEST_TMP_DIR1 " && tar cf " $NON_ROOT_TMP1 " /test.tar . )
319+ chmod 644 " $NON_ROOT_TMP1 " /test.tar
320+ NON_ROOT_BIN=$( mktemp)
321+ cp " $CHECKPOINTCTL " " $NON_ROOT_BIN "
322+ chmod 755 " $NON_ROOT_BIN "
323+ run sudo -u ' nobody' " $NON_ROOT_BIN " inspect " $NON_ROOT_TMP1 " /test.tar --ps-tree-cmd
324+ echo " $output "
325+ rm -f " $NON_ROOT_BIN "
326+ [ " $status " -eq 0 ]
327+ [[ ${lines[9]} == * " Process tree" * ]]
328+ [[ ${lines[10]} == * " piggie/piggie" * ]]
329+ }
330+
304331@test " Run checkpointctl inspect with tar file and --ps-tree-cmd and missing pages-*.img" {
305332 cp data/config.dump \
306333 data/spec.dump " $TEST_TMP_DIR1 "
0 commit comments