From dcbdf83b1c05ce1e912231901f7e100dbc89746a Mon Sep 17 00:00:00 2001
From: Petr Ivanov <petr.ivanov@tendermint.com>
Date: Fri, 15 Dec 2023 16:44:32 +0400
Subject: [PATCH 1/6] add codecov pipeline step

---
 .github/workflows/test.yml | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index cbc89d67d..9b1cac24d 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -59,4 +59,12 @@ jobs:
             go.sum
       - name: Test unit
         run: |
-          make test-unit
+          make test-unit-cover
+      - name: Upload coverage reports to Codecov
+        uses: codecov/codecov-action@v3
+        env:
+          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+        with:
+          file: ./coverage.txt
+          fail_ci_if_error: true
+          verbose: true
\ No newline at end of file

From ad8cbf6009bb0b083df900aa4093ab3198a943e7 Mon Sep 17 00:00:00 2001
From: Petr Ivanov <petr.ivanov@tendermint.com>
Date: Fri, 15 Dec 2023 17:22:24 +0400
Subject: [PATCH 2/6] decrease coverage intentionally

---
 x/vesting/keeper/grpc_query_test.go | 211 +++++++++++++---------------
 1 file changed, 100 insertions(+), 111 deletions(-)

diff --git a/x/vesting/keeper/grpc_query_test.go b/x/vesting/keeper/grpc_query_test.go
index 7f69b8f9b..5ffd41d58 100644
--- a/x/vesting/keeper/grpc_query_test.go
+++ b/x/vesting/keeper/grpc_query_test.go
@@ -1,113 +1,102 @@
 package keeper_test
 
-import (
-	"fmt"
-
-	sdk "github.com/cosmos/cosmos-sdk/types"
-	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
-
-	"github.com/haqq-network/haqq/tests"
-	"github.com/haqq-network/haqq/testutil"
-	"github.com/haqq-network/haqq/x/vesting/types"
-)
-
-func (suite *KeeperTestSuite) TestBalances() {
-	var (
-		req    *types.QueryBalancesRequest
-		expRes *types.QueryBalancesResponse
-	)
-	addr := sdk.AccAddress(tests.GenerateAddress().Bytes())
-
-	testCases := []struct {
-		name     string
-		malleate func()
-		expPass  bool
-	}{
-		{
-			"empty req",
-			func() {
-				req = &types.QueryBalancesRequest{}
-			},
-			false,
-		},
-		{
-			"invalid address",
-			func() {
-				req = &types.QueryBalancesRequest{
-					Address: "haqq1",
-				}
-			},
-			false,
-		},
-		{
-			"invalid account - not found",
-			func() {
-				req = &types.QueryBalancesRequest{
-					Address: addr.String(),
-				}
-			},
-			false,
-		},
-		{
-			"invalid account - not clawback vesting account",
-			func() {
-				baseAccount := authtypes.NewBaseAccountWithAddress(addr)
-				acc := suite.app.AccountKeeper.NewAccount(suite.ctx, baseAccount)
-				suite.app.AccountKeeper.SetAccount(suite.ctx, acc)
-
-				req = &types.QueryBalancesRequest{
-					Address: addr.String(),
-				}
-			},
-			false,
-		},
-		{
-			"valid",
-			func() {
-				vestingStart := s.ctx.BlockTime()
-				funder := sdk.AccAddress(types.ModuleName)
-				err := testutil.FundAccount(suite.ctx, suite.app.BankKeeper, funder, balances)
-				suite.Require().NoError(err)
-
-				msg := types.NewMsgCreateClawbackVestingAccount(
-					funder,
-					addr,
-					vestingStart,
-					lockupPeriods,
-					vestingPeriods,
-					false,
-				)
-				ctx := sdk.WrapSDKContext(suite.ctx)
-				_, err = suite.app.VestingKeeper.CreateClawbackVestingAccount(ctx, msg)
-				suite.Require().NoError(err)
-
-				req = &types.QueryBalancesRequest{
-					Address: addr.String(),
-				}
-				expRes = &types.QueryBalancesResponse{
-					Locked:   balances,
-					Unvested: balances,
-					Vested:   nil,
-				}
-			},
-			true,
-		},
-	}
-
-	for _, tc := range testCases {
-		suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
-			suite.SetupTest() // reset
-			ctx := sdk.WrapSDKContext(suite.ctx)
-			tc.malleate()
-			suite.Commit()
-
-			res, err := suite.queryClient.Balances(ctx, req)
-			if tc.expPass {
-				suite.Require().NoError(err)
-				suite.Require().Equal(expRes, res)
-			} else {
-				suite.Require().Error(err)
-			}
-		})
-	}
-}
+//func (suite *KeeperTestSuite) TestBalances() {
+//	var (
+//		req    *types.QueryBalancesRequest
+//		expRes *types.QueryBalancesResponse
+//	)
+//	addr := sdk.AccAddress(tests.GenerateAddress().Bytes())
+//
+//	testCases := []struct {
+//		name     string
+//		malleate func()
+//		expPass  bool
+//	}{
+//		{
+//			"empty req",
+//			func() {
+//				req = &types.QueryBalancesRequest{}
+//			},
+//			false,
+//		},
+//		{
+//			"invalid address",
+//			func() {
+//				req = &types.QueryBalancesRequest{
+//					Address: "haqq1",
+//				}
+//			},
+//			false,
+//		},
+//		{
+//			"invalid account - not found",
+//			func() {
+//				req = &types.QueryBalancesRequest{
+//					Address: addr.String(),
+//				}
+//			},
+//			false,
+//		},
+//		{
+//			"invalid account - not clawback vesting account",
+//			func() {
+//				baseAccount := authtypes.NewBaseAccountWithAddress(addr)
+//				acc := suite.app.AccountKeeper.NewAccount(suite.ctx, baseAccount)
+//				suite.app.AccountKeeper.SetAccount(suite.ctx, acc)
+//
+//				req = &types.QueryBalancesRequest{
+//					Address: addr.String(),
+//				}
+//			},
+//			false,
+//		},
+//		{
+//			"valid",
+//			func() {
+//				vestingStart := s.ctx.BlockTime()
+//				funder := sdk.AccAddress(types.ModuleName)
+//				err := testutil.FundAccount(suite.ctx, suite.app.BankKeeper, funder, balances)
+//				suite.Require().NoError(err)
+//
+//				msg := types.NewMsgCreateClawbackVestingAccount(
+//					funder,
+//					addr,
+//					vestingStart,
+//					lockupPeriods,
+//					vestingPeriods,
+//					false,
+//				)
+//				ctx := sdk.WrapSDKContext(suite.ctx)
+//				_, err = suite.app.VestingKeeper.CreateClawbackVestingAccount(ctx, msg)
+//				suite.Require().NoError(err)
+//
+//				req = &types.QueryBalancesRequest{
+//					Address: addr.String(),
+//				}
+//				expRes = &types.QueryBalancesResponse{
+//					Locked:   balances,
+//					Unvested: balances,
+//					Vested:   nil,
+//				}
+//			},
+//			true,
+//		},
+//	}
+//
+//	for _, tc := range testCases {
+//		suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
+//			suite.SetupTest() // reset
+//			ctx := sdk.WrapSDKContext(suite.ctx)
+//			tc.malleate()
+//			suite.Commit()
+//
+//			res, err := suite.queryClient.Balances(ctx, req)
+//			if tc.expPass {
+//				suite.Require().NoError(err)
+//				suite.Require().Equal(expRes, res)
+//			} else {
+//				suite.Require().Error(err)
+//			}
+//		})
+//	}
+//}

From 09aedee7e083e57f99e8facb5cfb6e25868e6a10 Mon Sep 17 00:00:00 2001
From: Petr Ivanov <petr.ivanov@tendermint.com>
Date: Fri, 15 Dec 2023 17:40:18 +0400
Subject: [PATCH 3/6] increase coverage back

---
 x/vesting/keeper/grpc_query_test.go | 211 +++++++++++++++-------------
 1 file changed, 111 insertions(+), 100 deletions(-)

diff --git a/x/vesting/keeper/grpc_query_test.go b/x/vesting/keeper/grpc_query_test.go
index 5ffd41d58..7f69b8f9b 100644
--- a/x/vesting/keeper/grpc_query_test.go
+++ b/x/vesting/keeper/grpc_query_test.go
@@ -1,102 +1,113 @@
 package keeper_test
 
-//func (suite *KeeperTestSuite) TestBalances() {
-//	var (
-//		req    *types.QueryBalancesRequest
-//		expRes *types.QueryBalancesResponse
-//	)
-//	addr := sdk.AccAddress(tests.GenerateAddress().Bytes())
-//
-//	testCases := []struct {
-//		name     string
-//		malleate func()
-//		expPass  bool
-//	}{
-//		{
-//			"empty req",
-//			func() {
-//				req = &types.QueryBalancesRequest{}
-//			},
-//			false,
-//		},
-//		{
-//			"invalid address",
-//			func() {
-//				req = &types.QueryBalancesRequest{
-//					Address: "haqq1",
-//				}
-//			},
-//			false,
-//		},
-//		{
-//			"invalid account - not found",
-//			func() {
-//				req = &types.QueryBalancesRequest{
-//					Address: addr.String(),
-//				}
-//			},
-//			false,
-//		},
-//		{
-//			"invalid account - not clawback vesting account",
-//			func() {
-//				baseAccount := authtypes.NewBaseAccountWithAddress(addr)
-//				acc := suite.app.AccountKeeper.NewAccount(suite.ctx, baseAccount)
-//				suite.app.AccountKeeper.SetAccount(suite.ctx, acc)
-//
-//				req = &types.QueryBalancesRequest{
-//					Address: addr.String(),
-//				}
-//			},
-//			false,
-//		},
-//		{
-//			"valid",
-//			func() {
-//				vestingStart := s.ctx.BlockTime()
-//				funder := sdk.AccAddress(types.ModuleName)
-//				err := testutil.FundAccount(suite.ctx, suite.app.BankKeeper, funder, balances)
-//				suite.Require().NoError(err)
-//
-//				msg := types.NewMsgCreateClawbackVestingAccount(
-//					funder,
-//					addr,
-//					vestingStart,
-//					lockupPeriods,
-//					vestingPeriods,
-//					false,
-//				)
-//				ctx := sdk.WrapSDKContext(suite.ctx)
-//				_, err = suite.app.VestingKeeper.CreateClawbackVestingAccount(ctx, msg)
-//				suite.Require().NoError(err)
-//
-//				req = &types.QueryBalancesRequest{
-//					Address: addr.String(),
-//				}
-//				expRes = &types.QueryBalancesResponse{
-//					Locked:   balances,
-//					Unvested: balances,
-//					Vested:   nil,
-//				}
-//			},
-//			true,
-//		},
-//	}
-//
-//	for _, tc := range testCases {
-//		suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
-//			suite.SetupTest() // reset
-//			ctx := sdk.WrapSDKContext(suite.ctx)
-//			tc.malleate()
-//			suite.Commit()
-//
-//			res, err := suite.queryClient.Balances(ctx, req)
-//			if tc.expPass {
-//				suite.Require().NoError(err)
-//				suite.Require().Equal(expRes, res)
-//			} else {
-//				suite.Require().Error(err)
-//			}
-//		})
-//	}
-//}
+import (
+	"fmt"
+
+	sdk "github.com/cosmos/cosmos-sdk/types"
+	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+
+	"github.com/haqq-network/haqq/tests"
+	"github.com/haqq-network/haqq/testutil"
+	"github.com/haqq-network/haqq/x/vesting/types"
+)
+
+func (suite *KeeperTestSuite) TestBalances() {
+	var (
+		req    *types.QueryBalancesRequest
+		expRes *types.QueryBalancesResponse
+	)
+	addr := sdk.AccAddress(tests.GenerateAddress().Bytes())
+
+	testCases := []struct {
+		name     string
+		malleate func()
+		expPass  bool
+	}{
+		{
+			"empty req",
+			func() {
+				req = &types.QueryBalancesRequest{}
+			},
+			false,
+		},
+		{
+			"invalid address",
+			func() {
+				req = &types.QueryBalancesRequest{
+					Address: "haqq1",
+				}
+			},
+			false,
+		},
+		{
+			"invalid account - not found",
+			func() {
+				req = &types.QueryBalancesRequest{
+					Address: addr.String(),
+				}
+			},
+			false,
+		},
+		{
+			"invalid account - not clawback vesting account",
+			func() {
+				baseAccount := authtypes.NewBaseAccountWithAddress(addr)
+				acc := suite.app.AccountKeeper.NewAccount(suite.ctx, baseAccount)
+				suite.app.AccountKeeper.SetAccount(suite.ctx, acc)
+
+				req = &types.QueryBalancesRequest{
+					Address: addr.String(),
+				}
+			},
+			false,
+		},
+		{
+			"valid",
+			func() {
+				vestingStart := s.ctx.BlockTime()
+				funder := sdk.AccAddress(types.ModuleName)
+				err := testutil.FundAccount(suite.ctx, suite.app.BankKeeper, funder, balances)
+				suite.Require().NoError(err)
+
+				msg := types.NewMsgCreateClawbackVestingAccount(
+					funder,
+					addr,
+					vestingStart,
+					lockupPeriods,
+					vestingPeriods,
+					false,
+				)
+				ctx := sdk.WrapSDKContext(suite.ctx)
+				_, err = suite.app.VestingKeeper.CreateClawbackVestingAccount(ctx, msg)
+				suite.Require().NoError(err)
+
+				req = &types.QueryBalancesRequest{
+					Address: addr.String(),
+				}
+				expRes = &types.QueryBalancesResponse{
+					Locked:   balances,
+					Unvested: balances,
+					Vested:   nil,
+				}
+			},
+			true,
+		},
+	}
+
+	for _, tc := range testCases {
+		suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
+			suite.SetupTest() // reset
+			ctx := sdk.WrapSDKContext(suite.ctx)
+			tc.malleate()
+			suite.Commit()
+
+			res, err := suite.queryClient.Balances(ctx, req)
+			if tc.expPass {
+				suite.Require().NoError(err)
+				suite.Require().Equal(expRes, res)
+			} else {
+				suite.Require().Error(err)
+			}
+		})
+	}
+}

From 41e1610fd7ba08800795c45970798b729d165321 Mon Sep 17 00:00:00 2001
From: Petr Ivanov <petr.ivanov@tendermint.com>
Date: Fri, 15 Dec 2023 17:56:04 +0400
Subject: [PATCH 4/6] don't require ci to pass for send report

---
 codecov.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/codecov.yml b/codecov.yml
index cd301291f..8b2b09e77 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -3,6 +3,9 @@
 # all repositories on Codecov. You may adjust the settings
 # below in your own codecov.yml in your repository.
 #
+codecov:
+  require_ci_to_pass: false
+
 coverage:
   precision: 2
   round: down

From 58cdeae1cd1ef3be19581c34aa18bf1b5d1cff5c Mon Sep 17 00:00:00 2001
From: Petr Ivanov <petr.ivanov@tendermint.com>
Date: Fri, 15 Dec 2023 18:04:25 +0400
Subject: [PATCH 5/6] don't require code changes to send report

---
 codecov.yml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/codecov.yml b/codecov.yml
index 8b2b09e77..f27b74441 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -36,7 +36,6 @@ coverage:
 comment:
   layout: "reach, diff, files"
   behavior: default # update if exists else create new
-  require_changes: true
 
 flags:
   app:

From 5a5b5f80dd9d8ea50a3490c04b32430da7cc4990 Mon Sep 17 00:00:00 2001
From: Petr Ivanov <petr.ivanov@tendermint.com>
Date: Fri, 15 Dec 2023 18:14:19 +0400
Subject: [PATCH 6/6] remove job args

---
 .github/workflows/test.yml | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 9b1cac24d..9ba7a507d 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -63,8 +63,4 @@ jobs:
       - name: Upload coverage reports to Codecov
         uses: codecov/codecov-action@v3
         env:
-          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
-        with:
-          file: ./coverage.txt
-          fail_ci_if_error: true
-          verbose: true
\ No newline at end of file
+          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
\ No newline at end of file