Subject: Re: [QGIT RFC] Unit tests for QGit

From: Jan Hudec <[email-masked]>
Date: Wed, 27 Aug 2008 22:18:19 +0200

On Tue, Aug 19, 2008 at 15:53:05 +0100, Marco Costalba wrote:
> On Mon, Aug 18, 2008 at 7:00 PM, Jan Hudec <[email-masked]> wrote:
> > On Sun, Aug 17, 2008 at 21:30:46 +0100, Marco Costalba wrote:
> >> On Sun, Aug 17, 2008 at 8:58 PM, Jan Hudec <[email-masked]> wrote:
> >> >
> >> > But as I said, I only have basic infrastructure and am currently looking at
> >> > what to write tests for and how exactly that test should work. The detection
> >> > of git vs. stgit branch (does not work for me)
> >>
> >> This sounds as a bug. Could you elaborate on that please ?

I am slowly progressing towards writing a test case for it ;-).

Actually, I just wrote a first simple test for it. I didn't find this (now
the stg branch finds out properly), but I found another problem -- when
switching from non-stgit branch to a stgit one, Git::init will not notice,
because the path didn't change, so the check is not re-run. Applies to the
other direction too, of course.

> >> BTW the test for a StGit repo is:
> >>
> >> isStGIT = run("stg branch", &stgCurBranch); // slow command
> >>
> >> in function Git::getRefs() , file git_startup.cpp
> >
> > Yes, I've seen that command. But it returns true for me even when it's not
> > a stg branch :-(. I am not sure what the problem there is.
> >
> 
> That's interesting !
> 
> The command just runs "stg branch", in my StGit setup this returns an
> error (some stuff written to stderr) if the directory where it is run
> is not a StGit stack.

I don't recall the details (it was some time ago) and the repository might
have been a bit screwed up. The point there was the branch /used to be/
a stgit one. So it was rather a problem of stgit keeping duplicate
information all over the place.

> run() just detects the error and returns false.

By the way, I looked at the makefiles again and found that they are actually
regenerated correctly when you change the .pro files. While the master
makefile does not have dependencies for the subdir makefiles, each makefile
does have dependencies for itself. And make always tries to rebuild the
makefile before doing anything else. Therefore it does not work to:
    make src//Makefile
but it *does* work to:
    make -C src Makefile
(*and* it will rebuild the makefile when you 'make debug' or 'make release').

Regards,
Jan

-- 
						 Jan 'Bulb' Hudec <[email-masked]>