X-Git-Url: https://code.communitydata.science/mediawiki_dump_tools.git/blobdiff_plain/414cc5ff2d86c007b1a00c829c779627ea3b18d7..b124f9c7c891b8b98441ef1b185ba1a1a4a32179:/test/Wikiq_Unit_Test.py?ds=sidebyside diff --git a/test/Wikiq_Unit_Test.py b/test/Wikiq_Unit_Test.py index 14d38f1..129abfe 100644 --- a/test/Wikiq_Unit_Test.py +++ b/test/Wikiq_Unit_Test.py @@ -3,7 +3,7 @@ import os import subprocess from shutil import copyfile import pandas as pd -from pandas.util.testing import assert_frame_equal +from pandas.testing import assert_frame_equal from io import StringIO # with / without pwr DONE @@ -49,7 +49,7 @@ class Test_Wikipedia(unittest.TestCase): # as a test let's make sure that we get equal data frames test = pd.read_table(test_file) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + assert_frame_equal(test,baseline, check_like=True) def test_WP_namespaces(self): print(os.path.abspath('.')) @@ -71,7 +71,7 @@ class Test_Wikipedia(unittest.TestCase): num_wrong_ns = sum(~ test.namespace.isin({0,1})) self.assertEqual(num_wrong_ns, 0) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + assert_frame_equal(test,baseline, check_like=True) def test_WP_revert_radius(self): print(os.path.abspath('.')) @@ -93,7 +93,7 @@ class Test_Wikipedia(unittest.TestCase): num_wrong_ns = sum(~ test.namespace.isin({0,1})) self.assertEqual(num_wrong_ns, 0) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + assert_frame_equal(test,baseline, check_like=True) @@ -131,7 +131,7 @@ class Test_Basic(unittest.TestCase): test = pd.read_table(test_file) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + assert_frame_equal(test,baseline, check_like=True) def test_collapse_user(self): @@ -151,7 +151,7 @@ class Test_Basic(unittest.TestCase): baseline_file = os.path.join(".", self.baseline_output_dir, test_filename) test = pd.read_table(test_file) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + assert_frame_equal(test,baseline, check_like=True) def test_pwr_segment(self): test_filename = "persistence_segment_" + self.wikiq_out_name @@ -171,7 +171,7 @@ class Test_Basic(unittest.TestCase): test = pd.read_table(test_file) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + assert_frame_equal(test,baseline, check_like=True) def test_pwr_legacy(self): test_filename = "persistence_legacy_" + self.wikiq_out_name @@ -191,7 +191,7 @@ class Test_Basic(unittest.TestCase): test = pd.read_table(test_file) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + assert_frame_equal(test,baseline, check_like=True) def test_pwr(self): test_filename = "persistence_" + self.wikiq_out_name @@ -211,7 +211,9 @@ class Test_Basic(unittest.TestCase): test = pd.read_table(test_file) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + + test = test.reindex(columns=sorted(test.columns)) + assert_frame_equal(test,baseline, check_like=True) def test_url_encode(self): @@ -230,7 +232,9 @@ class Test_Basic(unittest.TestCase): baseline_file = os.path.join(".", self.baseline_output_dir, test_filename) test = pd.read_table(test_file) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + + test = test.reindex(columns=sorted(test.columns)) + assert_frame_equal(test,baseline, check_like=True) class Test_Malformed(unittest.TestCase): @@ -241,7 +245,7 @@ class Test_Malformed(unittest.TestCase): self.wiki = 'twinpeaks' self.wikiq_out_name = self.wiki + ".tsv" self.test_output_dir = os.path.join(".", "test_output") - self.call_output = os.path.join(self.test_output_dir, self.wikiq_out_name) + self.call_output = os.path.join(self.test_output_dir, self.wikiq_out_name) self.infile = "{0}.xml.7z".format(self.wiki) self.base_call = "../wikiq {0} -o {1}" @@ -258,6 +262,82 @@ class Test_Malformed(unittest.TestCase): errlines = str(errs).split("\\n") self.assertEqual(errlines[-2],'xml.etree.ElementTree.ParseError: no element found: line 1369, column 0') + +class Test_Redirect_Ikwiki(unittest.TestCase): + def setUp(self): + self.wiki = 'ikwiki-20180301-pages-meta-history' + wiki_siteinfo = "ikwiki-20191101-siteinfo-namespaces.json.gz" + self.input_dir = "dumps" + self.wiki_siteinfo = os.path.join(".", self.input_dir, wiki_siteinfo) + self.wikiq_out_name = self.wiki + ".tsv" + self.infile = "{0}.xml.bz2".format(self.wiki) + + self.base_call = "../wikiq {0} --siteinfo {1} -o {2}" + self.input_dir = "dumps" + self.input_file = os.path.join(".", self.input_dir, self.infile) + self.baseline_output_dir = "baseline_output" + + self.test_output_dir = os.path.join(".", "test_output") + self.call_output = os.path.join(self.test_output_dir, self.wikiq_out_name) + + self.infile = "{0}.xml.bz2".format(self.wiki) + + def test_redirect(self): + + call = self.base_call.format(self.input_file, self.wiki_siteinfo, self.test_output_dir) + print(call) + proc = subprocess.Popen(call,stdout=subprocess.PIPE,shell=True) + proc.wait() + + test_file = os.path.join("redirect_" + self.wikiq_out_name) + copyfile(self.call_output, test_file) + baseline_file = os.path.join(".", self.baseline_output_dir, test_file) + + # as a test let's make sure that we get equal data frames + test = pd.read_table(os.path.join(self.test_output_dir, test_file)) + + baseline = pd.read_table(baseline_file) + assert_frame_equal(test,baseline, check_like=True) + + + +class Test_Redirect_Wikia(unittest.TestCase): + def setUp(self): + self.wiki = 'pokemonfandomcom_fr-20200215-history' + wiki_siteinfo = "pokemonfandomcom_fr-20200215-history.xml.7z" + self.input_dir = "dumps" + self.wiki_siteinfo = os.path.join(".", self.input_dir, wiki_siteinfo) + self.wikiq_out_name = self.wiki + ".tsv" + self.infile = "{0}.xml.7z".format(self.wiki) + + self.base_call = "../wikiq {0} --siteinfo {1} -o {2}" + self.input_dir = "dumps" + self.input_file = os.path.join(".", self.input_dir, self.infile) + self.baseline_output_dir = "baseline_output" + + self.test_output_dir = os.path.join(".", "test_output") + self.call_output = os.path.join(self.test_output_dir, self.wikiq_out_name) + + self.infile = "{0}.xml.7z".format(self.wiki) + + def test_redirect(self): + + call = self.base_call.format(self.input_file, self.wiki_siteinfo, self.test_output_dir) + print(call) + proc = subprocess.Popen(call,stdout=subprocess.PIPE,shell=True) + proc.wait() + + test_file = os.path.join("redirect_" + self.wikiq_out_name) + copyfile(self.call_output, test_file) + baseline_file = os.path.join(".", self.baseline_output_dir, test_file) + + # as a test let's make sure that we get equal data frames + test = pd.read_table(os.path.join(self.test_output_dir, test_file)) + baseline = pd.read_table(baseline_file) + assert_frame_equal(test,baseline, check_like=True) + + + class Test_Stdout(unittest.TestCase): def setUp(self): @@ -273,15 +353,18 @@ class Test_Stdout(unittest.TestCase): def test_noargs(self): call = self.base_call.format(self.input_file) + print(call) proc = subprocess.run(call,stdout=subprocess.PIPE,shell=True) outs = proc.stdout.decode("utf8") test_file = "noargs_" + self.wikiq_out_name baseline_file = os.path.join(".", self.baseline_output_dir, test_file) print(baseline_file) - test = pd.read_table(StringIO(outs)) + s = StringIO(outs) + test = pd.read_table(s) baseline = pd.read_table(baseline_file) - assert_frame_equal(test,baseline) + assert_frame_equal(test,baseline, check_like=True) + class Test_Regex(unittest.TestCase): @@ -334,9 +417,9 @@ class Test_Regex(unittest.TestCase): def test_regex_inputs(self): - for input in self.bad_inputs_list: + for inpt in self.bad_inputs_list: call = self.base_call.format(self.input_file) - call = call + " --stdout " + input + call = call + " --stdout " + inpt print(call) proc = subprocess.Popen(call,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) stdout,stderr = proc.communicate() @@ -347,7 +430,7 @@ class Test_Regex(unittest.TestCase): self.assertNotEqual(proc.returncode,0) def test_basic_regex(self): - for i, input in enumerate(self.good_inputs_list): + for i, inpt in enumerate(self.good_inputs_list): test_filename = "basic_{0}_{1}.tsv".format(self.wikiq_out_name[:-4], str(i)) #print(test_filename) @@ -356,7 +439,7 @@ class Test_Regex(unittest.TestCase): os.remove(test_file) call = self.base_call_outs.format(self.input_file, self.test_output_dir) - call = call + " " + input + call = call + " " + inpt print(call) proc = subprocess.Popen(call,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) @@ -367,12 +450,12 @@ class Test_Regex(unittest.TestCase): baseline_file = os.path.join(".", self.baseline_output_dir, test_filename) baseline = pd.read_table(baseline_file) - assert_frame_equal(test, baseline) + assert_frame_equal(test, baseline, check_like=True) print(i) def test_capturegroup_regex(self): - for i, input in enumerate(self.cap_inputs_list): + for i, inpt in enumerate(self.cap_inputs_list): test_filename = "capturegroup_{0}_{1}.tsv".format(self.wikiq_out_name[:-4], str(i)) print(test_filename) test_file = os.path.join(self.test_output_dir, test_filename) @@ -380,7 +463,7 @@ class Test_Regex(unittest.TestCase): os.remove(test_file) call = self.base_call_outs.format(self.input_file, self.test_output_dir) - call = call + " " + input + call = call + " " + inpt print(call) proc = subprocess.Popen(call,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) @@ -392,7 +475,7 @@ class Test_Regex(unittest.TestCase): baseline_file = os.path.join(".", self.baseline_output_dir, test_filename) baseline = pd.read_table(baseline_file) - assert_frame_equal(test, baseline) + assert_frame_equal(test, baseline, check_like=True) if __name__ == '__main__':