]> Sergey Matveev's repositories - btrtrc.git/blob - client-nowasm_test.go
Test fixes for Windows
[btrtrc.git] / client-nowasm_test.go
1 //go:build !wasm
2 // +build !wasm
3
4 package torrent
5
6 import (
7         "os"
8         "testing"
9
10         qt "github.com/frankban/quicktest"
11
12         "github.com/stretchr/testify/require"
13
14         "github.com/anacrolix/torrent/internal/testutil"
15         "github.com/anacrolix/torrent/storage"
16 )
17
18 func TestBoltPieceCompletionClosedWhenClientClosed(t *testing.T) {
19         cfg := TestingConfig(t)
20         pc, err := storage.NewBoltPieceCompletion(cfg.DataDir)
21         require.NoError(t, err)
22         ci := storage.NewFileWithCompletion(cfg.DataDir, pc)
23         defer ci.Close()
24         cfg.DefaultStorage = ci
25         cl, err := NewClient(cfg)
26         require.NoError(t, err)
27         cl.Close()
28         // And again, https://github.com/anacrolix/torrent/issues/158
29         cl, err = NewClient(cfg)
30         require.NoError(t, err)
31         cl.Close()
32 }
33
34 func TestIssue335(t *testing.T) {
35         dir, mi := testutil.GreetingTestTorrent()
36         defer func() {
37                 err := os.RemoveAll(dir)
38                 if err != nil {
39                         t.Fatalf("removing torrent dummy data dir: %v", err)
40                 }
41         }()
42         logErr := func(f func() error, msg string) {
43                 err := f()
44                 t.Logf("%s: %v", msg, err)
45                 if err != nil {
46                         t.Fail()
47                 }
48         }
49         cfg := TestingConfig(t)
50         cfg.Seed = false
51         cfg.Debug = true
52         cfg.DataDir = dir
53         comp, err := storage.NewBoltPieceCompletion(dir)
54         c := qt.New(t)
55         c.Assert(err, qt.IsNil)
56         defer logErr(comp.Close, "closing bolt piece completion")
57         mmapStorage := storage.NewMMapWithCompletion(dir, comp)
58         defer logErr(mmapStorage.Close, "closing mmap storage")
59         cfg.DefaultStorage = mmapStorage
60         cl, err := NewClient(cfg)
61         c.Assert(err, qt.IsNil)
62         defer logErr(cl.Close, "closing client")
63         tor, new, err := cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
64         c.Assert(err, qt.IsNil)
65         c.Assert(new, qt.IsTrue)
66         c.Assert(cl.WaitAll(), qt.IsTrue)
67         tor.Drop()
68         _, new, err = cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
69         c.Assert(err, qt.IsNil)
70         c.Assert(new, qt.IsTrue)
71         c.Assert(cl.WaitAll(), qt.IsTrue)
72 }