Skip to content

Commit

Permalink
Add test workflow, pytest script
Browse files Browse the repository at this point in the history
  • Loading branch information
AP6YC committed Jan 12, 2024
1 parent 7f27784 commit bb67d03
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 12 deletions.
61 changes: 61 additions & 0 deletions .github/workflows/Test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Test

# on: [push]
on:
push:
branches: [main]
tags: ["*"]
pull_request:
jobs:
build:
# runs-on: ubuntu-latest
name: Python ${{ matrix.python-version }} - ${{ matrix.os }} - ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
os:
- ubuntu-latest
- macOS-latest
# - windows-latest
arch:
- x64
# - x86
# exclude:
# # Exclude 32-bit macOS
# - os: macOS-latest
# arch: x86

steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest
pip install -r requirements.txt
# if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
# pytest
# python -m pytest
# coverage run -m pytest
python -m pytest --cov
- name: Generate coverage
run: |
coverage xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
# run: |
# curl -Os https://uploader.codecov.io/latest/linux/codecov
# chmod +x codecov
# ./codecov
32 changes: 20 additions & 12 deletions src/main_dystonia_graph_and_ontology_method.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
########################################################


def add_data_properties(g: nx.Graph):
def add_data_properties(g: Graph):
# Define the namespaces
ex = Namespace("http://example.org/")
g.bind("ex", ex)
Expand Down Expand Up @@ -136,7 +136,7 @@ def add_data_properties(g: nx.Graph):
return (g)


def add_object_properties (g: nx.Graph):
def add_object_properties (g: Graph):
ex = Namespace("http://example.org/")
# Define an object property
object_property_uri = ex['causes']
Expand Down Expand Up @@ -269,7 +269,7 @@ def plot_graph(G: nx.Graph):
return


def add_data_properties_to_nodes(g: nx.Graph):
def add_data_properties_to_nodes(g: Graph, G: nx.Graph):
# Define the namespaces
ex = Namespace("http://example.org/")
g.bind("ex", ex)
Expand Down Expand Up @@ -335,7 +335,7 @@ def add_data_properties_to_nodes(g: nx.Graph):
return g


def add_edges_to_RDF_graph(g: nx.Graph):
def add_edges_to_RDF_graph(g: Graph, G: nx.Graph):
# Define the namespaces
ex = Namespace("http://example.org/")
g.bind("ex", ex)
Expand Down Expand Up @@ -373,7 +373,7 @@ def add_edges_to_RDF_graph(g: nx.Graph):
return(g)


def add_nodes_to_RDF_graph(g: nx.Graph):
def add_nodes_to_RDF_graph(g: Graph, G: nx.Graph):
# Define the namespaces
ex = Namespace("http://example.org/")
g.bind("ex", ex)
Expand All @@ -396,10 +396,7 @@ def add_nodes_to_RDF_graph(g: nx.Graph):
return(g)


########################################################
# Main Program Starts here #
########################################################
if __name__ == "__main__":
def main():
# G is networkX graph
# g is an RDF graph
# Declare a NetworkX graph
Expand All @@ -413,13 +410,24 @@ def add_nodes_to_RDF_graph(g: nx.Graph):
g = Graph()
g = add_object_properties(g)
g = add_data_properties(g)
g = add_data_properties_to_nodes(g)
g = add_nodes_to_RDF_graph(g)
g = add_edges_to_RDF_graph(g)
g = add_data_properties_to_nodes(g, G)
g = add_nodes_to_RDF_graph(g, G)
g = add_edges_to_RDF_graph(g, G)

# Serialize the updated RDF graph to an OWL file
g.serialize(out_ontology, format="turtle")
print('Graph and Ontology complete.')
print(f'- {out_graph_file} has been written to file as a GraphML file')
print(f'- {out_graph_image} has been written to file as a PNG file')
print(f'- {out_ontology} has been written to file as an ontology')

return


########################################################
# Main Program Starts here #
########################################################

if __name__ == "__main__":

main()
26 changes: 26 additions & 0 deletions tests/test_experiments.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"""
test_cvi.py
# Description
Runs each experiment within pytest to verify script functionality during CI.
# Authors
- Sasha Petrenko <[email protected]>
"""

# -----------------------------------------------------------------------------
# TESTS
# -----------------------------------------------------------------------------


class TestExperiments:
"""
Pytest class containing experiment unit tests.
"""

def test_graph_ontology(self):
"""
Tests the main function of `main_dystonia_graph_and_ontology_method.py`.
"""
from src.main_dystonia_graph_and_ontology_method import main
main()

0 comments on commit bb67d03

Please sign in to comment.