Files
rtems/testsuites/libtests/tar01/tar01.scn
T
Christian Mauderer ffc57e3cf3 untar: Make behavior similar to GNU or BSD tar
RTEMS untar implementation had problems with overwriting or integrating
archives into existing directory structures. This patch adapts the
behavior to mimic that of a GNU tar or BSD tar and extends the tar01
test to check for the behavior. That is:

* If a directory structure exists, the files from the archive will be
  integrated. Existing files are overwritten.

* If a file exists and the archive contains a directory with the same
  name, the file is removed and a directory is created. In the above
  example: if l1/l2 is a file it will be overwritten with a new
  directory.

* If a directory exists and the archive contains a file with the same
  name, the directory will be replaced if it is empty. If it contains
  files, the result is an error.

* An archive also can contain only a file without the parent
  directories. If in that case one of the parent directories exists as a
  file extracting the archive results in an error. In the example: if
  l1/l2 is a file and the archive doesn't contain the directories but
  only the file l1/l2/x.txt that would be an error.

* In case of an error, it is possible that the archive has been
  partially extracted.

Closes #4568
2021-12-09 08:23:47 +01:00

84 lines
2.6 KiB
Plaintext

*** BEGIN OF TEST TAR 1 ***
*** TEST VERSION: 6.0.0.e1efb4eb8a9d6dd5f6f37dafc9feb0a9e6a888f1
*** TEST STATE: EXPECTED_PASS
*** TEST BUILD: RTEMS_POSIX_API
*** TEST TOOLS: 10.3.1 20210409 (RTEMS 6, RSB ad54d1dd3cf8249d9d39deb1dd28b2f294df062d-modified, Newlib eb03ac1)
Untaring from memory - untar: memory at 0x11ece8 (10240)
untar: symlink: home/test_file -> symlink
untar: file: home/test_file (s:73,m:0644)
untar: file: home/abc/def/test_script (s:21,m:0755)
untar: dir: home/dir
untar: file: home/dir/file (s:12,m:0644)
successful
========= /home/test_file =========
(0)This is a test of loading an RTEMS filesystem from an
initial tar image.
========= /home/abc/def/test_script =========
(0)#! joel
ls -las /dev
/home/abc/def/test_script: mode: 0755 want: 0755
========= /symlink =========
(0)This is a test of loading an RTEMS filesystem from an
initial tar image.
Copy tar image to test.tar
Untaring from file - successful
Untar from file into existing structure with one missing file - successful
Untar from file; overwrite empty directory with file - successful
Untar from file; file exists where parent dir should be created - expected fail
Untar from file; non-empty dir where file should be created - expected fail
Untar from file; overwrite file with explicit directory - successful
========= /dest/home/test_file =========
(0)This is a test of loading an RTEMS filesystem from an
initial tar image.
========= /dest/home/abc/def/test_script =========
(0)#! joel
ls -las /dev
/dest/home/abc/def/test_script: mode: 0755 want: 0755
========= /dest/symlink =========
(0)This is a test of loading an RTEMS filesystem from an
initial tar image.
Untaring chunks from memory - untar: symlink: home/test_file -> symlink
untar: file: home/test_file (s:73,m:0644)
untar: file: home/abc/def/test_script (s:21,m:0755)
untar: dir: home/dir
untar: file: home/dir/file (s:12,m:0644)
successful
========= /dest2/home/test_file =========
(0)This is a test of loading an RTEMS filesystem from an
initial tar image.
========= /dest2/home/abc/def/test_script =========
(0)#! joel
ls -las /dev
/dest2/home/abc/def/test_script: mode: 0755 want: 0755
========= /dest2/symlink =========
(0)This is a test of loading an RTEMS filesystem from an
initial tar image.
Untaring chunks from tgz - successful
========= /dest3/home/test_file =========
(0)This is a test of loading an RTEMS filesystem from an
initial tar image.
========= /dest3/home/abc/def/test_script =========
(0)#! joel
ls -las /dev
/dest3/home/abc/def/test_script: mode: 0755 want: 0755
========= /dest3/symlink =========
(0)This is a test of loading an RTEMS filesystem from an
initial tar image.
*** END OF TEST TAR 1 ***