forked from forgejo/forgejo
Decouple unit test, remove intermediate unittestbridge
package (#17662)
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
23bd7b1211
commit
81926d61db
151 changed files with 1719 additions and 1781 deletions
41
models/unittest/reflection.go
Normal file
41
models/unittest/reflection.go
Normal file
|
@ -0,0 +1,41 @@
|
|||
// Copyright 2021 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package unittest
|
||||
|
||||
import (
|
||||
"log"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
func fieldByName(v reflect.Value, field string) reflect.Value {
|
||||
if v.Kind() == reflect.Ptr {
|
||||
v = v.Elem()
|
||||
}
|
||||
f := v.FieldByName(field)
|
||||
if !f.IsValid() {
|
||||
log.Panicf("can not read %s for %v", field, v)
|
||||
}
|
||||
return f
|
||||
}
|
||||
|
||||
type reflectionValue struct {
|
||||
v reflect.Value
|
||||
}
|
||||
|
||||
func reflectionWrap(v interface{}) *reflectionValue {
|
||||
return &reflectionValue{v: reflect.ValueOf(v)}
|
||||
}
|
||||
|
||||
func (rv *reflectionValue) int(field string) int {
|
||||
return int(fieldByName(rv.v, field).Int())
|
||||
}
|
||||
|
||||
func (rv *reflectionValue) str(field string) string {
|
||||
return fieldByName(rv.v, field).String()
|
||||
}
|
||||
|
||||
func (rv *reflectionValue) bool(field string) bool {
|
||||
return fieldByName(rv.v, field).Bool()
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue