Skip to content
Snippets Groups Projects

Repo for bachelor SOI-tool

Forutsetninger

  • Python 3.7
  • Pip 20.0
  • Windows 10 eller Ubuntu 18.04. Merk at flesteparten av gruppen arbeider på Windows 10

Oppsett med virtual environment

# initialiser virtual environment
python -m venv venv
# aktiver virtual environment (Windows)
./venv/Scripts/activate
# aktiver virtual environment (Ubuntu, ikke testet)
./venv/bin/activate
# sikre at venv har riktige versjoner av kritiske innebygde pakker
# (kanskje unødvendig)
# dette blir gjort fordi default gir pip-18, som gir errormeldinger.
# Se https://bugs.python.org/issue30628
python -m pip install pip=='20.0' setuptools=='45.2' wheel=='0.34'
# installer pakker
pip install -r requirements.txt
# ...jobb med koden...
# for å deaktivere virtual environment
deactivate

Linting

Sjekk av kodekvalitet gjøres med scriptet "CodeQualityCheck" i script-mappa, og er skrevet i Powershell(.ps1) og Bash(.sh). Scriptet kjører Pylint med .pylintrc-fil, Flake8, Bandit og pydocstyle. Man kan gi scriptet spesifikke .py-filer, hvis ikke sjekker den alle .py-filer.

Terminal kjøres fra root:

  • Sjekk alle .py: .\scripts\CodeQualityCheck.ps1 eller ./scripts/CodeQualityCheck.sh

  • Sekk spesifikk(e) .py: .\scripts\CodeQualityCheck.ps1 filEn.py filTo.py

Testing

Tester er skrevet med unittest modulen, og ligger i mappen test.

  • For å kjøre alle tester: python -m unittest
  • For å kjøre en enkelt test modul (fil i test mappen): python -m unittest test.<navnet_til_modulen>
  • For å kjøre en enkelt test metode (fil i test mappen): python -m unittest test.<navnet_til_modulen>.<navnet til klassen>.<navnet til metoden>

Generering av kodedokumentasjon

Gjøres med pdoc3:

  • pdoc3 --html --output-dir .\docs .\soitool\main.py

  • Uten kildekode: pdoc3 --html --config show_source_code=False --output-dir .\docs\ .\soitool\main.py

Om Dockerfile

Docker image som brukes i .gitlab-ci.yml er bygget med filen Dockerfile og er lastet opp som morkolai/soitool-ci. Docker image inneholder alle avhengigheter til prosjektet. Følgende prosedyre brukes for å oppdatere image. Dette må gjøres når requirements.txt endrer seg.

docker build -t morkolai/soitool-ci .
docker login
docker push morkolai/soitool-ci

Arbeidsmetode - Bruk av git

Arbeid skal ikke skje direkte på master branch. For hver oppgave en vil utføre skal en ny branch lages, og denne må senere merges inn ved hjelp av en "Merge Request". Gjennomgang av dette er lagt fram under:

# ny branch
git branch <branch navn>
# hoppe til eksisterende branch
git checkout <branch navn>
# ..jobb med koden..
git add <...>
git commit -m "..."
# push til gitlab
git push origin <branch navn>

Merging til master skal skje via Merge Requests i GitLab.

Om arbeid utføres på feil branch

git stash kan brukes for å lagre endringer i et "stash". Deretter kan en hoppe til riktig branch med git checkout <branch navn>, og kjøre git stash pop.

Arbeidsmetode - Hvordan skrive tester

Hver modul burde testes. I praksis vil dette si at hver fil under soitool/ med navn X.py burde ha en tilsvarende fil under test/ med navn test_X.py.

Ved GUI-testing av modulære dialoger (dialoger som stopper eksekvering av hovedvindu) foretrekkes fremgangsmåten som demonstreres i test\test_main.py, hvor testfunksjoner kjøres med singleShot. Antall millisekunder testen skal vente før testfunksjoner kjøres kan stilles inn for tregere maskiner.

TODO hvordan skrive GUI tester.