GHA: Add additional checks for common issues (#1922)

* GHA, tests: Add additional checks for common issues

These checks include:
- Ensuring that all testify funcs use their formatted variants (e.g., `assert.Equalf(t, expected, actual)` instead of `assert.Equal(t, expected, actual)`).
- Replacing `%s` with %q
- Enforcing consistent usage of should/must wording for testify assert/require messages

* Add support for checking backticked string format specifiers and fix issues

* tests: Fix error comparisons

* tests: Replace errors.Is(err, nil) usage with testify and automate check

* refactor: Rename ExtractPort to ExtractPortOrDefault

* tests: Replace assert with require for error handling in multiple test files

* tests: Replace assert with require for error handling and improve assertions in data tests

* tests: Fix typo in assertion message for StreamVol test

* OKX: Fix GetOpenInterestAndVolumeStrike test with instrument selection and improved assertions

* OKX: Revert intentional error check

* Improve error message for expiry time check in GetOpenInterestAndVolumeStrike test
This commit is contained in:
Adrian Gallagher
2025-05-28 12:26:51 +10:00
committed by GitHub
parent 1e5739dffa
commit a5b638bfb7
165 changed files with 2565 additions and 4626 deletions

View File

@@ -6,6 +6,8 @@ import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/thrasher-corp/gocryptotrader/currency"
)
@@ -34,9 +36,7 @@ func TestWhaleBomb(t *testing.T) {
}
result, err := b.WhaleBomb(7001, true) // <- This price should not be wiped out on the book.
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 7000 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 7000)
@@ -55,9 +55,7 @@ func TestWhaleBomb(t *testing.T) {
}
result, err = b.WhaleBomb(7000.5, true) // <- Slot between prices will lift to next ask tranche
if !errors.Is(err, nil) {
t.Errorf("received '%v', expected '%v'", err, nil)
}
assert.NoError(t, err)
if result.Amount != 7000 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 7000)
@@ -76,18 +74,14 @@ func TestWhaleBomb(t *testing.T) {
}
result, err = b.WhaleBomb(7002, true) // <- exceed available quotations
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if !strings.Contains(result.Status, fullLiquidityUsageWarning) {
t.Fatal("expected status to contain liquidity warning")
}
result, err = b.WhaleBomb(7000, true) // <- Book should not move
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 0 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 0)
@@ -116,9 +110,7 @@ func TestWhaleBomb(t *testing.T) {
}
result, err = b.WhaleBomb(6998, false) // <- This price should not be wiped out on the book.
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 1 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 1)
@@ -137,9 +129,7 @@ func TestWhaleBomb(t *testing.T) {
}
result, err = b.WhaleBomb(6998.5, false) // <- Slot between prices will drop to next bid tranche
if !errors.Is(err, nil) {
t.Errorf("received '%v', expected '%v'", err, nil)
}
assert.NoError(t, err)
if result.Amount != 1 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 1)
@@ -158,18 +148,14 @@ func TestWhaleBomb(t *testing.T) {
}
result, err = b.WhaleBomb(6997, false) // <- exceed available quotations
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if !strings.Contains(result.Status, fullLiquidityUsageWarning) {
t.Fatal("expected status to contain liquidity warning")
}
result, err = b.WhaleBomb(6999, false) // <- Book should not move
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 0 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 0)
@@ -210,9 +196,7 @@ func TestSimulateOrder(t *testing.T) {
// Full liquidity used
result, err := b.SimulateOrder(21002, true)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 3 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 3)
@@ -236,9 +220,7 @@ func TestSimulateOrder(t *testing.T) {
// Exceed full liquidity used
result, err = b.SimulateOrder(21003, true)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 3 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 3)
@@ -262,9 +244,7 @@ func TestSimulateOrder(t *testing.T) {
// First tranche
result, err = b.SimulateOrder(7000, true)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 1 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 1)
@@ -288,9 +268,7 @@ func TestSimulateOrder(t *testing.T) {
// Half of first tranch
result, err = b.SimulateOrder(3500, true)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != .5 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, .5)
@@ -318,9 +296,7 @@ func TestSimulateOrder(t *testing.T) {
// Half of second tranche
result, err = b.SimulateOrder(14001, true)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 2 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 2)
@@ -362,9 +338,7 @@ func TestSimulateOrder(t *testing.T) {
// Full liquidity used
result, err = b.SimulateOrder(3, false)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 20995 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 20995)
@@ -388,9 +362,7 @@ func TestSimulateOrder(t *testing.T) {
// Exceed full liquidity used
result, err = b.SimulateOrder(3.1, false)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 20995 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 20995)
@@ -414,9 +386,7 @@ func TestSimulateOrder(t *testing.T) {
// First tranche
result, err = b.SimulateOrder(1, false)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 6999 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 6999)
@@ -440,9 +410,7 @@ func TestSimulateOrder(t *testing.T) {
// Half of first tranch
result, err = b.SimulateOrder(.5, false)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 3499.5 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 3499.5)
@@ -470,9 +438,7 @@ func TestSimulateOrder(t *testing.T) {
// Half of second tranche
result, err = b.SimulateOrder(2, false)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if result.Amount != 13997 {
t.Fatalf("received: '%v' but expected: '%v'", result.Amount, 13997)

View File

@@ -91,7 +91,7 @@ func TestRetrieve(t *testing.T) {
mirrored := reflect.Indirect(reflect.ValueOf(d.options))
for n := range mirrored.NumField() {
structVal := mirrored.Field(n)
assert.Falsef(t, structVal.IsZero(), "struct field '%s' not tested", mirrored.Type().Field(n).Name)
assert.Falsef(t, structVal.IsZero(), "struct field %q not tested", mirrored.Type().Field(n).Name)
}
ob, err := d.Retrieve()
@@ -743,7 +743,7 @@ func TestMovementMethods(t *testing.T) {
assert.InDeltaf(t, field.Float(), expect.Float(), accuracy10dp, "sub test %d movement %s should be correct", i, meta.Type().Field(j).Name)
}
}
assert.Equal(t, subT.expect.FullBookSideConsumed, move.FullBookSideConsumed, "sub test %d movement FullBookSideConsumed should be correct", i)
assert.Equalf(t, subT.expect.FullBookSideConsumed, move.FullBookSideConsumed, "sub test %d movement FullBookSideConsumed should be correct", i)
}
})
}

View File

@@ -694,7 +694,5 @@ func TestCheckAlignment(t *testing.T) {
itemWithFunding[0].StrAmount = "1337.0000000"
itemWithFunding[0].StrPrice = "1337.0000000"
err = checkAlignment(itemWithFunding, true, true, false, true, dsc, "Binance")
if !errors.Is(err, nil) {
t.Fatalf("received: %v but expected: %v", err, nil)
}
require.NoError(t, err)
}

View File

@@ -7,6 +7,7 @@ import (
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
var ask = Tranches{
@@ -326,9 +327,7 @@ func TestUpdateByID(t *testing.T) {
err = a.updateByID(Tranches{ // Simulate Bitmex updating
{Price: 0, Amount: 1337, ID: 3},
})
if !errors.Is(err, nil) {
t.Fatalf("expecting %v but received %v", nil, err)
}
require.NoError(t, err)
if got := a.retrieve(2); len(got) != 2 || got[1].Price == 0 {
t.Fatal("price should not be replaced with zero")
@@ -1830,18 +1829,14 @@ func TestGetHeadPrice(t *testing.T) {
}
val, err := depth.bidTranches.getHeadPriceNoLock()
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if val != 1336 {
t.Fatal("unexpected value")
}
val, err = depth.askTranches.getHeadPriceNoLock()
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
if val != 1337 {
t.Fatal("unexpected value", val)