From f80f5b4c0fef6ed33a9c64e5e5238076f8243d36 Mon Sep 17 00:00:00 2001 From: Enrico Regge Date: Mon, 27 Mar 2023 22:54:47 +0200 Subject: [PATCH 1/2] fix(ci): updated travis config (#13) --- .travis_public.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis_public.yml b/.travis_public.yml index a2cfab5..1a26441 100644 --- a/.travis_public.yml +++ b/.travis_public.yml @@ -34,7 +34,7 @@ deploy: - provider: pypi user: __token__ password: - secure: H6pxBCHf26B/9qi/3I6W7NkXnSwbPq04GiD06/z6MfZZkM2QQhbwFvDE55BrLhDskbpSEDNH18JuHMlDKu/ihNjDGw7dVnMTjs1/Uf1QlbrZRRtMhQBp3OuVRmE1mPc1PfYyYZlfqDQZkV6oz7NHI69x6Nz68Ltq6S+FaTT/8C72MoF3E4+ea6i/m8FRrxL6XS4ak7eXP1sKWPg3Sf7uEFwYsAWI/gcpjw2mnrqNCJWXkQmbVwWawo1GbfvIAs7ykhWkyZL+heuagdTmE9XEnnXrInp+U9ean5TcS1RMtDHzfB1TndVDxzZQBPwpXR7CdJcBft/NI2h/qA9xQr2DeC5BVLe5UvlPjIQ8KPK6wy2HOi2XwvXJZ3AVRyXPhujr3eLe8wFW/g9k/RPqs1ptwMYSav62gaPzZQzt3fj4dqLblj+nlZE+pAPS1K4Yr+vDQ6JqPhvK4e3f/kg64BjgDdM5aHPWsAvRaMZ6elS3N1v3I5bDxcS0YkdHtbESJUyI/72BZL8svYFOiUi5kmYGM+/VizBE1Ld2nRFH4MpGAQn0AmoR/Wr0WViEQCNoSRHswZxqidudi/tNuMx/w/P/tx8b34s0A1YG/638jaNnIYyWseBSyY465GzgzLbKe4//qO4G38PCieWqP55aULPNDdddFrW02hzwQ/U/PznI8hg= + secure: rY5xzjHyKA/F8VQWr5+7bi3JlxFSgbf26jSXlB1KGRhfVFK+pnk6o/SiRnrbMzkKBa3ApfLXTaNLq50rkVGgMHfYg5+bDxGcNt19YcLVqi2geEOOdOFBoBLQmg/mkYJEfvKZJPNjBcX8RntR0Z94N7sEXgoDU3ilbO0P72WZ5AQSL6VqZGKgoltuiultkRdox34r1cCMVDS9Rtg8DkJP81mNGn4orYavmQBJy8SWsy+4oOXJACIGtN2MA59ZmcIhHCqwmcBno40rDo1ANxt+8cAqPJkLosuF+64R8L/Hc3Vo3DVFd2DuREt5PfuSj8ZzfsA1xIrArsXnYCbc54agdUW/fMsOEK5YejfAV4M0Dp7X5xWHfAm2n/9pPYxRLsRKlUxgXbCK9quG2JjPsulbW6P99OgusqQVe0z/q9Y39Q0bcUvtjo04oFIWPqrRWt4ejgFm10R/+kymoZbfkRGXVJNFnUkxJuXGTnRDOjUlOh/qUwpXmevLPMllPKcV1qig69GWaPfPgQF0h0d7Yd38AgKN4+yBfkK4Tb7Dh7n53n/rvINh3l9s3ctcyluqUta+TO34BAzwwSM52F5VMQYKzrXTfMTjxmhRCPpeUHf+tTKVi344BMo8sjddsUxrhZBgYRnH9RmvK7q27vrf2yqsg+T7QUjEGRETid/+dZHSWtQ= repository: https://upload.pypi.org/legacy skip_cleanup: true on: From 6ca26f40ba3f6f2f09cd6bedaf7d6c9fc87cb7d8 Mon Sep 17 00:00:00 2001 From: John Sartore Date: Mon, 27 Mar 2023 16:55:50 -0400 Subject: [PATCH 2/2] SDK update 20230327-165550 Signed-off-by: John Sartore --- .bumpversion.cfg | 16 ------ .npmrc | 1 - .releaserc | 23 --------- .travis.yml | 32 ++++++------ .travis_public.yml | 42 ---------------- CHANGELOG.md | 93 ----------------------------------- example/README.md | 57 --------------------- example/example.py | 65 ------------------------ example/example_deprecated.py | 52 -------------------- package.json | 15 ------ sdkgen_config.json | 6 --- test-integration.sh | 29 ----------- 12 files changed, 14 insertions(+), 417 deletions(-) delete mode 100644 .bumpversion.cfg delete mode 100644 .npmrc delete mode 100644 .releaserc delete mode 100644 .travis_public.yml delete mode 100644 CHANGELOG.md delete mode 100644 example/README.md delete mode 100644 example/example.py delete mode 100644 example/example_deprecated.py delete mode 100644 package.json delete mode 100644 sdkgen_config.json delete mode 100755 test-integration.sh diff --git a/.bumpversion.cfg b/.bumpversion.cfg deleted file mode 100644 index a7b675c..0000000 --- a/.bumpversion.cfg +++ /dev/null @@ -1,16 +0,0 @@ -[bumpversion] -current_version = 3.1.0 -commit = True -message = Update version {current_version} -> {new_version} - -[bumpversion:file:ibm_code_engine_sdk/version.py] -search = __version__ = '{current_version}' -replace = __version__ = '{new_version}' - -[bumpversion:file:setup.py] -search = __version__ = '{current_version}' -replace = __version__ = '{new_version}' - -[bumpversion:file:README.md] -search = {current_version} -replace = {new_version} diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 9cf9495..0000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -package-lock=false \ No newline at end of file diff --git a/.releaserc b/.releaserc deleted file mode 100644 index dcd2868..0000000 --- a/.releaserc +++ /dev/null @@ -1,23 +0,0 @@ -{ - "debug": true, - "branches": [ "main" ], - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - "@semantic-release/changelog", - [ - "@semantic-release/exec", - { - "prepareCmd": "bump2version --allow-dirty --current-version ${lastRelease.version} --new-version ${nextRelease.version} patch" - } - ], - [ - "@semantic-release/git", - { - "assets" : [ "CHANGELOG.md" ], - "message": "chore(release): ${nextRelease.version} release notes\n\n${nextRelease.notes}" - } - ], - "@semantic-release/github" - ] -} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 4b289b5..1a26441 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ dist: bionic language: python -python: - - "3.11" cache: pip @@ -10,16 +8,17 @@ cache: pip branches: only: - main + - /v\d+.\d+.\d+/ notifications: email: true -before_install: -# create an .env file that is pulled in while executing the v2 integration tests -- echo "CODE_ENGINE_URL=https://$CE_API_HOST/v2" > code_engine_v2.env -- echo "CODE_ENGINE_AUTH_TYPE=iam" >> code_engine_v2.env -- echo "CODE_ENGINE_APIKEY=$CE_API_KEY" >> code_engine_v2.env -- echo "CODE_ENGINE_AUTH_URL=$IAM_ENDPOINT" >> code_engine_v2.env +matrix: + include: + - python: '3.7' + - python: '3.8' + - python: '3.9' + - python: '3.10' install: - sudo apt-get update @@ -30,17 +29,14 @@ install: script: - make ci -- make test-int - -before_deploy: -- nvm install 14 -- npm install -- pip install bump2version deploy: -# Use semantic release to create a tag and release on each commit to the main branch -- provider: script - script: npm run semantic-release +- provider: pypi + user: __token__ + password: + secure: rY5xzjHyKA/F8VQWr5+7bi3JlxFSgbf26jSXlB1KGRhfVFK+pnk6o/SiRnrbMzkKBa3ApfLXTaNLq50rkVGgMHfYg5+bDxGcNt19YcLVqi2geEOOdOFBoBLQmg/mkYJEfvKZJPNjBcX8RntR0Z94N7sEXgoDU3ilbO0P72WZ5AQSL6VqZGKgoltuiultkRdox34r1cCMVDS9Rtg8DkJP81mNGn4orYavmQBJy8SWsy+4oOXJACIGtN2MA59ZmcIhHCqwmcBno40rDo1ANxt+8cAqPJkLosuF+64R8L/Hc3Vo3DVFd2DuREt5PfuSj8ZzfsA1xIrArsXnYCbc54agdUW/fMsOEK5YejfAV4M0Dp7X5xWHfAm2n/9pPYxRLsRKlUxgXbCK9quG2JjPsulbW6P99OgusqQVe0z/q9Y39Q0bcUvtjo04oFIWPqrRWt4ejgFm10R/+kymoZbfkRGXVJNFnUkxJuXGTnRDOjUlOh/qUwpXmevLPMllPKcV1qig69GWaPfPgQF0h0d7Yd38AgKN4+yBfkK4Tb7Dh7n53n/rvINh3l9s3ctcyluqUta+TO34BAzwwSM52F5VMQYKzrXTfMTjxmhRCPpeUHf+tTKVi344BMo8sjddsUxrhZBgYRnH9RmvK7q27vrf2yqsg+T7QUjEGRETid/+dZHSWtQ= + repository: https://upload.pypi.org/legacy skip_cleanup: true on: - branch: main \ No newline at end of file + python: '3.10' + tags: true \ No newline at end of file diff --git a/.travis_public.yml b/.travis_public.yml deleted file mode 100644 index 1a26441..0000000 --- a/.travis_public.yml +++ /dev/null @@ -1,42 +0,0 @@ -dist: bionic - -language: python - -cache: pip - -# Only run on main (still tests PRs) -branches: - only: - - main - - /v\d+.\d+.\d+/ - -notifications: - email: true - -matrix: - include: - - python: '3.7' - - python: '3.8' - - python: '3.9' - - python: '3.10' - -install: -- sudo apt-get update -- sudo apt-get install pandoc -- pip install pypandoc -- echo -e "machine github.ibm.com\n login $GITHUB_OAUTH_TOKEN" > ~/.netrc -- pip install setuptools=="60.8.2" - -script: -- make ci - -deploy: -- provider: pypi - user: __token__ - password: - secure: rY5xzjHyKA/F8VQWr5+7bi3JlxFSgbf26jSXlB1KGRhfVFK+pnk6o/SiRnrbMzkKBa3ApfLXTaNLq50rkVGgMHfYg5+bDxGcNt19YcLVqi2geEOOdOFBoBLQmg/mkYJEfvKZJPNjBcX8RntR0Z94N7sEXgoDU3ilbO0P72WZ5AQSL6VqZGKgoltuiultkRdox34r1cCMVDS9Rtg8DkJP81mNGn4orYavmQBJy8SWsy+4oOXJACIGtN2MA59ZmcIhHCqwmcBno40rDo1ANxt+8cAqPJkLosuF+64R8L/Hc3Vo3DVFd2DuREt5PfuSj8ZzfsA1xIrArsXnYCbc54agdUW/fMsOEK5YejfAV4M0Dp7X5xWHfAm2n/9pPYxRLsRKlUxgXbCK9quG2JjPsulbW6P99OgusqQVe0z/q9Y39Q0bcUvtjo04oFIWPqrRWt4ejgFm10R/+kymoZbfkRGXVJNFnUkxJuXGTnRDOjUlOh/qUwpXmevLPMllPKcV1qig69GWaPfPgQF0h0d7Yd38AgKN4+yBfkK4Tb7Dh7n53n/rvINh3l9s3ctcyluqUta+TO34BAzwwSM52F5VMQYKzrXTfMTjxmhRCPpeUHf+tTKVi344BMo8sjddsUxrhZBgYRnH9RmvK7q27vrf2yqsg+T7QUjEGRETid/+dZHSWtQ= - repository: https://upload.pypi.org/legacy - skip_cleanup: true - on: - python: '3.10' - tags: true \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index d6e1c17..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,93 +0,0 @@ -# [3.1.0](https://github.ibm.com/coligo/python-sdk/compare/v3.0.0...v3.1.0) (2023-03-24) - - -### Features - -* **api:** added support to retrieve egress ips ([dcc340f](https://github.ibm.com/coligo/python-sdk/commit/dcc340f4f177bb31faa2de3acff97304cf8bce1f)) - -# [3.0.0](https://github.ibm.com/coligo/python-sdk/compare/v2.0.3...v3.0.0) (2023-03-23) - - -### Features - -* **oneOf:** addeed type support for secret data types ([#9](https://github.ibm.com/coligo/python-sdk/issues/9)) ([6dd33d2](https://github.ibm.com/coligo/python-sdk/commit/6dd33d2dca8663d65d00c4e5694bfa11abbb5d22)) - - -### BREAKING CHANGES - -* **oneOf:** new classes for each secret data type added - -* test fix - -* test fix - -* added more secret examples - -* updated to latest openAPI, added oneOf for secret updates - -* udpated timeout on int test - -* increase timeout - -* adjust timeout - -* removed retries - -* set retries to 0 - -* udpated retry interval - -* sleep adjust - -* removed loop, depending on python retry - -* increased project sleep to 2 minutes before trying get - -* moved sleep - -* fixed timestamp name, will removed security alerts - -## [2.0.3](https://github.ibm.com/coligo/python-sdk/compare/v2.0.2...v2.0.3) (2023-01-25) - - -### Bug Fixes - -* **ci:** updated pypi token ([ecfc0ba](https://github.ibm.com/coligo/python-sdk/commit/ecfc0bad61bb7ae88bbbcfdf2326055715febd2f)) - -## [2.0.2](https://github.ibm.com/coligo/python-sdk/compare/v2.0.1...v2.0.2) (2023-01-25) - - -### Bug Fixes - -* **ci:** adjusted branch configuration of travis ([dc9e46e](https://github.ibm.com/coligo/python-sdk/commit/dc9e46e2eb4544f2af6e24d607309a422a801a66)) - -## [2.0.1](https://github.ibm.com/coligo/python-sdk/compare/v2.0.0...v2.0.1) (2023-01-25) - - -### Bug Fixes - -* **ci:** added encrypted pypi deploy key ([#8](https://github.ibm.com/coligo/python-sdk/issues/8)) ([729d82b](https://github.ibm.com/coligo/python-sdk/commit/729d82b3fb1bf8e0b550041451d05a3c1d78f80d)) - -# [2.0.0](https://github.ibm.com/coligo/python-sdk/compare/v1.0.0...v2.0.0) (2023-01-24) - - -### Features - -* **ci:** ready for v2 ([#7](https://github.ibm.com/coligo/python-sdk/issues/7)) ([b5eea13](https://github.ibm.com/coligo/python-sdk/commit/b5eea1399e835a3b913add7687e05ed376e87031)) - - -### BREAKING CHANGES - -* **ci:** v2.0.0 - -# [1.0.0](https://github.ibm.com/coligo/python-sdk/compare/v0.1.0...v1.0.0) (2023-01-21) - - -### Features - -* **build:** release v1 ([#6](https://github.ibm.com/coligo/python-sdk/issues/6)) ([160b7d1](https://github.ibm.com/coligo/python-sdk/commit/160b7d1ac4855a0eb7e6c534c2acb500fa65695f)) - - -### BREAKING CHANGES - -* **build:** marks v1.0.0 of this repository diff --git a/example/README.md b/example/README.md deleted file mode 100644 index 5c366b9..0000000 --- a/example/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Code Engine Python SDK Example - -## Running example.py - -To run the example, create a Code Engine project from the Console or Code Engine CLI, and run the following commands from this directory: -1. `pip install kubernetes` -2. `export CE_API_KEY=` -3. `export CE_PROJECT_ID=` -4. `export CE_PROJECT_REGION=` -5. `python example.py` - -Note: Requires Python 3.6 or later. - -## How-to - -### Set up an authenticator -```python -authenticator = IAMAuthenticator( - apikey=os.environ.get('CE_API_KEY'), - client_id='bx', - client_secret='bx', -) -``` - -### Set up a Code Engine client -```python -ce_client = IbmCloudCodeEngineV1(authenticator=authenticator) -ce_client.set_service_url( - 'https://api.' + os.environ.get('CE_PROJECT_REGION') + '.codeengine.cloud.ibm.com/api/v1' -) -``` - -### Use an HTTP library to get a Delegated Refresh Token from IAM -```python -iam_response = requests.post('https://iam.cloud.ibm.com/identity/token', headers={ - 'Content-Type': 'application/x-www-form-urlencoded' -}, data={ - 'grant_type': 'urn:ibm:params:oauth:grant-type:apikey', - 'apikey': os.environ.get('CE_API_KEY'), - 'response_type': 'delegated_refresh_token', - 'receiver_client_ids': 'ce', - 'delegated_refresh_token_expiry': '3600' -}) -delegated_refresh_token = iam_response.json()['delegated_refresh_token'] -``` - -### Use the Code Engine client to get a Kubernetes config -```python -kubeconfig_response = ce_client.get_kubeconfig( - x_delegated_refresh_token=delegated_refresh_token, - id=os.environ.get('CE_PROJECT_ID'), -) -kubeconfig_string = kubeconfig_response.get_result().content -``` - -## Deprecated endpoint -The `/namespaces/{id}/config` endpoint function, `list_kubeconfig()`, is deprecated, and will be removed before Code Engine is out of Beta. Please use the `get_kubeconfig()` function, demonstrated in the example above. diff --git a/example/example.py b/example/example.py deleted file mode 100644 index 168a691..0000000 --- a/example/example.py +++ /dev/null @@ -1,65 +0,0 @@ -""" -Example of IBM Cloud Code Engine SDK usage -""" - -import os -import tempfile -import kubernetes -import requests -import json -from ibm_code_engine_sdk.ibm_cloud_code_engine_v1 import IbmCloudCodeEngineV1 -from ibm_cloud_sdk_core.authenticators import IAMAuthenticator - -if ( - os.environ.get('CE_API_KEY') == None - or os.environ.get('CE_PROJECT_REGION') == None - or os.environ.get('CE_PROJECT_ID') == None -): - print( - 'You must set the envrionment variables CE_API_KEY, CE_PROJECT_REGION and CE_PROJECT_ID ' - + 'before using the example.' - ) - -# Create an IAM authenticator. -authenticator = IAMAuthenticator( - apikey=os.environ.get('CE_API_KEY'), - client_id='bx', - client_secret='bx', -) - -# Construct the Code Engine client. -ce_client = IbmCloudCodeEngineV1(authenticator=authenticator) -ce_client.set_service_url('https://api.' + os.environ.get('CE_PROJECT_REGION') + '.codeengine.cloud.ibm.com/api/v1') - -# Get a Delegated Refresh Token from IAM -iam_response = requests.post( - 'https://iam.cloud.ibm.com/identity/token', - headers={'Content-Type': 'application/x-www-form-urlencoded'}, - data={ - 'grant_type': 'urn:ibm:params:oauth:grant-type:apikey', - 'apikey': os.environ.get('CE_API_KEY'), - 'response_type': 'delegated_refresh_token', - 'receiver_client_ids': 'ce', - 'delegated_refresh_token_expiry': '3600', - }, -) -delegated_refresh_token = iam_response.json()['delegated_refresh_token'] - -# Get Code Engine project config using the Code Engine client. -kubeconfig_response = ce_client.get_kubeconfig( - x_delegated_refresh_token=delegated_refresh_token, - id=os.environ.get('CE_PROJECT_ID'), -) -kubeconfig_string = kubeconfig_response.get_result().content - -# Setup Kubernetes client using project config -kubeconfig_file, kubeconfig_filename = tempfile.mkstemp() -os.write(kubeconfig_file, kubeconfig_string) -kubernetes.config.load_kube_config(config_file=kubeconfig_filename) -kube_client = kubernetes.client.CoreV1Api() - -# Get something from project. -contexts = kubernetes.config.list_kube_config_contexts(config_file=kubeconfig_filename)[0][0] -namespace = contexts.get('context').get('namespace') -configmaps = kube_client.list_namespaced_config_map(namespace) -print('Project ' + os.environ.get('CE_PROJECT_ID') + ' has ' + str(len(configmaps.items)) + ' configmaps.') diff --git a/example/example_deprecated.py b/example/example_deprecated.py deleted file mode 100644 index 36d78ea..0000000 --- a/example/example_deprecated.py +++ /dev/null @@ -1,52 +0,0 @@ -""" -Example of IBM Cloud Code Engine SDK usage -""" - -import os -import tempfile -import kubernetes -from ibm_code_engine_sdk.ibm_cloud_code_engine_v1 import IbmCloudCodeEngineV1 -from ibm_cloud_sdk_core.authenticators import IAMAuthenticator - -if ( - os.environ.get('CE_API_KEY') == None - or os.environ.get('CE_PROJECT_REGION') == None - or os.environ.get('CE_PROJECT_ID') == None -): - print( - 'You must set the envrionment variables CE_API_KEY, CE_PROJECT_REGION and CE_PROJECT_ID ' - + 'before using the example.' - ) - -# Create an IAM authenticator. -authenticator = IAMAuthenticator( - apikey=os.environ.get('CE_API_KEY'), - client_id='bx', - client_secret='bx', -) - -# Construct the Code Engine client. -ce_client = IbmCloudCodeEngineV1(authenticator=authenticator) -ce_client.set_service_url('https://api.' + os.environ.get('CE_PROJECT_REGION') + '.codeengine.cloud.ibm.com/api/v1') - -# Get IAM tokens using the authenticator -refresh_token = authenticator.token_manager.request_token().get('refresh_token') - -# Get Code Engine project config using the Code Engine client. -kubeconfig_response = ce_client.list_kubeconfig( - refresh_token=refresh_token, - id=os.environ.get('CE_PROJECT_ID'), -) -kubeconfig_string = kubeconfig_response.get_result().content - -# Setup Kubernetes client using project config -kubeconfig_file, kubeconfig_filename = tempfile.mkstemp() -os.write(kubeconfig_file, kubeconfig_string) -kubernetes.config.load_kube_config(config_file=kubeconfig_filename) -kube_client = kubernetes.client.CoreV1Api() - -# Get something from project. -contexts = kubernetes.config.list_kube_config_contexts(config_file=kubeconfig_filename)[0][0] -namespace = contexts.get('context').get('namespace') -configmaps = kube_client.list_namespaced_config_map(namespace) -print('Project ' + os.environ.get('CE_PROJECT_ID') + ' has ' + str(len(configmaps.items)) + ' configmaps.') diff --git a/package.json b/package.json deleted file mode 100644 index 86fc6e3..0000000 --- a/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "semantic-release-dependencies", - "version": "0.0.0", - "description": "This package.json is being used to manage semantic-release and its dependencies", - "license": "Apache-2.0", - "devDependencies": { - "semantic-release": "19.0.5", - "@semantic-release/changelog": "6.0.2", - "@semantic-release/exec": "6.0.3", - "@semantic-release/git": "10.0.1" - }, - "scripts": { - "semantic-release": "semantic-release" - } -} diff --git a/sdkgen_config.json b/sdkgen_config.json deleted file mode 100644 index 70dcdd3..0000000 --- a/sdkgen_config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "apiPackage": "ibm_code_engine_sdk", - "serviceClass": "CodeEngineV2", - "unitTestFolder": "test/unit/", - "intTestFolder": "test/integration" -} diff --git a/test-integration.sh b/test-integration.sh deleted file mode 100755 index a636808..0000000 --- a/test-integration.sh +++ /dev/null @@ -1,29 +0,0 @@ -# Code Engine Python SDK Integration tests -# Requires the following env. variables (provdied to TravisCI) -# - CE_API_KEY: IBM Cloud API Key -# - CE_PROJECT_ID: GUID of Code Engine project to target -# - CE_PROJECT_REGION: region for API URL - -echo "Running integration tests..." - -# Install dependencies -pip install kubernetes - -# Run example, get exit code -exampleoutput=$(python example/example.py) -exampleexit=$? -if [ $exampleexit -ne 0 ]; then - echo "Integration tests failed with exit code $exampleexit" - echo $exampleoutput - exit $exampleexit -fi - -# Check if output is expected -outputcheck="2 configmaps" -if [[ $exampleoutput != *$outputcheck* ]]; then - echo "Intergration test output is incorrect:" - echo "Expected '$exampleoutput' to contain '$outputcheck'" - exit 1 -fi - -echo "Success!" \ No newline at end of file