- From: Bob Clary <bc@bclary.com>
- Date: Mon, 01 Mar 2004 16:32:17 -0500
- To: www-dom-ts@w3.org
- Message-ID: <4043ABE1.6060209@bclary.com>
Curt Arnold wrote: > > Sorry about the delay on responding. I'm unclear on the difference > between "Parser Configuration" and "Test Implementation Attributes". Is > the latter is a way of subselecting tests that, for example, require > namespace awareness? Could you explain the motivation for that, I don't > see it. > I separated the parser configuration and test selection implementation attributes for the following reasons: 1. The ECMAScript binding is fundamentally different from the Java binding. For the Java binding, the test framework must be customized for each implementation where the default values and potential for customization for the parser are well known. For the ECMAScript binding, any browser which supports the JsUnit test framework can potentially run the tests using the minimal IFRAME implementation however much less is known about the parser's default behavior and potential for customization. 2. Tests do not have a full set of implementation attributes included. When missing from a test, some implementation attributes would be expected to default to false while others would expect to be defaulted to true. Ideally, each test would include a full set of implementation features which it expects rather than rely on the interpretation of a missing value. 3. The previous method of using one set of implementation attributes to both configure the parser and to select tests caused problems in cases where the parser's value was assumed to be a specific value and unchangeable. For example, IFRAME implementation had "Namespace aware" false which was not modifiable. This made it impossible for Mozilla to run namespace aware tests. For these reasons, I separated the Parser Configuration from the Test Selection. This separation allows the user to select any combination of parameters without being limited in the choices possible. This puts the user in full control and makes it it explicitly clear what selection criteria are in use and the effects of the choices. The parser implementation attributes are used solely for configuring the parser if that is possible. I introduced a third value for the parser implementation attributes for the cases where the actual behavior used was the parser's default which was not known. The test implementation attributes are used solely for selecting tests which match the user's selection. I introduced a third value for the test implementation attribute which currently allows the user to ignore a particular implementation attribute when making test selections. > Could you also explain what you were trying to do with the test feature > and version combo? If I select "XML" and "Ignore", then 83 tests are > identified as compatible and 439 are identified as incompatible, however > all L1 Core tests are compatible with an implementation returning true > for hasFeature("XML", null). Maybe only 83 explicitly declare that they > require "XML". > The feature selection does in fact select only those tests which explicitly set hasFeature. It does not take into account the return value of DOMImplementation.hasFeature at all. I believe using the DOMImplementation.hasFeature to select tests is incorrect. If I understand the specification for hasFeature correctly, an implementation is required to return false unless it supports the full set of fundamental interfaces. Using the return value of hasFeature to automatically select tests would not allow an implementation to test a partial implementation which returned false for hasFeature. For the <hasFeature> element of the DOM TS Markup language to be fully useful it should be specified explicitly in each test. However, a user should be able to choose to run a test regardless of a particular implementation's return value for hasFeature or the <hasFeature> setting in a test. > There is a requirement to be able to tweak the parser configuration > (when possible). The list of compatible and incompatible tests was just > to provide some feedback since the JSUnit will report incompatible tests > as being successfully completed where they won't appear in a JUnit run. > If there is a need to be able to find, for example, all tests that > require feature "HTML" to be true, then that should probably be in the > test matrix since it would apply to all platform bindings. > This approach allows the fullest possible configuration of the parser for cases where it is known that the parser is configurable. For example, MSXML3 and MSXML4 are fully configurable. Ideally the new L3 interfaces could be used for conforming implementations to discover the default values and configurable parser features however I have not attempted that in this iteration. The invisible selection of tests based upon unmodifiable decisions made in a test removes choice from the user. Allowing an implementation to arbitrarily run a test is an important consideration for implementors. For example, I discovered a new Mozilla crash bug when Mozilla was allowed to run the full set of tests. Since Mozilla might well run into this type of code in the "wild" it was a good thing to identify the problem and fix it. > If we could add a "warning" result to JSUnit, then we could skip the > listing of compatible and incompatible tests in the test configuration. > The incompatible tests could just note that they were effectively > skipped during test evaluation. > I do think that using JsUnit's trace facility would be very useful and have considered possibilities for it's use however I do not think that it is reasonable for a test to reject being run. That choice should remain with the user. /bc
Received on Monday, 1 March 2004 16:32:32 UTC