Re: Brain Dump of Towards FIT 1.0 OpenSpace session

[email protected] Thu, 21 Aug 2003 20:38:32 -0400
Newsgroups gmane.comp.programming.tools.fit.devel
Message-ID <[email protected]>
----- Original Message ----- 
From: "Al Chou" <[email protected]>
To: "FIT Developers" <[email protected]>
Sent: Thursday, August 21, 2003 7:48 PM
Subject: Re: [Fit-dev] Brain Dump of Towards FIT 1.0 OpenSpace session


> --- [email protected] wrote:
> >
> > ----- Original Message ----- 
> > From: "Al Chou" <[email protected]>
> > To: "FIT Developers"
<[email protected]>
> > Sent: Thursday, August 21, 2003 7:02 PM
> > Subject: Re: [Fit-dev] Brain Dump of Towards FIT 1.0 OpenSpace session
> >
> >
> > > --- [email protected] wrote:
> > > >
> > > > ----- Original Message ----- 
> > > > From: "Al Chou" <[email protected]>
> > > > To: "FIT Developers"
> > <[email protected]>
> > > > Sent: Thursday, August 21, 2003 5:18 PM
> > > > Subject: RE: [Fit-dev] Brain Dump of Towards FIT 1.0 OpenSpace
session
> > > >
> > > >
> > > > > I couldn't find a saved message that made sense to reply to, so
I'm
> > adding
> > > > it
> > > > > to this thread.
> > > > >
> > > > > Lately I've been thinking more than usual about cross-language
> > > > compatibility,
> > > > > and I wonder whether anyone has mentioned trying to add BSF
capability
> > to
> > > > FIT
> > > > > or FitNesse so that any language that's been implemented in Java
> > (Jython,
> > > > > Tcl/Java [Jacl and/or Tcl Blend], JRuby, JScheme, and many many
> > others) or
> > > > can
> > > > > do Java FFI could be used to write fixtures.  I was pleasantly
> > surprised
> > > > to
> > > > > discover that a future version of Eclipse should have BSF
included.
> > > >
> > > > Say what? I'm having a severe case of acronoym overload. What's
> > > > a BSF, what's a FFI? I recognise Jython, so the rest of the
languages
> > > > in that clause are ok.
> > > >
> > > > In any case, Fitnesse doesn't care - writing fixtures in one
language
> > > > to drive an application in another language is a FIT issue.
> > > >
> > > > John Roth
> > >
> > > Sorry.
> > >
> > > BSF = Bean Scripting Framework, born at IBM, now at Apache
> > > http://jakarta.apache.org/bsf/
> > >
> > > FFI = foreign function interface
> > >
> > > I may have misunderstood, but I thought I had read remarks about
FitNesse
> > > calling fixtures written in languages other than Java.
> >
> > Yes, it does, but what it does is call a driver in that language in its
own
> > process (using the Java equivalent of fork) so there is no language
> > compatability issue. So, for example, there's a Java version of FIT,
> > there's a .NET version of FIT, there's a Python version of FIT,
> > and so forth. To invoke the Python versions, Fitnesse builds a
> > command something like:
> >
> > Python FitFilter.py <path stuff> <working directory>
> >
> > and passes it the HTML on its stdin, getting the result HTML
> > by reading the stdout and stderr.
> >
> > John Roth
>
>
> Thanks for the clarification, John.  OK, so let's substitute "FIT" for
> "FitNesse" in my original question.  Rather than (or in addition to, for
those
> languages that have no Java compatibility) having FIT re-implemented in
> numerous languages, why not have one core FIT that allows fixtures to be
> written in whatever language you choose?

It's an interesting thought. You'd need an interface program in the
target language, though. You'd also need to do a considerable amount
of reengineering of the FIT core, and you'd have to insure that the
new style fixtures weren't substantially more difficult to write than the
older style fixtures.

The other difficulty I see is that you'd need a JVM, which isn't
needed for any other purpose if you're not running FitNesse. And
that makes is more difficult to modify FIT if your team doesn't
do Java.

How would you handle type adapters? That whole mechanism
is inherently language specific, which means they would have to
be reimplemented on the target language side.


> The original FIT is in Java, which
> happens to have a lot of other languages implemented in it, but as long as
an
> interface was exposed that many other languages could work with, it
wouldn't
> matter what language the core FIT was written in (a recent thread on
Ruby-talk
> brings to mind the possibility that rather than exposing an
> implementation-language-specific [e.g., Java or C] API, the public
interface
> could be XML-RPC, SOAP, or some other already-language-neutral
technology).

No way do I want something as heavyweight as those two! AFIC, anyone
who's trying to do acceptance testing with FIT across a network connection
from the program under test is, to put it mildly, working way too hard and
needs a vacation - desperately.

A much more lightweight text-based protocol would do fine. If you have to
have XML, so be it, but I consider it major overkill when all you need is to
transfer tables and counts back and forth.  A CSV variant would work
just fine.

The more I think about it, the more I like it. There are a bunch of
possibilities here, I think.

John Roth