first commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
"""Tests for stable public API surface.
|
||||
|
||||
The package may add a small number of necessary new APIs for graph/session and
|
||||
serialization, but internal implementation modules should not be advertised from
|
||||
the top-level namespace.
|
||||
"""
|
||||
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
|
||||
class TestPublicApiSurface(unittest.TestCase):
|
||||
def test_internal_modules_not_in___all__(self):
|
||||
import simplecadapi as scad
|
||||
|
||||
self.assertNotIn("tracking", scad.__all__)
|
||||
self.assertNotIn("autotag", scad.__all__)
|
||||
self.assertNotIn("topology", scad.__all__)
|
||||
self.assertNotIn("graph", scad.__all__)
|
||||
self.assertNotIn("serializer", scad.__all__)
|
||||
|
||||
def test_only_necessary_new_top_level_apis_are_present(self):
|
||||
code = """
|
||||
import json
|
||||
import simplecadapi as scad
|
||||
print(json.dumps({
|
||||
'has_tracking': hasattr(scad, 'tracking'),
|
||||
'has_autotag': hasattr(scad, 'autotag'),
|
||||
'has_topology': hasattr(scad, 'topology'),
|
||||
'has_graph_module': hasattr(scad, 'graph'),
|
||||
'has_serializer_module': hasattr(scad, 'serializer'),
|
||||
'has_graph_session': hasattr(scad, 'GraphSession'),
|
||||
'has_export_graph_json': hasattr(scad, 'export_graph_json'),
|
||||
'has_import_graph_json': hasattr(scad, 'import_graph_json'),
|
||||
'has_replay_graph': hasattr(scad, 'replay_graph'),
|
||||
'has_apply_tag': hasattr(scad, 'apply_tag'),
|
||||
'has_list_tags': hasattr(scad, 'list_tags'),
|
||||
'has_set_tag': hasattr(scad, 'set_tag'),
|
||||
}))
|
||||
"""
|
||||
proc = subprocess.run(
|
||||
[sys.executable, "-c", code],
|
||||
check=True,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
payload = json.loads(proc.stdout)
|
||||
|
||||
self.assertFalse(payload["has_tracking"])
|
||||
self.assertFalse(payload["has_autotag"])
|
||||
self.assertFalse(payload["has_topology"])
|
||||
self.assertFalse(payload["has_graph_module"])
|
||||
self.assertFalse(payload["has_serializer_module"])
|
||||
self.assertTrue(payload["has_graph_session"])
|
||||
self.assertTrue(payload["has_export_graph_json"])
|
||||
self.assertTrue(payload["has_import_graph_json"])
|
||||
self.assertTrue(payload["has_replay_graph"])
|
||||
self.assertTrue(payload["has_apply_tag"])
|
||||
self.assertTrue(payload["has_list_tags"])
|
||||
self.assertFalse(payload["has_set_tag"])
|
||||
Reference in New Issue
Block a user