def runTest(self): loader = transitfeed.Loader( util.data_path('good_feed.zip'), loader_problems=util.get_test_failure_problem_reporter(self), extra_validation=True) loader.load() # now try using Schedule.Load schedule = transitfeed.Schedule( problem_reporter=util.ExceptionProblemReporterNoExpiration()) schedule.load(util.data_path('good_feed.zip'), extra_validation=True)
def runTest(self): problems = UnrecognizedColumnRecorder(self) loader = transitfeed.Loader(util.data_path('unrecognized_columns'), loader_problems=problems) loader.load() found_errors = set(problems.column_errors) expected_errors = {('agency.txt', 'agency_lange'), ('stops.txt', 'stop_uri'), ('routes.txt', 'Route_Text_Color'), ('calendar.txt', 'leap_day'), ('calendar_dates.txt', 'leap_day'), ('trips.txt', 'sharpe_id'), ('stop_times.txt', 'shapedisttraveled'), ('stop_times.txt', 'drop_off_time'), ('fare_attributes.txt', 'transfer_time'), ('fare_rules.txt', 'source_id'), ('frequencies.txt', 'superfluous'), ('transfers.txt', 'to_stop')} # Now make sure we got the unrecognized column errors that we expected. not_expected = found_errors.difference(expected_errors) self.failIf(bool(not_expected), 'unexpected errors: %s' % str(not_expected)) not_found = expected_errors.difference(found_errors) self.failIf(bool(not_found), 'expected but not found: %s' % str(not_found))
def runTest(): schedule = transitfeed.Schedule( problem_reporter=util.ExceptionProblemReporterNoExpiration()) schedule.load(util.data_path('good_feed.zip'), extra_validation=True) # Finally see if write crashes schedule.write_google_transit_feed(tempfile.TemporaryFile())
def testLoad(self): loader = transitfeed.Loader(util.data_path("bad_eol.zip"), loader_problems=self.problems, extra_validation=True) loader.load() e = self.accumulator.pop_exception("OtherProblem") self.assertEqual(e.file_name, "calendar.txt") self.assertTrue( re.search(r"Found 1 CR LF.* \(line 2\) and 2 LF .*\(lines 1, 3\)", e.format_problem())) e = self.accumulator.pop_exception("InvalidLineEnd") self.assertEqual(e.file_name, "routes.txt") self.assertEqual(e.row_num, 5) self.assertTrue(e.format_problem().find(r"\r\r\n") != -1) e = self.accumulator.pop_exception("OtherProblem") self.assertEqual(e.file_name, "trips.txt") self.assertEqual(e.row_num, 1) self.assertTrue( re.search(r"contains ASCII Form Feed", e.format_problem())) # TODO(Tom): avoid this duplicate error for the same issue e = self.accumulator.pop_exception("CsvSyntax") self.assertEqual(e.row_num, 1) self.assertTrue( re.search(r"header row should not contain any space char", e.format_problem())) self.accumulator.assert_no_more_exceptions()
def runTest(): for feed in util.get_data_path_contents(): loader = transitfeed.Loader( util.data_path(feed), loader_problems=transitfeed.ProblemReporter(), extra_validation=True) schedule = loader.load() schedule.validate()
def test_rich_xml(self): path = util.data_path('rich.xml') expected = [[ 'magnet:?xt=urn:btih:b03c8641415d3a0fc7077f5bf567634442989a74&dn=High.Chaparall.S02E02.PDTV.XViD.SWEDiSH-HuBBaTiX', '?', '?' ]] actual = pirate.local.search(path, ('High', )) self.assertEqual(actual, expected)
def runTest(self): loader = transitfeed.Loader( util.data_path('bad_utf8'), loader_problems=transitfeed.ProblemReporter(), extra_validation=True) loader.load() # raises exception if not found self.this_stdout.getvalue().index('Invalid value')
def test_TemporaryFile(self): loader = transitfeed.Loader( util.data_path('good_feed.zip'), loader_problems=util.get_test_failure_problem_reporter(self), extra_validation=True, memory_db=False) schedule = loader.load() self.assertLoadedCorrectly(schedule) self.assertLoadedStopTimesCorrectly(schedule)
def runTest(self): schedule = transitfeed.Schedule( problem_reporter=util.ExceptionProblemReporterNoExpiration()) try: schedule.load(util.data_path('duplicate_schedule_id'), extra_validation=True) self.fail('DuplicateID exception expected') except transitfeed.DuplicateID: pass
def runTest(self): loader = transitfeed.Loader( util.data_path('empty_file'), loader_problems=util.ExceptionProblemReporterNoExpiration(), extra_validation=True) try: loader.load() self.fail('EmptyFile exception expected') except transitfeed.EmptyFile as e: self.assertEqual('agency.txt', e.file_name)
def runTest(self): accumulator = util.RecordingProblemAccumulator( self, ('ExpirationDate', 'NoServiceExceptions')) problems = transitfeed.ProblemReporter(accumulator) schedule = transitfeed.Schedule(problem_reporter=problems) schedule.load(util.data_path('missing_endpoint_times'), extra_validation=True) e = accumulator.pop_invalid_value('arrival_time') self.assertEqual('', e.value) e = accumulator.pop_invalid_value('departure_time') self.assertEqual('', e.value)
def runTest(self): accumulator = util.RecordingProblemAccumulator( self, ("ExpirationDate", "NoServiceExceptions")) problems = transitfeed.ProblemReporter(accumulator) schedule = transitfeed.Schedule(problem_reporter=problems) schedule.load(util.data_path('duplicate_stop_sequence'), extra_validation=True) e = accumulator.pop_exception('InvalidValue') self.assertEqual('stop_sequence', e.column_name) self.assertEqual(10, e.value) accumulator.assert_no_more_exceptions()
def test_NoLoadStopTimes(self): problems = util.get_test_failure_problem_reporter( self, ignore_types=("ExpirationDate", "UnusedStop", "OtherProblem")) loader = transitfeed.Loader(util.data_path('good_feed.zip'), loader_problems=problems, extra_validation=True, load_stop_times=False) schedule = loader.load() self.assertLoadedCorrectly(schedule) self.assertEqual(0, len(schedule.get_trip('CITY1').get_stop_times()))
def runTest(self): feed_name = util.data_path('unknown_format.zip') loader = transitfeed.Loader( feed_name, loader_problems=util.ExceptionProblemReporterNoExpiration(), extra_validation=True) try: loader.load() self.fail('UnknownFormat exception expected') except transitfeed.UnknownFormat as e: self.assertEqual(feed_name, e.feed_name)
def runTest(self): loader = transitfeed.Loader( util.data_path('missing_column'), loader_problems=util.ExceptionProblemReporterNoExpiration(), extra_validation=True) try: loader.load() self.fail('MissingColumn exception expected') except transitfeed.MissingColumn as e: self.assertEqual('agency.txt', e.file_name) self.assertEqual('agency_name', e.column_name)
def runTest(self): feed_name = util.data_path('unknown_file') self.accumulator = util.RecordingProblemAccumulator( self, "ExpirationDate") self.problems = transitfeed.ProblemReporter(self.accumulator) loader = transitfeed.Loader(feed_name, loader_problems=self.problems, extra_validation=True) loader.load() e = self.accumulator.PopException('UnknownFile') self.assertEqual('frecuencias.txt', e.file_name) self.accumulator.assert_no_more_exceptions()
def runTest(self): accumulator = transitfeed.ExceptionProblemAccumulator() problem_reporter = transitfeed.ProblemReporter(accumulator) loader = transitfeed.Loader(util.data_path('contains_null'), loader_problems=problem_reporter, extra_validation=True) try: loader.load() self.fail('FileFormat exception expected') except transitfeed.FileFormat as e: self.assertTrue(re.search(r'contains a null', e.format_problem())) # make sure these don't raise an exception e.format_context()
def runTest(self): # utf16 generated by `recode utf8..utf16 *' accumulator = transitfeed.ExceptionProblemAccumulator() problem_reporter = transitfeed.ProblemReporter(accumulator) loader = transitfeed.Loader(util.data_path('utf16'), loader_problems=problem_reporter, extra_validation=True) try: loader.load() # TODO: make sure processing proceeds beyond the problem self.fail('FileFormat exception expected') except transitfeed.FileFormat as e: # make sure these don't raise an exception self.assertTrue(re.search(r'encoded in utf-16', e.format_problem())) e.format_context()
def test_local_csv_db(self): path = util.data_path('db.csv') expected = [ { 'date':'2018-May-14 11:05:31', 'magnet': 'magnet:?xt=urn:btih:34930674EF3BB9317FB5F263CCA830F52685235B&dn=ubuntu-14.04.5-desktop-amd64.iso', 'size': '1.0 GiB', }, { 'date': '2018-Apr-15 00:04:09', 'magnet': 'magnet:?xt=urn:btih:F07E0B0584745B7BCB35E98097488D34E68623D0&dn=Ubuntu%2017.10.1%20Desktop%20%28amd64%29', 'size': '1.4 GiB', }, { 'date': '2017-Aug-01 15:08:07', 'magnet': 'magnet:?xt=urn:btih:4096EC129404689CEB8056D907E384FF872C2CE9&dn=LINUX%20UBUNTU%2016.10%2032X64', 'size': '1.5 GiB', }, ] actual = pirate.local.search(path, ('ubuntu',)) self.assertEqual(len(actual), len(expected)) for i in range(len(expected)): self.assertDictEqual(actual[i], expected[i])
def test_rich_xml(self): path = util.data_path('rich.xml') expected = [['magnet:?xt=urn:btih:b03c8641415d3a0fc7077f5bf567634442989a74&dn=High.Chaparall.S02E02.PDTV.XViD.SWEDiSH-HuBBaTiX', '?', '?']] actual = pirate.local.search(path, ('High',)) self.assertEqual(actual, expected)
def runTest(self): loader = transitfeed.Loader( util.data_path('utf8bom'), loader_problems=util.get_test_failure_problem_reporter(self), extra_validation=True) loader.load()