FWIW, I agree with Martin.  Source files with lots of tests make
finding things difficult.  For example, value-range.cc has 400 lines
of tests (which I wrote ;-)).  Even though these tests have proven
invaluable in finding bugs, they make navigating the source file
cumbersome.

Aldy

On Tue, Apr 20, 2021 at 1:27 AM Martin Sebor via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> On 4/19/21 3:13 PM, Koning, Paul wrote:
> >
> >
> >> On Apr 19, 2021, at 4:50 PM, Martin Sebor via Gcc-patches 
> >> <gcc-patches@gcc.gnu.org> wrote:
> >>
> >> On 4/19/21 2:03 PM, David Malcolm wrote:
> >>> On Mon, 2021-04-19 at 13:47 -0600, Martin Sebor via Gcc-patches wrote:
> >>>> The selftests at the end of many source files are only rarely read
> >>>> or modified, but they contribute to the size/complexity of the files
> >>>> and make moving within the rest of the code more difficult.
> >>>>
> >>> FWIW I prefer having the tests in the same file as the code they test.
> >>>> Would anyone be opposed to moving any of them into new files of their
> >>>> own? E.g., those in tree.c to tree-tests.c, etc.?  I would be happy
> >>>> to do this for a subset of these, with the goal of eventually moving
> >>>> all of them and adding new ones accordingly.
> >>> Having the selftests in the same source file as the thing they test
> >>> allows for the selftest to use "static" declarations and anonymous
> >>> namespaces from that file.  For example, the selftests in diagnostic-
> >>> show-locus.c make use of various things declared in an anonymous
> >>> namespace in that file.  If I had to move the selftests to a different
> >>> file, I'd have to expose these interfaces, which I don't want to do.
> >>
> >> I was actually thinking of just #including each foo-tests.c file
> >> to bring in the code right where it is now, so this shouldn't be
> >> a problem.  Would that work for you?
> >>
> >> Martin
> >
> > How does that help the problem you said need to be solved?  If having self 
> > test code be part of the compilation unit makes modifying things more 
> > difficult, it doesn't matter whether that code is in the compilation unit 
> > due to being in the main source file, or due to being a #include.
>
> The self tests make the sources bigger and so harder to move around
> in and difficult to find just the calls to tested functions made
> from elsewhere in the file or from other parts of the compiler (i.e.,
> not tests).  They are only rarely relevant when reading or changing
> the file.
>
> Keeping them separate from the code they exercise will be helpful
> to me and I assumed to others as well.  But I wouldn't want to make
> some common tasks difficult, so if you or someone else has one that
> would be made so by it, I won't pursue it.  Do you?
>
> Martin
>

Reply via email to