Release of PowerTools Core 2.7.01
This is a minor release – fixes some issues with rendering of list items, and some issues with horizontal formatting – left indent, hanging indents, and first line indents.
For download and installation instructions, see the Open Xml Installation Center
I thought it worthwhile to write something about my release procedure, and the quality that I want for PowerTools for Open XML.
For modules such as HtmlConverter.cs, FormattingAssembler.cs, DocumentBuilder.cs, and the like, I have the following quality bars:
- First, and foremost, these modules should not throw unexpected exceptions, regardless of the type of document that you give to them, even if the document is invalid. We use these modules in server applications, and it is super important that servers don’t have unexpected exceptions thrown.
- Second, and just as important as the first, the code should not produce invalid output. The documents produced by FormattingAssembler.cs and by DocumentBuilder.cs should be valid Open XML documents. Since HtmlConverter.cs is a work-in-progress, I’m a bit more relaxed about this – my bar is that the three major browsers (IE, Chrome, and Firefox) should be able to render the produced HTML.
- Third, the module should produce the correct output. However, this is definitely below the first two bars. The first two bars are ship-stoppers. This bar is not – I know there are cases where HtmlConverter.cs does not produce the correct HTML, for instance for embedded text boxes, or for numbered lists that use languages that are not yet supported. If I were to wait until HtmlConverter.cs produces the correct output for all cases, I would never ship! And in its current form, it is very usable for many developers in many scenarios.
I have an automated process whereby I can test these modules on sample documents before creating a release. Over the last three years, I have assembled over 120,000 test documents. I use a network of six quad-core computers on a gigabit network, each computer processing multiple documents simultaneously, to “stress test” these modules. Many of my sample documents are invalid – some intentionally, and others not. I have built a cute little test harness that enables me to use the network of computers to test about 2000 documents per minute. I can be certain that HtmlConverter.cs will not throw an exception on these 120,000 documents in about one hour.
Further, I have extended my test harness to do additional tests for specific modules. For example, I have a test module that will verify that ListItemRetriever.cs returns the correct values for all list items in a document.
Key point is that I take quality seriously, and do extensive tests before I upload to https://github.com/OfficeDev/Open-Xml-PowerTools.
-Eric