From 23297fa3b1f66d74325c8352cb8f5aae599a3090 Mon Sep 17 00:00:00 2001 From: antelder Date: Mon, 11 Aug 2008 07:29:53 +0000 Subject: Start branch for 1.3.1, the only changes in this commit are for the version git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@684661 13f79535-47bb-0310-9956-ffa450edef68 --- branches/sca-java-1.3.1/vtest/processcomments.rb | 198 +++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 branches/sca-java-1.3.1/vtest/processcomments.rb (limited to 'branches/sca-java-1.3.1/vtest/processcomments.rb') diff --git a/branches/sca-java-1.3.1/vtest/processcomments.rb b/branches/sca-java-1.3.1/vtest/processcomments.rb new file mode 100644 index 0000000000..b7a7fc1cc3 --- /dev/null +++ b/branches/sca-java-1.3.1/vtest/processcomments.rb @@ -0,0 +1,198 @@ +=begin + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +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<