Skip to content

Commit

Permalink
Test on GitHub (#185)
Browse files Browse the repository at this point in the history
* Test different python versions
* GitHub CI now has singularity.

* specify version
* better be careful with actions not under control of GitHub or any other trusted source
* standard invocation
* failure in one python version does not cancel the others
https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast
* use default number of columns
* testing giving instances a name

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: Martin Diehl <mail@martin-diehl.net>
  • Loading branch information
vsoch and MarDiehl committed Oct 2, 2021
1 parent 64358eb commit 4f583e6
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 8 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,29 @@ jobs:
export PATH="/usr/share/miniconda/bin:$PATH"
source activate black
pyflakes spython/oci spython/image spython/instance spython/main
pytest:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [3.7, 3.8, 3.9]

steps:
- uses: actions/checkout@v2
- uses: eWaterCycle/setup-singularity@1631b12cf3878381179be0eab9624219bc12979e # v6 release

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
sudo ln -s $SINGULARITY_ROOT/bin/singularity /usr/bin/
python -m pip install --upgrade pip
pip install pytest semver pytest-runner requests
- name: Run unit tests
run: |
pytest
4 changes: 4 additions & 0 deletions spython/tests/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,16 @@ def test_docker_pull(docker_container):
def test_execute(docker_container):
result = Client.execute(docker_container[1], "ls /")
print(result)
if isinstance(result, list):
result = "".join(result)
assert "tmp\nusr\nvar" in result


def test_execute_with_return_code(docker_container):
result = Client.execute(docker_container[1], "ls /", return_result=True)
print(result)
if isinstance(result["message"], list):
result["message"] = "".join(result["message"])
assert "tmp\nusr\nvar" in result["message"]
assert result["return_code"] == 0

Expand Down
23 changes: 15 additions & 8 deletions spython/tests/test_instances.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@
import pytest
from spython.main import Client

# name instance based on Python version in case running in parallel
import sys

version_string = "%s_%s_%s" % (
sys.version_info[0],
sys.version_info[1],
sys.version_info[2],
)


def test_instance_class():
instance = Client.instance("docker://ubuntu", start=False)
Expand All @@ -28,13 +37,10 @@ def test_has_no_instances():

class TestInstanceFuncs(object):
@pytest.fixture(autouse=True)
def cleanup(self):
yield
Client.instance_stopall()

def test_instance_cmds(self, docker_container):
image = docker_container[1]
myinstance = Client.instance(image)
instance_name = "instance1_" + version_string
myinstance = Client.instance(image, name=instance_name)
assert myinstance.get_uri().startswith("instance://")

print("...Case 2: List instances")
Expand All @@ -58,12 +64,13 @@ def test_instance_cmds(self, docker_container):
myinstance.stop()
instances = Client.instances()
assert instances == []
myinstance1 = Client.instance(image)
myinstance2 = Client.instance(image)
myinstance1 = Client.instance(image, name="instance1_" + version_string)
myinstance2 = Client.instance(image, name="instance2_" + version_string)
assert myinstance1 is not None
assert myinstance2 is not None
instances = Client.instances()
assert len(instances) == 2
Client.instance_stopall()
myinstance1.stop()
myinstance2.stop()
instances = Client.instances()
assert instances == []

0 comments on commit 4f583e6

Please sign in to comment.