[PATCH 1/2] t0003: do not chdir the whole test process

2014-02-06 Thread Junio C Hamano
Moving to some other directory and letting the remainder of the test
pieces to expect that they start there is a bad practice.  The test
that contains chdir itself may fail (or by mistake skipped via the
GIT_SKIP_TESTS mechanism) in which case the remainder may operate on
files in unexpected places.

Signed-off-by: Junio C Hamano gits...@pobox.com
---

 * This is purely a preparatory clean-up in the test script I'll be
   adding a new test to in the next patch.

 t/t0003-attributes.sh | 52 +--
 1 file changed, 30 insertions(+), 22 deletions(-)

diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh
index febc45c..0554b13 100755
--- a/t/t0003-attributes.sh
+++ b/t/t0003-attributes.sh
@@ -197,39 +197,47 @@ test_expect_success 'root subdir attribute test' '
 '
 
 test_expect_success 'setup bare' '
-   git clone --bare . bare.git 
-   cd bare.git
+   git clone --bare . bare.git
 '
 
 test_expect_success 'bare repository: check that .gitattribute is ignored' '
(
-   echo f test=f
-   echo a/i test=a/i
-   ) .gitattributes 
-   attr_check f unspecified 
-   attr_check a/f unspecified 
-   attr_check a/c/f unspecified 
-   attr_check a/i unspecified 
-   attr_check subdir/a/i unspecified
+   cd bare.git 
+   (
+   echo f test=f
+   echo a/i test=a/i
+   ) .gitattributes 
+   attr_check f unspecified 
+   attr_check a/f unspecified 
+   attr_check a/c/f unspecified 
+   attr_check a/i unspecified 
+   attr_check subdir/a/i unspecified
+   )
 '
 
 test_expect_success 'bare repository: check that --cached honors index' '
-   GIT_INDEX_FILE=../.git/index \
-   git check-attr --cached --stdin --all ../stdin-all |
-   sort actual 
-   test_cmp ../specified-all actual
+   (
+   cd bare.git 
+   GIT_INDEX_FILE=../.git/index \
+   git check-attr --cached --stdin --all ../stdin-all |
+   sort actual 
+   test_cmp ../specified-all actual
+   )
 '
 
 test_expect_success 'bare repository: test info/attributes' '
(
-   echo f test=f
-   echo a/i test=a/i
-   ) info/attributes 
-   attr_check f f 
-   attr_check a/f f 
-   attr_check a/c/f f 
-   attr_check a/i a/i 
-   attr_check subdir/a/i unspecified
+   cd bare.git 
+   (
+   echo f test=f
+   echo a/i test=a/i
+   ) info/attributes 
+   attr_check f f 
+   attr_check a/f f 
+   attr_check a/c/f f 
+   attr_check a/i a/i 
+   attr_check subdir/a/i unspecified
+   )
 '
 
 test_done
-- 
1.9-rc2-233-ged4ee9f

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] t0003: do not chdir the whole test process

2014-02-06 Thread Jonathan Nieder
Junio C Hamano wrote:

 Moving to some other directory and letting the remainder of the test
 pieces to expect that they start there is a bad practice.

I agree with the above, and I like the patch...

The test
 that contains chdir itself may fail (or by mistake skipped via the
 GIT_SKIP_TESTS mechanism) in which case the remainder may operate on
 files in unexpected places.

... but this logic seems wrong.  I don't think we've ever supported
setup tests failing or being skipped in the past.

Thanks,
Jonathan
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] t0003: do not chdir the whole test process

2014-02-06 Thread Jonathan Nieder
Junio C Hamano wrote:
 Jonathan Nieder jrnie...@gmail.com writes:

The test
 that contains chdir itself may fail (or by mistake skipped via the
 GIT_SKIP_TESTS mechanism) in which case the remainder may operate on
 files in unexpected places.

 ... but this logic seems wrong.  I don't think we've ever supported
 setup tests failing or being skipped in the past.

 The first set-up test, yes, but something in the middle added as an
 afterthought?

Even set-up in the middle added as an afterthought, yes.

For a while I've been wanting to teach GIT_SKIP_TESTS not to skip
tests with 'setup' or 'set up' in their name, but I never got around
to it.  If I try to skip the setup test this patch touches, then there
is no bare.git and lots of later tests fail.  Perhaps it would be
better for each test to do

rm -fr bare.git 
git clone --bare . bare.git 
(
cd bare.git 
...
)

for itself to make the state easier to think about.

On the other hand I agree that the 'cd' here is a bad practice.  I
just don't think it's about skipping setup --- instead, it's about it
being hard to remember the cwd in general.

Thanks,
Jonathan
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] t0003: do not chdir the whole test process

2014-02-06 Thread Junio C Hamano
Jonathan Nieder jrnie...@gmail.com writes:

 Junio C Hamano wrote:

 Moving to some other directory and letting the remainder of the test
 pieces to expect that they start there is a bad practice.

 I agree with the above, and I like the patch...

The test
 that contains chdir itself may fail (or by mistake skipped via the
 GIT_SKIP_TESTS mechanism) in which case the remainder may operate on
 files in unexpected places.

 ... but this logic seems wrong.  I don't think we've ever supported
 setup tests failing or being skipped in the past.

The first set-up test, yes, but something in the middle added as an
afterthought?
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] t0003: do not chdir the whole test process

2014-02-06 Thread Junio C Hamano
Jonathan Nieder jrnie...@gmail.com writes:

 For a while I've been wanting to teach GIT_SKIP_TESTS not to skip
 tests with 'setup' or 'set up' in their name, but I never got around
 to it.

Yeah, that would be a good thing.  As part of doing so, we might
want to come up with a way to test the tests, randomly skipping
pieces that are not setup and find ones that break the later tests
when skipped, and mark test scripts that fail such a test for fixing.

 If I try to skip the setup test this patch touches, then there
 is no bare.git and lots of later tests fail.  Perhaps it would be
 better for each test to do

   rm -fr bare.git 
   git clone --bare . bare.git 
   (
   cd bare.git 
   ...
   )

 for itself to make the state easier to think about.

That is a better and worse way to do it at the same time ;-)  It
definitely is better from maintainability POV to keep each test as
independent as possible.  It however also is worse if it forces us
to be repetitive X-.

 On the other hand I agree that the 'cd' here is a bad practice.  I
 just don't think it's about skipping setup --- instead, it's about it
 being hard to remember the cwd in general.

Exactly.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html