deterministic test suite.

Some consistency checks on symbols are performed after all the
symbols were read, by an iteration over the symbol table.  This
traversal is nondeterministic, which can be a problem for test
cases.

Avoid this.

Addresses another form of nondeterminism reported by Joel E. Denny.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00023.html

	* tests/input.at (Numbered tokens): Split the hexadecimal/decimal
	test in two.
	Use different file names for the three tests to make the
	maintenance easier.
This commit is contained in:
Akim Demaille
2009-06-10 20:14:52 +02:00
parent 95d176ffd9
commit 66ed97537a
2 changed files with 41 additions and 16 deletions

View File

@@ -680,24 +680,33 @@ AT_CLEANUP
AT_SETUP([Numbered tokens])
AT_DATA_GRAMMAR([input.y],
[[%token HEXADECIMAL_1 0xabcdef
DECIMAL_1 11259375
%token HEXADECIMAL_2 0XFEDCBA
DECIMAL_2 16702650
%%
start: HEXADECIMAL_1 HEXADECIMAL_2
AT_DATA_GRAMMAR([1.y],
[[%token DECIMAL 11259375
HEXADECIMAL 0xabcdef
%%
start: DECIMAL;
]])
AT_BISON_CHECK([input.y], [1], [],
[[input.y:10.12-20: user token number 11259375 redeclaration for DECIMAL_1
input.y:9.8-20: previous declaration for HEXADECIMAL_1
input.y:12.12-20: user token number 16702650 redeclaration for DECIMAL_2
input.y:11.8-20: previous declaration for HEXADECIMAL_2
AT_BISON_CHECK([1.y], [1], [],
[[1.y:10.10-20: user token number 11259375 redeclaration for HEXADECIMAL
1.y:9.8-14: previous declaration for DECIMAL
]])
AT_DATA_GRAMMAR([input.y],
AT_DATA_GRAMMAR([2.y],
[[%token HEXADECIMAL 0xabcdef
DECIMAL 11259375
%%
start: HEXADECIMAL;
]])
AT_BISON_CHECK([2.y], [1], [],
[[2.y:10.10-16: user token number 11259375 redeclaration for DECIMAL
2.y:9.8-18: previous declaration for HEXADECIMAL
]])
AT_DATA_GRAMMAR([3.y],
[[%token TOO_LARGE_DEC 999999999999999999999
TOO_LARGE_HEX 0xFFFFFFFFFFFFFFFFFFF
%%
@@ -705,9 +714,9 @@ start: TOO_LARGE_DEC TOO_LARGE_HEX
%%
]])
AT_BISON_CHECK([input.y], [1], [],
[[input.y:9.22-42: integer out of range: `999999999999999999999'
input.y:10.24-44: integer out of range: `0xFFFFFFFFFFFFFFFFFFF'
AT_BISON_CHECK([3.y], [1], [],
[[3.y:9.22-42: integer out of range: `999999999999999999999'
3.y:10.24-44: integer out of range: `0xFFFFFFFFFFFFFFFFFFF'
]])
AT_CLEANUP