xref: /aosp_15_r20/external/ltp/testcases/commands/cpio/cpio_tests.sh (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0-or-later
3# Copyright (c) Linux Test Project, 2003-2021
4#
5# Test basic functionality of cpio command
6
7TST_TESTFUNC=cpio_test
8TST_NEEDS_TMPDIR=1
9TST_NEEDS_CMDS="cpio"
10TST_SETUP="setup"
11
12setup()
13{
14	if ! cpio --help 2>&1 | grep -q -- '-o.*Create'; then
15		tst_brk TCONF "-o flag not supported"
16	fi
17
18	ARCHIVE_FORMAT=
19
20	if cpio 2>&1 | grep -q 'BusyBox'; then
21		ARCHIVE_FORMAT="-H newc"
22	fi
23}
24
25cpio_test()
26{
27	ROD mkdir "dir"
28	for i in a b c d e f g h i j k l m n o p q r s t u v w x y z; do
29		ROD echo "Test" > "dir/$i"
30	done
31
32	ROD find dir -type f > filelist
33	EXPECT_PASS cpio -o $ARCHIVE_FORMAT \> cpio.out \< filelist
34	ROD mv "dir" "dir_orig"
35	ROD mkdir "dir"
36	EXPECT_PASS cpio -i \< cpio.out
37
38	if diff -r "dir" "dir_orig"; then
39		tst_res TPASS "Directories dir and dir_orig are equal"
40	else
41		tst_res TFAIL "Directories dir and dir_orig differ"
42		ls -R dir_orig
43		echo
44		ls -R dir
45	fi
46}
47
48. tst_test.sh
49tst_run
50