init_test_fixture.cpp raw

   1  // Copyright (c) 2018-present The Bitcoin Core developers
   2  // Distributed under the MIT software license, see the accompanying
   3  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
   4  
   5  #include <common/args.h>
   6  #include <univalue.h>
   7  #include <util/chaintype.h>
   8  #include <util/check.h>
   9  #include <util/fs.h>
  10  
  11  #include <fstream>
  12  #include <string>
  13  
  14  #include <wallet/test/init_test_fixture.h>
  15  
  16  namespace wallet {
  17  InitWalletDirTestingSetup::InitWalletDirTestingSetup(const ChainType chainType) : BasicTestingSetup(chainType)
  18  {
  19      m_wallet_loader = MakeWalletLoader(*m_node.chain, m_args);
  20  
  21      const auto sep = fs::path::preferred_separator;
  22  
  23      m_datadir = m_args.GetDataDirNet();
  24      m_cwd = fs::current_path();
  25  
  26      m_walletdir_path_cases["default"] = m_datadir / "wallets";
  27      m_walletdir_path_cases["custom"] = m_datadir / "my_wallets";
  28      m_walletdir_path_cases["nonexistent"] = m_datadir / "path_does_not_exist";
  29      m_walletdir_path_cases["file"] = m_datadir / "not_a_directory.dat";
  30      m_walletdir_path_cases["trailing"] = (m_datadir / "wallets") + sep;
  31      m_walletdir_path_cases["trailing2"] = (m_datadir / "wallets") + sep + sep;
  32  
  33      fs::current_path(m_datadir);
  34      m_walletdir_path_cases["relative"] = "wallets";
  35  
  36      fs::create_directories(m_walletdir_path_cases["default"]);
  37      fs::create_directories(m_walletdir_path_cases["custom"]);
  38      fs::create_directories(m_walletdir_path_cases["relative"]);
  39      std::ofstream f{m_walletdir_path_cases["file"].std_path()};
  40      f.close();
  41  }
  42  
  43  InitWalletDirTestingSetup::~InitWalletDirTestingSetup()
  44  {
  45      fs::current_path(m_cwd);
  46  }
  47  
  48  void InitWalletDirTestingSetup::SetWalletDir(const fs::path& walletdir_path)
  49  {
  50      m_args.ForceSetArg("-walletdir", fs::PathToString(walletdir_path));
  51  }
  52  } // namespace wallet
  53