From 3eb77d4ce856a10c7a06bafaea5e1df5f7eb796b Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Sat, 15 Oct 2011 01:22:42 -0400 Subject: [PATCH] Importing and checking out nested trees works! --- src/libhacktree/hacktree-repo.c | 2 +- src/libhtutil/ht-unix-utils.c | 6 ++--- tests/libtest.sh | 29 +++++++++++++++++++++++- tests/t0004-checkout-test1.sh | 4 ++-- tests/t0005-nested-tree.sh | 39 +++++++++++++++++++++++++++++++++ 5 files changed, 73 insertions(+), 7 deletions(-) create mode 100755 tests/t0005-nested-tree.sh diff --git a/src/libhacktree/hacktree-repo.c b/src/libhacktree/hacktree-repo.c index 3de81c35..bddec68c 100644 --- a/src/libhacktree/hacktree-repo.c +++ b/src/libhacktree/hacktree-repo.c @@ -1116,7 +1116,7 @@ add_one_path_to_tree_and_import (HacktreeRepo *self, } /* Implicitly add intermediate directories */ if (!add_one_directory_to_tree_and_import (self, component, - abspath, current_tree, dir, + component_abspath, current_tree, dir, error)) goto out; } diff --git a/src/libhtutil/ht-unix-utils.c b/src/libhtutil/ht-unix-utils.c index 15ce3748..57aa1f42 100644 --- a/src/libhtutil/ht-unix-utils.c +++ b/src/libhtutil/ht-unix-utils.c @@ -117,9 +117,9 @@ ht_util_path_split (const char *path) else { g_ptr_array_add (ret, g_strndup (p, slash - p)); - p += 1; + p = slash + 1; } - } while (p); + } while (p && *p); return ret; } @@ -127,7 +127,7 @@ ht_util_path_split (const char *path) char * ht_util_path_join_n (const char *base, GPtrArray *components, int n) { - int max = MAX(n+1, components->len); + int max = MIN(n+1, components->len); GPtrArray *subcomponents; char *path; int i; diff --git a/tests/libtest.sh b/tests/libtest.sh index 1d565a5b..917eda1e 100644 --- a/tests/libtest.sh +++ b/tests/libtest.sh @@ -32,6 +32,10 @@ die () { fi } +assert_has_file () { + test -f $1 || (echo "Couldn't find $1"; exit 1) +} + setup_test_repository1 () { mkdir files cd files @@ -45,7 +49,30 @@ setup_test_repository1 () { export ht_repo hacktree init $ht_repo hacktree commit $ht_repo -s "Test Commit 1" -b "Commit body first" --add=firstfile - hacktree commit $ht_repo -s "Test Commit 2" -b "Commit body first" --add=secondfile + hacktree commit $ht_repo -s "Test Commit 2" -b "Commit body second" --add=secondfile + hacktree fsck -q $ht_repo +} + +setup_test_repository2 () { + mkdir files + cd files + ht_files=`pwd` + export ht_files + echo first > firstfile + mkdir baz + echo moo > baz/cow + echo alien > baz/saucer + mkdir baz/deeper + echo hi > baz/deeper/ohyeah + mkdir baz/another/ + echo x > baz/another/y + + mkdir ../repo + ht_repo="--repo=../repo" + export ht_repo + hacktree init $ht_repo + hacktree commit $ht_repo -s "Test Commit 1" -b "Commit body first" --add=firstfile + hacktree commit $ht_repo -s "Test Commit 2" -b "Commit body second" --add=baz/cow --add=baz/saucer --add=baz/deeper/ohyeah --add=baz/another/y hacktree fsck -q $ht_repo } diff --git a/tests/t0004-checkout-test1.sh b/tests/t0004-checkout-test1.sh index 1244ddad..fa494e3c 100755 --- a/tests/t0004-checkout-test1.sh +++ b/tests/t0004-checkout-test1.sh @@ -29,8 +29,8 @@ echo 'ok setup' hacktree checkout $ht_repo HEAD $test_tmpdir/checkout1-head echo 'ok checkout cmd' cd $test_tmpdir/checkout1-head -test -f firstfile -test -f secondfile +assert_has_file firstfile +assert_has_file secondfile echo 'ok checkout verify exists' diff --git a/tests/t0005-nested-tree.sh b/tests/t0005-nested-tree.sh new file mode 100755 index 00000000..76952bcf --- /dev/null +++ b/tests/t0005-nested-tree.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# +# Copyright (C) 2011 Colin Walters +# +# 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; either version 2 of the License, or +# (at your option) any later version. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# Author: Colin Walters + +set -e + +. libtest.sh + +echo '1..3' + +setup_test_repository2 +echo 'ok setup' +hacktree checkout $ht_repo HEAD $test_tmpdir/checkout2-head +echo 'ok checkout cmd' +cd $test_tmpdir/checkout2-head +assert_has_file firstfile +assert_has_file baz/cow +assert_has_file baz/saucer +assert_has_file baz/deeper/ohyeah +assert_has_file baz/another/y +echo 'ok checkout verify exists' + +