Re: [PATCH v4 3/3] t4113: put executable lines to test_expect_success
- From
Shuqi Liang <cheskaqiqi@gmail.com>
- Date
- Feb 10, 2023, 15:29 UTC
- Message-ID
- <CAMO4yUHZ=aUa5pOCKH4F91YhUSgCRuHNXBBOyTF5tzNY=oHsXw@mail.gmail.com>
- In-Reply-To
- <230208.865ycc1tqc.gmgdl@evledraar.gmail.com>
Hi Ævar ,
Sorry if I sent this email twice. I forget to CC git@vger.kernel.org.
On Wed, Feb 8, 2023 at 2:50 AM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
> I'm not sure because you're just posting snippets, if you have problems > in the future it would be best to post the full diff to "master" that > you're having issues with, e.g. an RFC per Documentation/SubmittingPatches.
Yeah, posting snippets doesn't describe the problem very well. Thanks for the advice.
> But I think this is because the test itself is using '-quotes, so you > need to use '\'' if you want to single quote, and " for double quotes, > and \" if the test were in double quotes.
> But the issues you're having here aren't with Git, but the very basics > of POSIX shell syntax.
> I think it would be good for you to read some basic documentation on > POSIX shells, their syntax, common POSIX commands etc. Your local "man > sh" is probably a good place to start, but there's also books, online > tutorials etc.
Thanks, will do . I'll try to avoid making mistakes on POSIX shells questions and really learn the basic POSIX shells syntax.
> In this case the syntax you're trying to get working is something we > usually try to avoid in either case, i.e. even if it involves an > external process we usually do:
Show 26 quoted lines
> cat >out <<-\EOF
> a
> b
> c
> EOF
>
> Rather than:
>
> echo "a
> b
> c" >out
>
> If you are using "echo" I saw another change of yours had e.g.:
>
> echo x >f &&
> echo y >>f &&
> echo z >>f
>
> It's better to e.g. (assuming use of "echo", or other built-ins or
> commands):
>
> {
> echo x &&
> echo y &&
> echo z
> } >fSeen I pass the test s, I'v a submit V5 patch instead of RFC, Would you mind taking a look at this for me? Looking forward to reply.
----------------------------- Thanks
Shuqi
On Wed, Feb 8, 2023 at 2:50 AM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
Show 109 quoted lines
>
>
> On Wed, Feb 08 2023, Shuqi Liang wrote:
>
> > On Tue, Feb 7, 2023 at 3:12 AM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
> >
> >> But this is almost certainly that you're trying to insert leading
> >> whitespace into a line that's in a <<-EOF here-doc, the "-" part of that
> >> means that your leading whitespace is being stripped.
> >>
> >> A typical idiom for that is have a marker for the start of line, and
> >> strip the whitespace with "sed". See this for existing examples:
> >>
> >> git grep 'sed.*\^.*>.*EOF'
> >
> >
> > I try to use Z as the marker in front of 'a' and 'b' and use sed -e
> > "s/Z/ /g" in order to replace Z with white space but it still can not
> > pass the test.
> >
> > Then I realize even if I don't add tab in front of the line but with
> > space in front of 'a' and 'b' like the original test script. It still
> > says it can't read "b" and "c” :
> >
> > test_expect_success 'apply at the beginning' '
> > cat >test-patch<<\EOF &&
> > diff a/file b/file
> > --- a/file
> > +++ b/file
> > @@ -1,2 +1,3 @@
> > +a
> > b
> > c
> > EOF
> >
> > echo >file 'a
> > b
> > c'&&
> > git update-index file&&
> > test_must_fail git apply --index test-patch
> > '
> > Maybe the error is not caused by whitespace?
> >
> > Then I try to change:
> >
> > echo >file 'a
> > b
> > c'
> >
> > To:
> > echo >file "a
> > b
> > c"
> >
> > Then everything passes the test. I think double quotes allow for
> > variable substitution and command substitution, while single quotes
> > preserve the literal value of all characters within the quotes. In
> > this case, the string contains no variables or commands, so either
> > type of quote would work. Is there something wrong with my idea? Is it
> > good to modify code like that?
> >
> > Looking forward to your reply!
>
> I'm not sure because you're just posting snippets, if you have problems
> in the future it would be best to post the full diff to "master" that
> you're having issues with, e.g. an RFC per Documentation/SubmittingPatches.
>
> But I think this is because the test itself is using '-quotes, so you
> need to use '\'' if you want to single quote, and " for double quotes,
> and \" if the test were in double quotes.
>
> But the issues you're having here aren't with Git, but the very basics
> of POSIX shell syntax.
>
> I think it would be good for you to read some basic documentation on
> POSIX shells, their syntax, common POSIX commands etc. Your local "man
> sh" is probably a good place to start, but there's also books, online
> tutorials etc.
>
> In this case the syntax you're trying to get working is something we
> usually try to avoid in either case, i.e. even if it involves an
> external process we usually do:
>
> cat >out <<-\EOF
> a
> b
> c
> EOF
>
> Rather than:
>
> echo "a
> b
> c" >out
>
> If you are using "echo" I saw another change of yours had e.g.:
>
> echo x >f &&
> echo y >>f &&
> echo z >>f
>
> It's better to e.g. (assuming use of "echo", or other built-ins or
> commands):
>
> {
> echo x &&
> echo y &&
> echo z
> } >f