Пример #1
0
    def test_parse_unix(self):
        parser = ListingParser(UNIX_LS)
        parser.run_heuristics()
        results = parser.parse()
        date_factory = functools.partial(datetime.datetime,
                                         tzinfo=datetime.timezone.utc)

        datetime_now = datetime.datetime.utcnow()
        datetime_now = datetime_now.replace(tzinfo=datetime.timezone.utc)
        current_year = datetime_now.year

        datetime_1 = date_factory(current_year, 1, 29, 3, 26)
        datetime_2 = date_factory(current_year, 1, 25, 0, 17)

        if datetime_1 > datetime_now:
            datetime_1 = datetime_1.replace(year=current_year - 1)

        if datetime_2 > datetime_now:
            datetime_2 = datetime_2.replace(year=current_year - 1)

        self.assertEqual([
            FileEntry('README', 'file', 531, datetime_1, perm=0o644),
            FileEntry('etc', 'dir', 512, date_factory(1994, 4, 8), perm=0o555),
            FileEntry('etc', 'dir', 512, date_factory(1994, 4, 8), perm=0o555),
            FileEntry('bin', 'symlink', 7, datetime_2, 'usr/bin', perm=0o777),
            FileEntry('blah', 'dir', 512, date_factory(2004, 4, 8),
                      perm=0o555),
        ], results)
Пример #2
0
    def test_parse_nlst(self):
        parser = ListingParser(NLST)
        parser.run_heuristics()
        results = parser.parse()

        self.assertEqual([
            FileEntry('dog.txt'),
            FileEntry('cat.txt'),
            FileEntry('bird.txt'),
            FileEntry('fish.txt'),
        ], results)
Пример #3
0
    def test_parse_msdos(self):
        parser = ListingParser(MSDOS_LS)
        parser.run_heuristics()
        results = parser.parse()
        date_factory = functools.partial(datetime.datetime,
                                         tzinfo=datetime.timezone.utc)

        self.assertEqual([
            FileEntry('licensed', 'dir', None, date_factory(
                2000, 4, 27, 21, 9)),
            FileEntry('pub', 'dir', None, date_factory(2000, 7, 18, 10, 16)),
            FileEntry('readme.htm', 'file', 589,
                      date_factory(2000, 4, 14, 15, 47)),
        ], results)
Пример #4
0
def machine_listings_to_file_entries(listings):
    '''Convert results from parsing machine listings to FileEntry list.'''
    for listing in listings:
        yield FileEntry(listing['name'],
                        type=listing.get('type'),
                        size=listing.get('size'),
                        date=listing.get('modify'))
Пример #5
0
    def test_parse_unix_datelike_file(self):
        parser = ListingParser(UNIX_LS_DATELIKE_FILE)
        parser.run_heuristics()
        results = parser.parse()
        date_factory = functools.partial(datetime.datetime,
                                         tzinfo=datetime.timezone.utc)

        self.assertEqual(
            [
                FileEntry('2009-12', 'file', 1558532,
                          date_factory(2009, 12, 30),
                          perm=0o644),
                FileEntry('2010-01', 'file', 10564020,
                          date_factory(2010, 1, 14),
                          perm=0o644),
            ],
            results
        )
Пример #6
0
    def test_parse_msdos_no_dir(self):
        parser = ListingParser(MSDOS_NO_DIR_LS)
        parser.run_heuristics()
        results = parser.parse()
        date_factory = functools.partial(datetime.datetime,
                                         tzinfo=datetime.timezone.utc)

        self.assertEqual([
            FileEntry('readme.htm', 'file', 589,
                      date_factory(2000, 4, 14, 15, 47)),
        ], results)
Пример #7
0
    def test_convert_machine_listing_to_file_entry(self):
        results = tuple(
            machine_listings_to_file_entries(
                parse_machine_listing(SAMPLE_LISTING_1)))

        self.assertEqual(
            FileEntry('capmux.tar.z',
                      type='file',
                      size=25730,
                      date=datetime.datetime(1994,
                                             7,
                                             28,
                                             9,
                                             58,
                                             54,
                                             tzinfo=datetime.timezone.utc)),
            results[3])