def test_advised_manifest_changes(self, state: State, context: Context) -> None: """Test advising changes in the manifest files.""" prescription_str = """ name: WrapUnit type: wrap should_include: times: 1 adviser_pipeline: true match: state: resolved_dependencies: - name: intel-tensorflow run: advised_manifest_changes: apiVersion: apps.openshift.io/v1 kind: DeploymentConfig patch: op: add path: /spec/template/spec/containers/0/env/0 value: name: OMP_NUM_THREADS value: "1" """ prescription = yaml.safe_load(prescription_str) PRESCRIPTION_WRAP_SCHEMA(prescription) WrapPrescription.set_prescription(prescription) state.add_resolved_dependency(("intel-tensorflow", "2.2.0", "https://pypi.org/simple")) state.justification.clear() assert state.advised_manifest_changes == [] unit = WrapPrescription() unit.pre_run() with unit.assigned_context(context): assert unit.run(state) is None assert state.advised_manifest_changes == [ { "apiVersion": "apps.openshift.io/v1", "kind": "DeploymentConfig", "patch": { "op": "add", "path": "/spec/template/spec/containers/0/env/0", "value": {"name": "OMP_NUM_THREADS", "value": "1"}, }, } ]
def test_run_develop(self, context: Context, state: State, develop: bool) -> None: """Test running this pipeline unit based on matching develop flag.""" prescription_str = f""" name: WrapUnit type: wrap should_include: times: 1 adviser_pipeline: true match: state: resolved_dependencies: - name: flask develop: {'true' if develop else 'false'} run: justification: - type: INFO message: This message will be shown link: https://thoth-station.ninja """ prescription = yaml.safe_load(prescription_str) PRESCRIPTION_WRAP_SCHEMA(prescription) WrapPrescription.set_prescription(prescription) package_version = PackageVersion( name="flask", version="==2.0.1", index=Source("https://pypi.org/simple"), develop=develop, ) state.add_resolved_dependency(package_version.to_tuple()) context.register_package_version(package_version) state.justification.clear() unit = WrapPrescription() unit.pre_run() with unit.assigned_context(context): assert unit.run(state) is None # Run one more time to verify justification is added only once. assert unit.run(state) is None assert state.justification == unit.run_prescription["justification"]
def test_run_no_match(self, context: Context, state: State) -> None: """Test running this pipeline unit without match.""" prescription_str = """ name: WrapUnit type: wrap should_include: times: 1 adviser_pipeline: true match: state: resolved_dependencies: - name: flask version: "<=1.0.0,>=0.12" index_url: "https://pypi.org/simple" - name: connexion version: "==2.7.0" index_url: "https://pypi.org/simple" run: stack_info: - type: ERROR message: This message will not be shown link: https://pypi.org/project/connexion """ prescription = yaml.safe_load(prescription_str) PRESCRIPTION_WRAP_SCHEMA(prescription) WrapPrescription.set_prescription(prescription) state.add_resolved_dependency( ("flask", "0.12", "https://pypi.org/simple")) state.add_resolved_dependency( ("connexion", "2.0.0", "https://pypi.org/simple")) assert not context.stack_info unit = WrapPrescription() unit.pre_run() with unit.assigned_context(context): assert unit.run(state) is None assert not context.stack_info