osmosis icon indicating copy to clipboard operation
osmosis copied to clipboard

Weekly mutation test issue (July 17th)

Open ValarDragon opened this issue 3 years ago • 0 comments

cref #2069

The mutation score is 0.400000 (22 passed, 27 failed, 0 duplicated, 6 skipped, total is 55) Mutation testing score below desired level (0.400000 < 0.75)

1:

--- ./x/tokenfactory/keeper/createdenom.go	2022-07-17 12:29:15.308755888 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/keeper/createdenom.go.0	2022-07-17 12:37:07.011614397 -0500
@@ -77,7 +77,7 @@
-	if len(creationFee) > 0 {
+	if len(creationFee) >= 0 {
 		if err := k.distrKeeper.FundCommunityPool(ctx, creationFee, accAddr); err != nil {
 			return err
 		}

2: Deleting Create Module Account in InitGenesis

+++ /tmp/go-mutesting-332867003/./x/tokenfactory/keeper/genesis.go.0	2022-07-17 12:37:23.927441249 -0500
@@ -9,7 +9,7 @@
 // InitGenesis initializes the tokenfactory module's state from a provided genesis
 // state.
 func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) {
-	k.CreateModuleAccount(ctx)
+	_, _ = k.CreateModuleAccount, ctx

3 - 7: - Probably noise, deleting returning on err

+++ /tmp/go-mutesting-332867003/./x/tokenfactory/keeper/genesis.go.5	2022-07-17 12:37:29.591383397 -0500
@@ -19,7 +19,8 @@
 	for _, genDenom := range genState.GetFactoryDenoms() {
 		creator, _, err := types.DeconstructDenom(genDenom.GetDenom())
 		if err != nil {
-			panic(err)
+			_ = err
+
 		}

8: - Not sure if noise, deleting set module account. Why isn't a test failing?

+++ /tmp/go-mutesting-332867003/./x/tokenfactory/keeper/keeper.go.1	2022-07-17 12:37:36.423313694 -0500
@@ -81,5 +81,5 @@
 // and sends to the relevant address.
 func (k Keeper) CreateModuleAccount(ctx sdk.Context) {
 	moduleAcc := authtypes.NewEmptyModuleAccount(types.ModuleName, authtypes.Minter, authtypes.Burner)
-	k.accountKeeper.SetModuleAccount(ctx, moduleAcc)
+	_, _, _ = k.accountKeeper.SetModuleAccount, ctx, moduleAcc
 }

9-13: - True issue, deleting event line untested

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/keeper/keeper.go.1" with checksum c27c4077d183a015fc02ef62d588370d
--- ./x/tokenfactory/keeper/msg_server.go	2022-07-14 21:33:23.461619695 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/keeper/msg_server.go.0	2022-07-17 12:37:38.015297465 -0500
@@ -27,14 +27,11 @@
 	if err != nil {
 		return nil, err
 	}
-
-	ctx.EventManager().EmitEvents(sdk.Events{
-		sdk.NewEvent(
-			types.TypeMsgCreateDenom,
-			sdk.NewAttribute(types.AttributeCreator, msg.Sender),
-			sdk.NewAttribute(types.AttributeNewTokenDenom, denom),
-		),
-	})
+	_, _, _, _, _, _, _, _, _ = sdk.Events{},
+		sdk.NewEvent,
+		types.TypeMsgCreateDenom,
+		sdk.NewAttribute, types.AttributeCreator, msg.Sender,
+		sdk.NewAttribute, types.AttributeNewTokenDenom, denom

14-18: True issue, codec regirstration untested

 func RegisterCodec(cdc *codec.LegacyAmino) {
-	cdc.RegisterConcrete(&MsgCreateDenom{}, "osmosis/tokenfactory/create-denom", nil)
+	_ = cdc.RegisterConcrete
 	cdc.RegisterConcrete(&MsgMint{}, "osmosis/tokenfactory/mint", nil)
 	cdc.RegisterConcrete(&MsgBurn{}, "osmosis/tokenfactory/burn", nil)
 	// cdc.RegisterConcrete(&MsgForceTransfer{}, "osmosis/tokenfactory/force-transfer", nil)

19-20: True issue, edge cases of Validation don't have regression tests:

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/codec.go.5" with checksum 1607bed1a9b9a2831adfe700afd51c2f
--- ./x/tokenfactory/types/denoms.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/denoms.go.0	2022-07-17 12:37:54.875125872 -0500
@@ -24,7 +24,7 @@
 // based on an input creator address and a subdenom
 // The denom constructed is factory/{creator}/{subdenom}
 func GetTokenDenom(creator, subdenom string) (string, error) {
-	if len(subdenom) > MaxSubdenomLength {
+	if len(subdenom) >= MaxSubdenomLength {
 		return "", ErrSubdenomTooLong
 	}
 	if len(subdenom) > MaxCreatorLength {

(Same for MaxCreatorLength)

21: No test covering deconstruct denom with sender not being correctly formatted address

--- ./x/tokenfactory/types/denoms.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/denoms.go.5	2022-07-17 12:37:58.663087391 -0500
@@ -56,7 +56,7 @@
 	}
 
 	creator = strParts[1]
-	_, err = sdk.AccAddressFromBech32(creator)
+	_, _, _ = err, sdk.AccAddressFromBech32, creator
 	if err != nil {
 		return "", "", sdkerrors.Wrapf(ErrInvalidDenom, "Invalid creator address (%s)", err)
 	}

22-27: Just copying directly, not yest synthesized

+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/denoms.go.6	2022-07-17 12:37:58.959084384 -0500
@@ -60,11 +60,12 @@
 	if err != nil {
 		return "", "", sdkerrors.Wrapf(ErrInvalidDenom, "Invalid creator address (%s)", err)
 	}
+	_, _,
 
-	// Handle the case where a denom has a slash in its subdenom. For example,
-	// when we did the split, we'd turn factory/accaddr/atomderivative/sikka into ["factory", "accaddr", "atomderivative", "sikka"]
-	// So we have to join [2:] with a "/" as the delimiter to get back the correct subdenom which should be "atomderivative/sikka"
-	subdenom = strings.Join(strParts[2:], "/")
+		// Handle the case where a denom has a slash in its subdenom. For example,
+		// when we did the split, we'd turn factory/accaddr/atomderivative/sikka into ["factory", "accaddr", "atomderivative", "sikka"]
+		// So we have to join [2:] with a "/" as the delimiter to get back the correct subdenom which should be "atomderivative/sikka"
+		_ = subdenom, strings.Join, strParts
 
 	return creator, subdenom, nil
 }

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/denoms.go.6" with checksum 741ce7e51a943eee33426fbbf460da58
PASS "/tmp/go-mutesting-332867003/./x/tokenfactory/types/genesis.go.0" with checksum b2de0da0ecafe5b1762bcc6af013a63d
PASS "/tmp/go-mutesting-332867003/./x/tokenfactory/types/genesis.go.1" with checksum ac5d2e5d2fc7d34a6e837ba99fc91176
--- ./x/tokenfactory/types/msgs.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.0	2022-07-17 12:38:08.222990385 -0500
@@ -67,7 +67,7 @@
 		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err)
 	}
 
-	if !m.Amount.IsValid() || m.Amount.Amount.Equal(sdk.ZeroInt()) {
+	if false || m.Amount.Amount.Equal(sdk.ZeroInt()) {
 		return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String())
 	}
 

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.0" with checksum bd947dd8f998e7d6d87cbbc9c3217982
--- ./x/tokenfactory/types/msgs.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.1	2022-07-17 12:38:08.514987424 -0500
@@ -67,7 +67,7 @@
 		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err)
 	}
 
-	if !m.Amount.IsValid() || m.Amount.Amount.Equal(sdk.ZeroInt()) {
+	if !m.Amount.IsValid() || false {
 		return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String())
 	}
 

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.1" with checksum 2ca9aa1a650a5bc97d354299bf7c4a38
--- ./x/tokenfactory/types/msgs.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.2	2022-07-17 12:38:08.814984383 -0500
@@ -101,7 +101,7 @@
 		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err)
 	}
 
-	if !m.Amount.IsValid() || m.Amount.Amount.Equal(sdk.ZeroInt()) {
+	if false || m.Amount.Amount.Equal(sdk.ZeroInt()) {
 		return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String())
 	}
 

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.2" with checksum 083b542d82d2e9a560f733d21d66ef0f
--- ./x/tokenfactory/types/msgs.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.3	2022-07-17 12:38:09.102981463 -0500
@@ -101,7 +101,7 @@
 		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err)
 	}
 
-	if !m.Amount.IsValid() || m.Amount.Amount.Equal(sdk.ZeroInt()) {
+	if !m.Amount.IsValid() || false {
 		return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String())
 	}
 

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.3" with checksum 24e0e501f1d6010b2d1220d90516cbb5
--- ./x/tokenfactory/types/msgs.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.4	2022-07-17 12:38:09.402978422 -0500
@@ -31,8 +31,7 @@
 	if err != nil {
 		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err)
 	}
-
-	_, err = GetTokenDenom(m.Sender, m.Subdenom)
+	_, _, _ = err, m.Sender, m.Subdenom
 	if err != nil {
 		return sdkerrors.Wrap(ErrInvalidDenom, err.Error())
 	}

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.4" with checksum 319cdd04a86d6e13f2b3f9174512c8d9
--- ./x/tokenfactory/types/msgs.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.5	2022-07-17 12:38:09.762974773 -0500
@@ -180,8 +180,7 @@
 	if err != nil {
 		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err)
 	}
-
-	_, err = sdk.AccAddressFromBech32(m.NewAdmin)
+	_, _, _ = err, sdk.AccAddressFromBech32, m.NewAdmin
 	if err != nil {
 		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid address (%s)", err)
 	}

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.5" with checksum 609d055a7f81b7c2fcdef5207f7680e9
--- ./x/tokenfactory/types/msgs.go	2022-07-12 10:22:46.139965414 -0500
+++ /tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.6	2022-07-17 12:38:10.086971489 -0500
@@ -185,8 +185,7 @@
 	if err != nil {
 		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid address (%s)", err)
 	}
-
-	_, _, err = DeconstructDenom(m.Denom)
+	_, _ = err, m.Denom
 	if err != nil {
 		return err
 	}

FAIL "/tmp/go-mutesting-332867003/./x/tokenfactory/types/msgs.go.6" with checksum b87358083ade30ba425591525bb40da6
The mutation score is 0.400000 (22 passed, 27 failed, 0 duplicated, 6 skipped, total is 55)

ValarDragon avatar Jul 17 '22 18:07 ValarDragon