dosemu2/test/func_ds2_set_fattrs.py
geos_one 91736529d5
Some checks failed
Master / Scheduled (FULL) (push) Has been cancelled
Master / Triggered (push) Has been cancelled
Master / Triggered (ASAN) (push) Has been cancelled
Master / Triggered (FULL) (push) Has been cancelled
New upstream version 2.0pre9.2
2025-08-10 12:35:43 +02:00

90 lines
2.0 KiB
Python

def ds2_set_fattrs(self, fstype, attr):
testdir = self.mkworkdir('d')
self.mkfile("testit.bat", """\
d:
c:\\setfattr
rem end
""", newline="\r\n")
# compile sources
self.mkexe_with_djgpp("setfattr", r"""\
#include <dos.h>
#include <dir.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
int main(void) {
int ret;
int handle;
unsigned int oattr, nattr;
const char *fname = "FOO.DAT";
unlink(fname);
ret = _dos_creatnew(fname, _A_NORMAL, &handle);
if (ret != 0) {
printf("FAIL: Create failed '%s', err=%d\n", fname, ret);
return 1;
}
printf("INFO: Create = '%s', err=%d\n", fname, ret);
ret =_dos_close(handle);
if (ret != 0) {
printf("FAIL: Close failed, err=%d\n", ret);
return 1;
}
ret = _dos_getfileattr(fname, &oattr);
if (ret != 0) {
printf("FAIL: Getfattr(1) failed, err=%d\n", ret);
return 1;
}
printf("INFO: Getfattr(1) attr=0x%02x\n", oattr);
if (oattr & _A_XXX) {
printf("FAIL: Getfattr(1) has hidden bit set\n");
return 1;
}
ret = _dos_setfileattr(fname, oattr | _A_XXX);
if (ret != 0) {
printf("FAIL: Setfattr(1) failed, err=%d\n", ret);
return 1;
}
printf("INFO: Setfattr success\n");
ret = _dos_getfileattr(fname, &nattr);
if (ret != 0) {
printf("FAIL: Getfattr(2) failed, err=%d\n", ret);
return 1;
}
printf("INFO: Getfattr(2) attr=0x%02x\n", nattr);
if (nattr != (oattr | _A_XXX)) {
printf("FAIL: Getfattr(2) expected (0x%02x), got (0x%02x)\n", (oattr | _A_XXX), nattr);
return 1;
}
printf("PASS: results as expected\n");
return 0;
}
""".replace('XXX', attr))
if fstype == "MFS":
config="""\
$_hdimage = "dXXXXs/c:hdtype1 dXXXXs/d:hdtype1 +1"
$_floppy_a = ""
"""
else: # FAT
name = self.mkimage("12", cwd=testdir)
config="""\
$_hdimage = "dXXXXs/c:hdtype1 %s +1"
$_floppy_a = ""
""" % name
results = self.runDosemu("testit.bat", config=config)
self.assertNotIn("FAIL:", results)