chore(tests): unbreak tests on Windows (#1775)
Currently [appveyor
tests](https://ci.appveyor.com/project/manishrjain/badger/builds/42502297)
are failing in multiple places on Windows.
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg"
height="34" align="absmiddle"
alt="Reviewable"/>](https://reviewable.io/reviews/dgraph-io/badger/1775)
<!-- Reviewable:end -->
diff --git a/db2_test.go b/db2_test.go
index f92bc09..2e2e45e 100644
--- a/db2_test.go
+++ b/db2_test.go
@@ -685,7 +685,7 @@
err := db.Update(func(txn *Txn) error {
key := []byte(fmt.Sprintf("%d", i))
v := []byte("barValuebarValuebarValuebarValuebarValue")
- require.Greater(t, len(v), db.valueThreshold())
+ require.Greater(t, int64(len(v)), db.valueThreshold())
//32 bytes length and now it's not working
err := txn.Set(key, v)
@@ -710,6 +710,7 @@
// Don't use vlog.Close here. We don't want to fix the file size. Only un-mmap
// the data so that we can truncate the file durning the next vlog.Open.
require.NoError(t, z.Munmap(db.vlog.filesMap[db.vlog.maxFid].Data))
+ require.NoError(t, db.mt.wal.Close(-1))
for _, f := range db.vlog.filesMap {
require.NoError(t, f.Fd.Close())
}
diff --git a/db_test.go b/db_test.go
index c698df2..5cc1ada 100644
--- a/db_test.go
+++ b/db_test.go
@@ -2234,11 +2234,13 @@
ops.ReadOnly = true
db, err = Open(ops)
- require.NoError(t, err)
- require.NoError(t, db.Close())
+ if runtime.GOOS == "windows" {
+ require.Equal(t, err, ErrWindowsNotSupported)
+ } else {
+ require.NoError(t, err)
+ require.NoError(t, db.Close())
+ }
- db, err = Open(ops)
- require.NoError(t, err)
var count int
read := func() {
count = 0
@@ -2256,9 +2258,13 @@
return nil
})
}
- read()
- require.Equal(t, 10, count)
- require.NoError(t, db.Close())
+ if runtime.GOOS != "windows" {
+ db, err = Open(ops)
+ require.NoError(t, err)
+ read()
+ require.Equal(t, 10, count)
+ require.NoError(t, db.Close())
+ }
ops.ReadOnly = false
db, err = Open(ops)
@@ -2279,10 +2285,14 @@
ops.ReadOnly = true
db, err = Open(ops)
- require.NoError(t, err)
- read()
- require.Equal(t, 20, count)
- require.NoError(t, db.Close())
+ if runtime.GOOS == "windows" {
+ require.Equal(t, err, ErrWindowsNotSupported)
+ } else {
+ require.NoError(t, err)
+ read()
+ require.Equal(t, 20, count)
+ require.NoError(t, db.Close())
+ }
}
func TestBannedPrefixes(t *testing.T) {
diff --git a/iterator_test.go b/iterator_test.go
index e124eae..b64e0d5 100644
--- a/iterator_test.go
+++ b/iterator_test.go
@@ -24,6 +24,7 @@
"math/rand"
"os"
"path/filepath"
+ "runtime"
"strings"
"testing"
@@ -303,6 +304,11 @@
opts.ReadOnly = true
db, err = Open(opts)
+ if runtime.GOOS == "windows" {
+ require.Equal(t, err, ErrWindowsNotSupported)
+ return
+ }
+
require.NoError(t, err)
defer func() {
require.NoError(t, db.Close())
diff --git a/pb/protos_test.go b/pb/protos_test.go
index 723c81e..f2e6e46 100644
--- a/pb/protos_test.go
+++ b/pb/protos_test.go
@@ -17,6 +17,7 @@
import (
"os/exec"
+ "runtime"
"testing"
"github.com/stretchr/testify/require"
@@ -32,6 +33,9 @@
}
func TestProtosRegenerate(t *testing.T) {
+ if runtime.GOOS == "windows" {
+ t.Skip("protobuf regeneration is not supported on Windows")
+ }
err := Exec("./gen.sh")
require.NoError(t, err, "Got error while regenerating protos: %v\n", err)
diff --git a/value_test.go b/value_test.go
index 2339743..e0ef4a8 100644
--- a/value_test.go
+++ b/value_test.go
@@ -24,6 +24,7 @@
"math/rand"
"os"
"reflect"
+ "runtime"
"sync"
"testing"
"time"
@@ -726,8 +727,12 @@
opts.ReadOnly = true
// Badger should fail a read-only open with values to replay
_, err = Open(opts)
- require.Error(t, err)
- require.Regexp(t, "Log truncate required", err.Error())
+ if runtime.GOOS == "windows" {
+ require.Equal(t, err, ErrWindowsNotSupported)
+ } else {
+ require.Error(t, err)
+ require.Regexp(t, "Log truncate required", err.Error())
+ }
}
func TestValueLogTrigger(t *testing.T) {
@@ -796,6 +801,10 @@
// This test creates two mem files and corrupts the last bit of the first file.
func TestPenultimateMemCorruption(t *testing.T) {
+ if runtime.GOOS == "windows" {
+ t.Skip("skipping corruption tests on Windows since it does not allow removal of mmaped files")
+ }
+
dir, err := ioutil.TempDir("", "badger-test")
require.NoError(t, err)
defer removeDir(dir)