diff --git a/wallet/createtx_test.go b/wallet/createtx_test.go index 9747630..04a52c1 100644 --- a/wallet/createtx_test.go +++ b/wallet/createtx_test.go @@ -6,16 +6,12 @@ package wallet import ( "bytes" - "io/ioutil" - "os" "testing" "time" - "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/wire" - "github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcwallet/waddrmgr" "github.com/btcsuite/btcwallet/walletdb" _ "github.com/btcsuite/btcwallet/walletdb/bdb" @@ -26,31 +22,8 @@ import ( // request a dry run of the txToOutputs call. It also makes sure a subsequent // non-dry run call produces a similar transaction to the dry-run. func TestTxToOutputsDryRun(t *testing.T) { - // Set up a wallet. - dir, err := ioutil.TempDir("", "createtx_test") - if err != nil { - t.Fatalf("Failed to create db dir: %v", err) - } - defer os.RemoveAll(dir) - - seed, err := hdkeychain.GenerateSeed(hdkeychain.MinSeedBytes) - if err != nil { - t.Fatalf("unable to create seed: %v", err) - } - - pubPass := []byte("hello") - privPass := []byte("world") - - loader := NewLoader(&chaincfg.TestNet3Params, dir, true, 250) - w, err := loader.CreateNewWallet(pubPass, privPass, seed, time.Now()) - if err != nil { - t.Fatalf("unable to create wallet: %v", err) - } - chainClient := &mockChainClient{} - w.chainClient = chainClient - if err := w.Unlock(privPass, time.After(10*time.Minute)); err != nil { - t.Fatalf("unable to unlock wallet: %v", err) - } + w, cleanup := testWallet(t) + defer cleanup() // Create an address we can use to send some coins to. addr, err := w.CurrentAddress(0, waddrmgr.KeyScopeBIP0044) diff --git a/wallet/example_test.go b/wallet/example_test.go new file mode 100644 index 0000000..c6d1b82 --- /dev/null +++ b/wallet/example_test.go @@ -0,0 +1,47 @@ +package wallet + +import ( + "io/ioutil" + "os" + "testing" + "time" + + "github.com/btcsuite/btcd/chaincfg" + "github.com/btcsuite/btcutil/hdkeychain" +) + +// testWallet creates a test wallet and unlocks it. +func testWallet(t *testing.T) (*Wallet, func()) { + // Set up a wallet. + dir, err := ioutil.TempDir("", "test_wallet") + if err != nil { + t.Fatalf("Failed to create db dir: %v", err) + } + + cleanup := func() { + if err := os.RemoveAll(dir); err != nil { + t.Fatalf("could not cleanup test: %v", err) + } + } + + seed, err := hdkeychain.GenerateSeed(hdkeychain.MinSeedBytes) + if err != nil { + t.Fatalf("unable to create seed: %v", err) + } + + pubPass := []byte("hello") + privPass := []byte("world") + + loader := NewLoader(&chaincfg.TestNet3Params, dir, true, 250) + w, err := loader.CreateNewWallet(pubPass, privPass, seed, time.Now()) + if err != nil { + t.Fatalf("unable to create wallet: %v", err) + } + chainClient := &mockChainClient{} + w.chainClient = chainClient + if err := w.Unlock(privPass, time.After(10*time.Minute)); err != nil { + t.Fatalf("unable to unlock wallet: %v", err) + } + + return w, cleanup +}