-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestdiff.rb
More file actions
54 lines (37 loc) · 1.34 KB
/
testdiff.rb
File metadata and controls
54 lines (37 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
require 'rexml/document'
require 'logger'
include REXML
def parseXML(folder)
testcases = Array.new
@log.info(" --- Processing #{folder}")
Dir.glob(File.join(folder,'*.xml')) do |filename|
origcount = testcases.length
@log.debug("Parsing: #{filename}")
xmldoc = Document.new(File.new(filename))
XPath.each(xmldoc, "//testcase") { |e| testcases << e.attributes["classname"]+"."+e.attributes["name"] }
@log.debug("Found #{testcases.length - origcount} testcases")
end
return testcases
end
def logDifferences(minuend, subtrahend)
difference = minuend - subtrahend
@log.info("Difference: #{difference.length}")
@log.info("--- Testcase list begins ---")
difference.each {|e| @log.info(e)}
@log.info("--- Testcase list ends ---")
end
@log = Logger.new(STDOUT)
@log.formatter = proc { |severity, datetime, progname, msg| "#{severity} - #{datetime}: #{msg}\n" }
@log.level = Logger::INFO
folderA = "data/continuous"
folderB = "data/nightly"
testCasesA = parseXML(folderA)
testCasesB = parseXML(folderB)
@log.info(" --- Processing finished ---")
@log.info("#{folderA}: #{testCasesA.length}")
@log.info("#{folderB}: #{testCasesB.length}")
@log.info("--- Present only in #{folderA} ---")
logDifferences(testCasesA, testCasesB)
@log.info("--- Present only in #{folderB} ---")
logDifferences(testCasesB, testCasesA)
@log.close