Dear AmForthers,
Monday evening doing a little AmForth related stuff, how is that?
Full disclosure: I am using emacs/org-mode. So I created a habit
for Monday. And boy those red colored bars saying "not done"
become annoying quickly. So better do something :)
Contemplating the Test Cases Thing
> 2020-11-02 I wrote:
> 3. Add testing scripts --- I have a set of scripts for that, but I
> have not run this stuff yet. However, in my opinion adding a
> working test suite is far more important at the moment, than
> anything else.
>
> This includes preparing some hardware with 4 relevant target boards
> in order to simplify the process.
Turns out that the set of scripts isn't all that great. So:
What would I like to achieve?
There will be a ./test/ directory, which holds the test cases and
the files to programm my available target hw for the tests.
: cd test
: make targets # shall produce firmware for target boards
: make install $target # flash the particular target board
: make test $target # calls the runner on a given list of test cases
The result should be something like this:
: make test $target
: . loading tester on $target, ok.
: . 0/12 test/common/test-A.frt, ok
: . 1/19 test/common/test-B.frt, 1 error
: 1 error in 21 tests
The verbatim output goes to runner.log or something such.
*configuration*
- which target board do I want to use?
- which programmer and its paramters do I have?
- which details for the serial (or other?) connection?
*terminology*
- unit-under-test :: this is the function (asm of forth word) to
be tested.
: : unit-under-test ( stack -- effect )
: definition
: ;
These live in the directories arm, avr8, common, msp430,
risc-v, shared ... these trees should remain unchanged imho.
- test case :: this is a statement to load unit-under-test and
its possible dependencies, plus a collection of "t{ ... }t"
statements to exercise unit-under-test:
: #include unit-under-test.fs
: t{ stack function changed stack }t
Other forms of test procedures should be possible as long as
they produce output, which can be understood by the runner.
There are dragons lurking here when it comes to #include or
#require.
- runner :: this is a script which can talk to a target board
(via serial), feed a testcase file, collect the resulting
output and extract the results
- tester :: this is an implementation of the Hayes tester. It
defines 't{' '}t' and a few more words.
- firmware :: for every target board to be used, we require
a well equipped AmForth firmware. I expect this firmware to be
somewhat special and separate from the examples in the ./appl/
subdirectory.
There are possible complications known as setup/teardown. Markers
could possibly help. On the other hand, I have not yet exhausted
the flash or RAM of a atmega-644a.
*possible tree layout*
: amforth/trunk
: ...
: +-- test/
: +-- Makefile \ top of magic
: +-- M.programmer.mk \ make vars to specify my programmer
: +-- M.connection.mk \ make vars to specify serial connection
: +-- bin/ \ any tools
: | +-- runner.pl
: |
: +-- tester/ \ place for tester words? optional?
: |
: +-- firmware/
: | +-- avr8-at644p/
: | | +-- Makefile
: | | +-- dict_appl_core.inc
: | | +-- dict_appl.inc \ includes dict_local.inc
: | | +-- dict_local.inc \ all additional words to load in this
context
: | | +-- testfirmware.asm \ top level definition for target
firmware
: | | +-- words/
: | | +-- applturnkey.asm \ project specific
: | |
: | +-- $target-$controller/
: | | +-- Makefile
: | | +-- ...
: | ...
: |
: +-- cases/
: | +-- common/ \ testcases for all target boards
: | | +-- stack-test.frt
: | | ...
: | |
: | +-- avr8/ \ testcases for specific target boards
: | | +-- ...
: | ...
: |
: +-- logs/ \ place for logfiles?
Assuming that Mr.Someone has installed the relevant tools,
editing the M.*.mk files should be enough to
- produce firmware for at least one target
- install the firmware on said target
- load and evaluate the available tests
All of this in a few lines of shell commands.
Does that sound like a plausible plan?
Next step: create this structure for one target and a few test
cases and see, how we fare.
Cheers,
Erich
--
May the Forth be with you ...
_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
[email protected]
https://lists.sourceforge.net/lists/listinfo/amforth-devel