From 90f29329987b497584a01c3b26540ea8ad793e0b Mon Sep 17 00:00:00 2001 From: Ross Wilson Date: Fri, 19 Feb 2016 12:11:34 +0700 Subject: [PATCH] Cleanup and add more harness checking --- pyasm/asm_tests/test_harness | 19 ++++++--- pyasm/asm_tests/tests/asciiz | 21 ---------- pyasm/asm_tests/tests/beta | 12 ------ .../tests/{delta => debug_bad_org.asm} | 0 pyasm/asm_tests/tests/debug_pseudo_ops.asm | 42 +++++++++++++++++++ .../tests/{aalpha => debug_smoke_test.asm} | 0 .../tests/{alpha => debug_test_error.asm} | 0 .../tests/{kappa => test_adjacent_orgs.asm} | 0 8 files changed, 55 insertions(+), 39 deletions(-) delete mode 100644 pyasm/asm_tests/tests/asciiz delete mode 100644 pyasm/asm_tests/tests/beta rename pyasm/asm_tests/tests/{delta => debug_bad_org.asm} (100%) create mode 100644 pyasm/asm_tests/tests/debug_pseudo_ops.asm rename pyasm/asm_tests/tests/{aalpha => debug_smoke_test.asm} (100%) rename pyasm/asm_tests/tests/{alpha => debug_test_error.asm} (100%) rename pyasm/asm_tests/tests/{kappa => test_adjacent_orgs.asm} (100%) diff --git a/pyasm/asm_tests/test_harness b/pyasm/asm_tests/test_harness index 3c75be0..7cee5c3 100755 --- a/pyasm/asm_tests/test_harness +++ b/pyasm/asm_tests/test_harness @@ -190,14 +190,15 @@ def test_file(filename): tests = [] for (lnum, line) in enumerate(lines): if line.startswith(';|') or line.startswith(';!'): - test_pass = line.startswith(';|') + prefix = line[:2] + must_pass = line.startswith(';|') test = line[2:] test = test.replace('\t', ' ') if ';' in test: ndx = test.index(';') test = test[:ndx].rstrip() - tests.append((lnum+1, test_pass, test)) + tests.append((lnum+1, must_pass, prefix, test)) # make sure we have some tests if not tests: @@ -211,7 +212,7 @@ def test_file(filename): # interpret the test instructions and check generated code dot = None - for (lnum, must_pass, test) in tests: + for (lnum, must_pass, prefix, test) in tests: # check for a label if test[0] == ' ': # no label @@ -229,8 +230,8 @@ def test_file(filename): except IndexError: if must_pass: errors += 1 - warn("File '%s' has label '%s' with bad ORG number: %s" - % (filename, label, test)) + warn("File '%s' has label '%s' with bad ORG number: %s%s" + % (filename, label, prefix, test)) return errors # must end testing address = dot else: @@ -246,7 +247,6 @@ def test_file(filename): warn("File '%s' has label '%s' with bad ORG number: %s" % (filename, label, test)) return errors # must end testing - try: mem_value = memory[address] except KeyError: @@ -264,6 +264,13 @@ def test_file(filename): "%2d: %s\n" "Memory at address %04o should be %06o, got %06o" % (filename, lnum, test, address, value, mem_value)) + else: + if not must_pass: + errors += 1 + warn("%s\n" + "%2d: %s\n" + "Memory contents check should fail but didn't?" + % (filename, lnum, test)) dot += 1 diff --git a/pyasm/asm_tests/tests/asciiz b/pyasm/asm_tests/tests/asciiz deleted file mode 100644 index abd0cc1..0000000 --- a/pyasm/asm_tests/tests/asciiz +++ /dev/null @@ -1,21 +0,0 @@ -; test ASCIIZ pseudo-op - org 0100 - -print equ 0200 - -start law str - jms print - hlt - -str asciiz 'str' -str2 asciiz 'str0' - - end start -;|$1 0004000+.+3 -;| 0034000+0200 -;| 0000000 -;| 0071564 ; 'st' -;| 0071000 ; 'r\0' -;| 0071564 ; 'st' -;| 0071060 ; 'r0' -;| 0000000 ; zero byte diff --git a/pyasm/asm_tests/tests/beta b/pyasm/asm_tests/tests/beta deleted file mode 100644 index 64c52f8..0000000 --- a/pyasm/asm_tests/tests/beta +++ /dev/null @@ -1,12 +0,0 @@ -; test file with two ORG blocks - org 0100 - law 1 - hlt - org 0200 - law 2 - hlt - end -;|$1 004000 + 1 -;| 000000 -;|$2 004000 + 2 -;| 000000 diff --git a/pyasm/asm_tests/tests/delta b/pyasm/asm_tests/tests/debug_bad_org.asm similarity index 100% rename from pyasm/asm_tests/tests/delta rename to pyasm/asm_tests/tests/debug_bad_org.asm diff --git a/pyasm/asm_tests/tests/debug_pseudo_ops.asm b/pyasm/asm_tests/tests/debug_pseudo_ops.asm new file mode 100644 index 0000000..4039b99 --- /dev/null +++ b/pyasm/asm_tests/tests/debug_pseudo_ops.asm @@ -0,0 +1,42 @@ +; test pseudo-ops + org 0100 + +test equ 045 + +start hlt + law test + + org 0200 + +start2 nop + + org 0300 + +start3 nop + bss 1 + hlt + +str asciiz 'str' +str2 asciiz 'str0' + +str3 ascii 'str11' + +dat data 0 +dat2 data 0177777 + + end start +;|$1 0000000 +;| 0004000 + 045 +;|$2 0100000 +;|$3 0100000 +;|$4 0000000 ; BSS behaves like 'org .+n' +;| 0071564 ; 'st' +;| 0071000 ; 'r\0' +;| 0071564 ; 'st' +;| 0071060 ; 'r0' +;| 0000000 ; zero byte +;| 0071564 ; 'rs' +;| 0071061 ; 't1' +;| 0030400 ; '1\0' +;| 0000000 +;| 0177777 diff --git a/pyasm/asm_tests/tests/aalpha b/pyasm/asm_tests/tests/debug_smoke_test.asm similarity index 100% rename from pyasm/asm_tests/tests/aalpha rename to pyasm/asm_tests/tests/debug_smoke_test.asm diff --git a/pyasm/asm_tests/tests/alpha b/pyasm/asm_tests/tests/debug_test_error.asm similarity index 100% rename from pyasm/asm_tests/tests/alpha rename to pyasm/asm_tests/tests/debug_test_error.asm diff --git a/pyasm/asm_tests/tests/kappa b/pyasm/asm_tests/tests/test_adjacent_orgs.asm similarity index 100% rename from pyasm/asm_tests/tests/kappa rename to pyasm/asm_tests/tests/test_adjacent_orgs.asm