mirror of
https://github.com/robmcmullen/atrcopy.git
synced 2025-01-06 13:29:41 +00:00
All tests passing for python 3
This commit is contained in:
parent
841aa1dc9b
commit
c30f390fed
@ -94,8 +94,8 @@ class AtariDosDirent(Dirent):
|
|||||||
self.deleted = False
|
self.deleted = False
|
||||||
self.num_sectors = 0
|
self.num_sectors = 0
|
||||||
self.starting_sector = 0
|
self.starting_sector = 0
|
||||||
self.basename = ""
|
self.basename = b''
|
||||||
self.ext = ""
|
self.ext = b''
|
||||||
self.is_sane = True
|
self.is_sane = True
|
||||||
self.current_sector = 0
|
self.current_sector = 0
|
||||||
self.current_read = 0
|
self.current_read = 0
|
||||||
@ -103,14 +103,14 @@ class AtariDosDirent(Dirent):
|
|||||||
self.parse_raw_dirent(image, bytes)
|
self.parse_raw_dirent(image, bytes)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "File #%-2d (%s) %03d %-8s%-3s %03d" % (self.file_num, self.summary, self.starting_sector, self.basename, self.ext, self.num_sectors)
|
return "File #%-2d (%s) %03d %-8s%-3s %03d" % (self.file_num, self.summary, self.starting_sector, str(self.basename), str(self.ext), self.num_sectors)
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
return self.__class__ == other.__class__ and self.filename == other.filename and self.starting_sector == other.starting_sector and self.num_sectors == other.num_sectors
|
return self.__class__ == other.__class__ and self.filename == other.filename and self.starting_sector == other.starting_sector and self.num_sectors == other.num_sectors
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def filename(self):
|
def filename(self):
|
||||||
ext = ("." + self.ext) if self.ext else ""
|
ext = (b'.' + self.ext) if self.ext else b''
|
||||||
return self.basename + ext
|
return self.basename + ext
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -138,10 +138,10 @@ class AtariDosDirent(Dirent):
|
|||||||
def extra_metadata(self, image):
|
def extra_metadata(self, image):
|
||||||
return self.verbose_info
|
return self.verbose_info
|
||||||
|
|
||||||
def parse_raw_dirent(self, image, bytes):
|
def parse_raw_dirent(self, image, data):
|
||||||
if bytes is None:
|
if data is None:
|
||||||
return
|
return
|
||||||
values = bytes.view(dtype=self.format)[0]
|
values = data.view(dtype=self.format)[0]
|
||||||
flag = values[0]
|
flag = values[0]
|
||||||
self.flag = flag
|
self.flag = flag
|
||||||
self.opened_output = (flag&0x01) > 0
|
self.opened_output = (flag&0x01) > 0
|
||||||
@ -153,8 +153,8 @@ class AtariDosDirent(Dirent):
|
|||||||
self.deleted = (flag&0x80) > 0
|
self.deleted = (flag&0x80) > 0
|
||||||
self.num_sectors = int(values[1])
|
self.num_sectors = int(values[1])
|
||||||
self.starting_sector = int(values[2])
|
self.starting_sector = int(values[2])
|
||||||
self.basename = str(values[3]).rstrip()
|
self.basename = bytes(values[3]).rstrip()
|
||||||
self.ext = str(values[4]).rstrip()
|
self.ext = bytes(values[4]).rstrip()
|
||||||
self.is_sane = self.sanity_check(image)
|
self.is_sane = self.sanity_check(image)
|
||||||
|
|
||||||
def encode_dirent(self):
|
def encode_dirent(self):
|
||||||
|
@ -183,9 +183,9 @@ class DiskImageBase(object):
|
|||||||
if not filename:
|
if not filename:
|
||||||
raise RuntimeError("No filename specified for save!")
|
raise RuntimeError("No filename specified for save!")
|
||||||
if type(filename) is not bytes: filename = filename.encode("utf-8")
|
if type(filename) is not bytes: filename = filename.encode("utf-8")
|
||||||
bytes = self.bytes[:]
|
data = self.bytes[:]
|
||||||
with open(filename, "wb") as fh:
|
with open(filename, "wb") as fh:
|
||||||
bytes.tofile(fh)
|
data.tofile(fh)
|
||||||
|
|
||||||
def assert_valid_sector(self, sector):
|
def assert_valid_sector(self, sector):
|
||||||
if not self.header.sector_is_valid(sector):
|
if not self.header.sector_is_valid(sector):
|
||||||
@ -279,7 +279,7 @@ class DiskImageBase(object):
|
|||||||
for dirent in self.files:
|
for dirent in self.files:
|
||||||
if filename == dirent.filename:
|
if filename == dirent.filename:
|
||||||
return dirent
|
return dirent
|
||||||
raise FileNotFound("%s not found on disk" % filename)
|
raise FileNotFound("%s not found on disk" % str(filename))
|
||||||
|
|
||||||
def find_file(self, filename):
|
def find_file(self, filename):
|
||||||
dirent = self.find_dirent(filename)
|
dirent = self.find_dirent(filename)
|
||||||
|
@ -171,7 +171,7 @@ class Dos33Dirent(Dirent):
|
|||||||
self.deleted = False
|
self.deleted = False
|
||||||
self.track = 0
|
self.track = 0
|
||||||
self.sector = 0
|
self.sector = 0
|
||||||
self.filename = ""
|
self.filename = b''
|
||||||
self.num_sectors = 0
|
self.num_sectors = 0
|
||||||
self.is_sane = True
|
self.is_sane = True
|
||||||
self.current_sector_index = 0
|
self.current_sector_index = 0
|
||||||
@ -353,7 +353,8 @@ class Dos33Dirent(Dirent):
|
|||||||
return self.filename
|
return self.filename
|
||||||
|
|
||||||
def set_values(self, filename, filetype, index):
|
def set_values(self, filename, filetype, index):
|
||||||
self.filename = "%-30s" % filename[0:30]
|
if type(filename) is not bytes: filename = filename.encode("utf-8")
|
||||||
|
self.filename = b'%-30s' % filename[0:30]
|
||||||
self._file_type = self.text_to_type.get(filetype, 0x04)
|
self._file_type = self.text_to_type.get(filetype, 0x04)
|
||||||
self.locked = False
|
self.locked = False
|
||||||
self.deleted = False
|
self.deleted = False
|
||||||
|
@ -18,6 +18,7 @@ class BaseFilesystemModifyTest(object):
|
|||||||
self.image = self.diskimage_type(rawdata)
|
self.image = self.diskimage_type(rawdata)
|
||||||
|
|
||||||
def check_entries(self, entries, prefix=b"TEST", save=None):
|
def check_entries(self, entries, prefix=b"TEST", save=None):
|
||||||
|
if type(prefix) is not bytes: prefix = prefix.encode("utf-8")
|
||||||
orig_num_files = len(self.image.files)
|
orig_num_files = len(self.image.files)
|
||||||
filenames = []
|
filenames = []
|
||||||
count = 1
|
count = 1
|
||||||
|
Loading…
Reference in New Issue
Block a user