diff --git a/events/codebuild.go b/events/codebuild.go index 08cbb607..22e2d5db 100644 --- a/events/codebuild.go +++ b/events/codebuild.go @@ -205,12 +205,12 @@ type CodeBuildNumber int32 // MarshalJSON converts a given CodeBuildNumber to json func (n CodeBuildNumber) MarshalJSON() ([]byte, error) { - return json.Marshal(float32(n)) + return json.Marshal(float64(n)) } // UnmarshalJSON converts a given json to a CodeBuildNumber func (n *CodeBuildNumber) UnmarshalJSON(data []byte) error { - var f float32 + var f float64 if err := json.Unmarshal(data, &f); err != nil { return err } diff --git a/events/codebuild_test.go b/events/codebuild_test.go index 6d25c1fb..c30372c9 100644 --- a/events/codebuild_test.go +++ b/events/codebuild_test.go @@ -310,3 +310,19 @@ func TestUnmarshalCodeBuildEvent(t *testing.T) { require.Equal(t, testcase.expect, actual) } } + +func TestCodeBuildNumberKeepsEveryInt32(t *testing.T) { + // 16777217 is 2^24+1, the first integer a float32 cannot hold. + for _, want := range []CodeBuildNumber{1, 16777217, 2147483647} { + b, err := json.Marshal(want) + require.NoError(t, err) + + var got CodeBuildNumber + require.NoError(t, json.Unmarshal(b, &got)) + require.Equal(t, want, got) + } + + var got CodeBuildNumber + require.NoError(t, json.Unmarshal([]byte("16777217"), &got)) + require.Equal(t, CodeBuildNumber(16777217), got) +}