Переглянути джерело

massive refactoring against unit test lib

Darien Raymond 10 роки тому
батько
коміт
0a2e4343bc
44 змінених файлів з 327 додано та 317 видалено
  1. 11 10
      app/router/rules/config/json/fieldrule_test.go
  2. 3 2
      app/router/rules/router_test.go
  3. 4 3
      common/alloc/buffer_test.go
  4. 3 2
      common/collect/timed_queue_test.go
  5. 3 2
      common/log/access_test.go
  6. 4 3
      common/log/log_test.go
  7. 6 5
      common/net/address_test.go
  8. 4 3
      common/net/destination_test.go
  9. 4 3
      common/net/json/network_test.go
  10. 7 6
      common/net/json/portrange_test.go
  11. 46 0
      common/net/testing/assert/portsubject.go
  12. 3 2
      common/net/transport_test.go
  13. 6 5
      common/retry/retry_test.go
  14. 3 3
      proxy/common/config/json/config_cache_test.go
  15. 4 3
      proxy/dokodemo/dokodemo_test.go
  16. 4 3
      proxy/freedom/freedom_test.go
  17. 6 6
      proxy/socks/config/json/config_test.go
  18. 4 3
      proxy/socks/protocol/socks4_test.go
  19. 9 8
      proxy/socks/protocol/socks_test.go
  20. 3 3
      proxy/socks/protocol/udp_test.go
  21. 7 6
      proxy/socks/socks_test.go
  22. 2 2
      proxy/vmess/config/id_test.go
  23. 2 2
      proxy/vmess/protocol/user/rand_test.go
  24. 4 3
      proxy/vmess/protocol/vmess_test.go
  25. 3 2
      proxy/vmess/vmess_test.go
  26. 5 4
      shell/point/config/json/json_test.go
  27. 6 9
      testing/assert/boolsubject.go
  28. 6 9
      testing/assert/bytessubject.go
  29. 6 9
      testing/assert/bytesubject.go
  30. 6 9
      testing/assert/errorsubject.go
  31. 6 9
      testing/assert/int64subject.go
  32. 5 8
      testing/assert/intsubject.go
  33. 6 9
      testing/assert/pointersubject.go
  34. 6 9
      testing/assert/stringsubject.go
  35. 33 0
      testing/assert/subject.go
  36. 6 9
      testing/assert/uint16subject.go
  37. 66 0
      testing/global.go
  38. 5 4
      testing/scenarios/socks_end_test.go
  39. 0 53
      testing/unit/assertions.go
  40. 0 76
      testing/unit/subject.go
  41. 2 2
      tools/build/build_test.go
  42. 3 3
      tools/build/env_test.go
  43. 2 2
      tools/build/go_test.go
  44. 3 3
      tools/git/git_test.go

+ 11 - 10
app/router/rules/config/json/fieldrule_test.go

@@ -6,11 +6,12 @@ import (
 
 	v2net "github.com/v2ray/v2ray-core/common/net"
 	v2nettesting "github.com/v2ray/v2ray-core/common/net/testing"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestStringListParsingList(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawJson := `["a", "b", "c", "d"]`
 	var strList StringList
@@ -20,7 +21,7 @@ func TestStringListParsingList(t *testing.T) {
 }
 
 func TestStringListParsingString(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawJson := `"abcd"`
 	var strList StringList
@@ -30,7 +31,7 @@ func TestStringListParsingString(t *testing.T) {
 }
 
 func TestDomainMatching(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rule := &FieldRule{
 		Domain: NewStringList("v2ray.com"),
@@ -40,7 +41,7 @@ func TestDomainMatching(t *testing.T) {
 }
 
 func TestPortMatching(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rule := &FieldRule{
 		Port: &v2nettesting.PortRange{
@@ -53,7 +54,7 @@ func TestPortMatching(t *testing.T) {
 }
 
 func TestIPMatching(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawJson := `{
     "type": "field",
@@ -66,7 +67,7 @@ func TestIPMatching(t *testing.T) {
 }
 
 func TestIPListMatching(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawJson := `{
     "type": "field",
@@ -79,7 +80,7 @@ func TestIPListMatching(t *testing.T) {
 }
 
 func TestPortNotMatching(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawJson := `{
     "type": "field",
@@ -92,7 +93,7 @@ func TestPortNotMatching(t *testing.T) {
 }
 
 func TestDomainNotMatching(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawJson := `{
     "type": "field",
@@ -105,7 +106,7 @@ func TestDomainNotMatching(t *testing.T) {
 }
 
 func TestDomainNotMatchingDomain(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawJson := `{
     "type": "field",

+ 3 - 2
app/router/rules/router_test.go

@@ -6,11 +6,12 @@ import (
 	"github.com/v2ray/v2ray-core/app/router/rules/config"
 	testinconfig "github.com/v2ray/v2ray-core/app/router/rules/config/testing"
 	v2net "github.com/v2ray/v2ray-core/common/net"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestSimpleRouter(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	router := &Router{
 		rules: []config.Rule{

+ 4 - 3
common/alloc/buffer_test.go

@@ -3,11 +3,12 @@ package alloc
 import (
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestBufferClear(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	buffer := NewBuffer().Clear()
 	defer buffer.Release()
@@ -21,7 +22,7 @@ func TestBufferClear(t *testing.T) {
 }
 
 func TestBufferIsFull(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	buffer := NewBuffer()
 	defer buffer.Release()

+ 3 - 2
common/collect/timed_queue_test.go

@@ -4,11 +4,12 @@ import (
 	"testing"
 	"time"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestTimedQueue(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	removed := make(map[string]bool)
 

+ 3 - 2
common/log/access_test.go

@@ -7,11 +7,12 @@ import (
 	"testing"
 	"time"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestAccessLog(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	filename := "/tmp/test_access_log.log"
 	InitAccessLogger(filename)

+ 4 - 3
common/log/log_test.go

@@ -5,11 +5,12 @@ import (
 	"log"
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestLogLevelSetting(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	assert.Pointer(debugLogger).Equals(noOpLoggerInstance)
 	SetLogLevel(DebugLevel)
@@ -21,7 +22,7 @@ func TestLogLevelSetting(t *testing.T) {
 }
 
 func TestStreamLogger(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	buffer := bytes.NewBuffer(make([]byte, 0, 1024))
 	logger := &streamLogger{

+ 6 - 5
common/net/address_test.go

@@ -4,11 +4,12 @@ import (
 	"net"
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestIPv4Address(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	ip := []byte{byte(1), byte(2), byte(3), byte(4)}
 	port := NewPort(80)
@@ -23,7 +24,7 @@ func TestIPv4Address(t *testing.T) {
 }
 
 func TestIPv6Address(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	ip := []byte{
 		byte(1), byte(2), byte(3), byte(4),
@@ -43,7 +44,7 @@ func TestIPv6Address(t *testing.T) {
 }
 
 func TestDomainAddress(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	domain := "v2ray.com"
 	port := NewPort(443)
@@ -58,7 +59,7 @@ func TestDomainAddress(t *testing.T) {
 }
 
 func TestNetIPv4Address(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	ip := net.IPv4(1, 2, 3, 4)
 	port := NewPort(80)

+ 4 - 3
common/net/destination_test.go

@@ -3,11 +3,12 @@ package net
 import (
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestTCPDestination(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	dest := NewTCPDestination(IPAddress([]byte{1, 2, 3, 4}, 80))
 	assert.Bool(dest.IsTCP()).IsTrue()
@@ -16,7 +17,7 @@ func TestTCPDestination(t *testing.T) {
 }
 
 func TestUDPDestination(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	dest := NewUDPDestination(IPAddress([]byte{0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88}, 53))
 	assert.Bool(dest.IsTCP()).IsFalse()

+ 4 - 3
common/net/json/network_test.go

@@ -4,11 +4,12 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestArrayNetworkList(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var list NetworkList
 	err := json.Unmarshal([]byte("[\"Tcp\"]"), &list)
@@ -18,7 +19,7 @@ func TestArrayNetworkList(t *testing.T) {
 }
 
 func TestStringNetworkList(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var list NetworkList
 	err := json.Unmarshal([]byte("\"TCP, ip\""), &list)

+ 7 - 6
common/net/json/portrange_test.go

@@ -4,11 +4,12 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestIntPort(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var portRange PortRange
 	err := json.Unmarshal([]byte("1234"), &portRange)
@@ -19,7 +20,7 @@ func TestIntPort(t *testing.T) {
 }
 
 func TestOverRangeIntPort(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var portRange PortRange
 	err := json.Unmarshal([]byte("70000"), &portRange)
@@ -30,7 +31,7 @@ func TestOverRangeIntPort(t *testing.T) {
 }
 
 func TestSingleStringPort(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var portRange PortRange
 	err := json.Unmarshal([]byte("\"1234\""), &portRange)
@@ -41,7 +42,7 @@ func TestSingleStringPort(t *testing.T) {
 }
 
 func TestStringPairPort(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var portRange PortRange
 	err := json.Unmarshal([]byte("\"1234-5678\""), &portRange)
@@ -52,7 +53,7 @@ func TestStringPairPort(t *testing.T) {
 }
 
 func TestOverRangeStringPort(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var portRange PortRange
 	err := json.Unmarshal([]byte("\"65536\""), &portRange)

+ 46 - 0
common/net/testing/assert/portsubject.go

@@ -0,0 +1,46 @@
+package unit
+
+import (
+	v2net "github.com/v2ray/v2ray-core/common/net"
+	"github.com/v2ray/v2ray-core/testing/assert"
+)
+
+func Port(value v2net.Port) *PortSubject {
+	return &PortSubject{value: value}
+}
+
+type PortSubject struct {
+	*assert.Subject
+	value v2net.Port
+}
+
+func (subject *PortSubject) Named(name string) *PortSubject {
+	subject.Subject.Named(name)
+	return subject
+}
+
+func (subject *PortSubject) Fail(verb string, other v2net.Port) {
+	subject.FailWithMessage("Not true that " + subject.DisplayString() + " " + verb + " <" + other.String() + ">.")
+}
+
+func (subject *PortSubject) DisplayString() string {
+	return subject.Subject.DisplayString(subject.value.String())
+}
+
+func (subject *PortSubject) Equals(expectation v2net.Port) {
+	if subject.value.Value() != expectation.Value() {
+		subject.Fail("is equal to", expectation)
+	}
+}
+
+func (subject *PortSubject) GreaterThan(expectation v2net.Port) {
+	if subject.value.Value() <= expectation.Value() {
+		subject.Fail("is greater than", expectation)
+	}
+}
+
+func (subject *PortSubject) LessThan(expectation v2net.Port) {
+	if subject.value.Value() >= expectation.Value() {
+		subject.Fail("is less than", expectation)
+	}
+}

+ 3 - 2
common/net/transport_test.go

@@ -8,11 +8,12 @@ import (
 	"testing"
 
 	"github.com/v2ray/v2ray-core/common/alloc"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestReaderAndWrite(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	size := 1024 * 1024
 	buffer := make([]byte, size)

+ 6 - 5
common/retry/retry_test.go

@@ -5,7 +5,8 @@ import (
 	"testing"
 	"time"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 var (
@@ -13,7 +14,7 @@ var (
 )
 
 func TestNoRetry(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	startTime := time.Now().Unix()
 	err := Timed(10, 100000).On(func() error {
@@ -26,7 +27,7 @@ func TestNoRetry(t *testing.T) {
 }
 
 func TestRetryOnce(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	startTime := time.Now()
 	called := 0
@@ -44,7 +45,7 @@ func TestRetryOnce(t *testing.T) {
 }
 
 func TestRetryMultiple(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	startTime := time.Now()
 	called := 0
@@ -62,7 +63,7 @@ func TestRetryMultiple(t *testing.T) {
 }
 
 func TestRetryExhausted(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	startTime := time.Now()
 	called := 0

+ 3 - 3
proxy/common/config/json/config_cache_test.go

@@ -4,11 +4,11 @@ import (
 	"testing"
 
 	"github.com/v2ray/v2ray-core/proxy/common/config"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestRegisterInboundConfig(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	initializeConfigCache()
 
 	protocol := "test_protocol"
@@ -27,7 +27,7 @@ func TestRegisterInboundConfig(t *testing.T) {
 }
 
 func TestRegisterOutboundConfig(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	initializeConfigCache()
 
 	protocol := "test_protocol"

+ 4 - 3
proxy/dokodemo/dokodemo_test.go

@@ -10,13 +10,14 @@ import (
 	_ "github.com/v2ray/v2ray-core/proxy/freedom"
 	"github.com/v2ray/v2ray-core/shell/point"
 	"github.com/v2ray/v2ray-core/shell/point/config/testing/mocks"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 	"github.com/v2ray/v2ray-core/testing/servers/tcp"
 	"github.com/v2ray/v2ray-core/testing/servers/udp"
-	"github.com/v2ray/v2ray-core/testing/unit"
 )
 
 func TestDokodemoTCP(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	port := v2nettesting.PickPort()
 
@@ -78,7 +79,7 @@ func TestDokodemoTCP(t *testing.T) {
 }
 
 func TestDokodemoUDP(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	port := v2nettesting.PickPort()
 

+ 4 - 3
proxy/freedom/freedom_test.go

@@ -18,13 +18,14 @@ import (
 	proxymocks "github.com/v2ray/v2ray-core/proxy/testing/mocks"
 	"github.com/v2ray/v2ray-core/shell/point"
 	"github.com/v2ray/v2ray-core/shell/point/config/testing/mocks"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 	"github.com/v2ray/v2ray-core/testing/servers/tcp"
 	"github.com/v2ray/v2ray-core/testing/servers/udp"
-	"github.com/v2ray/v2ray-core/testing/unit"
 )
 
 func TestUDPSend(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	data2Send := "Data to be sent to remote"
 
@@ -76,7 +77,7 @@ func TestUDPSend(t *testing.T) {
 }
 
 func TestSocksTcpConnect(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	port := v2nettesting.PickPort()
 
 	data2Send := "Data to be sent to remote"

+ 6 - 6
proxy/socks/config/json/config_test.go

@@ -7,11 +7,11 @@ import (
 
 	"github.com/v2ray/v2ray-core/proxy/common/config"
 	jsonconfig "github.com/v2ray/v2ray-core/proxy/common/config/json"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestAccountMapParsing(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var accountMap SocksAccountMap
 	err := json.Unmarshal([]byte("[{\"user\": \"a\", \"pass\":\"b\"}, {\"user\": \"c\", \"pass\":\"d\"}]"), &accountMap)
@@ -24,14 +24,14 @@ func TestAccountMapParsing(t *testing.T) {
 }
 
 func TestDefaultIPAddress(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	socksConfig := jsonconfig.CreateConfig("socks", config.TypeInbound).(*SocksConfig)
 	assert.String(socksConfig.IP().String()).Equals("127.0.0.1")
 }
 
 func TestIPAddressParsing(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var ipAddress IPAddress
 	err := json.Unmarshal([]byte("\"1.2.3.4\""), &ipAddress)
@@ -40,7 +40,7 @@ func TestIPAddressParsing(t *testing.T) {
 }
 
 func TestNoAuthConfig(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var config SocksConfig
 	err := json.Unmarshal([]byte("{\"auth\":\"noauth\", \"ip\":\"8.8.8.8\"}"), &config)
@@ -52,7 +52,7 @@ func TestNoAuthConfig(t *testing.T) {
 }
 
 func TestUserPassConfig(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	var config SocksConfig
 	err := json.Unmarshal([]byte("{\"auth\":\"password\", \"accounts\":[{\"user\":\"x\", \"pass\":\"y\"}], \"udp\":true}"), &config)

+ 4 - 3
proxy/socks/protocol/socks4_test.go

@@ -5,11 +5,12 @@ import (
 	"testing"
 
 	"github.com/v2ray/v2ray-core/common/alloc"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestSocks4AuthenticationRequestRead(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawRequest := []byte{
 		0x04, // version
@@ -26,7 +27,7 @@ func TestSocks4AuthenticationRequestRead(t *testing.T) {
 }
 
 func TestSocks4AuthenticationResponseToBytes(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	response := NewSocks4AuthenticationResponse(byte(0x10), 443, []byte{1, 2, 3, 4})
 

+ 9 - 8
proxy/socks/protocol/socks_test.go

@@ -6,12 +6,13 @@ import (
 	"testing"
 
 	"github.com/v2ray/v2ray-core/common/alloc"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 	"github.com/v2ray/v2ray-core/transport"
 )
 
 func TestHasAuthenticationMethod(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	request := Socks5AuthenticationRequest{
 		version:     socksVersion,
@@ -26,7 +27,7 @@ func TestHasAuthenticationMethod(t *testing.T) {
 }
 
 func TestAuthenticationRequestRead(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawRequest := []byte{
 		0x05, // version
@@ -41,7 +42,7 @@ func TestAuthenticationRequestRead(t *testing.T) {
 }
 
 func TestAuthenticationResponseWrite(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	response := NewAuthenticationResponse(byte(0x05))
 
@@ -51,7 +52,7 @@ func TestAuthenticationResponseWrite(t *testing.T) {
 }
 
 func TestRequestRead(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rawRequest := []byte{
 		0x05,                   // version
@@ -71,7 +72,7 @@ func TestRequestRead(t *testing.T) {
 }
 
 func TestResponseWrite(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	response := Socks5Response{
 		socksVersion,
@@ -98,14 +99,14 @@ func TestResponseWrite(t *testing.T) {
 }
 
 func TestEOF(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	_, _, err := ReadAuthentication(bytes.NewReader(make([]byte, 0)))
 	assert.Error(err).Equals(io.EOF)
 }
 
 func TestSignleByte(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	_, _, err := ReadAuthentication(bytes.NewReader(make([]byte, 1)))
 	assert.Error(err).Equals(transport.CorruptedPacket)

+ 3 - 3
proxy/socks/protocol/udp_test.go

@@ -3,12 +3,12 @@ package protocol
 import (
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 	"github.com/v2ray/v2ray-core/transport"
 )
 
 func TestSingleByteRequest(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	request, err := ReadUDPRequest(make([]byte, 1))
 	if request != nil {
@@ -18,7 +18,7 @@ func TestSingleByteRequest(t *testing.T) {
 }
 
 func TestDomainAddressRequest(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	payload := make([]byte, 0, 1024)
 	payload = append(payload, 0, 0, 1, AddrTypeDomain, byte(len("v2ray.com")))

+ 7 - 6
proxy/socks/socks_test.go

@@ -15,11 +15,12 @@ import (
 	proxymocks "github.com/v2ray/v2ray-core/proxy/testing/mocks"
 	"github.com/v2ray/v2ray-core/shell/point"
 	"github.com/v2ray/v2ray-core/shell/point/config/testing/mocks"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestSocksTcpConnect(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	port := v2nettesting.PickPort()
 
 	connInput := []byte("The data to be returned to socks server.")
@@ -74,7 +75,7 @@ func TestSocksTcpConnect(t *testing.T) {
 }
 
 func TestSocksTcpConnectWithUserPass(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	port := v2nettesting.PickPort()
 
 	connInput := []byte("The data to be returned to socks server.")
@@ -132,7 +133,7 @@ func TestSocksTcpConnectWithUserPass(t *testing.T) {
 }
 
 func TestSocksTcpConnectWithWrongUserPass(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	port := v2nettesting.PickPort()
 
 	connInput := []byte("The data to be returned to socks server.")
@@ -176,7 +177,7 @@ func TestSocksTcpConnectWithWrongUserPass(t *testing.T) {
 }
 
 func TestSocksTcpConnectWithWrongAuthMethod(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	port := v2nettesting.PickPort()
 
 	connInput := []byte("The data to be returned to socks server.")
@@ -220,7 +221,7 @@ func TestSocksTcpConnectWithWrongAuthMethod(t *testing.T) {
 }
 
 func TestSocksUdpSend(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	port := v2nettesting.PickPort()
 
 	connInput := []byte("The data to be returned to socks server.")

+ 2 - 2
proxy/vmess/config/id_test.go

@@ -3,11 +3,11 @@ package config
 import (
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestUUIDToID(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	uuid := "2418d087-648d-4990-86e8-19dca1d006d3"
 	expectedBytes := []byte{0x24, 0x18, 0xd0, 0x87, 0x64, 0x8d, 0x49, 0x90, 0x86, 0xe8, 0x19, 0xdc, 0xa1, 0xd0, 0x06, 0xd3}

+ 2 - 2
proxy/vmess/protocol/user/rand_test.go

@@ -4,11 +4,11 @@ import (
 	"testing"
 	"time"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestGenerateRandomInt64InRange(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	base := time.Now().Unix()
 	delta := 100
 

+ 4 - 3
proxy/vmess/protocol/vmess_test.go

@@ -10,7 +10,8 @@ import (
 	"github.com/v2ray/v2ray-core/proxy/vmess/config"
 	"github.com/v2ray/v2ray-core/proxy/vmess/protocol/user"
 	"github.com/v2ray/v2ray-core/proxy/vmess/protocol/user/testing/mocks"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 type TestUser struct {
@@ -27,7 +28,7 @@ func (this *TestUser) Level() config.UserLevel {
 }
 
 func TestVMessSerialization(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	userId, err := config.NewID("2b2966ac-16aa-4fbf-8d81-c5f172a3da51")
 	if err != nil {
@@ -81,7 +82,7 @@ func TestVMessSerialization(t *testing.T) {
 }
 
 func TestReadSingleByte(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	reader := NewVMessRequestReader(nil)
 	_, err := reader.Read(bytes.NewReader(make([]byte, 1)))

+ 3 - 2
proxy/vmess/vmess_test.go

@@ -12,11 +12,12 @@ import (
 	"github.com/v2ray/v2ray-core/proxy/vmess/config/json"
 	"github.com/v2ray/v2ray-core/shell/point"
 	"github.com/v2ray/v2ray-core/shell/point/config/testing/mocks"
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestVMessInAndOut(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	testAccount, err := config.NewID("ad937d9d-6e23-4a5a-ba23-bce5092a7c51")
 	assert.Error(err).IsNil()

+ 5 - 4
shell/point/config/json/json_test.go

@@ -10,11 +10,12 @@ import (
 	_ "github.com/v2ray/v2ray-core/proxy/vmess/config/json"
 	"github.com/v2ray/v2ray-core/shell/point/config/json"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestClientSampleConfig(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	// TODO: fix for Windows
 	baseDir := "$GOPATH/src/github.com/v2ray/v2ray-core/release/config"
@@ -34,7 +35,7 @@ func TestClientSampleConfig(t *testing.T) {
 }
 
 func TestServerSampleConfig(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	// TODO: fix for Windows
 	baseDir := "$GOPATH/src/github.com/v2ray/v2ray-core/release/config"
@@ -54,7 +55,7 @@ func TestServerSampleConfig(t *testing.T) {
 }
 
 func TestDetourConfig(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	// TODO: fix for Windows
 	baseDir := "$GOPATH/src/github.com/v2ray/v2ray-core/release/config"

+ 6 - 9
testing/unit/boolsubject.go → testing/assert/boolsubject.go

@@ -1,19 +1,16 @@
-package unit
+package assert
 
 import (
 	"strconv"
 )
 
-type BoolSubject struct {
-	*Subject
-	value bool
+func Bool(value bool) *BoolSubject {
+	return &BoolSubject{value: value}
 }
 
-func NewBoolSubject(base *Subject, value bool) *BoolSubject {
-	return &BoolSubject{
-		Subject: base,
-		value:   value,
-	}
+type BoolSubject struct {
+	Subject
+	value bool
 }
 
 func (subject *BoolSubject) Named(name string) *BoolSubject {

+ 6 - 9
testing/unit/bytessubject.go → testing/assert/bytessubject.go

@@ -1,20 +1,17 @@
-package unit
+package assert
 
 import (
 	"bytes"
 	"fmt"
 )
 
-type BytesSubject struct {
-	*Subject
-	value []byte
+func Bytes(value []byte) *BytesSubject {
+	return &BytesSubject{value: value}
 }
 
-func NewBytesSubject(base *Subject, value []byte) *BytesSubject {
-	return &BytesSubject{
-		Subject: base,
-		value:   value,
-	}
+type BytesSubject struct {
+	Subject
+	value []byte
 }
 
 func (subject *BytesSubject) Named(name string) *BytesSubject {

+ 6 - 9
testing/unit/bytesubject.go → testing/assert/bytesubject.go

@@ -1,19 +1,16 @@
-package unit
+package assert
 
 import (
 	"strconv"
 )
 
-type ByteSubject struct {
-	*Subject
-	value byte
+func Byte(value byte) *ByteSubject {
+	return &ByteSubject{value: value}
 }
 
-func NewByteSubject(base *Subject, value byte) *ByteSubject {
-	return &ByteSubject{
-		Subject: base,
-		value:   value,
-	}
+type ByteSubject struct {
+	Subject
+	value byte
 }
 
 func (subject *ByteSubject) Named(name string) *ByteSubject {

+ 6 - 9
testing/unit/errorsubject.go → testing/assert/errorsubject.go

@@ -1,15 +1,12 @@
-package unit
+package assert
 
-type ErrorSubject struct {
-	*Subject
-	value error
+func Error(value error) *ErrorSubject {
+	return &ErrorSubject{value: value}
 }
 
-func NewErrorSubject(base *Subject, value error) *ErrorSubject {
-	return &ErrorSubject{
-		Subject: base,
-		value:   value,
-	}
+type ErrorSubject struct {
+	Subject
+	value error
 }
 
 func (subject *ErrorSubject) Named(name string) *ErrorSubject {

+ 6 - 9
testing/unit/int64subject.go → testing/assert/int64subject.go

@@ -1,19 +1,16 @@
-package unit
+package assert
 
 import (
 	"strconv"
 )
 
-type Int64Subject struct {
-	*Subject
-	value int64
+func Int64(value int64) *Int64Subject {
+	return &Int64Subject{value: value}
 }
 
-func NewInt64Subject(base *Subject, value int64) *Int64Subject {
-	return &Int64Subject{
-		Subject: base,
-		value:   value,
-	}
+type Int64Subject struct {
+	Subject
+	value int64
 }
 
 func (subject *Int64Subject) Named(name string) *Int64Subject {

+ 5 - 8
testing/unit/intsubject.go → testing/assert/intsubject.go

@@ -1,21 +1,18 @@
-package unit
+package assert
 
 import (
 	"strconv"
 )
 
+func Int(value int) *IntSubject {
+	return &IntSubject{value: value}
+}
+
 type IntSubject struct {
 	*Subject
 	value int
 }
 
-func NewIntSubject(base *Subject, value int) *IntSubject {
-	return &IntSubject{
-		Subject: base,
-		value:   value,
-	}
-}
-
 func (subject *IntSubject) Named(name string) *IntSubject {
 	subject.Subject.Named(name)
 	return subject

+ 6 - 9
testing/unit/pointersubject.go → testing/assert/pointersubject.go

@@ -1,19 +1,16 @@
-package unit
+package assert
 
 import (
 	"fmt"
 )
 
-type PointerSubject struct {
-	*Subject
-	value interface{}
+func Pointer(value interface{}) *PointerSubject {
+	return &PointerSubject{value: value}
 }
 
-func NewPointerSubject(base *Subject, value interface{}) *PointerSubject {
-	return &PointerSubject{
-		Subject: base,
-		value:   value,
-	}
+type PointerSubject struct {
+	Subject
+	value interface{}
 }
 
 func (subject *PointerSubject) Named(name string) *PointerSubject {

+ 6 - 9
testing/unit/stringsubject.go → testing/assert/stringsubject.go

@@ -1,15 +1,12 @@
-package unit
+package assert
 
-type StringSubject struct {
-	*Subject
-	value string
+func String(value string) *StringSubject {
+	return &StringSubject{value: value}
 }
 
-func NewStringSubject(base *Subject, value string) *StringSubject {
-	return &StringSubject{
-		Subject: base,
-		value:   value,
-	}
+type StringSubject struct {
+	Subject
+	value string
 }
 
 func (subject *StringSubject) Named(name string) *StringSubject {

+ 33 - 0
testing/assert/subject.go

@@ -0,0 +1,33 @@
+package assert
+
+import (
+	v2testing "github.com/v2ray/v2ray-core/testing"
+)
+
+type Subject struct {
+	name string
+}
+
+func NewSubject() *Subject {
+	return &Subject{
+		name: "",
+	}
+}
+
+func (subject *Subject) FailWithMessage(message string) {
+	v2testing.Fail(message)
+}
+
+func (subject *Subject) Named(name string) {
+	subject.name = name
+}
+
+func (subject *Subject) DisplayString(value string) string {
+	if len(value) == 0 {
+		value = "unknown"
+	}
+	if len(subject.name) == 0 {
+		return "<" + value + ">"
+	}
+	return subject.name + "(<" + value + ">)"
+}

+ 6 - 9
testing/unit/uint16subject.go → testing/assert/uint16subject.go

@@ -1,19 +1,16 @@
-package unit
+package assert
 
 import (
 	"strconv"
 )
 
-type Uint16Subject struct {
-	*Subject
-	value uint16
+func Uint16(value uint16) *Uint16Subject {
+	return &Uint16Subject{value: value}
 }
 
-func NewUint16Subject(base *Subject, value uint16) *Uint16Subject {
-	return &Uint16Subject{
-		Subject: base,
-		value:   value,
-	}
+type Uint16Subject struct {
+	Subject
+	value uint16
 }
 
 func (subject *Uint16Subject) Named(name string) *Uint16Subject {

+ 66 - 0
testing/global.go

@@ -0,0 +1,66 @@
+package unit
+
+import (
+	"bytes"
+	"fmt"
+	"runtime"
+	"strings"
+	"testing"
+)
+
+var tGlobal *testing.T
+
+func Current(t *testing.T) {
+	tGlobal = t
+}
+
+func getCaller() (string, int) {
+	stackLevel := 3
+	for {
+		_, file, line, ok := runtime.Caller(stackLevel)
+		if strings.Contains(file, "assert") {
+			stackLevel++
+		} else {
+			if ok {
+				// Truncate file name at last file name separator.
+				if index := strings.LastIndex(file, "/"); index >= 0 {
+					file = file[index+1:]
+				} else if index = strings.LastIndex(file, "\\"); index >= 0 {
+					file = file[index+1:]
+				}
+			} else {
+				file = "???"
+				line = 1
+			}
+			return file, line
+		}
+	}
+}
+
+// decorate prefixes the string with the file and line of the call site
+// and inserts the final newline if needed and indentation tabs for formatting.
+func decorate(s string) string {
+	file, line := getCaller()
+	buf := new(bytes.Buffer)
+	// Every line is indented at least one tab.
+	buf.WriteString("  ")
+	fmt.Fprintf(buf, "%s:%d: ", file, line)
+	lines := strings.Split(s, "\n")
+	if l := len(lines); l > 1 && lines[l-1] == "" {
+		lines = lines[:l-1]
+	}
+	for i, line := range lines {
+		if i > 0 {
+			// Second and subsequent lines are indented an extra tab.
+			buf.WriteString("\n\t\t")
+		}
+		buf.WriteString(line)
+	}
+	buf.WriteByte('\n')
+	return buf.String()
+}
+
+func Fail(message string) {
+	fmt.Println(decorate(message))
+	tGlobal.Fail()
+}

+ 5 - 4
testing/scenarios/socks_end_test.go

@@ -6,13 +6,14 @@ import (
 
 	v2net "github.com/v2ray/v2ray-core/common/net"
 	v2nettesting "github.com/v2ray/v2ray-core/common/net/testing"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
 	"github.com/v2ray/v2ray-core/testing/servers/tcp"
 	"github.com/v2ray/v2ray-core/testing/servers/udp"
-	"github.com/v2ray/v2ray-core/testing/unit"
 )
 
 func TestTCPConnection(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	targetPort := v2nettesting.PickPort()
 	tcpServer := &tcp.Server{
@@ -78,7 +79,7 @@ func TestTCPConnection(t *testing.T) {
 }
 
 func TestTCPBind(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	targetPort := v2nettesting.PickPort()
 	tcpServer := &tcp.Server{
@@ -125,7 +126,7 @@ func TestTCPBind(t *testing.T) {
 }
 
 func TestUDPAssociate(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	targetPort := v2nettesting.PickPort()
 	udpServer := &udp.Server{

+ 0 - 53
testing/unit/assertions.go

@@ -1,53 +0,0 @@
-package unit
-
-import (
-	"testing"
-)
-
-// Assertion is an assertion library inspired by Truth.
-// See http://google.github.io/truth/
-type Assertion struct {
-	t *testing.T
-}
-
-func Assert(t *testing.T) *Assertion {
-	assert := new(Assertion)
-	assert.t = t
-	return assert
-}
-
-func (a *Assertion) Int64(value int64) *Int64Subject {
-	return NewInt64Subject(NewSubject(a), value)
-}
-
-func (a *Assertion) Int(value int) *IntSubject {
-	return NewIntSubject(NewSubject(a), value)
-}
-
-func (a *Assertion) Uint16(value uint16) *Uint16Subject {
-	return NewUint16Subject(NewSubject(a), value)
-}
-
-func (a *Assertion) Byte(value byte) *ByteSubject {
-	return NewByteSubject(NewSubject(a), value)
-}
-
-func (a *Assertion) Bytes(value []byte) *BytesSubject {
-	return NewBytesSubject(NewSubject(a), value)
-}
-
-func (a *Assertion) String(value string) *StringSubject {
-	return NewStringSubject(NewSubject(a), value)
-}
-
-func (a *Assertion) Error(value error) *ErrorSubject {
-	return NewErrorSubject(NewSubject(a), value)
-}
-
-func (a *Assertion) Bool(value bool) *BoolSubject {
-	return NewBoolSubject(NewSubject(a), value)
-}
-
-func (a *Assertion) Pointer(value interface{}) *PointerSubject {
-	return NewPointerSubject(NewSubject(a), value)
-}

+ 0 - 76
testing/unit/subject.go

@@ -1,76 +0,0 @@
-package unit
-
-import (
-	"bytes"
-	"fmt"
-	"runtime"
-	"strings"
-)
-
-type Subject struct {
-	assert *Assertion
-	name   string
-}
-
-func NewSubject(assert *Assertion) *Subject {
-	return &Subject{
-		assert: assert,
-		name:   "",
-	}
-}
-
-// decorate prefixes the string with the file and line of the call site
-// and inserts the final newline if needed and indentation tabs for formatting.
-func decorate(s string) string {
-	_, file, line, ok := runtime.Caller(3)
-	if strings.Contains(file, "testing") {
-		_, file, line, ok = runtime.Caller(4)
-	}
-	if ok {
-		// Truncate file name at last file name separator.
-		if index := strings.LastIndex(file, "/"); index >= 0 {
-			file = file[index+1:]
-		} else if index = strings.LastIndex(file, "\\"); index >= 0 {
-			file = file[index+1:]
-		}
-	} else {
-		file = "???"
-		line = 1
-	}
-	buf := new(bytes.Buffer)
-	// Every line is indented at least one tab.
-	buf.WriteString("  ")
-	fmt.Fprintf(buf, "%s:%d: ", file, line)
-	lines := strings.Split(s, "\n")
-	if l := len(lines); l > 1 && lines[l-1] == "" {
-		lines = lines[:l-1]
-	}
-	for i, line := range lines {
-		if i > 0 {
-			// Second and subsequent lines are indented an extra tab.
-			buf.WriteString("\n\t\t")
-		}
-		buf.WriteString(line)
-	}
-	buf.WriteByte('\n')
-	return buf.String()
-}
-
-func (subject *Subject) FailWithMessage(message string) {
-	fmt.Println(decorate(message))
-	subject.assert.t.Fail()
-}
-
-func (subject *Subject) Named(name string) {
-	subject.name = name
-}
-
-func (subject *Subject) DisplayString(value string) string {
-	if len(value) == 0 {
-		value = "unknown"
-	}
-	if len(subject.name) == 0 {
-		return "<" + value + ">"
-	}
-	return subject.name + "(<" + value + ">)"
-}

+ 2 - 2
tools/build/build_test.go

@@ -6,7 +6,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func cleanBinPath() {
@@ -31,7 +31,7 @@ func allFilesExists(files ...string) bool {
 }
 
 func TestBuildMacOS(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 	binPath = filepath.Join(os.Getenv("GOPATH"), "testing")
 	cleanBinPath()
 

+ 3 - 3
tools/build/env_test.go

@@ -3,11 +3,11 @@ package main
 import (
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestParseOS(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	assert.Pointer(parseOS("windows")).Equals(Windows)
 	assert.Pointer(parseOS("macos")).Equals(MacOS)
@@ -16,7 +16,7 @@ func TestParseOS(t *testing.T) {
 }
 
 func TestParseArch(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	assert.Pointer(parseArch("x86")).Equals(X86)
 	assert.Pointer(parseArch("x64")).Equals(Amd64)

+ 2 - 2
tools/build/go_test.go

@@ -11,11 +11,11 @@ import (
 	"testing"
 	"time"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestBuildAndRun(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	gopath := os.Getenv("GOPATH")
 	target := filepath.Join(gopath, "src", "v2ray_test")

+ 3 - 3
tools/git/git_test.go

@@ -3,11 +3,11 @@ package git
 import (
 	"testing"
 
-	"github.com/v2ray/v2ray-core/testing/unit"
+	"github.com/v2ray/v2ray-core/testing/assert"
 )
 
 func TestRevParse(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	rev, err := RevParse("HEAD")
 	assert.Error(err).IsNil()
@@ -15,7 +15,7 @@ func TestRevParse(t *testing.T) {
 }
 
 func TestRepoVersion(t *testing.T) {
-	assert := unit.Assert(t)
+	v2testing.Current(t)
 
 	version, err := RepoVersionHead()
 	assert.Error(err).IsNil()