Browse Source

Export test added.

avkonst 12 years ago
parent
commit
26b4c41036

+ 43 - 36
mainline/export.py

@@ -32,7 +32,6 @@ import core.export.convert
 
 def main():
     
-    exit_code = 0
     log_plugin = core.log.Plugin()
     db_plugin = core.db.post.Plugin()
 
@@ -67,12 +66,19 @@ def main():
     else:
         paths = args
         
+    (result, exit_code) = export_to_str(out_format, paths, loader, loader_prev, namespaces)
+    print result
+    return exit_code
+
+def export_to_str(out_format, paths, loader, loader_prev, namespaces):
+    exit_code = 0
+    result = ""
     if out_format == 'txt':
-        print "=" * 80 + "\n" + "Export" + "\n" + "_" * 80 + "\n"
+        result += "=" * 80 + "\n" + "Export" + "\n" + "_" * 80 + "\n\n"
     elif out_format == 'xml':
-        print "<export>"
+        result += "<export>\n"
     elif out_format == 'python':
-        print "{'export': ["
+        result += "{'export': ["
 
     for (ind, path) in enumerate(paths):
         logging.info("Processing: " + re.sub(r'''[\\]''', "/", path))
@@ -98,29 +104,7 @@ def main():
         if file_data != None:
             file_data_tree = file_data.get_data_tree(namespaces=namespaces) 
             file_data_prev = loader_prev.load_file_data(path)
-            regions_matcher = None
-            if file_data_prev != None:
-                file_data_tree = append_diff(file_data_tree,
-                                             file_data_prev.get_data_tree(namespaces=namespaces))
-                regions_matcher = core.db.utils.FileRegionsMatcher(file_data, file_data_prev)
-            
-            regions = []
-            for each in file_data.iterate_regions():
-                region_data_tree = each.get_data_tree(namespaces=namespaces)
-                if regions_matcher != None and regions_matcher.is_matched(each.get_id()):
-                    region_data_prev = file_data_prev.get_region(regions_matcher.get_prev_id(each.get_id()))
-                    region_data_tree = append_diff(region_data_tree,
-                                                   region_data_prev.get_data_tree(namespaces=namespaces))
-                regions.append({"info": {"name" : each.name,
-                                         'type' : file_data.get_region_types()().to_str(each.get_type()),
-                                         "cursor" : each.cursor,
-                                         'line_begin': each.line_begin,
-                                         'line_end': each.line_end,
-                                         'offset_begin': each.begin,
-                                         'offset_end': each.end},
-                                "data": region_data_tree})
-                
-            file_data_tree['regions'] = regions
+            append_regions(file_data_tree, file_data, file_data_prev, namespaces)
         
         data = {"info": {"path": path, "id": ind + 1},
                 "aggregated-data": aggregated_data_tree,
@@ -129,24 +113,47 @@ def main():
                 "subfiles": subfiles}
 
         if out_format == 'txt':
-            print core.export.convert.to_txt(data, root_name = "data")
+            result += core.export.convert.to_txt(data, root_name = "data") + "\n"
         elif out_format == 'xml':
-            print core.export.convert.to_xml(data, root_name = "data")
+            result += core.export.convert.to_xml(data, root_name = "data") + "\n"
         elif out_format == 'python':
             postfix = ""
             if ind < len(paths) - 1:
                 postfix = ", "
-            print core.export.convert.to_python(data, root_name = "data") + postfix
+            result += core.export.convert.to_python(data, root_name = "data") + postfix
 
     if out_format == 'txt':
-        print "\n"
+        result += "\n"
     elif out_format == 'xml':
-        print "</export>"
+        result += "</export>"
     elif out_format == 'python':
-        print "]}"
-
-
-    return exit_code
+        result += "]}"
+        
+    return (result, exit_code)
+
+def append_regions(file_data_tree, file_data, file_data_prev, namespaces):
+    regions_matcher = None
+    if file_data_prev != None:
+        file_data_tree = append_diff(file_data_tree,
+                                     file_data_prev.get_data_tree(namespaces=namespaces))
+        regions_matcher = core.db.utils.FileRegionsMatcher(file_data, file_data_prev)
+    regions = []
+    for each in file_data.iterate_regions():
+        region_data_tree = each.get_data_tree(namespaces=namespaces)
+        if regions_matcher != None and regions_matcher.is_matched(each.get_id()):
+            region_data_prev = file_data_prev.get_region(regions_matcher.get_prev_id(each.get_id()))
+            region_data_tree = append_diff(region_data_tree,
+                                           region_data_prev.get_data_tree(namespaces=namespaces))
+        regions.append({"info": {"name" : each.name,
+                                 'type' : file_data.get_region_types()().to_str(each.get_type()),
+                                 "cursor" : each.cursor,
+                                 'line_begin': each.line_begin,
+                                 'line_end': each.line_end,
+                                 'offset_begin': each.begin,
+                                 'offset_end': each.end},
+                        "data": region_data_tree})
+        
+    file_data_tree['regions'] = regions
 
 def append_diff(main_tree, prev_tree):
     assert(main_tree != None)

+ 17 - 2
mainline/tests/general/test_basic.py

@@ -22,7 +22,7 @@ import unittest
 
 import tests.common
 
-class TestBasic(tests.common.TestCase):
+class Test(tests.common.TestCase):
 
     def test_workflow(self):
         
@@ -146,7 +146,22 @@ class TestBasic(tests.common.TestCase):
 
         runner = tests.common.ToolRunner('info', ['--help'])
         self.assertExec(runner.run())
-		
+
+    def test_export_format(self):
+
+        runner = tests.common.ToolRunner('collect', ['--std.code.complexity.on'])
+        self.assertExec(runner.run())
+
+        runner = tests.common.ToolRunner('export', ['--general.format=txt'], prefix='txt')
+        self.assertExec(runner.run())
+
+        runner = tests.common.ToolRunner('export', ['--general.format=python'], prefix='python')
+        self.assertExec(runner.run())
+
+        runner = tests.common.ToolRunner('export', ['--general.format=xml'], prefix='xml')
+        self.assertExec(runner.run())
+        
+        
 
 if __name__ == '__main__':
     unittest.main()

+ 0 - 0
mainline/tests/general/test_basic/test_export_format_collect_default_stdout.gold.txt


+ 1 - 0
mainline/tests/general/test_basic/test_export_format_export_python_stdout.gold.txt

@@ -0,0 +1 @@
+{'export': [{'data: {'info': {'path': '', 'id': 1}, 'file-data': {}, 'subfiles': [], 'subdirs': [u'.'], 'aggregated-data': {'std.code.complexity': {'cyclomatic': {'total': 6.0, 'max': 3, 'avg': 1.5, 'min': 1}}, 'std.code.cpp': {'mismatched_brackets': {'total': 0.0, 'max': None, 'avg': None, 'min': None}}}}}]}

+ 29 - 0
mainline/tests/general/test_basic/test_export_format_export_txt_stdout.gold.txt

@@ -0,0 +1,29 @@
+================================================================================
+Export
+________________________________________________________________________________
+
+--------------------------------------------------------------------------------
+data:  
+.   info: 
+.   .   path=""
+.   .   id="1"
+.   file-data: 
+.   subfiles:
+.   subdirs:
+.   .   .
+.   aggregated-data:  
+.   .   std.code.complexity:  
+.   .   .   cyclomatic: 
+.   .   .   .   max="3"
+.   .   .   .   total="6.0"
+.   .   .   .   avg="1.5"
+.   .   .   .   min="1"
+.   .   std.code.cpp:  
+.   .   .   mismatched_brackets: 
+.   .   .   .   max="None"
+.   .   .   .   total="0.0"
+.   .   .   .   avg="None"
+.   .   .   .   min="None"
+================================================================================
+
+

+ 20 - 0
mainline/tests/general/test_basic/test_export_format_export_xml_stdout.gold.txt

@@ -0,0 +1,20 @@
+<export>
+
+    <data>
+        <info path="" id="1" />
+        <file-data />
+        <subfiles>
+        </subfiles>
+        <subdirs>
+            <subdir>.</subdir>
+        </subdirs>
+        <aggregated-data>
+            <std.code.complexity>
+                <cyclomatic max="3" total="6.0" avg="1.5" min="1" />
+            </std.code.complexity>
+            <std.code.cpp>
+                <mismatched_brackets max="None" total="0.0" avg="None" min="None" />
+            </std.code.cpp>
+        </aggregated-data>
+    </data>
+</export>

+ 1 - 1
mainline/tests/general/test_basic/test_workflow_collect_default_stderr.gold.txt

@@ -2,4 +2,4 @@
 [LOG]: INFO:	Excluding: ./.unused.cpp
 [LOG]: INFO:	Skipping: ./dummy.txt
 [LOG]: INFO:	Processing: ./simple.cpp
-[LOG]: WARNING:	Exit code: 0. Time spent: 0.11 seconds. Done
+[LOG]: WARNING:	Exit code: 0. Time spent: 0.12 seconds. Done

+ 1 - 1
mainline/tests/general/test_basic/test_workflow_collect_second_stderr.gold.txt

@@ -2,4 +2,4 @@
 [LOG]: INFO:	Excluding: ./.unused.cpp
 [LOG]: INFO:	Processing: ./simple.cpp
 [LOG]: INFO:	Processing: ./simple2.cpp
-[LOG]: WARNING:	Exit code: 0. Time spent: 0.05 seconds. Done
+[LOG]: WARNING:	Exit code: 0. Time spent: 0.04 seconds. Done

+ 1 - 1
mainline/tests/general/test_basic/test_workflow_export_default_stderr.gold.txt

@@ -1,3 +1,3 @@
 [LOG]: WARNING:	Logging enabled with INFO level
 [LOG]: INFO:	Processing: 
-[LOG]: WARNING:	Exit code: 0. Time spent: 0.0 seconds. Done
+[LOG]: WARNING:	Exit code: 0. Time spent: 0.01 seconds. Done

+ 1 - 1
mainline/tests/general/test_basic/test_workflow_export_second_stderr.gold.txt

@@ -1,3 +1,3 @@
 [LOG]: WARNING:	Logging enabled with INFO level
 [LOG]: INFO:	Processing: 
-[LOG]: WARNING:	Exit code: 0. Time spent: 0.02 seconds. Done
+[LOG]: WARNING:	Exit code: 0. Time spent: 0.01 seconds. Done

+ 1 - 2
mainline/tests/general/test_std_code_cpp.py

@@ -23,7 +23,7 @@ import os
 
 import tests.common
 
-class TestBasic(tests.common.TestCase):
+class Test(tests.common.TestCase):
 
     def test_parser(self):
         
@@ -34,7 +34,6 @@ class TestBasic(tests.common.TestCase):
         self.assertExec(runner.run())
         
         dirs_list = [os.path.join('.', each) for each in os.listdir(self.get_content_paths().cwd)]
-        print dirs_list
         runner = tests.common.ToolRunner('export', opts_list=['--general.format=txt'], dirs_list=dirs_list, prefix='files')
         self.assertExec(runner.run())