diff --git a/.coveragerc b/.coveragerc index 31861db..5ccd749 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,3 +1,3 @@ [run] source = src -omit = src/main.py,src/**/__init__.py,src/tests/**,src/ui.py,src/musiikki_generaattori.py +omit = src/main.py,src/**/__init__.py,src/tests/**,src/ui.py diff --git a/.gitignore b/.gitignore index 9693efe..584d587 100644 --- a/.gitignore +++ b/.gitignore @@ -128,6 +128,5 @@ dmypy.json # Pyre type checker .pyre/ -# Ignore ceratin MIDI-files +# Ignore certain MIDI-files /*.mid -/src/**/*.mid diff --git a/dokumentaatio/ohje.md b/dokumentaatio/ohje.md index bed59b6..49e8e78 100644 --- a/dokumentaatio/ohje.md +++ b/dokumentaatio/ohje.md @@ -13,7 +13,7 @@ Ohjelman vaatimat kirjastot voi asentaa komennolla Ohjelma on nyt valmis käytettäväksi -`python3 src/main.py` +`invoke start` # Opetusdata Opetusdataksi kelpaa mikä tahansa MIDI-tiedosto, mutta itse olen käyttänyt MuseScore-palvelua tietyillä [hakukriteereillä](https://musescore.com/sheetmusic?instrument=2&instrumentation=114&license=to_share&recording_type=public-domain). Ainoa rajoitus on se, että ohjelma jättää huomiotta molli-sävellajeissa (minor key signature) olevat osat. Laadun parantamiseksi jokaisessa MIDI-tiedoston raidassa ("track") olisi hyvä olla vain yksi melodia. Edellä olevasta linkistä löytyvät tiedostot ovat olleet sopivia, joten se on varma valinta, jos olet epävarma. diff --git a/dokumentaatio/testausdokumentti.md b/dokumentaatio/testausdokumentti.md index eda25de..ea7f3d4 100644 --- a/dokumentaatio/testausdokumentti.md +++ b/dokumentaatio/testausdokumentti.md @@ -8,16 +8,19 @@ Automaattinen yksikkötestaus on toteutettu pytest-kirjastolla ja testikattavuud ### Ohjeet Ennen testien suorittamista tulee pytest- ja coverage-kirjastot olla asennettuna käytössä olevassa ympäristössä. Testit saa suoritettua kommennolla -`pytest src` +`invoke test` projektin juurikansiosta. Testikattavuusraportin voi luoda juurikansiosta komennolla -` coverage run --branch -m pytest src && coverage html` +`invoke coverage-report` Tämän jälkeen raportti löytyy tiedostosta `htmlcov/index.html`. ![Testikattavuusraportti. Kokonaiskattavuus 99%](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/kattavuus.png?raw=true) +Koodin laadun automaattinen "testaus" on toteutettu pylintillä: +`invoke lint` + ## Subjektiivinen testaus Viikko 4: Generoin koodin nykyisellä versiolla 4:nnen asteen Markovin ketjulla lyhyen melodian. Vertailukohtana generoin täysin sattumanvaraisen melodian. Mielestäni ero on huomattava, varsinkin kun otetaan huomioon Markovin ketjujen yksinkertaisuus. diff --git a/requirements.txt b/requirements.txt index 3482c9e..ea0276a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ attrs==22.1.0 coverage==6.4.4 dill==0.3.5.1 iniconfig==1.1.1 +invoke==1.7.3 isort==5.10.1 lazy-object-proxy==1.7.1 mccabe==0.7.0 diff --git a/src/tests/testiMidi.mid b/src/tests/testiMidi.mid new file mode 100644 index 0000000..6acc396 Binary files /dev/null and b/src/tests/testiMidi.mid differ diff --git a/src/tests/testiMidi2.mid b/src/tests/testiMidi2.mid new file mode 100644 index 0000000..5ed8dc8 Binary files /dev/null and b/src/tests/testiMidi2.mid differ diff --git a/tasks.py b/tasks.py new file mode 100644 index 0000000..6b46462 --- /dev/null +++ b/tasks.py @@ -0,0 +1,17 @@ +from invoke import task + +@task +def start(ctx): + ctx.run("python3 src/main.py", pty=True) + +@task +def lint(ctx): + ctx.run("pylint src", pty=True) + +@task +def test(ctx): + ctx.run("pytest src", pty=True) + +@task +def coverage_report(ctx): + ctx.run("coverage run --branch -m pytest src && coverage html", pty=True)