pytorch/test/export/test_serdes.py
Yiming Zhou e78a3e260b [export] Add serdes_non_strict to tests (#138662)
Summary: We expand the tests to cover serdes_non_strict. Currently failing tests are skipped.

Test Plan:
```
buck2 test @//mode/dev-nosan //caffe2/test:test_export -- -r _serdes_non_strict
```

Differential Revision: D64709285

Pull Request resolved: https://github.com/pytorch/pytorch/pull/138662
Approved by: https://github.com/avikchaudhuri
2024-10-24 21:35:32 +00:00

76 lines
1.8 KiB
Python

# Owner(s): ["oncall: export"]
import io
try:
from . import test_export, testing
except ImportError:
import test_export # @manual=fbcode//caffe2/test:test_export-library
import testing # @manual=fbcode//caffe2/test:test_export-library
from torch.export import export, load, save
test_classes = {}
def mocked_serder_export_strict(*args, **kwargs):
ep = export(*args, **kwargs)
buffer = io.BytesIO()
save(ep, buffer)
buffer.seek(0)
loaded_ep = load(buffer)
return loaded_ep
def mocked_serder_export_non_strict(*args, **kwargs):
if "strict" in kwargs:
ep = export(*args, **kwargs)
else:
ep = export(*args, **kwargs, strict=False)
buffer = io.BytesIO()
save(ep, buffer)
buffer.seek(0)
loaded_ep = load(buffer)
return loaded_ep
def make_dynamic_cls(cls, strict):
if strict:
test_class = testing.make_test_cls_with_mocked_export(
cls,
"SerDesExport",
test_export.SERDES_SUFFIX,
mocked_serder_export_strict,
xfail_prop="_expected_failure_serdes",
)
else:
test_class = testing.make_test_cls_with_mocked_export(
cls,
"SerDesExportNonStrict",
test_export.SERDES_NON_STRICT_SUFFIX,
mocked_serder_export_non_strict,
xfail_prop="_expected_failure_serdes_non_strict",
)
test_classes[test_class.__name__] = test_class
# REMOVING THIS LINE WILL STOP TESTS FROM RUNNING
globals()[test_class.__name__] = test_class
test_class.__module__ = __name__
tests = [
test_export.TestDynamismExpression,
test_export.TestExport,
]
for test in tests:
make_dynamic_cls(test, True)
make_dynamic_cls(test, False)
del test
if __name__ == "__main__":
from torch._dynamo.test_case import run_tests
run_tests()