I'm pleased to announce the third alpha release of TestSimple, the port of Test::Builder, Test::Simple, and Test::More to JavaScript. You can download it here. This release has the following changes:
isNum()
and isntNum()
in TestBuilder.js now
properly convert values to numbers using the global Number() function.like()
and unlike()
that are
not strings now always fail to match the regular expression.plan()
now outputs better error messages.isDeeply()
now works better with circular and repeating
references.diag()
is now smarter about converting objects to strings
before outputting them.==
and !=
, respectively) instead of stringified
comparisons, as the equivalence checks are more generally
useful. Use cmpOk(got, "eq", expect)
to explicitly
compare stringified versions of values.useNumbers()
, noHeader()
,
and noEnding()
accessors will now properly assign a non-null
value passed to them.summary()
and details()
now have the appropriate structures.diag()
now always properly adds a #character after newlines.
output()
, failureOutput()
,
todoOutput()
, warnOutput()
,
and endOutput()
to TestBuilder to set up function reference to
which to send output for various purposes. The first three each default
to document.write
, while warnOutput()
defaults to
window.alert
and endOutout()
defaults to the
appendData
function of a text element inside an element with
the ID testor, failing that,
window.write
.todo()
and todoSkip()
now properly add #after all newlines in their messages.
Many thanks to Marshall Roch for help debugging issues in IE.
Now, there is one outstanding issue I'd like to address before I would consider this production ready (aside from porting all the remaining tests from Test::Simple): how to harness the output. Harnessing breaks down into a number of issues:
How to run all tests in a single window. I might be able to write a build script that builds a single HTML file that includes all the other HTML files in iframes or some such. But then will each run in its own space without stomping on the others? And how would the harness pull in the results of each? It might be able to go into each of its children and grab the resultsfrom the TestBuilder objects...
More Feedback/advice/insults welcome!
Since Perl Test::Simple/Test::Builder is generally considered a Unit Testing framework (although it can be (ab)used as a Integration-Regression engine as well), and JavaScript (or ECMA Script) runs in a Browser that is usually deeply connected, I'm missing a contextual leap here.
I could really use a link to a web page describing the purpose and scope of the TestSimple JavaScript port. All the posts on Just A Theory and here are "Implementor's Doc", change-lists of what's implemented/fixed from your point of view. If there's a "Project Homepage", it's not linked.
How much of the other items above could I do with it, if any?
Re:Purpose?
Theory on 2005-05-03T01:04:26
Bill,
Apologies for the delayed reply. I've been busy with other things for the last few days.
I thought that your questions were important enough that I wrote a separate post to address them.
—Theory
Re:Purpose?
n1vux on 2005-05-05T01:03:38
Thanks, I'll check it out.