Skip to content

Commit 7fe38c0

Browse files
authored
Fix mango tests using custom db name (#5341)
* Add `-F, --failfast` to stop mango tests early on failures * Run mango tests with custom db instead of recreating class db When running mango tests, sometimes get `org.apache.lucene.store.NoSuchDirectoryException` error. This is because each test in the same class used the same database name, and in the setUp function always delete and recreate it, which caused a race condition. Adding `setUp()` and `teadown()` to create/delete the db for each test should solve the issue. * Replace `recreate()` with `super().setUp(db_per_test=True)`
1 parent 1a3551a commit 7fe38c0

14 files changed

+43
-38
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ mango-test: devclean all
339339
--admin=adm:pass \
340340
--no-eval "\
341341
COUCH_USER=adm COUCH_PASS=pass \
342-
src/mango/.venv/bin/nose2 -s src/mango/test -c src/mango/unittest.cfg $(MANGO_TEST_OPTS)"
342+
src/mango/.venv/bin/nose2 -F -s src/mango/test -c src/mango/unittest.cfg $(MANGO_TEST_OPTS)"
343343

344344

345345
.PHONY: weatherreport-test

Makefile.win

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ mango-test: devclean all
310310
--admin=adm:pass \
311311
"\
312312
env COUCH_USER=adm COUCH_PASS=pass \
313-
src\mango\.venv\Scripts\nose2 -s src\mango\test -c src\mango\unittest.cfg $(MANGO_TEST_OPTS)"
313+
src\mango\.venv\Scripts\nose2 -F -s src\mango\test -c src\mango\unittest.cfg $(MANGO_TEST_OPTS)"
314314

315315

316316
################################################################################

src/mango/test/01-index-crud-test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
class IndexCrudTests(mango.DbPerClass):
2727
def setUp(self):
28-
self.db.recreate()
28+
super().setUp(db_per_test=True)
2929

3030
def test_bad_fields(self):
3131
bad_fields = [
@@ -352,7 +352,7 @@ def test_out_of_sync(self):
352352
@unittest.skipUnless(mango.has_text_service(), "requires text service")
353353
class IndexCrudTextTests(mango.DbPerClass):
354354
def setUp(self):
355-
self.db.recreate()
355+
super().setUp(db_per_test=True)
356356

357357
def test_create_text_idx(self):
358358
fields = [

src/mango/test/12-use-correct-index-test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050

5151
class ChooseCorrectIndexForDocs(mango.DbPerClass):
5252
def setUp(self):
53-
self.db.recreate()
53+
super().setUp(db_per_test=True)
5454
self.db.save_docs(copy.deepcopy(DOCS))
5555

5656
def test_choose_index_with_one_field_in_index(self):

src/mango/test/13-stable-update-test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
class SupportStableAndUpdate(mango.DbPerClass):
3737
def setUp(self):
38-
self.db.recreate()
38+
super().setUp(db_per_test=True)
3939
# Hack to prevent auto-indexer from foiling update=False test
4040
# https://github.com/apache/couchdb/issues/2313
4141
self.db.save_doc(

src/mango/test/14-json-pagination-test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
class PaginateJsonDocs(mango.DbPerClass):
3535
def setUp(self):
36-
self.db.recreate()
36+
super().setUp(db_per_test=True)
3737
self.db.save_docs(copy.deepcopy(DOCS))
3838

3939
def test_all_docs_paginate_to_end(self):

src/mango/test/16-index-selectors-test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282

8383
class IndexSelectorJson(mango.DbPerClass):
8484
def setUp(self):
85-
self.db.recreate()
85+
super().setUp(db_per_test=True)
8686
self.db.save_docs(copy.deepcopy(DOCS))
8787

8888
def test_saves_partial_filter_selector_in_index(self):
@@ -189,7 +189,7 @@ def test_uses_partial_index_with_non_indexable_selector(self):
189189
@unittest.skipUnless(mango.has_text_service(), "requires text service")
190190
class IndexSelectorText(mango.DbPerClass):
191191
def setUp(self):
192-
self.db.recreate()
192+
super().setUp(db_per_test=True)
193193
self.db.save_docs(copy.deepcopy(DOCS))
194194

195195
def test_saves_partialfilterselector_in_index(self):

src/mango/test/17-multi-type-value-test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def test_can_query_with_age_and_name_range(self):
5252

5353
class MultiValueFieldJSONTests(mango.DbPerClass, MultiValueFieldTests):
5454
def setUp(self):
55-
self.db.recreate()
55+
super().setUp(db_per_test=True)
5656
self.db.save_docs(copy.deepcopy(DOCS))
5757
self.db.create_index(["name"])
5858
self.db.create_index(["age", "name"])
@@ -65,5 +65,5 @@ def setUp(self):
6565

6666
class MultiValueFieldAllDocsTests(mango.DbPerClass, MultiValueFieldTests):
6767
def setUp(self):
68-
self.db.recreate()
68+
super().setUp(db_per_test=True)
6969
self.db.save_docs(copy.deepcopy(DOCS))

src/mango/test/18-json-sort.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
class JSONIndexSortOptimisations(mango.DbPerClass):
2727
def setUp(self):
28-
self.db.recreate()
28+
super().setUp(db_per_test=True)
2929
self.db.save_docs(copy.deepcopy(DOCS))
3030

3131
def test_works_for_basic_case(self):

src/mango/test/19-find-conflicts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
class ChooseCorrectIndexForDocs(mango.DbPerClass):
2222
def setUp(self):
23-
self.db.recreate()
23+
super().setUp(db_per_test=True)
2424
self.db.save_docs(copy.deepcopy(DOC))
2525
self.db.save_docs_with_conflicts(copy.deepcopy(CONFLICT))
2626

0 commit comments

Comments
 (0)