Description:
If the tests are run on a case-insignificant file system, chances are that the directory name is reported by the system in a case which differs from some variable settings used.
As a result, replacement of path names in error logs fails, and (semanticvally) identical test results show differences.
Consider this:
mysqldev@xserve:~> ls -dl xserve
lrwxr-xr-x 1 mysqldev mysqldev 33 May 31 09:23 xserve -> /Volumes/StripedRAID/Build/xserve
mysqldev@xserve:~> cd /Volumes/StripedRAID/Build/xserve
mysqldev@xserve:/Volumes/StripedRAID/Build/xserve> pwd
/Volumes/StripedRAID/Build/xserve
(all in mixed case on shell level)
and compare it with this message:
ERROR HY000: Can't create table '/volumes/stripedraid/build/xserve/test/mysql-standard-4.1.15-apple-darwin8.2.0-powerpc/mysql-test/test/t2.frm' (errno: 150)
(lower case)
It seems that the variable MYSQL_TEST_DIR contains the mixed spelling when it is used in test case "innodb.test":
1099 # Test error handling
1100 --replace_result \\ / $MYSQL_TEST_DIR . /var/master-data/ /
1101 --error 1005
1102 create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 ( id)) engine = innodb;
However, in the error message generated, small letters are used, and as a result we get this diff:
-------------------------------------------------------
*** r/innodb.result
--- r/innodb.reject
***************
*** 1570,1576
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
! ERROR HY000: Can't create table './test/t2.frm' (errno: 150)
create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
show create table t2;
Table Create Table
--- 1570,1576
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
! ERROR HY000: Can't create table '/volumes/stripedraid/build/xserve/test/mysql-standard-4.1.15-apple-darwin8.2.0-powerpc/mysql-test/test/t2.frm' (errno: 150)
create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
show create table t2;
Table Create Table
-------------------------------------------------------
How to repeat:
Test suite failure.
Suggested fix:
a) Change the config and the variables to use exactly the same spelling as will be contained in error messages
OR
b) Change the replacement function to work case-insignificant (seems risky to me).