Repository: PFLeget/treegp (language: python)

Issue:
Update testing framework
The current `treegp` testing framework is based on nose, which [appears to be defunct](https://nose.readthedocs.io/en/latest/index.html#note-to-users). There are several viable alternatives; notably,
- [nose2](https://docs.nose2.io/en/latest/)
- [pytest](https://docs.pytest.org/en/latest/)

I would suggest moving to using pytest (which should be fairly straightforward). This is also noted [here](https://github.com/PFLeget/treegp/pull/6#issuecomment-898789391).
Update testing framework
The current `treegp` testing framework is based on nose, which [appears to be defunct](https://nose.readthedocs.io/en/latest/index.html#note-to-users). There are several viable alternatives; notably,
- [nose2](https://docs.nose2.io/en/latest/)
- [pytest](https://docs.pytest.org/en/latest/)

I would suggest moving to using pytest (which should be fairly straightforward). This is also noted [here](https://github.com/PFLeget/treegp/pull/6#issuecomment-898789391).
Use GitHub Actions workflow for continuous integration
These commits initialize a GitHub actions workflow for running continuous integration. GitHub Actions can be used alongside or instead of Travis, but generally seem to enable a faster development process (particularly through shorter queue times and ease of configuration).


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/actions.yaml b/.github/workflows/actions.yaml
new file mode 100644
index 0000000..659f370
--- /dev/null
+++ b/.github/workflows/actions.yaml
@@ -0,0 +1,38 @@
+name: CI
+
+on: [push]
+
+jobs:
+  build:
+
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        python-version: [3.7, 3.8, 3.9]
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Set up Python ${{ matrix.python-version }}
+        uses: actions/setup-python@v2
+        with:
+          python-version: ${{ matrix.python-version }}
+
+      - name: Setup environment
+        run: |
+          sudo apt-get install -y libffi-dev
+
+      - name: Install dependencies
+        run: |
+          python -m pip install --upgrade pip
+          pip install pytest-codecov
+          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
+
+      - name: Install treegp
+        run: |
+          python setup.py install
+
+      - name: Test with pytest and submit to codecov
+        run: |
+          cd tests
+          pytest --codecov
diff --git a/.travis.yml b/.travis.yml
index e5db893..5c56bc7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,6 +8,7 @@ python:
     - 3.6
     - 3.7
     - 3.8
+    - 3.9
 
 compiler:
     - g++
@@ -26,12 +27,12 @@ cache:
 
 install:
     - pip install -r requirements.txt
-    - pip install nose codecov
+    - pip install pytest-codecov
 
 script:
     - python setup.py install --prefix=$HOME
     - cd tests
-    - nosetests --with-coverage --cover-package=treegp
+    - pytest --codecov
 
 after_success:
-    - codecov
\ No newline at end of file
+    - codecov


Test patch:
diff --git a/tests/run_tests.py b/tests/run_tests.py
deleted file mode 100644
index 142487f..0000000
--- a/tests/run_tests.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import os
-import glob
-
-tests = glob.glob("test_*")
-for test in tests:
-    os.system("python %s"%(test))
-