Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


Hi guys,

On Thu, 2013-04-04 at 12:15 +0200, Bjoern Michaelsen wrote:
Besides, LO is a C++ program - if you can already code in C++, why
would you want to switch to a different language to write a unit
test?

Because there are people willing to write Python tests but unable (or unwilling
to invest the time) to write C++ tests?

        So - can we rip the language issue out of this. AFAICS no-one truly
cares about the language that the tests are written in but they do have
some pretty firm requirements that need to work for any/all of: Java,
Python, StarBasic etc.

        + debug-ability - when the test fails - and the best tests are
          written to fail regularly ;-) we need to be able -very-simply-
          to get a backtrace we can work with - without a ton of
          training, reading a dozen wiki pages, poking for obscure
          symbols, etc.

        + that backtrace should not have big, opaque chunks that
          are either empty (cf. Java) or point to random / irrelevant
          pieces of C/C++ interpreter code - Python / StarBasic &
          others. It should allow interactive inspection of variables
          up and down the stack.

        + reliability and performance: new unit tests should be small,
          fast, non-duplicative (ie. re-using existing code &
          frameworks), readable, and must produce zero false positives.
          Ideally they should test just one thing - though clearly our
          bootstrapping process is a nightmare that exercises millions
          of lines to get to the 'go'.

        + ideally - the unit tests should run -in-the-same-process-
          which significantly helps with the above performance,
          debugging, reliability and more.

        Personally, flameage aside, my (by far) most preferred solution would
be not to discourage python / java / starbasic from being used for unit
tests - but instead to encourage working on making python actually
debuggable via gdb: presumably (with the new python/gdb framework ;-) 

        That is not a completely unrealistic hope / expectation ? surely ? it
would help adoption of hybrid native-code with python / StarBasic /Java
etc. across the computing universe rather than just in LibreOffice :-)

        It is still amazing to me that decades from its creation, the debugging
experience around Java from gdb is one of the foulest and least useful
things I've ever had the misfortune to use :-) - oh, wait - Mono was
just as bad, the stack traces were -still- entirely opaque and unusable
for large sections as far as I could see. Of course, in the mono case
they wrote their own custom debugger - which worked well - except for it
being a new piece of code with it's own bugs, problems, platform issues,
etc.

But I see little reason to dogmatically write all tests in C++ as:

        It is not the test - it is the debugging of the test that is the issue.
That is something that (potentially) stops people getting their code
into LibreOffice. The higher we make that barrier - and the easier we
make it for people to raise a barrier to entry that is fundamentally
unusable / not-accessible for new people, the worse a world we live in.
"Just re-write that python stuff in C++ in order to work out why the
test fails for your new patch" is not a nice message for a new
contributor stymied by a potentially buggy & un-debug-able test.

        That is, unless we can debug them cleanly - which I hope is somewhere
we can get to without overmuch effort.

        IMHO it is not trolling to point that out; in particular I'd recommend
listening to the advice from those who have written and debugged the
most in the area of unit tests; which is neither me nor you :-)

        ATB,

                Michael.

-- 
michael.meeks@suse.com  <><, Pseudo Engineer, itinerant idiot


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.