=begin Scans java test source files, recursively from the current directory, and produces a list of test metods sorted by specification line number. The implementation makes heavy use of my scant knowledge of regex. I'll comeback and clean this up as time allows. Assumes a test comment convention like this: /** * Lines 410,411,412,413: *

* A method of a conversational interface may be marked with an * "@EndsConversation" annotation. Once a method marked with * "@EndsConversation" has been called, the conversation between client and * service provider is at an end, which implies no further methods may be * called on that service within the *same* conversation. */ @Test public void atEndsConversation1() throws Exception { Example command line usage >ruby processcomments.rb > comment_scan.txt Current output is formatted for a cwiki page and can be directly pasted to a blank page Some TODO's: Add logic to process number ranges such as "Lines 523-556" or "Lines 523 to 556" =end class TestMethod attr_accessor :lines_tested, :first_line_tested def initialize(text, parent) @text = text @parent = parent @lines_tested = init_lines_tested @first_line_tested = @lines_tested.first end #Define sort criteria def <=>(test_method) @first_line_tested.<=>(test_method.first_line_tested) end def name regex = /void\s*\S*\(\) / str = @text[regex] str.sub(/void\s*/, '') end def init_lines_tested lines_regex = /Line.*?$/ lines_array = @text.scan(lines_regex) nums_regex = /\d{1,4}/ line_numbers = Array.new lines_array.each do |line_text| number_strings =line_text.scan(nums_regex) number_strings.each {|num_string| line_numbers<