summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Brown <ben@demerara.io>2021-11-17 21:28:38 +0000
committerBen Brown <ben@demerara.io>2021-11-24 17:09:18 +0000
commit4c789da454d03b0e2840ba52aa9063b6d27f646a (patch)
tree53073913383603a9abce6cde7701acb0eaf6d9b1
parentbe3c129d5f668e7cc72b3a4e0a5d164f4a32b9f0 (diff)
downloadlorry-4c789da454d03b0e2840ba52aa9063b6d27f646a.tar.gz
Add test to verify hard link support
-rwxr-xr-xtests/tar-hard-links.script33
-rwxr-xr-xtests/tar-hard-links.setup39
2 files changed, 72 insertions, 0 deletions
diff --git a/tests/tar-hard-links.script b/tests/tar-hard-links.script
new file mode 100755
index 0000000..3d7fc8f
--- /dev/null
+++ b/tests/tar-hard-links.script
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# Tests hard links and their targets are all imported with content.
+#
+# Copyright (C) 2021 Ben Brown
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+set -e
+
+logfile="${DATADIR}/tar-hard-links.log"
+workdir="${DATADIR}/work-dir"
+
+"${SRCDIR}/test-lorry" \
+ --pull-only \
+ --log="${logfile}" \
+ --working-area="${workdir}" \
+ "${DATADIR}/hard-links.lorry" >/dev/null
+
+[ "$(git -C "${workdir}/hard-links/git-a" cat-file -s HEAD:hard-link)" -gt 0 ]
+[ "$(git -C "${workdir}/hard-links/git-a" cat-file -s HEAD:test)" -gt 0 ]
diff --git a/tests/tar-hard-links.setup b/tests/tar-hard-links.setup
new file mode 100755
index 0000000..0d68cee
--- /dev/null
+++ b/tests/tar-hard-links.setup
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# Creates a tarball containing a hard link.
+#
+# Copyright (C) 2021 Ben Brown
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+set -e
+
+dir="${DATADIR}/tar-hard-links"
+mkdir -p "${dir}"
+echo foo > "${dir}"/test
+ln "${dir}"/test "${dir}"/hard-link
+
+tar_path="${DATADIR}/hard-links.tar"
+tar -C "${DATADIR}" -cf "${tar_path}" "$(basename "${dir}")"
+
+# create the .lorry file for the repository
+cat <<EOF > "${DATADIR}/hard-links.lorry"
+hard-links:
+ type: tarball
+ url: file://${tar_path}
+EOF
+
+# create the working directory
+mkdir -p "${DATADIR}/work-dir"