From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29844 invoked by alias); 6 Mar 2006 17:05:19 -0000 Received: (qmail 29823 invoked by uid 22791); 6 Mar 2006 17:05:16 -0000 X-Spam-Check-By: sourceware.org Received: from outmail128169.authsmtp.net (HELO outmail128169.authsmtp.net) (62.13.128.169) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 06 Mar 2006 17:05:12 +0000 Received: from [192.168.1.37] (host217-37-65-246.in-addr.btopenworld.com [217.37.65.246]) (authenticated bits=0) by squirrel.dmpriest.net.uk (8.13.3/8.13.3/Kp) with ESMTP id k26H55UZ027024; Mon, 6 Mar 2006 17:05:05 GMT (envelope-from david.gilbert@object-refinery.com) Message-ID: <440C6BB8.90002@object-refinery.com> Date: Mon, 06 Mar 2006 17:05:00 -0000 From: David Gilbert User-Agent: Mozilla Thunderbird 1.0.7 (X11/20051013) MIME-Version: 1.0 To: mauve-patches CC: Mauve News Group Subject: Running Mauve tests with JUnit Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Server-Quench: 5c50a538-ad33-11da-84c5-001185d377ca X-Authentic-SMTP: 61633132333134.squirrel.dmpriest.net.uk:1.47/Kp X-Powered-By: AuthSMTP - http://www.authsmtp.com - Authenticated SMTP Mail Relay X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-IsSubscribed: yes Mailing-List: contact mauve-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: mauve-discuss-owner@sourceware.org X-SW-Source: 2006-q1/txt/msg00050.txt.bz2 Hi All, A while back there was some discussion about converting Mauve tests to run under JUnit. I did some experimentation and have put together the following patch that shows one approach to making this work. I created a new JUnitRunnable class which makes it possible to run a Mauve testlet under JUnit (as well as continuing to support the standard Mauve runners). It requires that the existing testlets be modified to 'extend JUnitRunnable' (or, where this isn't possible, an alternative JUnitWrapper class can be used, see AttributeSetTests.java for an example). The patch includes conversion of the tests in the javax.swing.text.* package so you can at least try it out - if this patch is approved, I also have done the conversion of all the Swing tests (roughly 25% of Mauve I think). Here is a link to the patch, it's probably over the size limit for the mailing list (the ChangeLog entry is at the end of this e-mail): http://www.object-refinery.com/classpath/diff.txt I'm actually indifferent about whether or not this patch is accepted, I find Mauve slightly easier to work with relative to JUnit for the type of tests we write for GNU Classpath and plan to continue writing tests in the Mauve format. Anyway, here's the pros and cons that I can think of, please feel free to add to the list: Pros: - JUnit is integrated with Eclipse, so it can be used to run Mauve tests easily for developers that work in Eclipse; - most Java developers are familiar with JUnit, so Mauve may reach a wider audience; - other tools can work with JUnit (although I haven't used any of them - does anyone know of a JUnit runner that can produce comparisons of two runs? I'm interested in (a) regression reports (e.g. CVS vs last release) and (b) comparison reports (GNU Classpath vs Sun JDK1.5)); Cons: - a lot of work to modify the remaining tests in Mauve; - one extra step to make Mauve tests that run with both JUnit and Mauve test runners - it's pretty easy, but still a mental step that new contributors to Mauve will have to learn; - there is a possibility that some developers will write new tests against JUnit only, so we'll lose the ability to run all tests with the Mauve runners (which I think provide better detail on failures); Oh, and someone mentioned that the JUnit licence is not GPL compatible, so I compiled the tests against the GPLed code here: http://cvs.sourceforge.net/viewcvs.py/freenet/Contrib/junit/ I had to add a no-arg constructor for the TestCase class, then the tests compiled OK. And I can use the SimpleTestRunner to run a single test (this could do with some more work though). Please comment! Regards, Dave P.S. Here is the ChangeLog entry: 2006-03-06 David Gilbert * gnu/testlet/JUnitRunnable.java: New file, * gnu/testlet/JUnitTestHarness.java: Likewise, * gnu/testlet/JUnitTestWrapper.java: Likewise, * gnu/testlet/JUnitWrapper.java: Likewise, * gnu/testlet/javax/swing/text/PackageTestSuite.java: Likewise, * gnu/testlet/javax/swing/text/AbstractDocument/AbstractDocumentTest.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/AbstractDocument/AbstractDocumentTests.java: New file, * gnu/testlet/javax/swing/text/AbstractDocument/ElementChange.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/AbstractDocument/ElementChange2.java: Likewise, * gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/BranchElementTest.java: Updated header, * gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/BranchElementTests.java: New file, * gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndexNullPointer.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/AttributeSet/AttributeSetTests.java: New file, * gnu/testlet/javax/swing/text/BoxView/BoxViewTests.java: Likewise, * gnu/testlet/javax/swing/text/BoxView/spans.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/DefaultEditorKit/DefaultEditorKitTests.java: New file, * gnu/testlet/javax/swing/text/DefaultEditorKit/getActions.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/DefaultFormatter/DefaultFormatterTests.java: New file, * gnu/testlet/javax/swing/text/DefaultFormatter/getValueClass.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/DefaultStyledDocument/DefaultStyledDocumentTests.java: New file, * gnu/testlet/javax/swing/text/DefaultStyledDocument/insertString.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementBufferTests.java: New file, * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/ElementIterator/ElementIteratorTest.java: Likewise, * gnu/testlet/javax/swing/text/ElementIterator/ElementIteratorTests.java: New file, * gnu/testlet/javax/swing/text/FlowView/FlowViewTests.java: New file, * gnu/testlet/javax/swing/text/FlowView/getFlowAxis.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/GapContent/GapContentTest.java: Likewise, * gnu/testlet/javax/swing/text/GapContent/GapContentTests.java: New file, * gnu/testlet/javax/swing/text/GapContent/PositionTest.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/GapContent/constructors.java: Likewise, * gnu/testlet/javax/swing/text/GapContent/createPosition.java: Likewise, * gnu/testlet/javax/swing/text/GapContent/getChars.java: Likewise, * gnu/testlet/javax/swing/text/GapContent/getString.java: Likewise, * gnu/testlet/javax/swing/text/GapContent/insertString.java: Likewise, * gnu/testlet/javax/swing/text/GapContent/length.java: Likewise, * gnu/testlet/javax/swing/text/GapContent/remove.java: Likewise, * gnu/testlet/javax/swing/text/InternationalFormatter/InternationalFormatterTest.java: Likewise, * gnu/testlet/javax/swing/text/InternationalFormatter/InternationalFormatterTests.java: New file, * gnu/testlet/javax/swing/text/MaskFormatter/MaskFormatterTest.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/MaskFormatter/MaskFormatterTests.java: New file, * gnu/testlet/javax/swing/text/PlainDocument/PlainDocumentTest.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/PlainDocument/PlainDocumentTests.java: New file, * gnu/testlet/javax/swing/text/PlainDocument/createPosition.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/PlainDocument/getLength.java: Likewise, * gnu/testlet/javax/swing/text/PlainDocument/getRootElements.java: Likewise, * gnu/testlet/javax/swing/text/PlainDocument/getText.java: Likewise, * gnu/testlet/javax/swing/text/PlainDocument/insertString.java: Likewise, * gnu/testlet/javax/swing/text/PlainDocument/multipleLeafs.java: Likewise, * gnu/testlet/javax/swing/text/PlainDocument/remove.java: Likewise, * gnu/testlet/javax/swing/text/PlainDocument/removeJoinesLines.java: Likewise, * gnu/testlet/javax/swing/text/Segment/SegmentTests.java: New file, * gnu/testlet/javax/swing/text/Segment/clone.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/Segment/constructors.java: Likewise, * gnu/testlet/javax/swing/text/Segment/first.java: Likewise, * gnu/testlet/javax/swing/text/Segment/getBeginIndex.java: Likewise, * gnu/testlet/javax/swing/text/Segment/getEndIndex.java: Likewise, * gnu/testlet/javax/swing/text/Segment/getIndex.java: Likewise, * gnu/testlet/javax/swing/text/Segment/isPartialReturn.java: Likewise, * gnu/testlet/javax/swing/text/Segment/last.java: Likewise, * gnu/testlet/javax/swing/text/Segment/next.java: Likewise, * gnu/testlet/javax/swing/text/Segment/previous.java: Likewise, * gnu/testlet/javax/swing/text/Segment/setIndex.java: Likewise, * gnu/testlet/javax/swing/text/Segment/setPartialReturn.java: Likewise, * gnu/testlet/javax/swing/text/Segment/toString(), Likewise, * gnu/testlet/javax/swing/text/SimpleAttributeSet/SimpleAttributeSetTests.java: New file, * gnu/testlet/javax/swing/text/StringContent/BadLocationExceptionTest.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/StringContent/StringContentTest.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/StringContentTests.java: New file, * gnu/testlet/javax/swing/text/StringContent/constructors.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/StringContent/createPosition.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/getChars.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/getString.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/insertString.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/insertUndo.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/length.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/remove.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/removeUndo.java: Likewise, * gnu/testlet/javax/swing/text/StringContent/stickyPosition.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/StyleConstantsTests.java: New file, * gnu/testlet/javax/swing/text/StyleConstants/constants.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/StyleConstants/getAlignment.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getBackground.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getBidiLevel.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getComponent.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getFirstLineIndent.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getFontFamily.java: Liekwise, * gnu/testlet/javax/swing/text/StyleConstants/getFontSize.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getForeground.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getIcon.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getLeftIndent.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getLineSpacing.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getRightIndent.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getSpaceAbove.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getSpaceBelow.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/getTabSet.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/isBold.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/isItalic.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/isStrikeThrough.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/isSubscript.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/isSuperscript.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/isUnderline.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setAlignment.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setBackground.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setBidiLevel.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setBold.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setComponent.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setFirstLineIndent.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setFontFamily.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setFontSize.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setForeground.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setIcon.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setItalic.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setLeftIndent.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setLineSpacing.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setRightIndent.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setSpaceAbove.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setSpaceBelow.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setStrikeThrough.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setSubscript.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setSuperscript.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setTabSet.java: Likewise, * gnu/testlet/javax/swing/text/StyleConstants/setUnderline.java: Likewise, * gnu/testlet/javax/swing/text/StyleContext/NamedStyleInit.java: Likewise, * gnu/testlet/javax/swing/text/StyleContext/NamedStyleSetResolveParent.java: Likewise, * gnu/testlet/javax/swing/text/StyleContext/StyleContextTests.java: New file, * gnu/testlet/javax/swing/text/StyleContext/addAttribute.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/StyleContext/addStyle.java: Likewise, * gnu/testlet/javax/swing/text/StyledEditorKit/StyledEditorKitTests.java: New file, * gnu/testlet/javax/swing/text/StyledEditorKit/createInputAttributesTest.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/TextAction/TextActionTests.java: New file, * gnu/testlet/javax/swing/text/TextAction/augmentList.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/View/ViewTests.java: New file, * gnu/testlet/javax/swing/text/View/getAlignment.java: Now extends JUnitRunnable, * gnu/testlet/javax/swing/text/View/getMaximumSpan.java: Likewise, * gnu/testlet/javax/swing/text/View/getMinimumSpan.java: Likewise, * gnu/testlet/javax/swing/text/View/getResizeWeight.java: Likewise.