Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Révision | bbe50c1150adc02cffc1f2ee736d873616af60a2 (tree) |
---|---|
l'heure | 2023-10-03 20:12:46 |
Auteur | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
Refactored pytst on protocol-file-generation even more
@@ -1,6 +1,7 @@ | ||
1 | -default: all | |
1 | +default: most | |
2 | 2 | |
3 | -all: current demo test mutmut pyanalyse XXX missing todo diff_TestDoubles | |
3 | +all: most current demo test mutmut pyanalyse XXX missing todo | |
4 | +most: current test mutmut pyanalyse todo | |
4 | 5 | |
5 | 6 | NOTES: CC2CpyNote |
6 | 7 | include Mk/RPy.mk |
@@ -28,15 +29,12 @@ | ||
28 | 29 | include Mk/testing.mk |
29 | 30 | include Mk/helpful.mk |
30 | 31 | |
31 | -diff_TestDoubles: | |
32 | - diff -w -rs TestDoubles/reference/ TestDoubles/_generated/ | |
33 | - | |
34 | 32 | missing: missing_visitor missing_serialization |
35 | 33 | open: coverage-open mutmut-open |
36 | 34 | remake: veryclean coverage mutmut open |
37 | 35 | |
38 | -clean_generated: | |
39 | - rm -f TestDoubles/_generated/*.* TestDoubles/_generated/*/*.* | |
36 | +clean_generated:; #None | |
37 | + | |
40 | 38 | clean_caches: |
41 | 39 | find . -type d -name __pycache__ -print0 | xargs -0 rm -r |
42 | 40 | find . -type d -name .pytest_cache -print0 | xargs -0 rm -r |
@@ -1,12 +1,10 @@ | ||
1 | 1 | # (C) Albert Mietus, 2023. Part of Castle/CCastle project -- PYTEST init for RPY |
2 | +import logging; logger = logging.getLogger(__name__) | |
2 | 3 | |
3 | -import logging; logger = logging.getLogger(__name__) | |
4 | 4 | import pytest |
5 | - | |
6 | 5 | from pathlib import Path |
7 | 6 | import os |
8 | 7 | from dataclasses import dataclass |
9 | - | |
10 | 8 | from castle.aigr import Event, Protocol |
11 | 9 | from castle.writers import RPy |
12 | 10 |
@@ -24,7 +22,6 @@ | ||
24 | 22 | return RPy.Template("ProtocolDataStructures.jinja2") |
25 | 23 | |
26 | 24 | |
27 | - | |
28 | 25 | def assert_marker(marker, txt, need=None, msg=None): |
29 | 26 | lines = txt.splitlines() |
30 | 27 | c = sum(1 if (marker in line) else 0 for line in lines) |
@@ -42,10 +39,10 @@ | ||
42 | 39 | return txt +'\n' if (txt[-1] != '\n') else txt |
43 | 40 | |
44 | 41 | |
45 | - | |
46 | 42 | class TstDoubles(): |
47 | 43 | _top = Path('TestDoubles') |
48 | - _ref, _gen = Path('reference'), Path('_generated') | |
44 | + _ref = Path('reference') | |
45 | + #_ref = Path('_generated') #Not used anymore | |
49 | 46 | |
50 | 47 | def __init__(self, base_name): |
51 | 48 | self.base_name = Path(base_name) |
@@ -54,8 +51,15 @@ | ||
54 | 51 | def ref_file(self, ext='.rpy'): |
55 | 52 | return self._top / self._ref / self.base_name.with_suffix(ext) |
56 | 53 | |
57 | - @property | |
58 | - def gen_file(self, ext='.rpy'): | |
59 | - return self._top / self._gen / self.base_name.with_suffix(ext) | |
54 | + #@property | |
55 | + #def gen_file(self, ext='.rpy'): | |
56 | + # return self._top / self._gen / self.base_name.with_suffix(ext) | |
60 | 57 | |
61 | 58 | |
59 | +@pytest.fixture | |
60 | +def generatedProtocol_verifier(T_Protocol): | |
61 | + def matcher(aigr_mock, td): | |
62 | + out = T_Protocol.render(protocols=(aigr_mock,)) | |
63 | + ref = open(td.ref_file).read() | |
64 | + assert out == ref | |
65 | + return matcher |
@@ -8,7 +8,7 @@ | ||
8 | 8 | from . import * |
9 | 9 | from castle.writers import RPy |
10 | 10 | |
11 | -my_dir = get_dirPath_of_file(__file__) | |
11 | +my_dir = get_dirPath_of_file(__file__) | |
12 | 12 | template_r_dir = "./templates/" |
13 | 13 | template_a_dir = my_dir / template_r_dir |
14 | 14 |
@@ -1,24 +1,10 @@ | ||
1 | 1 | # (C) Albert Mietus, 2023. Part of Castle/CCastle project |
2 | - | |
3 | 2 | import logging; logger = logging.getLogger(__name__) |
4 | -import filecmp | |
5 | 3 | |
6 | 4 | import pytest |
7 | - | |
8 | 5 | from TestDoubles.AIGR.protocols import Sieve |
9 | - | |
10 | -from . import T_Protocol, TstDoubles | |
11 | -from castle.writers import RPy | |
12 | - | |
13 | - | |
14 | -@pytest.fixture | |
15 | -def generatedProtocol_verifier(): | |
16 | - def matcher(aigr_mock, td): | |
17 | - template = RPy.Template("protocol.jinja2") | |
18 | - out = template.render(protocols=(aigr_mock,)) | |
19 | - ref = open(td.ref_file).read() | |
20 | - assert out == ref | |
21 | - return matcher | |
6 | +from . import TstDoubles, generatedProtocol_verifier, T_Protocol | |
7 | +##Note: T_Protocol is used in generatedProtocol_verifier; but need to be in this scope | |
22 | 8 | |
23 | 9 | |
24 | 10 | def test_01_StartSieve(generatedProtocol_verifier): |
@@ -31,5 +17,5 @@ | ||
31 | 17 | |
32 | 18 | @pytest.mark.skip("After SlowStart") |
33 | 19 | def test_03_SimpleSieve(generatedProtocol_verifier): |
34 | - assert False | |
20 | + generatedProtocol_verifier(aigr_mock=Sieve.SimpleSieve, td=TstDoubles('protocols/SimpleSieve')) | |
35 | 21 |