[GB.TEST]
* BUG: Do not trim whitespace from diagnostic lines.
* NEW: Show TODOs (failed and bonus) and SKIPs in summary.
Previously, TapPrinter.Diagnostic would Trim$ its argument before
splitting it by line. This would remove any indentation that may
be useful for formatted diagnostics output, so it has to go.
Additionally I special-case Null and gb.Lf to print exactly "#\n",
which is a common use case as a visual separator.
This is a big refactor of the TapPrinter and Assert interaction with
the goal of enabling gb.test to print a self-summary after a TAP session
(without storing the TAP we printed and parsing it afterwards). The main
feature addition is a new class representing an assertion (together with
its subtests). Objects of this type are now produced by TapPrinter when
it prints an assertion and by TapParser alike when it parses TAP.
This allows more uniform and more detailed reporting of failures, too.
For organizational reasons, subtest support was moved into the printer.
[GB.TEST]
* NEW: Expose the TapContext class which holds the current TAP session's state.
* NEW: Represent assertions (and entire subtests) by TestAssertion objects in both TapPrinter and TapParser.
* NEW: Coalesce the four TapParser events for assertions into one.
* OPT: Move subtest support into TapPrinter, removing the need to create multiple TapPrinter objects.
* OPT: Remove the need for buffering the TAP to print a self-summary.
* BUG: Fix the buffering issue that would lose TAP when the process crashes.
[GB.FORM.EDITOR]
* NEW: TextEditor: Do not use Application.Busy in Load() and Save() methods.
* BUG: TextEditor: TextEditor[].Purge() works as expected now.
Without "Debug oTest.Name" in TestSuite.class:39 it would silently crash anywhere
after TestNoMessage is done without printing any single character. Reason is
"Assert.BailOut" in TestSuite:51 which miraculously does nothing.
If the testsystem itself crashes, ist must print "BailOut ..."
But here also can be seen, why the system has to print every assertion immediately.
Any bufferíng is bad because if the testsystem crashes the buffered results are gone.
So we must get rid of the buffered stream thing and go back to Print scattered all over ;-)
[GB.TEST]
* BUG: Forward Description in Assert.ErrorCode.
* BUG: Fix spelling of TearDown -> Teardown special test method.
* OPT: Use Assert.Note() instead of Print in tests.
[GB.MARKDOWN]
* BUG: Take anchors into account correctly when generating links.
* BUG: Lines beginning with '#' without a space after do not make the parser crash anymore.
[INTERPRETER]
* NEW: Support for JIT '&=' optimization.
* BUG: Fix '&=' optimization on argument variables.
* OPT: Strings greater than 4096 bytes are allocated by 4096 bytes steps.
[GB.JIT]
* NEW: JIT optimization of '&=' has been implemented.
[GB.WEB.GUI]
* NEW: This is the new name of 'gb.web.form2'.
* NEW: Support for popup menus.
* NEW: Support for stock icons.
[GB.WEB.FORM2]
* NEW: Rename the component as 'gb.web.gui'.
[GB.UTIL]
* NEW: CSVFile: Charset now can be specified. If not specified, the first line of the files is used to guess if it could be WINDOWS-1252, or otherwise UTF-8.
[GB.WEB.FORM2]
* BUG: Use SIGUSR2 for synchronizing session process with CGI process, as SIGUSR1 is used by the debugger.
* NEW: Support for debugger.
* NEW: THe HTML body now uses sans-serif font by default.
[GB.WEB.FORM2]
* NEW: WebForm: Current is a new static property that return or set the main form.
* NEW: WebForm: Goto() is a new static method that switch the Current property.
* NEW: WebForm: Reload() is a new method that reload the form if it is the main one. Otherwise it calls Refresh().
[GB.WEB.FORM2]
* NEW: Session: Fix compatibility with replaced Session class, with support for array accessor, Exist method and Prefix property.
* NEW: Session: Remove Dir property. Session.Path was done for that.
* BUG: Calling Session.Abandon now quits the session process immediately.
* BUG: WebTimer: The Refresh() method now does nothing.
[GB.WEB.FORM2]
* NEW: DateBox: Open calendar popup on mouse down.
* NEW: Override the Session class, so that its methods that do not have any sense with 'gb.web.form2' do nothing anymore.
* NEW: WebForm.Current is a new property that allows to define the main form of the application that fills its HTML page.
* NEW: Session.Dir is a new property that returns the session directory. It is now '/tmp/gambas.<userid>/session/gb.web.form2'.
* NEW: Session.Timeout is taken into account by session processes.
* BUG: Window titles do not wrap anymore.
[GB.FORM.TERMINAL]
* BUG: TerminalView: Terminal output processing is now delayed until the control is visible and has been arranged, so that the terminal width is accurate.
* BUG: Move XTerm files to the hidden project directory.
* NEW: TerminalView: Automatic scrolling is disabled when the last terminal line is hidden.
* OPT: TerminalView: Automatic scrolling is not smooth anymore.
[GB.FORM.TERMINAL]
* NEW: TerminalView: Add a new popup menu entry to select all the text.
* NEW: TerminalView: Add a 2 pixels margin around the terminal contents.
* NEW: TerminalView: ReadOnly is a new property that makes the TerminalView ignore keyboard input.
[GB.UTIL]
* NEW: String.PadLeft() is a new method that pad a string to the left up to a specified length using a string pattern.
* NEW: String.PadRight() is a new method that pad a string to the right up to a specified length using a string pattern.
[GB.TEST]
* NEW: Flowchart made by libre office draw and exported as svg
This is a first try to show the interplay between gbt3, gb.test and
gb.test.tap.
[GB.FORM]
* NEW: FileProperties: Add() now returns the index of the added tab.
* NEW: FileProperties: Index is a new property that returns or sets the current tab index.
* NEW: FileProperties: Click is a new event that is raised when a tab is selected.
[GB.TEST.TAP]
* NEW: Assert.SubtestLevel is a new property that returns the number of nested subtests.
* NEW: Assert.BailOut always unwinds the subtest stack and bails out of the entire TAP session.
* BUG: Tests can bail out even if Finished was called.
[GB.TEST]
* NEW: Bail out again if errors from test methods are caught.
* BUG: Don't call Finish on a subtest when it was already finished.
After the Bail out message, we Quit with non-zero exit status to signal
an abnormal termination to the harness.
[GB.TEST]
* NEW: Use gb.test.
This removes the Assert and Track classes and uses gb.test.tap instead.
Test methods are now executed inside subtests, plan lines are auto-
matically emitted by the harness.
Differences between gb.tests's and gb.test.tap's Assert module:
- Instead of Assert.True and Assert.False, use Assert.Ok.
- Instead of Assert.Equals* for every type, there is a generic
Assert.Equals for Variants and a specific Assert.StringEquals
for strings which prints diagnostics when the test fails.
- Assert.BailOut does not terminate the entire program, just
the TAP stream.
- Assert.ErrorWithCode is called Assert.ErrorCode.
All TAP printing is done through Assert now. Errors happening in the
test code are not caught and spoofed in the TAP stream anymore, they
cause a test failure. The system would be more robust if the testee
would be in a different process from the tester.
[GB.TEST.TAP]
* NEW: Add Reset() method to Assert. Useful if you use the same (automatic) instance for multiple TAP streams.
* BUG: Fix state handling in TapPrinter.Finished.
[GB.TEST.TAP]
* NEW: Turn TestStats into a class.
* NEW: Store TestStats.Failures as an Integer[].
* BUG: Do NOT intercept test's stderr and convert it to diagnostics.