Hi Nathan,
I hope this reply doesn't end up sounding too negative, I even suggested Geany needed unit testing myself once in the past. ... but
On Wed, Nov 30, 2011 at 5:36 PM, Nathan Broadbent nathan.f77@gmail.com wrote: [...]
...
As long as your headers are C++-compatible (not using C++ keywords, export symbols with correct linkage), it should be fine.
All Geany is C, not C++, ie no extern C {} anywhere. Don't know if this is an issue.
2) How do you run unit tests on a live GUI application with no libraries (surely there's a way).
I don't have much experience, so I can't offer any suggestions. But I can do the research.
For unit testing I don't think the GUI thing is such a problem compared to the fact that the sort of application Geany is means that it has *lots* of global state (all the filetypes, all the open documents etc) and setting this up right for unit tests is going to be hard.
3) Who's going to do it :)
If you want to help with this, I'm sure it would be appreciated.
I could help start it off, but it would have to be an on-going thing. I wouldn't have the time to sit down and write tests for the whole application. Each developer could get into the habit of writing a test whenever they change something or add a new feature.
And here lies the biggest problem, for an existing application the added value is small if only changes get tested, and changes become very expensive if a full unit test is required for any unit that is changed. And what are you going to test against? There is no internal specification for Geany's units.
The only real restriction IMO is that it not add any dependencies to the application or build system under normal conditions. For example, it would be a bummer to make Joe Hacker have to install some exotic unit testing framework libraries just to do a `make && make install`.
I totally agree with not adding dependencies under normal conditions, and I don't think that will be an issue if the code is written well. Test-driven development often enforces particular design patterns, so there will probably need to be some refactoring involved.
Test driven development is fine, thats how I do most of my stuff (in C++ with my own test harness and -DWITH_UNIT_TESTS) but retrofitting it to an existing mature application is unlikely to be cost effective.
To be honest, the real reason that I started talking about unit tests, is because I really need them in order to write a lexer for scintilla. Manual testing for lexers would be a nightmare.
I'm unsure what a test harness would gain you, lets use your favourite language Ruby, how would you test such a lexer other than feeding it ruby source and looking at the results? Which is what opening a Ruby file does.
<editor_rant>
[...]
</editor_rant>
Cheers! Nathan
P.S. The documentation needs to be updated for the 'waf' build system, in quite a few places, including geany-plugins.
How?
Geany-devel mailing list Geany-devel@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel