Bastian Blank <[EMAIL PROTECTED]> writes: > Package: aegis > Version: 4.24-1 > Severity: serious
The attacched patch should fix the problem. HTH -- Walter Franzini http://aegis.stepbuild.org/ PGP Public key ID: 1024D/CB3FEB43 Key fingerprint : FA26 C33B CAFF 7848 EFEB 7327 96AA 2D57 CB3F EB43 Key server : http://www.keyserver.net
MIME-Version: 1.0 Content-Type: application/aegis-patch Subject: aegis.4.25 - aefinish vs. non-existent directory Content-Name: aegis.4.25.C510.patch Content-Disposition: attachment; filename=aegis.4.25.C510.patch X-Aegis-Project-Name: aegis.4.25 X-Aegis-Change-Number: 510 # # The aefinish command is now able to ipass a change even if the home # directory of the user does not exists. # My thanks to Ralph Smith for diagnosing the problem. # # Signed-off-by: Walter Franzini <[EMAIL PROTECTED]> # # Aegis-Change-Set-Begin # QlpoMzFBWSZTWXvbKakAALJfgAAQUAf//0ECHI6/79/6QAH9tZiNYaJDRo0mm0m0BpRp6NNG # oAYnqYagEbQiaPUZNAAABoADDQ0AAAGgAAAABKaQoeJqEeUZTPKYp6R6IMmmTT0juOoUjAb4 # ZMxugnaTB9vpyOR5DumderO5+/Ty3evux/JiJVEhCEgKSROXS4fJFBHWw61gqjWZ9rYhkMko # N+JXDkGplz5QzvtTrKqjI+093a8TPo59FVBHSB7SA9NGWG1IdBVJ6qnEq/eVmPMJ9T05VTuh # B56BaOxb5w2sQobMCeSJUlopppGS3ajD2c6Ej5yeBJSUODDGbB/wkpJzg2x0ieXZOkRGfRLq # NcJiqby2/609KtD2XxJs3E7y/HnhgzfRxdwwwPu9op6tO3FcvFElmMm/yjYWAnCxMVqBkuld # Aj3GTdbyRsxDn0IDjxXMLoiVYxQpUYS+y6lpJzh84+ZIloOAw3MKeBIqrKhA2Q7baWJK6LKK # 8QjccLl1OYisH+wPRcevrQYvzTWp0rbbSylDnbaZWr/iIRgEdEyY9Q7jKsL3v5QE+xRAXHPB # uzZe92dnBL3Zat5jPTch0MpwRMjEvNFunPt7+2YYLZtyuJHyWbNfXVpaRrkjndTGaQRi2etg # dfWCS39pa8LB7Zm0JlEThzrlqQjGQwNNGWszFRQXUHkZcC12KtAFYvICOila4WbXUlOUGmOc # PpTbqpIJ3+clqwsF4F3JFOFCQe9spqQ= # Aegis-Change-Set-End # Index: aefinish/finish.cc --- aefinish/finish.cc +++ aefinish/finish.cc @@ -1,7 +1,7 @@ // // aegis - project change supervisor // Copyright (C) 2006-2008 Peter Miller -// Copyright (C) 2006 Walter Franzini +// Copyright (C) 2006, 2008 Walter Franzini // // 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 @@ -665,8 +665,12 @@ home() { const char *cp = getenv("HOME"); - if (!cp) + + os_become_orig(); + if (!cp || !os_isa_directory(nstring(cp).get_ref())) cp = "/"; + os_become_undo(); + return cp; } Index: test/02/t0269a-walt.sh --- test/02/t0269a-walt.sh +++ test/02/t0269a-walt.sh @@ -0,0 +1,149 @@ +#!/bin/sh +# +# aegis - The "aegis" program. +# Copyright (C) 2008 Walter Franzini +# +# 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 3 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, see <http://www.gnu.org/licenses/>. +# + +TEST_SUBJECT="aefinish vs. non-existent home" + +# load up standard prelude and test functions +. test_funcs + +HOME=/path/not/existing +export HOME + +# +# test the aeipass functionality +# +workproj=$work/proj +workchan=$work/chan + +AEGIS_PROJECT=example ; export AEGIS_PROJECT + +# +# make a new project +# +activity="new project 39" +aegis -npr $AEGIS_PROJECT -vers "" -dir $workproj > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi + +# +# change project attributes +# +activity="project attributes 46" +cat > tmp << 'end' +description = "A bogus project created to test the aefinish functionality."; +developer_may_review = true; +developer_may_integrate = true; +reviewer_may_integrate = true; +default_test_exemption = true; +develop_end_action = goto_awaiting_integration; +end +if test $? -ne 0 ; then no_result; fi +aegis -pa -f tmp > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi + +# +# add the staff +# +activity="staff 62" +aegis -nd $USER > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi +aegis -nrv $USER > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi +aegis -ni $USER > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi + +# +# create a new change +# +activity="new change 73" +cat > tmp << 'end' +brief_description = "The first change"; +cause = internal_bug; +end +if test $? -ne 0 ; then no_result; fi +aegis -nc 1 -f tmp -p $AEGIS_PROJECT > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi + +# +# begin development of a change +# +aegis -db 1 -dir $workchan > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi + +# +# add a new files to the change +# +activity="new files 91" +aegis -nf $workchan/bogus1 -nl > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi +aegis -nf $workchan/aegis.conf -nl > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi + +cat > $workchan/bogus1 << 'end' +OLD CONTENT +bogus1, line 1 +bogus1, line 2 +end +if test $? -ne 0 ; then no_result; fi + +cat > $workchan/aegis.conf << 'end' +build_command = "exit 0"; +link_integration_directory = true; + +history_get_command = "aesvt -check-out -edit ${quote $edit} " + "-history ${quote $history} -f ${quote $output}"; +history_put_command = "aesvt -check-in -history ${quote $history} " + "-f ${quote $input}"; +history_query_command = "aesvt -query -history ${quote $history}"; +history_content_limitation = binary_capable; + +diff_command = "set +e; $diff $orig $i > $out; test $$? -le 1"; +merge_command = "(diff3 -e $i $orig $mr | sed -e '/^w$$/d' -e '/^q$$/d'; \ + echo '1,$$p' ) | ed - $i > $out"; +patch_diff_command = "set +e; $diff -C0 -L $index -L $index $orig $i > $out; \ +test $$? -le 1"; +end +if test $? -ne 0 ; then no_result; fi + +# +# build the change +# +activity="finish the change 126" +aefinish -v > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi + +# +# start integrating +# +activity="integrate begin 133" +aegis -ib 1 > log 2>&1 +if test $? -ne 0 ; then cat log; no_result; fi + +# +# finish integration +# +activity="integrate the change 140" +aefinish -c 1 > log 2>&1 +if test $? -ne 0 ; then cat log; fail; fi + +# +# Only definite negatives are possible. +# The functionality exercised by this test appears to work, +# no other guarantees are made. +# +pass
pgpRBee2Y9M8e.pgp
Description: PGP signature