def test_run_procedure(tmp_path): """Tests qcengine run-procedure with geometric, psi4, and JSON input""" def check_result(stdout): output = json.loads(stdout) assert output["provenance"]["creator"].lower() == "geometric" assert output["success"] is True inp = {"schema_name": "qcschema_optimization_input", "schema_version": 1, "keywords": { "coordsys": "tric", "maxiter": 100, "program": "psi4" }, "input_specification": { "schema_name": "qcschema_input", "schema_version": 1, "driver": "gradient", "model": {"method": "HF", "basis": "sto-3g"}, "keywords": {}, }, "initial_molecule": get_molecule("hydrogen")} inp = OptimizationInput(**inp) args = ["run-procedure", "geometric", inp.json()] check_result(run_qcengine_cli(args)) args = ["run-procedure", "geometric", os.path.join(tmp_path, "input.json")] with util.disk_files({"input.json": inp.json()}, {}, cwd=tmp_path): check_result(run_qcengine_cli(args)) args = ["run-procedure", "geometric", inp.json()] check_result(run_qcengine_cli(args, stdin=inp.json()))
def test_optimization_pass_serialization(water, opti_input, opti_success): opti_in = OptimizationInput(initial_molecule=water, **opti_input) assert isinstance(opti_in.dict(), dict) assert isinstance(opti_in.json(), str) opti_out = Optimization(initial_molecule=water, **opti_input, **opti_success) assert isinstance(opti_out.dict(), dict) assert isinstance(opti_out.json(), str)