mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
switch from nose2 to pytest
pytest will show what differs in simple assert statements concurrent mode is supported with a plugin, but like nose2, concurrent mode hides the cause of import errors, so I've left it off for now.
This commit is contained in:
parent
c9da813622
commit
1070c866f3
7 changed files with 15 additions and 41 deletions
|
@ -55,7 +55,7 @@ CHECKDEPS := $(shell find anki tests -name '*.py' | grep -v buildhash.py)
|
|||
@touch $@
|
||||
|
||||
.build/test: $(CHECKDEPS)
|
||||
python -m nose2 --plugin=nose2.plugins.mp -N 16
|
||||
python -m pytest
|
||||
@touch $@
|
||||
|
||||
.build/lint: $(CHECKDEPS)
|
||||
|
|
|
@ -2,7 +2,7 @@ wheel
|
|||
mypy
|
||||
mypy_protobuf
|
||||
black
|
||||
nose2
|
||||
pytest
|
||||
# fixme: when isort 5.0 is released, switch to pypi
|
||||
git+https://github.com/ankitects/isort#egg=isort
|
||||
# fixme: when pylint supports isort 5.0, switch to pypi
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
import os
|
||||
import tempfile
|
||||
|
||||
from nose2.tools.decorators import with_setup
|
||||
|
||||
from anki import Collection as aopen
|
||||
from anki.exporting import *
|
||||
from anki.importing import Anki2Importer
|
||||
|
@ -41,8 +39,8 @@ def setup1():
|
|||
##########################################################################
|
||||
|
||||
|
||||
@with_setup(setup1)
|
||||
def test_export_anki():
|
||||
setup1()
|
||||
# create a new deck with its own conf to test conf copying
|
||||
did = deck.decks.id("test")
|
||||
dobj = deck.decks.get(did)
|
||||
|
@ -83,8 +81,8 @@ def test_export_anki():
|
|||
assert d2.cardCount() == 1
|
||||
|
||||
|
||||
@with_setup(setup1)
|
||||
def test_export_ankipkg():
|
||||
setup1()
|
||||
# add a test file to the media folder
|
||||
with open(os.path.join(deck.media.dir(), "今日.mp3"), "w") as f:
|
||||
f.write("test")
|
||||
|
@ -99,8 +97,8 @@ def test_export_ankipkg():
|
|||
e.exportInto(newname)
|
||||
|
||||
|
||||
@with_setup(setup1)
|
||||
def test_export_anki_due():
|
||||
setup1()
|
||||
deck = getEmptyCol()
|
||||
f = deck.newNote()
|
||||
f["Front"] = "foo"
|
||||
|
@ -132,8 +130,8 @@ def test_export_anki_due():
|
|||
assert c.due - deck2.sched.today == 1
|
||||
|
||||
|
||||
# @with_setup(setup1)
|
||||
# def test_export_textcard():
|
||||
# setup1()
|
||||
# e = TextCardExporter(deck)
|
||||
# f = unicode(tempfile.mkstemp(prefix="ankitest")[1])
|
||||
# os.unlink(f)
|
||||
|
@ -142,8 +140,8 @@ def test_export_anki_due():
|
|||
# e.exportInto(f)
|
||||
|
||||
|
||||
@with_setup(setup1)
|
||||
def test_export_textnote():
|
||||
setup1()
|
||||
e = TextNoteExporter(deck)
|
||||
fd, f = tempfile.mkstemp(prefix="ankitest")
|
||||
f = str(f)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# coding: utf-8
|
||||
from nose2.tools.such import helper
|
||||
import pytest
|
||||
|
||||
from anki.find import Finder
|
||||
from tests.shared import getEmptyCol
|
||||
|
@ -111,7 +111,7 @@ def test_findCards():
|
|||
assert len(deck.findCards("nid:%d" % f.id)) == 2
|
||||
assert len(deck.findCards("nid:%d,%d" % (f1id, f2id))) == 2
|
||||
# templates
|
||||
with helper.assertRaises(Exception):
|
||||
with pytest.raises(Exception):
|
||||
deck.findCards("card:foo")
|
||||
assert len(deck.findCards("'card:card 1'")) == 4
|
||||
assert len(deck.findCards("card:reverse")) == 1
|
||||
|
@ -147,7 +147,7 @@ def test_findCards():
|
|||
assert len(deck.findCards("-deck:foo")) == 5
|
||||
assert len(deck.findCards("deck:def*")) == 5
|
||||
assert len(deck.findCards("deck:*EFAULT")) == 5
|
||||
with helper.assertRaises(Exception):
|
||||
with pytest.raises(Exception):
|
||||
deck.findCards("deck:*cefault")
|
||||
# full search
|
||||
f = deck.newNote()
|
||||
|
@ -164,7 +164,7 @@ def test_findCards():
|
|||
# assert len(deck.findCards("helloworld", full=True)) == 2
|
||||
# assert len(deck.findCards("back:helloworld", full=True)) == 2
|
||||
# searching for an invalid special tag should not error
|
||||
with helper.assertRaises(Exception):
|
||||
with pytest.raises(Exception):
|
||||
len(deck.findCards("is:invalid"))
|
||||
# should be able to limit to parent deck, no children
|
||||
id = deck.db.scalar("select id from cards limit 1")
|
||||
|
@ -238,9 +238,9 @@ def test_findCards():
|
|||
assert len(deck.findCards("added:1")) == deck.cardCount() - 1
|
||||
assert len(deck.findCards("added:2")) == deck.cardCount()
|
||||
# flag
|
||||
with helper.assertRaises(Exception):
|
||||
with pytest.raises(Exception):
|
||||
deck.findCards("flag:01")
|
||||
with helper.assertRaises(Exception):
|
||||
with pytest.raises(Exception):
|
||||
deck.findCards("flag:12")
|
||||
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ CHECKDEPS := $(shell find aqt tests -name '*.py')
|
|||
@touch $@
|
||||
|
||||
.build/test: $(CHECKDEPS)
|
||||
python -m nose2 --plugin=nose2.plugins.mp -N 16
|
||||
python -m pytest
|
||||
@touch $@
|
||||
|
||||
.build/lint: $(CHECKDEPS)
|
||||
|
|
|
@ -3,7 +3,6 @@ from tempfile import TemporaryDirectory
|
|||
from zipfile import ZipFile
|
||||
|
||||
from mock import MagicMock
|
||||
from nose2.tools.such import helper
|
||||
|
||||
from aqt.addons import AddonManager
|
||||
|
||||
|
@ -64,4 +63,4 @@ def assertReadManifest(contents, expectedManifest, nameInZip="manifest.json"):
|
|||
adm = AddonManager(MagicMock())
|
||||
|
||||
with ZipFile(zfn, "r") as zfile:
|
||||
helper.assertEquals(adm.readManifestFile(zfile), expectedManifest)
|
||||
assert adm.readManifestFile(zfile) == expectedManifest
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Usage:
|
||||
# tools/tests.sh # run all tests
|
||||
# tools/tests.sh decks # test only test_decks.py
|
||||
# coverage=1 tools/tests.sh # run with coverage test
|
||||
|
||||
set -e
|
||||
|
||||
BIN="$(cd "`dirname "$0"`"; pwd)"
|
||||
export PYTHONPATH=${BIN}/..:${PYTHONPATH}
|
||||
|
||||
nose="python -m nose2 --plugin=nose2.plugins.mp -N 16"
|
||||
|
||||
dir=.
|
||||
|
||||
if [ x$1 = x ]; then
|
||||
lim="tests"
|
||||
else
|
||||
lim="tests.test_$1"
|
||||
fi
|
||||
|
||||
(cd $dir && $nose $lim $args)
|
Loading…
Reference in a new issue