1 // Copyright (c) 2018-2020 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 <fs.h> 6 #include <univalue.h> 7 #include <util/check.h> 8 #include <util/system.h> 9 10 #include <wallet/test/init_test_fixture.h> 11 InitWalletDirTestingSetup(const std::string & chainName)12InitWalletDirTestingSetup::InitWalletDirTestingSetup(const std::string& chainName) : BasicTestingSetup(chainName) 13 { 14 m_wallet_client = MakeWalletClient(*m_node.chain, *Assert(m_node.args)); 15 16 std::string sep; 17 sep += fs::path::preferred_separator; 18 19 m_datadir = gArgs.GetDataDirNet(); 20 m_cwd = fs::current_path(); 21 22 m_walletdir_path_cases["default"] = m_datadir / "wallets"; 23 m_walletdir_path_cases["custom"] = m_datadir / "my_wallets"; 24 m_walletdir_path_cases["nonexistent"] = m_datadir / "path_does_not_exist"; 25 m_walletdir_path_cases["file"] = m_datadir / "not_a_directory.dat"; 26 m_walletdir_path_cases["trailing"] = m_datadir / "wallets" / sep; 27 m_walletdir_path_cases["trailing2"] = m_datadir / "wallets" / sep / sep; 28 29 fs::current_path(m_datadir); 30 m_walletdir_path_cases["relative"] = "wallets"; 31 32 fs::create_directories(m_walletdir_path_cases["default"]); 33 fs::create_directories(m_walletdir_path_cases["custom"]); 34 fs::create_directories(m_walletdir_path_cases["relative"]); 35 #if BOOST_VERSION >= 107700 36 std::ofstream f(BOOST_FILESYSTEM_C_STR(m_walletdir_path_cases["file"])); 37 #else 38 std::ofstream f(m_walletdir_path_cases["file"].BOOST_FILESYSTEM_C_STR); 39 #endif // BOOST_VERSION >= 107700 40 f.close(); 41 } 42 ~InitWalletDirTestingSetup()43InitWalletDirTestingSetup::~InitWalletDirTestingSetup() 44 { 45 gArgs.LockSettings([&](util::Settings& settings) { 46 settings.forced_settings.erase("walletdir"); 47 }); 48 fs::current_path(m_cwd); 49 } 50 SetWalletDir(const fs::path & walletdir_path)51void InitWalletDirTestingSetup::SetWalletDir(const fs::path& walletdir_path) 52 { 53 gArgs.ForceSetArg("-walletdir", walletdir_path.string()); 54 } 55