def test_xugrep(self): file_paths = [ self.tei_data_path1, self.tei_data_path2 ] element_equality_fields = [ CorpusElement.LABEL_PATH,\ CorpusElement.LANGUAGE_NAME_PATH,\ CorpusElement.TEXT ] xugrep = XUGrep.create(self.tei_xupath1, file_paths, element_equality_fields) self.assertEqual( len( xugrep.corpus ), 4 ) xugrep = XUGrep.create(self.tei_xupath2, file_paths, element_equality_fields) self.assertEqual( len( xugrep.corpus ), 2 ) attribute_names = [ CorpusElement.LABEL_PATH,\ CorpusElement.LANGUAGE_NAME_PATH,\ CorpusElement.TEXT ] results = xugrep.corpus.output( attribute_names, tabulate=True ) print "\n" print "\n".join(results)
License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. XUTools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ """ from xutools.tools import XUGrep import optparse import sys p = optparse.OptionParser() p.add_option("-o", "--R2", dest="r2") (options, args) = p.parse_args() if (len(args) < 2): print "Usage xugrep [--r2=LE] <xupath> <files>+" sys.exit(-1) xpath = args[0] file_paths = args[1:] reports = XUGrep.xugrep_main(xpath, file_paths) XUGrep.output_reports(reports, options.r2)
def test_xugrep(self): # a result_forest is a list of text pieces report = {} report['result_forest'] = [ self.tei_data1 ] report['tree_ids'] = ["AIST"] report['tree_types'] = [ "file" ] report['re_matches'] = [] xugrep = XUGrep() report = xugrep.xugrep( self.tei_xupath1, report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "AIST.1" ) self.assertEqual( report['tree_ids'][1], "AIST.9" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "tei:section" ) self.assertEqual( len( report['tree_types'] ), 2 ) report = {} report['result_forest'] = [ self.tei_data2 ] report['tree_ids'] = [ "AIST" ] report['tree_types'] = [ "file" ] report = xugrep.xugrep( self.tei_xupath2, report ) self.assertEqual( len( report['result_forest'] ), 1 ) self.assertEqual( report['tree_ids'][0], "AIST.1.1.1" ) self.assertEqual( len( report['tree_ids'] ), 1 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "tei:section") self.assertEqual( report['tree_types'][2], "tei:subsection") self.assertEqual( report['tree_types'][3], "tei:subsubsection") self.assertEqual( len( report['tree_types'] ), 4 ) self.assertEqual( len(report['re_matches'][0]), 1 ) self.assertEqual( len(report['re_matches']), 1 ) ## NVD report = {} report['result_forest'] = [ self.nvd_data1 ] report['tree_ids'] = [ "CVE2012" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.nvd_xupath1, report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "CVE2012.CVE-2012-0001" ) self.assertEqual( report['tree_ids'][1], "CVE2012.CVE-2012-0002" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "nvd:entry" ) self.assertEqual( len( report['tree_types'] ), 2 ) self.assertEqual( len( report['re_matches'][0] ), 1 ) self.assertEqual( len( report['re_matches'][1] ), 1 ) self.assertEqual( len( report['re_matches'] ), 2 ) report = {} report['result_forest'] = [ self.nvd_data1 ] report['tree_ids'] = [ "CVE2012" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.nvd_xupath2, report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "CVE2012.CVE-2012-0001.1" ) self.assertEqual( report['tree_ids'][1], "CVE2012.CVE-2012-0002.1" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "nvd:entry" ) self.assertEqual( report['tree_types'][2], "nvd:score" ) self.assertEqual( len( report['tree_types'] ), 3 ) # undefined: self.assertEqual( len( report['re_matches'] ), ## Cisco IOS report = {} report['result_forest'] = [ self.ios_data1 ] report['tree_ids'] = [ "Router" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.ios_xupath1, report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "Router.Loopback0" ) self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "ios:interface" ) self.assertEqual( len( report['tree_types'] ), 2 ) self.assertEqual( len( report['re_matches'] ), 0 ) report = {} report['result_forest'] = [ self.ios_data1 ] report['tree_ids'] = [ "Router" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.ios_xupath2, report ) self.assertEqual( len( report['result_forest'] ), 1 ) self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2" ) self.assertEqual( len( report['tree_ids'] ), 1 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "ios:interface" ) self.assertEqual( len( report['tree_types'] ), 2 ) self.assertEqual( len(report['re_matches'][0]), 2 ) self.assertEqual( len(report['re_matches']), 1 ) report = {} report['result_forest'] = [ self.ios_data1 ] report['tree_ids'] = [ "Router" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.ios_xupath3, report ) self.assertEqual( len( report['result_forest'] ), 9 ) self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2.1" ) self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2.2" ) self.assertEqual( len( report['tree_ids'] ), 9 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "ios:interface" ) self.assertEqual( report['tree_types'][2], "ios:line" ) self.assertEqual( len( report['tree_types'] ), 3 ) report = {} report['result_forest'] = [ self.ios_data1 ] report['tree_ids'] = [ "Router" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.ios_xupath4, report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2.4" ) self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2.5" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "ios:interface" ) self.assertEqual( report['tree_types'][2], "ios:line" ) self.assertEqual( len( report['tree_types'] ), 3 ) self.assertEqual( len( report['re_matches'][0] ), 1 ) self.assertEqual( len( report['re_matches'][1] ), 1 ) self.assertEqual( len( report['re_matches'] ), 2 ) report = {} report['result_forest'] = [ self.ios_data1 ] report['tree_ids'] = [ "Router" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.ios_xupath5, report ) self.assertEqual( len( report['result_forest'] ), 16 ) self.assertEqual( report['tree_ids'][0], "Router.1" ) self.assertEqual( report['tree_ids'][1], "Router.2" ) self.assertEqual( len( report['tree_ids'] ), 16 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "ios:line" ) self.assertEqual( len( report['tree_types'] ), 2 ) ## C Functions report = {} report['result_forest'] = [ self.c_data1 ] report['tree_ids'] = [ "Example" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.c_xupath1, report ) self.assertEqual( len( report['result_forest'] ), 5 ) self.assertEqual( report['tree_ids'][0], "Example.putstr" ) self.assertEqual( report['tree_ids'][1], "Example.fac" ) self.assertEqual( report['tree_ids'][2], "Example.putn" ) self.assertEqual( len( report['tree_ids'] ), 5 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "cspec:function" ) self.assertEqual( len( report['tree_types'] ), 2 ) report = {} report['result_forest'] = [ self.c_data1 ] report['tree_ids'] = [ "Example" ] report['tree_types'] = [ "file" ] report['re_matches'] = [] report = xugrep.xugrep( self.c_xupath2, report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "Example.putstr" ) self.assertEqual( report['tree_ids'][1], "Example.putn" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( report['tree_types'][1], "cspec:function" ) self.assertEqual( len( report['tree_types'] ), 2 )
def test_process_cf_match(self): # TEI cf_match = ["tei:section"] report = {} report['result_forest'] = [ self.tei_data1 ] report['tree_ids'] = [] report['tree_types'] = [] xugrep = XUGrep() report = xugrep.process_cf_match( cf_match, "", report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "1" ) self.assertEqual( report['tree_ids'][1], "9" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "tei:section" ) self.assertEqual( len( report['tree_types'] ), 1 ) # NVD cf_match = ["nvd:entry"] report = {} report['result_forest'] = [ self.nvd_data1 ] report['tree_ids'] = [] report['tree_types'] = [] xugrep = XUGrep() report = xugrep.process_cf_match( cf_match, "", report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "CVE-2012-0001" ) self.assertEqual( report['tree_ids'][1], "CVE-2012-0002" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "nvd:entry" ) self.assertEqual( len( report['tree_types'] ), 1 ) # IOS cf_match = ["ios:interface"] report = {} report['result_forest'] = [ self.ios_data1 ] report['tree_ids'] = [] report['tree_types'] = [] xugrep = XUGrep() report = xugrep.process_cf_match( cf_match, "", report ) self.assertEqual( len( report['result_forest'] ), 2 ) self.assertEqual( report['tree_ids'][0], "Loopback0" ) self.assertEqual( report['tree_ids'][1], "GigabitEthernet4/2" ) self.assertEqual( len( report['tree_ids'] ), 2 ) self.assertEqual( report['tree_types'][0], "ios:interface" ) self.assertEqual( len( report['tree_types'] ), 1 ) # C Code cf_match = ["cspec:function"] report = {} report['result_forest'] = [ self.c_data1 ] report['tree_ids'] = [] report['tree_types'] = [] xugrep = XUGrep() report = xugrep.process_cf_match( cf_match, "", report ) self.assertEqual( len( report['result_forest'] ), 5 ) self.assertEqual( report['tree_ids'][0], "putstr" ) self.assertEqual( report['tree_ids'][1], "fac" ) self.assertEqual( report['tree_ids'][2], "putn" ) self.assertEqual( report['tree_ids'][3], "facpr" ) self.assertEqual( report['tree_ids'][4], "main" ) self.assertEqual( len( report['tree_ids'] ), 5 ) self.assertEqual( report['tree_types'][0], "cspec:function" ) self.assertEqual( len( report['tree_types'] ), 1 )
def test_process_re_match(self): # TEI report = {} report['result_forest'] = [ self.tei_data1 ] report['tree_ids'] = [ "AIST" ] report['tree_types'] = [ "file" ] re_match = ["Globus"] xugrep = XUGrep() report = xugrep.process_re_match( re_match, "", report ) self.assertEqual( len( report['result_forest'] ), 1 ) self.assertEqual( report['tree_ids'][0], "AIST" ) self.assertEqual( len( report['tree_ids'] ), 1 ) self.assertEqual( len(report['re_matches'][0]), 2 ) self.assertEqual( len(report['re_matches']), 1 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( len( report['tree_types'] ), 1 ) # NVD report = {} report['result_forest'] = [ self.nvd_data1 ] report['tree_ids'] = [ "CVE2012" ] report['tree_types'] = [ "file" ] re_match = ["Windows 7"] xugrep = XUGrep() report = xugrep.process_re_match( re_match, "", report ) self.assertEqual( len( report['result_forest'] ), 1 ) self.assertEqual( report['tree_ids'][0], "CVE2012" ) self.assertEqual( len( report['tree_ids'] ), 1 ) self.assertEqual( len( report['re_matches'][0]), 2 ) self.assertEqual( len( report['re_matches'] ), 1 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( len( report['tree_types'] ), 1 ) # IOS report = {} report['result_forest'] = [ self.ios_data1 ] report['tree_ids'] = [ "Router" ] report['tree_types'] = [ "file" ] re_match = ["access-group"] xugrep = XUGrep() report = xugrep.process_re_match( re_match, "", report ) self.assertEqual( len( report['result_forest'] ), 1 ) self.assertEqual( report['tree_ids'][0], "Router" ) self.assertEqual( len( report['tree_ids'] ), 1 ) self.assertEqual( len( report['re_matches'][0] ), 2 ) self.assertEqual( len( report['re_matches'] ), 1 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( len( report['tree_types'] ), 1 ) # C report = {} report['result_forest'] = [ self.c_data1 ] report['tree_ids'] = ["Example"] report['tree_types'] = [ "file" ] re_match = ["putchar"] xugrep = XUGrep() report = xugrep.process_re_match( re_match, "", report ) self.assertEqual( len( report['result_forest'] ), 1 ) self.assertEqual( report['tree_ids'][0], "Example" ) self.assertEqual( len( report['tree_ids'] ), 1 ) self.assertEqual( len( report['re_matches'][0] ), 2 ) self.assertEqual( len( report['re_matches'] ), 1 ) self.assertEqual( report['tree_types'][0], "file" ) self.assertEqual( len( report['tree_types'] ), 1 )