Title | Test suite fails with Bugzilla versions 2.16.1 to 2.16.3 |
Status | closed |
Priority | essential |
Assigned user | David Jones |
Organization | Ravenbrook |
Description | Some tests fail with after emitting the error 'Too late for "-T" option'. Here's an example: $ python2 test_p4dti.py bugzilla_params.runTest P4DTI test suite, logging to /home/drj/info.ravenbrook.com/project/p4dti/master/test/p4dti.log.20030822T123545. Too late for "-T" option at doeditparams.cgi line 1. E ====================================================================== ERROR: Bugzilla parameters (test_p4dti.bugzilla_params) ---------------------------------------------------------------------- Traceback (most recent call last): File "test_p4dti.py", line 2400, in runTest self.dti.edit_parameters({ File "test_p4dti.py", line 647, in edit_parameters self.run_script('doeditparams.cgi', params) File "test_p4dti.py", line 563, in run_script child_in.close() IOError: [Errno 32] Broken pipe ---------------------------------------------------------------------- Ran 1 tests in 5.396s |
Analysis | drj: This is because Bugzilla 2.16.1 introduced the convention of specifying the -wT options on the #! line. The test suite is failing because it attempts to emulate a web server invoking the cgi script; this emulation is faulty. Emulation currently works by invoking "perl" on the file; this is presumably to get round the fact that the interpreter specified by Bugzilla, /usr/bonsaitools/bin/perl, does not usually exist on a test machine. The invoked perl (invoked without options) is spotting that options have been specified on the #! line and emits a warning and exits. Note that the test (suite) is at fault, it is not necessarily a fault with the p4dti product. Possible solutions are: 1. require /usr/bonsaitools/bin/perl to exist on test machines and invoke cgi scripts directly. 2. parse #! line of cgi scripts to determine both that perl is the interpreter and what options to specify to the perl interpreter. 3. (possibly) invoke perl with -wT and hope that this works for historical version of Bugzilla too. 4. (possibly) invoke perl with options that suppress the errors about spotting options on the #! line. p4dti 1.5.0 is the first release to support Bugzilla 2.16.x NB 2004-07-16: Fixed with a combination of solutions 2 and 3: Firstly replace /usr/bonsaitools/bin/perl with the result of `which perl`, after making the copy of Bugzilla used by the source sources. The Bugzilla Guide has a tip on how to do this (using Perl, naturally): perl -pi -e 's@#!/usr/bonsaitools/bin/perl@#!/real/path/to/perl@' * 2>/dev/null Also check the Bugzilla version, and on versions since 2.16, invoke perl with -T. |
How found | automated_test |
Observed in | 2.0.0 |
Introduced in | 1.5.0 |
Test procedure | An example test that fails is test_p4dti.bugzilla_params: $ python2 test_p4dti.py bugzilla_params.runTest |
Created by | David Jones |
Created on | 2003-08-22 14:05:39 |
Last modified by | Gareth Rees |
Last modified on | 2010-10-07 12:05:01 |
History | 2003-08-22 DRJ Created |
Change | Effect | Date | User | Description |
---|---|---|---|---|
103412 | closed | 2004-06-30 09:49:42 | Nick Barnes | Fix /usr/bonsaitools shebang lines so test suite works on machines without /usr/bonsaitools. Also turn off taint mode for old versions of Bugzilla. |