test(fuzz): fix broken OSS-Fuz build (#21940)
Signed-off-by: Adam Korczynski <Adam@adalogics.com>
This commit is contained in:
parent
7ce403f51e
commit
968bc7cbd9
81
fuzz/fuzz.patch
Normal file
81
fuzz/fuzz.patch
Normal file
@ -0,0 +1,81 @@
|
||||
diff --git a/types/address_test.go b/types/address_test.go
|
||||
index 014a48b73..99f9a1a86 100644
|
||||
--- a/types/address_test.go
|
||||
+++ b/types/address_test.go
|
||||
@@ -26,10 +26,6 @@ type addressTestSuite struct {
|
||||
suite.Suite
|
||||
}
|
||||
|
||||
-func TestAddressTestSuite(t *testing.T) {
|
||||
- suite.Run(t, new(addressTestSuite))
|
||||
-}
|
||||
-
|
||||
func (s *addressTestSuite) SetupSuite() {
|
||||
s.T().Parallel()
|
||||
}
|
||||
@@ -403,65 +399,6 @@ func (s *addressTestSuite) TestAddressInterface() {
|
||||
}
|
||||
}
|
||||
|
||||
-func (s *addressTestSuite) TestBech32ifyAddressBytes() {
|
||||
- type args struct {
|
||||
- prefix string
|
||||
- bs []byte
|
||||
- }
|
||||
- tests := []struct {
|
||||
- name string
|
||||
- args args
|
||||
- want string
|
||||
- wantErr bool
|
||||
- }{
|
||||
- {"empty address", args{"prefixa", []byte{}}, "", false},
|
||||
- {"empty prefix", args{"", addr20byte}, "", true},
|
||||
- {"10-byte address", args{"prefixa", addr10byte}, "prefixa1qqqsyqcyq5rqwzqf3953cc", false},
|
||||
- {"10-byte address", args{"prefixb", addr10byte}, "prefixb1qqqsyqcyq5rqwzqf20xxpc", false},
|
||||
- {"20-byte address", args{"prefixa", addr20byte}, "prefixa1qqqsyqcyq5rqwzqfpg9scrgwpugpzysn7hzdtn", false},
|
||||
- {"20-byte address", args{"prefixb", addr20byte}, "prefixb1qqqsyqcyq5rqwzqfpg9scrgwpugpzysnrujsuw", false},
|
||||
- }
|
||||
- for _, tt := range tests {
|
||||
- s.T().Run(tt.name, func(t *testing.T) {
|
||||
- got, err := types.Bech32ifyAddressBytes(tt.args.prefix, tt.args.bs)
|
||||
- if (err != nil) != tt.wantErr {
|
||||
- t.Errorf("Bech32ifyBytes() error = %v, wantErr %v", err, tt.wantErr)
|
||||
- return
|
||||
- }
|
||||
- require.Equal(t, tt.want, got)
|
||||
- })
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-func (s *addressTestSuite) TestMustBech32ifyAddressBytes() {
|
||||
- type args struct {
|
||||
- prefix string
|
||||
- bs []byte
|
||||
- }
|
||||
- tests := []struct {
|
||||
- name string
|
||||
- args args
|
||||
- want string
|
||||
- wantPanic bool
|
||||
- }{
|
||||
- {"empty address", args{"prefixa", []byte{}}, "", false},
|
||||
- {"empty prefix", args{"", addr20byte}, "", true},
|
||||
- {"10-byte address", args{"prefixa", addr10byte}, "prefixa1qqqsyqcyq5rqwzqf3953cc", false},
|
||||
- {"10-byte address", args{"prefixb", addr10byte}, "prefixb1qqqsyqcyq5rqwzqf20xxpc", false},
|
||||
- {"20-byte address", args{"prefixa", addr20byte}, "prefixa1qqqsyqcyq5rqwzqfpg9scrgwpugpzysn7hzdtn", false},
|
||||
- {"20-byte address", args{"prefixb", addr20byte}, "prefixb1qqqsyqcyq5rqwzqfpg9scrgwpugpzysnrujsuw", false},
|
||||
- }
|
||||
- for _, tt := range tests {
|
||||
- s.T().Run(tt.name, func(t *testing.T) {
|
||||
- if tt.wantPanic {
|
||||
- require.Panics(t, func() { types.MustBech32ifyAddressBytes(tt.args.prefix, tt.args.bs) })
|
||||
- return
|
||||
- }
|
||||
- require.Equal(t, tt.want, types.MustBech32ifyAddressBytes(tt.args.prefix, tt.args.bs))
|
||||
- })
|
||||
- }
|
||||
-}
|
||||
-
|
||||
func (s *addressTestSuite) TestAddressTypesEquals() {
|
||||
addr1 := secp256k1.GenPrivKey().PubKey().Address()
|
||||
accAddr1 := types.AccAddress(addr1)
|
||||
@ -1,5 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
set -o errexit
|
||||
set -x
|
||||
|
||||
cd $SRC
|
||||
wget https://go.dev/dl/go1.23.1.linux-amd64.tar.gz
|
||||
mkdir $SRC/new-go
|
||||
rm -rf /root/.go && tar -C $SRC/new-go/ -xzf go1.23.1.linux-amd64.tar.gz
|
||||
mv $SRC/new-go/go /root/.go
|
||||
ls /root/.go
|
||||
|
||||
cd $SRC/go-118-fuzz-build
|
||||
go build .
|
||||
mv go-118-fuzz-build /root/go/bin/
|
||||
cd $SRC/cosmos-sdk
|
||||
git apply ./fuzz/fuzz.patch
|
||||
|
||||
mkdir $SRC/cosmos-sdk/types/fuzzing
|
||||
mv $SRC/cosmos-sdk/types/address*_test.go $SRC/cosmos-sdk/types/fuzzing/
|
||||
sed 's/package types_test/package fuzzing/g' -i "$SRC"/cosmos-sdk/types/fuzzing/*
|
||||
|
||||
rm $SRC/cosmos-sdk/math/dec_internal_test.go
|
||||
rm $SRC/cosmos-sdk/math/int_internal_test.go
|
||||
rm $SRC/cosmos-sdk/math/uint_internal_test.go
|
||||
mv $SRC/cosmos-sdk/types/fuzz_test.go $SRC/cosmos-sdk/types/fuzz.go
|
||||
rm $SRC/cosmos-sdk/types/*_test.go
|
||||
mv $SRC/cosmos-sdk/types/fuzz.go $SRC/cosmos-sdk/types/fuzz_test.go
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
export FUZZ_ROOT="github.com/cosmos/cosmos-sdk"
|
||||
@ -18,25 +47,22 @@ build_go_fuzzer() {
|
||||
compile_native_go_fuzzer cosmossdk.io/math FuzzLegacyNewDecFromStr fuzz_math_legacy_new_dec_from_str
|
||||
)
|
||||
|
||||
go get github.com/AdamKorcz/go-118-fuzz-build/testing
|
||||
printf "package types \nimport _ \"github.com/AdamKorcz/go-118-fuzz-build/testing\"\n" > ./types/fuzz-register.go
|
||||
go mod edit -replace github.com/AdamKorcz/go-118-fuzz-build=$SRC/go-118-fuzz-build
|
||||
go mod tidy
|
||||
|
||||
# TODO: fails to build with
|
||||
# main.413864645.go:12:2: found packages query (collections_pagination.go) and query_test (fuzz_test.go_fuzz.go) in /src/cosmos-sdk/types/query
|
||||
# because of the separate query_test package.
|
||||
# compile_native_go_fuzzer "$FUZZ_ROOT"/types/query FuzzPagination fuzz_types_query_pagination
|
||||
compile_native_go_fuzzer "$FUZZ_ROOT"/types FuzzCoinUnmarshalJSON fuzz_types_coin_unmarshal_json
|
||||
compile_native_go_fuzzer "$FUZZ_ROOT"/types FuzzBech32AccAddrConsistencyYAML fuzz_types_bech32_acc_addr_consistency_yaml
|
||||
|
||||
compile_native_go_fuzzer "$FUZZ_ROOT"/types/fuzzing FuzzBech32AccAddrConsistencyYAML fuzz_types_bech32_acc_addr_consistency_yaml
|
||||
build_go_fuzzer FuzzCryptoHDDerivePrivateKeyForPath fuzz_crypto_hd_deriveprivatekeyforpath
|
||||
build_go_fuzzer FuzzCryptoHDNewParamsFromPath fuzz_crypto_hd_newparamsfrompath
|
||||
|
||||
build_go_fuzzer FuzzCryptoTypesCompactbitarrayMarshalUnmarshal fuzz_crypto_types_compactbitarray_marshalunmarshal
|
||||
|
||||
build_go_fuzzer FuzzTendermintAminoDecodeTime fuzz_tendermint_amino_decodetime
|
||||
|
||||
build_go_fuzzer FuzzTypesParseCoin fuzz_types_parsecoin
|
||||
build_go_fuzzer FuzzTypesParseDecCoin fuzz_types_parsedeccoin
|
||||
build_go_fuzzer FuzzTypesParseTimeBytes fuzz_types_parsetimebytes
|
||||
build_go_fuzzer FuzzTypesDecSetString fuzz_types_dec_setstring
|
||||
|
||||
build_go_fuzzer FuzzUnknownProto fuzz_unknownproto
|
||||
|
||||
Loading…
Reference in New Issue
Block a user