From ca5dfb14010d6f4082a398d84a20d5e5d419f7f0 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:58:35 +0200 Subject: [PATCH 01/24] ADBPY-9: ADBPY-9: Add deploy workflow --- .github/workflows/deploy.yml | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..0d87d1d --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,39 @@ +# This workflow will upload a Python Package using Twine when a release is created +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: Upload Python Package + +on: + release: + types: [published] + +permissions: + contents: read + +jobs: + deploy: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v3 + with: + python-version: '3.11' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install build + - name: Build package + run: python -m build + - name: Publish package + uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} \ No newline at end of file From dbc7669636fb7bae3cc968e3fb39c0e84e8a1254 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Tue, 9 Apr 2024 15:27:19 +0200 Subject: [PATCH 02/24] ADBPY-9: Add changelog and up version --- CHANGELOG.md | 3 +++ setup.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 664c186..01434f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ ``` +v0.9 - Add Github action to release to PyPi +``` +``` v0.8 - Removed lru_cache function that caused get_prop output to be cached which is not advisable since these properties can change ``` ``` diff --git a/setup.py b/setup.py index 5ef36b3..96039cc 100644 --- a/setup.py +++ b/setup.py @@ -2,6 +2,6 @@ setup( name="adb_py", - version="0.8", + version="0.9", py_modules=["adb_py", "adb_init"], ) From cec8f3acc5cb953ef2e7ece861ece58ce5a4afd7 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Tue, 9 Apr 2024 15:39:11 +0200 Subject: [PATCH 03/24] ADBPY-9: Rename deploy.yml to publish.yml --- .github/workflows/{deploy.yml => publish.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{deploy.yml => publish.yml} (100%) diff --git a/.github/workflows/deploy.yml b/.github/workflows/publish.yml similarity index 100% rename from .github/workflows/deploy.yml rename to .github/workflows/publish.yml From 9164ccadcc22a95d19b5d7b6a9ff1d07241256ea Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Tue, 9 Apr 2024 15:39:29 +0200 Subject: [PATCH 04/24] ADBPY-9: Add inofrmation in setup --- setup.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup.py b/setup.py index 96039cc..d339a9f 100644 --- a/setup.py +++ b/setup.py @@ -3,5 +3,9 @@ setup( name="adb_py", version="0.9", + description="adb_py facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) " + "directly within Python scripts.", + author="Netherlands Forensic Institute", + licence="EUPL-1.2", py_modules=["adb_py", "adb_init"], ) From 56a68690f46cd25ccd78cadd09b5b444c2eb5ca5 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Tue, 9 Apr 2024 15:56:04 +0200 Subject: [PATCH 05/24] main: Add info in setup.py --- setup.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5ef36b3..fec2d49 100644 --- a/setup.py +++ b/setup.py @@ -2,6 +2,14 @@ setup( name="adb_py", - version="0.8", + version="0.9", + description="adb_py facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) " + "directly within Python scripts.", + long_description=open('README.md').read() + '\n\n' + open('CHANGELOG.txt').read(), + author="Netherlands Forensic Institute", + author_email="netherlandsforensicinstitute@users.noreply.github.com", + url="https://github.com/NetherlandsForensicInstitute/adb_py", + licence="EUPL-1.2", py_modules=["adb_py", "adb_init"], + test_suite="test", ) From a40bb5ca7fb6848c999dde02806aabadbcc67d6a Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Tue, 9 Apr 2024 16:03:18 +0200 Subject: [PATCH 06/24] main: Add long description to setup --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index fec2d49..29f4929 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ version="0.9", description="adb_py facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) " "directly within Python scripts.", - long_description=open('README.md').read() + '\n\n' + open('CHANGELOG.txt').read(), + long_description=f"{open('README.md').read()}", author="Netherlands Forensic Institute", author_email="netherlandsforensicinstitute@users.noreply.github.com", url="https://github.com/NetherlandsForensicInstitute/adb_py", From cffccb307d9f8c445f0ee05a33ff3a35e379cf73 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Tue, 9 Apr 2024 16:18:21 +0200 Subject: [PATCH 07/24] main: Add long description type and run tests before publishing --- .github/workflows/publish.yml | 4 +++- setup.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0d87d1d..f550d62 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -31,7 +31,9 @@ jobs: python -m pip install --upgrade pip pip install build - name: Build package - run: python -m build + run: | + python setup.py test + python -m build - name: Publish package uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 with: diff --git a/setup.py b/setup.py index 29f4929..9c16853 100644 --- a/setup.py +++ b/setup.py @@ -6,6 +6,7 @@ description="adb_py facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) " "directly within Python scripts.", long_description=f"{open('README.md').read()}", + long_description_content_type="text/markdown", author="Netherlands Forensic Institute", author_email="netherlandsforensicinstitute@users.noreply.github.com", url="https://github.com/NetherlandsForensicInstitute/adb_py", From 9a2e67e406a6438a7a0bf5eefc51d2102287626f Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Tue, 9 Apr 2024 16:33:32 +0200 Subject: [PATCH 08/24] main: Remove test step --- .github/workflows/publish.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f550d62..0d87d1d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -31,9 +31,7 @@ jobs: python -m pip install --upgrade pip pip install build - name: Build package - run: | - python setup.py test - python -m build + run: python -m build - name: Publish package uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 with: From b63cfd648f5f6b7253c9535353ad6ee5aa497b48 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 08:49:28 +0200 Subject: [PATCH 09/24] Trigger test before publishing --- .github/workflows/publish.yml | 13 +++++++++++-- .github/workflows/test.yml | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0d87d1d..f4aca71 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,10 +16,19 @@ permissions: contents: read jobs: - deploy: - + test: runs-on: ubuntu-latest + steps: + - name: Run tests + uses: NetherlandsForensicInstitute/adb_py/.github/workflows/test.yml@main + with: + wait_interval: 5 + propagate_failure: true + trigger_workflow: true + wait_workflow: true + publish: + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bee07be..6940090 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,6 +3,7 @@ on: push: branches: - '*' + workflow_call: jobs: build: From 10654a15762d47962e23e3da1ea6f5c38983e958 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 08:55:47 +0200 Subject: [PATCH 10/24] Move triggered pipeline out of steps --- .github/workflows/publish.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f4aca71..0621917 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -17,15 +17,13 @@ permissions: jobs: test: - runs-on: ubuntu-latest - steps: - - name: Run tests - uses: NetherlandsForensicInstitute/adb_py/.github/workflows/test.yml@main - with: - wait_interval: 5 - propagate_failure: true - trigger_workflow: true - wait_workflow: true + name: Run tests + uses: NetherlandsForensicInstitute/adb_py/.github/workflows/test.yml@main + with: + wait_interval: 2 + propagate_failure: true + trigger_workflow: true + wait_workflow: true publish: runs-on: ubuntu-latest From 7123adb892037d309e9b109d800afb5eec25cfbd Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 09:01:04 +0200 Subject: [PATCH 11/24] Change workflow call to workflow dispatch --- .github/workflows/publish.yml | 7 +++++-- .github/workflows/test.yml | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0621917..aa062db 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,8 +9,11 @@ name: Upload Python Package on: - release: - types: [published] + push: + branches: + - main +# release: +# types: [published] permissions: contents: read diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6940090..148b9be 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,7 +3,7 @@ on: push: branches: - '*' - workflow_call: + workflow_dispatch: jobs: build: From a67d89062b364fa3f12cfc7dee5d55dfa1247905 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 09:10:11 +0200 Subject: [PATCH 12/24] Add inputs to test --- .github/workflows/test.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 148b9be..856bab9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,7 +3,11 @@ on: push: branches: - '*' - workflow_dispatch: + workflow_call: + wait_interval: + propagate_failure: + trigger_workflow: + wait_workflow: jobs: build: From 28a7ccefaa62e9f3c8b1e7372dc4ed02bf4948da Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 09:27:46 +0200 Subject: [PATCH 13/24] Duplicate test workflow in publish.yml --- .github/workflows/publish.yml | 39 ++++++++++++++++++++++++++++------- .github/workflows/test.yml | 5 ----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index aa062db..f3afc60 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,14 +19,39 @@ permissions: contents: read jobs: +# TODO issue #11: deduplicate this, and trigger the test.yml directly test: - name: Run tests - uses: NetherlandsForensicInstitute/adb_py/.github/workflows/test.yml@main - with: - wait_interval: 2 - propagate_failure: true - trigger_workflow: true - wait_workflow: true + name: Test job + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.9", "3.10", "3.11" ] + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{matrix.python-version}} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Modify sys.path and export it + id: modify-sys-path + run: | + echo "::set-output name=sys-path::$(realpath .)" + shell: bash + + # Add your build/test steps here + - name: Run Tests + working-directory: test + run: python test_adb_py.py + env: + PYTHONPATH: ${{ steps.modify-sys-path.outputs.sys-path }} publish: runs-on: ubuntu-latest diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 856bab9..bee07be 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,11 +3,6 @@ on: push: branches: - '*' - workflow_call: - wait_interval: - propagate_failure: - trigger_workflow: - wait_workflow: jobs: build: From 3c058f40973a64c989bb574ddbe6e4072b8cd3c2 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 10:35:24 +0200 Subject: [PATCH 14/24] Start publish only after test has been finished --- .github/workflows/publish.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f3afc60..8ec3412 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,7 +21,7 @@ permissions: jobs: # TODO issue #11: deduplicate this, and trigger the test.yml directly test: - name: Test job + name: Testjob runs-on: ubuntu-latest strategy: matrix: @@ -54,6 +54,7 @@ jobs: PYTHONPATH: ${{ steps.modify-sys-path.outputs.sys-path }} publish: + needs: Testjob runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From b02d754a504f4228b8f332fd0328ad242045a185 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 10:38:20 +0200 Subject: [PATCH 15/24] fix needs reference --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8ec3412..1093df7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,7 +21,7 @@ permissions: jobs: # TODO issue #11: deduplicate this, and trigger the test.yml directly test: - name: Testjob + name: Test job runs-on: ubuntu-latest strategy: matrix: @@ -54,7 +54,7 @@ jobs: PYTHONPATH: ${{ steps.modify-sys-path.outputs.sys-path }} publish: - needs: Testjob + needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From 386b9469a61e902c006a323647c7eb5229ac1f58 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 11:15:30 +0200 Subject: [PATCH 16/24] Change repository name to adb-pywrapper --- .github/workflows/publish.yml | 2 +- .github/workflows/test.yml | 2 +- .gitignore | 2 +- README.md | 20 +++++++++++--------- adb_py_logo.jpg => adb-pywrapper_logo.jpg | Bin adb_py.py => adb_pywrapper.py | 0 setup.py | 8 ++++---- test/{test_adb_py.py => adb-pywrapper.py} | 20 ++++++++++---------- 8 files changed, 28 insertions(+), 26 deletions(-) rename adb_py_logo.jpg => adb-pywrapper_logo.jpg (100%) rename adb_py.py => adb_pywrapper.py (100%) rename test/{test_adb_py.py => adb-pywrapper.py} (97%) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1093df7..c734f07 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -49,7 +49,7 @@ jobs: # Add your build/test steps here - name: Run Tests working-directory: test - run: python test_adb_py.py + run: python adb-pywrapper.py env: PYTHONPATH: ${{ steps.modify-sys-path.outputs.sys-path }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bee07be..8e45e6c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,7 +34,7 @@ jobs: # Add your build/test steps here - name: Run Tests working-directory: test - run: python test_adb_py.py + run: python adb-pywrapper.py env: PYTHONPATH: ${{ steps.modify-sys-path.outputs.sys-path }} diff --git a/.gitignore b/.gitignore index 3d6ebe5..33bd906 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -adb_py.egg-info +*egg-info build venv dist diff --git a/README.md b/README.md index cec63c1..043deeb 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,23 @@ -# adb_py Documentation +# adb-pywrapper +A python wrapper for the Android Debug Bridge enabling interaction with Android devices and emulators. + +adb-pywrapper logo -adb_py logo ## AdbDevice: Interacting with Android Devices using ADB in Python -The `AdbDevice` class in the `adb_py` Python package facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) directly within Python scripts. +The `AdbDevice` class in the `adb-pywrapper` Python package facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) directly within Python scripts. Installation ------------ -To install the `adb_py` package from the internal nexus pipy server, you can use `pip`: +To install the `adb-pywrapper` package from the internal nexus pipy server, you can use `pip`: ```bash -pip install adb_py +pip install adb-pywrapper ``` -Before using `adb_py`, ensure that ADB is installed on your machine and added to PATH. You can download and install the Android SDK, which includes ADB, from the official Android developer website. +Before using `adb-pywrapper`, ensure that ADB is installed on your machine and added to PATH. You can download and install the Android SDK, which includes ADB, from the official Android developer website. If running the below in a terminal gives you an output, you are ready to go! @@ -28,7 +30,7 @@ adb --version Import the necessary modules: ```python -from adb_py import AdbDevice, AdbResult, PullResult +from adb-pywrapper import AdbDevice, AdbResult, PullResult ``` ## Listing Connected Devices @@ -191,7 +193,7 @@ ls(path) * snapshot_delete(delete=None) ## Error Handling -Be sure to handle errors gracefully in your code, as various operations may fail, adb_py tries to provide information where possible on success or failure in the `AdbResult` and `PullResult` objects. +Be sure to handle errors gracefully in your code, as various operations may fail, adb-pywrapper tries to provide information where possible on success or failure in the `AdbResult` and `PullResult` objects. ## Contributing -Contributions to the adb_py package are welcome. If you encounter any issues, have suggestions, or want to contribute, feel free to open an issue or PR. +Contributions to the adb-pywrapper package are welcome. If you encounter any issues, have suggestions, or want to contribute, feel free to open an issue or PR. diff --git a/adb_py_logo.jpg b/adb-pywrapper_logo.jpg similarity index 100% rename from adb_py_logo.jpg rename to adb-pywrapper_logo.jpg diff --git a/adb_py.py b/adb_pywrapper.py similarity index 100% rename from adb_py.py rename to adb_pywrapper.py diff --git a/setup.py b/setup.py index 9c16853..2772828 100644 --- a/setup.py +++ b/setup.py @@ -1,16 +1,16 @@ from setuptools import setup setup( - name="adb_py", + name="adb-pywrapper", version="0.9", - description="adb_py facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) " + description="adb-pywrapper facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) " "directly within Python scripts.", long_description=f"{open('README.md').read()}", long_description_content_type="text/markdown", author="Netherlands Forensic Institute", author_email="netherlandsforensicinstitute@users.noreply.github.com", - url="https://github.com/NetherlandsForensicInstitute/adb_py", + url="https://github.com/NetherlandsForensicInstitute/adb-pywrapper", licence="EUPL-1.2", - py_modules=["adb_py", "adb_init"], + py_modules=["adb-pywrapper", "adb_init"], test_suite="test", ) diff --git a/test/test_adb_py.py b/test/adb-pywrapper.py similarity index 97% rename from test/test_adb_py.py rename to test/adb-pywrapper.py index 674f3b3..ac617c5 100644 --- a/test/test_adb_py.py +++ b/test/adb-pywrapper.py @@ -5,7 +5,7 @@ from parameterized import parameterized -from adb_py import AdbResult, AdbDevice +from adb_pywrapper import AdbResult, AdbDevice PROCESS = subprocess.run('echo hello', shell=True, capture_output=True) MOCK_SUCCESSFULLY_PULLED_FILE = ['abc.apk', 'bla.jpg'] @@ -321,7 +321,7 @@ def test_get_state(self): self.assertFalse(result.success) self.assertIn('Invalid command', result.stderr) - @patch('adb_py.AdbDevice._snapshot_command') + @patch('adb_pywrapper.AdbDevice._snapshot_command') def test_emulator_snapshots_list(self, mock_snapshot_command): # Test emulator_snapshots_list function snapshot_list_output = """List of snapshots present on all disks: @@ -336,8 +336,8 @@ def test_emulator_snapshots_list(self, mock_snapshot_command): mock_snapshot_command.assert_called_once_with('list') self.assertEqual(result, ['snap_2023-11-23_13-13-02', 'snap_2023-12-05_12-56-56']) - @patch('adb_py.AdbDevice._snapshot_exists') - @patch('adb_py.AdbDevice._snapshot_command') + @patch('adb_pywrapper.AdbDevice._snapshot_exists') + @patch('adb_pywrapper.AdbDevice._snapshot_command') def test_emulator_snapshot_load_existing(self, mock_snapshot_command, mock_snapshot_exists): # Test emulator_snapshot_load function with an existing snapshot mock_snapshot_exists.return_value = True @@ -348,7 +348,7 @@ def test_emulator_snapshot_load_existing(self, mock_snapshot_command, mock_snaps mock_snapshot_exists.assert_called_once_with('snapshot1') mock_snapshot_command.assert_called_once_with('load', 'snapshot1') - @patch('adb_py.AdbDevice._snapshot_exists') + @patch('adb_pywrapper.AdbDevice._snapshot_exists') def test_emulator_snapshot_load_non_existing(self, mock_snapshot_exists): # Test emulator_snapshot_load function with a non-existing snapshot mock_snapshot_exists.return_value = False @@ -358,8 +358,8 @@ def test_emulator_snapshot_load_non_existing(self, mock_snapshot_exists): mock_snapshot_exists.assert_called_once_with('non_existing_snapshot') self.assertFalse(result.success) - @patch('adb_py.AdbDevice._snapshot_exists') - @patch('adb_py.AdbDevice._snapshot_command') + @patch('adb_pywrapper.AdbDevice._snapshot_exists') + @patch('adb_pywrapper.AdbDevice._snapshot_command') def test_emulator_snapshot_save(self, mock_snapshot_command, mock_snapshot_exists): # Test emulator_snapshot_save function mock_snapshot_exists.return_value = False @@ -370,9 +370,9 @@ def test_emulator_snapshot_save(self, mock_snapshot_command, mock_snapshot_exist mock_snapshot_exists.assert_called_once_with('snapshot1') mock_snapshot_command.assert_called_once_with('save', 'snapshot1') - @patch('adb_py.AdbDevice.emulator_snapshots_list', return_value=['snapshot1', 'snapshot2']) - @patch('adb_py.AdbDevice._snapshot_exists') - @patch('adb_py.AdbDevice._snapshot_command') + @patch('adb_pywrapper.AdbDevice.emulator_snapshots_list', return_value=['snapshot1', 'snapshot2']) + @patch('adb_pywrapper.AdbDevice._snapshot_exists') + @patch('adb_pywrapper.AdbDevice._snapshot_command') def test_emulator_snapshot_delete(self, mock_snapshot_command, mock_snapshot_exists, mock_emulator_snapshots_list): # Test emulator_snapshot_delete function mock_snapshot_exists.return_value = True # Existing snapshots From 9c4b9ea5fcf02276de25119938757d05f87ba4ba Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 11:50:09 +0200 Subject: [PATCH 17/24] Change name to adb-pywrapper and publish to PyPi --- .github/workflows/publish.yml | 7 ++----- CHANGELOG.md | 2 +- setup.py | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c734f07..9b179ce 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,11 +9,8 @@ name: Upload Python Package on: - push: - branches: - - main -# release: -# types: [published] + release: + types: [published] permissions: contents: read diff --git a/CHANGELOG.md b/CHANGELOG.md index 01434f0..aa77da5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ ``` -v0.9 - Add Github action to release to PyPi +v1.0.0 - Change name to adb-pywrapper and add action to release to PyPi ``` ``` v0.8 - Removed lru_cache function that caused get_prop output to be cached which is not advisable since these properties can change diff --git a/setup.py b/setup.py index 2772828..25674ce 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ setup( name="adb-pywrapper", - version="0.9", + version="1.0.0", description="adb-pywrapper facilitates seamless interaction with Android devices using the Android Debug Bridge (ADB) " "directly within Python scripts.", long_description=f"{open('README.md').read()}", From 4f6d3b32b2d1b32e74bf9fb2bf2b0e8245ebc2e7 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 13:02:24 +0200 Subject: [PATCH 18/24] Fix naming of test_adb_pywrapper --- .github/workflows/publish.yml | 2 +- .github/workflows/test.yml | 2 +- test/{adb-pywrapper.py => test_adb_pywrapper.py} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename test/{adb-pywrapper.py => test_adb_pywrapper.py} (100%) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9b179ce..72edc3d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -46,7 +46,7 @@ jobs: # Add your build/test steps here - name: Run Tests working-directory: test - run: python adb-pywrapper.py + run: python test_adb_pywrapper.py env: PYTHONPATH: ${{ steps.modify-sys-path.outputs.sys-path }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8e45e6c..90a760e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,7 +34,7 @@ jobs: # Add your build/test steps here - name: Run Tests working-directory: test - run: python adb-pywrapper.py + run: python test_adb_pywrapper.py env: PYTHONPATH: ${{ steps.modify-sys-path.outputs.sys-path }} diff --git a/test/adb-pywrapper.py b/test/test_adb_pywrapper.py similarity index 100% rename from test/adb-pywrapper.py rename to test/test_adb_pywrapper.py From 637ca51ec43be69aeb4d0127b9d59cd2ceee2d35 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 10 Apr 2024 13:02:43 +0200 Subject: [PATCH 19/24] Add CONTRIBUTING.md including how to push to PyPi --- CONTRIBUTING.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..a5ce96b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,30 @@ +# Contributing Guidelines + +Thank you for considering contributing to our project! Please take a moment to review the following guidelines. + +## Pull Requests + +- All contributions to the project must be submitted via pull request. +- Ensure that your pull request addresses a specific issue or feature request. If none exists, please open a new issue first to discuss the changes you'd like to make. +- Follow the [GitHub Flow](https://guides.github.com/introduction/flow/) workflow: + 1. Create a new branch from `main`. The branch name should start with the issue number. + 2. Make your changes and commit them with descriptive commit messages. + 3. Submit a pull request to the main repository's `main` branch. +- Ensure that your code adheres to the project's coding standards and conventions. +- Include unit tests if applicable and ensure that existing tests pass. +- Provide a clear and detailed description of your changes in the pull request description. + +## Issues + +- Feel free to open an issue for bug reports, feature requests, or general feedback. +- When opening an issue, please provide as much detail as possible, including steps to reproduce for bug reports. + +## License + +By contributing to this project, you agree that your contributions will be licensed under the project's [LICENSE](LICENSE.txt). + +## Releasing + +- Creating a release in GitHub automatically triggers publication on PyPI. Please ensure that your changes are properly documented in the release notes. +- Semantic versioning should be used +- The tag should be of the form v{version}. \ No newline at end of file From a2f5ed75e562a43eb45a5460b4390d427584919e Mon Sep 17 00:00:00 2001 From: Angelina-C <36659310+Angelina-C@users.noreply.github.com> Date: Thu, 11 Apr 2024 08:19:09 +0200 Subject: [PATCH 20/24] Update README.md Co-authored-by: WJ-van-Hoek <124786983+WJ-van-Hoek@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 043deeb..3d33f3b 100644 --- a/README.md +++ b/README.md @@ -196,4 +196,4 @@ ls(path) Be sure to handle errors gracefully in your code, as various operations may fail, adb-pywrapper tries to provide information where possible on success or failure in the `AdbResult` and `PullResult` objects. ## Contributing -Contributions to the adb-pywrapper package are welcome. If you encounter any issues, have suggestions, or want to contribute, feel free to open an issue or PR. +Contributions to the adb-pywrapper package are welcome. If you encounter any issues, have suggestions, or want to contribute, feel free to open an issue or PR. Find our contribution guidelines [here](CONTRIBUTING.md). From 553e9e7b64be916f9af6ff1fec700823bcd4e1eb Mon Sep 17 00:00:00 2001 From: Angelina-C <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:55:30 +0200 Subject: [PATCH 21/24] Update README.md Co-authored-by: Carly-1 <75033199+Carly-1@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3d33f3b..570168d 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The `AdbDevice` class in the `adb-pywrapper` Python package facilitates seamless Installation ------------ -To install the `adb-pywrapper` package from the internal nexus pipy server, you can use `pip`: +To install the `adb-pywrapper` package from the internal Nexus PyPI server, you can use `pip`: ```bash pip install adb-pywrapper From 6584a27fa47479c40b75805ecf6e8d3c277d6fc1 Mon Sep 17 00:00:00 2001 From: Angelina-C <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:59:49 +0200 Subject: [PATCH 22/24] Update CONTRIBUTING.md Co-authored-by: Carly-1 <75033199+Carly-1@users.noreply.github.com> --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5ce96b..9a782ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,5 +26,5 @@ By contributing to this project, you agree that your contributions will be licen ## Releasing - Creating a release in GitHub automatically triggers publication on PyPI. Please ensure that your changes are properly documented in the release notes. -- Semantic versioning should be used +- Semantic versioning should be used. - The tag should be of the form v{version}. \ No newline at end of file From cddf5ad4dd227888194e92168fced8a6aa37fa3f Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:52:29 +0200 Subject: [PATCH 23/24] Add RELEASE-PROCESS.md --- CONTRIBUTING.md | 6 ------ RELEASE-PROCESS.md | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 RELEASE-PROCESS.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5ce96b..9667e2a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,9 +22,3 @@ Thank you for considering contributing to our project! Please take a moment to r ## License By contributing to this project, you agree that your contributions will be licensed under the project's [LICENSE](LICENSE.txt). - -## Releasing - -- Creating a release in GitHub automatically triggers publication on PyPI. Please ensure that your changes are properly documented in the release notes. -- Semantic versioning should be used -- The tag should be of the form v{version}. \ No newline at end of file diff --git a/RELEASE-PROCESS.md b/RELEASE-PROCESS.md new file mode 100644 index 0000000..3effaeb --- /dev/null +++ b/RELEASE-PROCESS.md @@ -0,0 +1,17 @@ +# Release process + +## Versioning +Semantic versioning should be used, eg 1.2.3. + +## Tag +The tag should be of the form v{version}. + +## Creating a release +- In GitHub, go to releases. +- Select `Draft a new release`. +- Choose a tag - you can create a new tag here. Make sure it is the same as the version in `setup.py`. +- Click `Generate release ntoes`. +- Make sure `Set as latest release` is selected. +- Click `Publish release`. + +- Creating a release in GitHub automatically triggers publication on PyPI. From 507e62dc8e0f3b0578c09130eebb1a62cb547925 Mon Sep 17 00:00:00 2001 From: "Claij, Angelina" <36659310+Angelina-C@users.noreply.github.com> Date: Thu, 18 Apr 2024 09:15:22 +0200 Subject: [PATCH 24/24] Remove releases dir and change github publish action commit hash to release tag --- .github/workflows/publish.yml | 2 +- release/adb_py-0.1-py3-none-any.whl | Bin 5041 -> 0 bytes release/adb_py-0.2-py3-none-any.whl | Bin 6389 -> 0 bytes release/adb_py-0.3-py3-none-any.whl | Bin 6526 -> 0 bytes release/adb_py-0.4-py3-none-any.whl | Bin 6600 -> 0 bytes release/adb_py-0.5-py3-none-any.whl | Bin 7659 -> 0 bytes release/adb_py-0.6-py3-none-any.whl | Bin 7782 -> 0 bytes release/adb_py-0.7-py3-none-any.whl | Bin 7786 -> 0 bytes release/adb_py-0.8-py3-none-any.whl | Bin 7909 -> 0 bytes 9 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 release/adb_py-0.1-py3-none-any.whl delete mode 100644 release/adb_py-0.2-py3-none-any.whl delete mode 100644 release/adb_py-0.3-py3-none-any.whl delete mode 100644 release/adb_py-0.4-py3-none-any.whl delete mode 100644 release/adb_py-0.5-py3-none-any.whl delete mode 100644 release/adb_py-0.6-py3-none-any.whl delete mode 100644 release/adb_py-0.7-py3-none-any.whl delete mode 100644 release/adb_py-0.8-py3-none-any.whl diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 72edc3d..37b0e09 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -66,7 +66,7 @@ jobs: - name: Build package run: python -m build - name: Publish package - uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 + uses: pypa/gh-action-pypi-publish@v1.8.14 with: user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} \ No newline at end of file diff --git a/release/adb_py-0.1-py3-none-any.whl b/release/adb_py-0.1-py3-none-any.whl deleted file mode 100644 index aa23483b0c70543086c577866728ed2ba476bb08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5041 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 diff --git a/release/adb_py-0.2-py3-none-any.whl b/release/adb_py-0.2-py3-none-any.whl deleted file mode 100644 index d46b064c5983062f540b8bd7819855bb06db2932..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6389 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 diff --git a/release/adb_py-0.3-py3-none-any.whl b/release/adb_py-0.3-py3-none-any.whl deleted file mode 100644 index 47492c2340cb5f140f6dfcdb16cb4caefac61814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6526 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%0AeWL%H{*NI0r!-o!Qc?;S6S9hs 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 C1}_`{ diff --git a/release/adb_py-0.6-py3-none-any.whl b/release/adb_py-0.6-py3-none-any.whl deleted file mode 100644 index a08b74a93f12a2dfd40af5a39be55ab3c36a60b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7782 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 diff --git a/release/adb_py-0.7-py3-none-any.whl b/release/adb_py-0.7-py3-none-any.whl deleted file mode 100644 index ab7da4b95e46b65e763a657d20c95e5abec8b3bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7786 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 diff --git a/release/adb_py-0.8-py3-none-any.whl b/release/adb_py-0.8-py3-none-any.whl deleted file mode 100644 index e78583e47531114ee1cf240aab91e06abb6cc712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7909 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