Commit 44e4345a authored by Vít Novotný's avatar Vít Novotný
Browse files

added pylint2 and output testing

parent 01a32079
Vysledek dotazu otec['dana'] je 'milan'.
Vysledek dotazu rodic_anyX('david') je ['jan', 'jana'].
Vysledek dotazu sourozenci_anyY('dana') je ['petr'].
Program vytiskne zadany seznam. Napr.:
Vysledek volani tiskniseznam(('a', ('b', ('c', None)))) je:
seznam=[
1: a
2: b
3: c
]
Vysledek volani tiskniseznam(('a', ('b', (['c1', 'c2', 'c3'], ('d', ('mezi d a e', ('e', None))))))). je:
seznam=[
1: a
2: b
3: ['c1', 'c2', 'c3']
4: d
5: mezi d a e
6: e
]
Program pro vypocet clenu fibonacciho posloupnosti, mene efektivni varianta (vypocet potrva nekolik vterin).
Vysledek volani fib(36) je 14930352.
Program pro vypocet clenu fibonacciho posloupnosti, efektivnejsi varianta.
Vysledek volani fib(36) je 14930352.
Member - 3. varianta
Vysledek volani member('a', LinkedList('a', 'b', 'a')) je True.
Prace se seznamy - del a insert
-------------------------------
funkce del_(x, ys) smaze vsechny vyskyty prvku x ze seznamu ys
Vysledek volani del_(1, LinkedList(1, 2, 1, 1, 2, 3, 1, 1)): [2, 2, 3]
del1(x, ys) smaze vzdy jeden (podle poradi) vyskyt prvku x v seznamu ys
Vysledek volani del1(1, LinkedList(1, 2, 1)): [[2, 1], [1, 2]]
insert(x, ys) vklada postupne na vsechny pozice seznamu ys prvek x
Vysledek volani insert(4, LinkedList(2, 3, 1)): [[4, 2, 3, 1], [2, 4, 3, 1], [2, 3, 4, 1], [2, 3, 1, 4]]
insert1(x, ys) vlozi x na zacatek seznamu ys
Vysledek volani insert1(4, LinkedList(2, 3, 1)): [4, 2, 3, 1]
Prace se seznamy - del a insert
-------------------------------
funkce del_(x, ys) smaze vsechny vyskyty prvku x ze seznamu ys
Vysledek volani del_(1, LinkedList(1, 2, 1, 1, 2, 3, 1, 1)):
[2, 2, 3]
del1(x, ys) smaze vzdy jeden (podle poradi) vyskyt prvku x v seznamu ys
Vysledek volani del1(1, LinkedList(1, 2, 1)):
[[2, 1], [1, 2]]
insert(x, ys) vklada postupne na vsechny pozice seznamu ys prvek x
Vysledek volani insert(4, LinkedList(2, 3, 1)):
[[4, 2, 3, 1], [2, 4, 3, 1], [2, 3, 4, 1], [2, 3, 1, 4]]
insert1(x, ys) vlozi x na zacatek seznamu ys
Vysledek volani insert1(4, LinkedList(2, 3, 1)):
[4, 2, 3, 1]
Prace se seznamy - permutace
-------------------------------
perm1 napsany pomoci insert
Vysledek volani perm1(LinkedList(1, 2, 3)):
[[1, 2, 3], [2, 1, 3], [2, 3, 1], [1, 3, 2], [3, 1, 2], [3, 2, 1]]
perm2 napsany pomoci del1_anyX
Vysledek volani perm2(LinkedList(1, 2, 3)):
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
perm3 napsany pomoci pruchodu seznamem
Vysledek volani perm3(LinkedList(1, 2, 3)):
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Prace se seznamy - append
-------------------------------
vicesmerne implementace funkce append:
Vysledek volani append(LinkedList('a', 'b'), LinkedList('c', 'd')):
[a, b, c, d]
Vysledek volani append_anyXs(LinkedList('c', 'd'),LinkedList('a', 'b', 'c', 'd')):
[a, b]
Vysledek volani append_anyXsYs(LinkedList('a', 'b', 'c')):
[([], [a, b, c]), ([a], [b, c]), ([a, b], [c]), ([a, b, c], [])]
Radici algoritmus QuickSort
qsort(LinkedList(5, 2, 8, 2, 654, 8, 3, 4)):
[2, 2, 3, 4, 5, 8, 8, 654]
.PHONY: test .PHONY: tests pylint2 pylint3
test:
# Testing the python files via pylint3. IGNORED_PYLINT_TESTS=invalid-name,missing-docstring,redefined-variable-type,too-few-public-methods
IGNORED_PYLINT2_TESTS=superfluous-parens
tests: output pylint2 pylint3
# all ok
output:
# testing python script output
@set -e;\
TEMP=`mktemp`; \
trap 'rm $$TEMP' EXIT; \
for FILE in *.py; do \
printf '%s\n' "$$FILE"; \
if [ -e "$$FILE.out" ]; then \
python "$$FILE" > $$TEMP; \
diff "$$FILE.out" $$TEMP; \
else \
printf 'No output test exists for file "%s".\n' "$$FILE"; \
exit 1; \
fi; \
done
pylint2:
# testing the python scripts via pylint
@for FILE in *.py; do \
printf '%s\n' "$$FILE"; \
REPORT="$$(pylint --disable=$(IGNORED_PYLINT_TESTS),$(IGNORED_PYLINT2_TESTS) "$$FILE" 2>&1)"; \
if ! [ $$? = 0 ]; then \
printf '%s\nThe above report is for file "%s".\n' "$$REPORT" "$$FILE"; \
exit 1; \
fi; \
done
pylint3:
# testing the python scripts via pylint3
@for FILE in *.py; do \ @for FILE in *.py; do \
printf '%s\n' "$$FILE"; \ printf '%s\n' "$$FILE"; \
REPORT="$$(pylint3 --disable=invalid-name,missing-docstring "$$FILE" 2>&1)"; \ REPORT="$$(pylint3 --disable=$(IGNORED_PYLINT_TESTS) "$$FILE" 2>&1)"; \
if ! [ $$? = 0 ]; then \ if ! [ $$? = 0 ]; then \
printf '%s\nThe above report is for file "%s".\n' "$$REPORT" "$$FILE"; \ printf '%s\nThe above report is for file "%s".\n' "$$REPORT" "$$FILE"; \
exit 1; \ exit 1; \
fi; \ fi; \
done done
# All OK.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment