[Gambas-user] About library and component packaging in Gambas 3
Bruce Bruen
bbruen at ...2308...
Tue May 1 13:27:29 CEST 2012
On Tue, 2012-05-01 at 12:22 +0200, Benoît Minisini wrote:
> A lot of answers to a lot of stuff, so I'm going to break it up into several posts.
> Le 29/04/2012 06:45, Bruce Bruen a écrit :
> >
> > SUGGESTION: Libraries should not need to have a startup class. At
> > the moment I "must" include a dummy module to prevent any
> > test-harness code leaking into the user environment (which could
> > cause damage if the library were to be run as a normal gambas
> > executable.) At the moment the IDE will not let a library be made
> > into an executable or packaged unless it has a startup class. It
> > would be preferable that projects defined as libraries would not
> > execute via the runtime, that way test harness code could be left in
> > place. Currently I have to check that the coders have left the
> > startup class pointing to the following:-
> >
> > ' Gambas module file
> >
> > ' Null module to provide a fake startup point
> >
> > Public Sub Main()
> >
> > Error "Please do not run this as a program. It is a gambas library."
> >
> > End
> >
>
> Mmm. You are right, for libraries the IDE should let you not defined a
> startup class. I will see what I can do.
>
I think that ("the IDE should let you not defined a startup class") is
an overkill. What I need is a way to use a startup class in a library
when I'm developing it but when it is packaged the startup class should
be "removeable".
To explain, during development/debug/support for a library, we need to
be able to run it as a normal project through the IDE. This is what I
meant about "test harnesses". In general, we have a MMain module in the
library that may, or in fact usually, contains code that lets us enter
method parameter values manually. This type of code if used by an
ill-advised user could cause great havoc on an underlying database or
the like.
What I would like is a way to manually disable or "turn off" the startup
class when the library project is made as an executable or is packaged.
I suppose that the alternative is to not allow startup classes in
libraries or components and keep changing the project type to "Normal"
when we are debugging/supporting but I can foresee a lot of mistakes if
that route is chosen.
The way I see it is this. (Hypothetically) I've just spent some time on
the phone to Mr Jones and it appears that there is, amazingly, a problem
in the xyzzzy library. I open the xyzzy project and using the test
harness code therein I find that we did in fact code a logic error when
some date parameter to a dual timezone function is exactly the date and
time that daylight savings changed in one of the timezones. ( I kid you
not, this happened recently!) So I give the problem to the wizkids, er
sorry, my brilliant development team, and they come up with a nicely
tested solution.
So now all I want to do is turn off the startup class, compile and make
the distributable version and send it out.
With a bit of thought... maybe what libraries/components need is a
startup class that only works within the IDE...
hmm!
Bruce
More information about the User
mailing list