Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
修訂 | 224c887cdfd84a7463870b59dbf58f31a9f3166f (tree) |
---|---|
時間 | 2023-10-04 00:24:58 |
作者 | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
refacored test
@@ -20,6 +20,7 @@ | ||
20 | 20 | rPY_CURRENT = \ |
21 | 21 | pytst/writers/RPy/test_2_ProtocolDataStructures.py \ |
22 | 22 | pytst/writers/RPy/test_99_SieveMoats.py \ |
23 | + pytst/aigr/test_2b_protocol.py \ | |
23 | 24 | # |
24 | 25 | CC2CPy_TODO = \ |
25 | 26 | pytst/writers/RPy/test_999.py \ |
@@ -37,7 +38,7 @@ | ||
37 | 38 | diff -w -rs TestDoubles/reference/ TestDoubles/_generated/ |
38 | 39 | |
39 | 40 | clean_generated: |
40 | - rm -f TestDoubles/_generated/*.* TestDoubles/_generated/*/*.* | |
41 | + rm -f TestDoubles/_generated/*.{py,rpy} TestDoubles/_generated/*/*.{py,rpy} | |
41 | 42 | |
42 | 43 | clean_caches: |
43 | 44 | find . -type d -name __pycache__ -print0 | xargs -0 rm -r |
@@ -1,1 +1,2 @@ | ||
1 | -This directory is needed to store generated/rendered files (which is an option during testing) | |
\ No newline at end of file | ||
1 | +This directory is needed to store generated/rendered files (which is an option during testing) | |
2 | +.. note:: a "mirror" of this file is found in :dir:`reference` -- to be able to diff dirs | |
\ No newline at end of file |
@@ -0,0 +1,2 @@ | ||
1 | +This directory is needed to store generated/rendered files (which is an option during testing) | |
2 | +.. note:: a "mirror" of this file is found in :dir:`reference` -- to be able to diff dirs | |
\ No newline at end of file |
@@ -78,3 +78,8 @@ | ||
78 | 78 | assert (e.typedParameters[1].name, e.typedParameters[1].type) == ('p1', int) |
79 | 79 | assert (e.typedParameters[2].name, e.typedParameters[2].type) == ('p2', str) |
80 | 80 | assert (e.typedParameters[3].name, e.typedParameters[3].type) == ('p3', None) |
81 | + | |
82 | + | |
83 | +@pytest.mark.xfail(reason="Implementation is needed (test & prod)") | |
84 | +def test_inherit_base_withParms(): | |
85 | + assert False |
@@ -55,22 +55,35 @@ | ||
55 | 55 | def gen_file(self, ext='.rpy'): |
56 | 56 | return self._top / self._gen / self.base_name.with_suffix(ext) |
57 | 57 | |
58 | + def read_ref(self) -> str: #File content as one (long, multi-line) string (aka Text) | |
59 | + with open(self.ref_file) as f: | |
60 | + ref = f.read() | |
61 | + logger.debug("---------- ref: ----------\n%s\n==========================", ref) | |
62 | + return ref | |
63 | + | |
64 | + def write_gen(self,txt) ->None: | |
65 | + with open(self.gen_file, 'w') as f: | |
66 | + f.write(txt) | |
67 | + logger.info("Saved rendered protocol in: %s", self.gen_file) | |
68 | + | |
58 | 69 | |
59 | 70 | @pytest.fixture |
60 | 71 | def generatedProtocol_verifier(T_Protocol): |
61 | 72 | def matcher(aigr_mock, td, save_file=False): |
62 | 73 | out = T_Protocol.render(protocols=(aigr_mock,)) |
63 | 74 | logger.debug("---------- out: (%s)----------\n%s", aigr_mock, out) |
75 | + | |
64 | 76 | if save_file: |
65 | - with open(td.gen_file, 'w') as f: | |
66 | - f.write(out) | |
67 | - logger.info("Saved rendered protocol in: %s", td.gen_file) | |
68 | - ref = open(td.ref_file).read() | |
69 | - logger.debug("---------- ref: ----------\n%s\n==========================", out) | |
77 | + td.write_gen(out) | |
70 | 78 | |
71 | - #assert line by line: gives better feedback when they do not match | |
72 | - for n, (o,r) in enumerate(zip(out.splitlines(keepends=True), ref.splitlines(keepends=True), strict=True)): | |
73 | - assert o == r, "line %s does not match: >>%s<< != <<%s>>" % (n, o.strip('\n'), r.strip('\n')) | |
79 | + ref = td.read_ref() | |
80 | + try: | |
81 | + #assert line by line: gives better feedback when they do not match | |
82 | + for n, (o,r) in enumerate(zip(out.splitlines(keepends=True), ref.splitlines(keepends=True), strict=True)): | |
83 | + assert o == r, "line %s does not match: >>%s<< != <<%s>>" % (n, o.strip('\n'), r.strip('\n')) | |
84 | + except ValueError as err: | |
85 | + assert False, f"Note the same length: files {td.gen_file} and {td.ref_file}" | |
86 | + | |
74 | 87 | assert out == ref #Should be needed |
75 | 88 | return matcher |
76 | 89 |