This effort produced another mystery which I just figured out.

On 2/4/2016 5:45 PM, Ross Berteig wrote:
....
For the record, what I actually typed looked like this, at a bash prompt
provided by MingW32 and MSYS, in a folder parallel to my open checkout:
....
$ tclsh ../fossil4/test/tester.tcl ./fossil -prot -quiet -verbose

During this run, the test suite gave an error I hadn't seen in previous testing: the test th1-tcl-9 failed. I wrote it off to some consequence of using -O0 and the instrumentation and ignored it, with the intent of looking into it later in case this was a hint at some obscure bug concealed by optimization.

That test (found in th1-tcl.test ca. line 133) renders some th1 scripting with the fossil test-th-render command and verifies that the result matches. The script in question looks up the count and list of arguments, and prints them. At first glance, there's nothing that can go wrong.

I checked in a fresh build of fossil with normal configuration and it also failed for me.

Now I've got a mysterious regression on a test case where none of the test file, the th1 input it processed, or even the th1 interpretor itself have been edited since I last ran the test suite. This would seem to be impossible. After a couple of false starts attempting to run the test-th1-render command by hand, I resorted to stuffing puts commands in the test case to see what text was really being compared.

The problem comes down to my invocation of the test suite iteslf, where I named the fossil to run as "./fossil" and not "./fossil.exe". This is run from a bash shell, but on Windows. The test case used the name of fossil verbatim from the command line of tester.tcl on the one hand, and the actual th1 script it ran looked up th1's $argv0 variable on the other. $argv0 was apparently derived differently, and included the ".exe".

The bottom line is that Windows treats "fossil" and "fossil.exe" as synonyms when searching for the program to run, but the test case didn't know that.

The simple answer is to always name the fossil to test as fossil.exe on Windows when running tester.tcl. A slightly more robust answer would be include some code in tester.tcl that makes sure the ".exe" got put there if appropriate.

Either way, that explains that mystery.

--
Ross Berteig                               r...@cheshireeng.com
Cheshire Engineering Corp.           http://www.CheshireEng.com/
+1 626 303 1602
_______________________________________________
fossil-dev mailing list
fossil-dev@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/fossil-dev

Reply via email to