Пример #1
0
    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)
Пример #2
0
    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))
Пример #3
0
    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())
Пример #4
0
    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()
Пример #5
0
 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()
Пример #6
0
 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)
Пример #7
0
 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')
Пример #8
0
 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)
Пример #9
0
 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
Пример #10
0
 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)
Пример #11
0
 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)
Пример #12
0
 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()
Пример #13
0
 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()))
Пример #14
0
 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)
Пример #15
0
 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)
Пример #16
0
 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()
Пример #17
0
 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()
Пример #18
0
 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()
Пример #19
0
 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])
Пример #20
0
 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)
Пример #21
0
 def runTest(self):
     loader = transitfeed.Loader(
         util.data_path('utf8bom'),
         loader_problems=util.get_test_failure_problem_reporter(self),
         extra_validation=True)
     loader.load()