From 71a64260283e9f9510a1779fdf2fa0284c56a5df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vili=20Sinerv=C3=A4?= Date: Sat, 15 Oct 2022 19:41:38 +0300 Subject: [PATCH] =?UTF-8?q?Lis=C3=A4tty=20invoke=20komennot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .coveragerc | 2 +- .gitignore | 3 +-- dokumentaatio/ohje.md | 2 +- dokumentaatio/testausdokumentti.md | 7 +++++-- requirements.txt | 1 + src/tests/testiMidi.mid | Bin 0 -> 44 bytes src/tests/testiMidi2.mid | Bin 0 -> 79 bytes tasks.py | 17 +++++++++++++++++ 8 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 src/tests/testiMidi.mid create mode 100644 src/tests/testiMidi2.mid create mode 100644 tasks.py 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 0000000000000000000000000000000000000000..6acc3965807d51a28ed63d65683e58c7266e8b44 GIT binary patch literal 44 zcmeYb$w*;fU|?flWME``;2Tnu&A`AQ#_&IonSG%G!~X~t7A6S}h64-?|MeLF$+HP{ literal 0 HcmV?d00001 diff --git a/src/tests/testiMidi2.mid b/src/tests/testiMidi2.mid new file mode 100644 index 0000000000000000000000000000000000000000..5ed8dc867d074a3b343a571dab53f73c4c912007 GIT binary patch literal 79 zcmeYb$w*;fU|?flWME``;2Tnu&A`B5$?!jdg@s9igW&)J!vq@#20I4^2M31#kxUGX Y3=b&IiGg7PMAFHD;lDlu0CxNkSO5S3 literal 0 HcmV?d00001 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)