gtests ordering: clean up wallet files before each WalletZkeysTest

This allows us to use --gtest_repeat= on the WalletZkeysTest group,
otherwise, each test will reuse its previous iteration's wallet file,
causing assertions to be invalidated.

We put the RemoveDb at the beginning of each test because putting it
at the end of the test means it doesn't get run if the test fails.
This would lead to a single failed test causing every instance of that
test thereafter to fail (since it uses the same temporary directory).

The dummyWallet.LoadWallet() ensures that CDB is initialized, otherwise
bitdb.RemoveDb causes the error:
"BDB1565 DB_ENV->dbremove: method not permitted before handle's open
method"
This commit is contained in:
sasha 2022-03-02 11:29:33 -08:00
parent 902187368e
commit 2e52c1623d
1 changed files with 17 additions and 4 deletions

View File

@ -1,6 +1,7 @@
#include <gtest/gtest.h>
#include "fs.h"
#include "db.h"
#include "zcash/Address.hpp"
#include "wallet/wallet.h"
#include "wallet/walletdb.h"
@ -227,7 +228,10 @@ TEST(WalletZkeysTest, WriteZkeyDirectToDb) {
fs::create_directories(pathTemp);
mapArgs["-datadir"] = pathTemp.string();
bool fFirstRun;
bool fFirstRun, fFirstRunDummy;
CWallet dummyWallet(Params(), "wallet_direct_zkey_test.dat");
dummyWallet.LoadWallet(fFirstRunDummy);
bitdb.RemoveDb("wallet_direct_zkey_test.dat");
CWallet wallet(Params(), "wallet_direct_zkey_test.dat");
LOCK(wallet.cs_wallet);
ASSERT_EQ(DB_LOAD_OK, wallet.LoadWallet(fFirstRun));
@ -300,7 +304,10 @@ TEST(WalletZkeysTest, WriteViewingKeyDirectToDB) {
fs::create_directories(pathTemp);
mapArgs["-datadir"] = pathTemp.string();
bool fFirstRun;
bool fFirstRun, fFirstRunDummy;
CWallet dummyWallet(Params(), "wallet-vkey.dat");
dummyWallet.LoadWallet(fFirstRunDummy);
bitdb.RemoveDb("wallet-vkey.dat");
CWallet wallet(Params(), "wallet-vkey.dat");
LOCK(wallet.cs_wallet);
ASSERT_EQ(DB_LOAD_OK, wallet.LoadWallet(fFirstRun));
@ -347,7 +354,10 @@ TEST(WalletZkeysTest, WriteCryptedzkeyDirectToDb) {
fs::create_directories(pathTemp);
mapArgs["-datadir"] = pathTemp.string();
bool fFirstRun;
bool fFirstRun, fFirstRunDummy;
CWallet dummyWallet(Params(), "wallet_crypted.dat");
dummyWallet.LoadWallet(fFirstRunDummy);
bitdb.RemoveDb("wallet_crypted.dat");
CWallet wallet(Params(), "wallet_crypted.dat");
LOCK(wallet.cs_wallet);
ASSERT_EQ(DB_LOAD_OK, wallet.LoadWallet(fFirstRun));
@ -422,7 +432,10 @@ TEST(WalletZkeysTest, WriteCryptedSaplingZkeyDirectToDb) {
fs::create_directories(pathTemp);
mapArgs["-datadir"] = pathTemp.string();
bool fFirstRun;
bool fFirstRun, fFirstRunDummy;
CWallet dummyWallet(Params(), "wallet_crypted_sapling.dat");
dummyWallet.LoadWallet(fFirstRunDummy);
bitdb.RemoveDb("wallet_crypted_sapling.dat");
CWallet wallet(Params(), "wallet_crypted_sapling.dat");
LOCK(wallet.cs_wallet);
ASSERT_EQ(DB_LOAD_OK, wallet.LoadWallet(fFirstRun));