uber-go / mock

GoMock is a mocking framework for the Go programming language.
Apache License 2.0
1.85k stars 106 forks source link

Fix: wrong print msg when comparing initialized and uninitialized slice #79

Open k3forx opened 10 months ago

k3forx commented 10 months ago

Issue

close: #69

Tests

I checked all tests are passed with go version 1.19.5 and 1.20.3

❯ go version
go version go1.19.5 darwin/amd64

❯ go test ./...
ok      go.uber.org/mock/gomock 0.998s
?       go.uber.org/mock/gomock/internal/mock_gomock    [no test files]
ok      go.uber.org/mock/mockgen        1.488s
?       go.uber.org/mock/mockgen/internal/tests/add_generate_directive  [no test files]
ok      go.uber.org/mock/mockgen/internal/tests/aux_imports_embedded_interface  0.411s
?       go.uber.org/mock/mockgen/internal/tests/aux_imports_embedded_interface/faux     [no test files]
?       go.uber.org/mock/mockgen/internal/tests/const_array_length      [no test files]
?       go.uber.org/mock/mockgen/internal/tests/copyright_file  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/custom_package_name/client/v1   [no test files]
ok      go.uber.org/mock/mockgen/internal/tests/custom_package_name/greeter     0.668s
?       go.uber.org/mock/mockgen/internal/tests/custom_package_name/validator   [no test files]
?       go.uber.org/mock/mockgen/internal/tests/defined_import_local_name       [no test files]
?       go.uber.org/mock/mockgen/internal/tests/dot_imports     [no test files]
?       go.uber.org/mock/mockgen/internal/tests/empty_interface [no test files]
?       go.uber.org/mock/mockgen/internal/tests/extra_import    [no test files]
ok      go.uber.org/mock/mockgen/internal/tests/generated_identifier_conflict   0.754s
ok      go.uber.org/mock/mockgen/internal/tests/import_embedded_interface       0.370s
?       go.uber.org/mock/mockgen/internal/tests/import_embedded_interface/ersatz        [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_embedded_interface/faux  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_embedded_interface/other/ersatz  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_embedded_interface/other/log     [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_source   [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_source/definition        [no test files]
?       go.uber.org/mock/mockgen/internal/tests/internal_pkg    [no test files]
?       go.uber.org/mock/mockgen/internal/tests/internal_pkg/subdir/internal/pkg        [no test files]
?       go.uber.org/mock/mockgen/internal/tests/internal_pkg/subdir/internal/pkg/reflect_output [no test files]
?       go.uber.org/mock/mockgen/internal/tests/internal_pkg/subdir/internal/pkg/source_output  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/missing_import/output   [no test files]
?       go.uber.org/mock/mockgen/internal/tests/missing_import/source   [no test files]
ok      go.uber.org/mock/mockgen/internal/tests/mock_in_test_package    1.160s [no tests to run]
ok      go.uber.org/mock/mockgen/internal/tests/overlapping_methods     1.379s
ok      go.uber.org/mock/mockgen/internal/tests/panicing_test   1.528s [no tests to run]
?       go.uber.org/mock/mockgen/internal/tests/parenthesized_parameter_type    [no test files]
?       go.uber.org/mock/mockgen/internal/tests/performance/big_interface       [no test files]
?       go.uber.org/mock/mockgen/internal/tests/self_package    [no test files]
ok      go.uber.org/mock/mockgen/internal/tests/test_package    1.715s [no tests to run]
ok      go.uber.org/mock/mockgen/internal/tests/unexported_method       1.911s
?       go.uber.org/mock/mockgen/internal/tests/vendor_dep      [no test files]
?       go.uber.org/mock/mockgen/internal/tests/vendor_dep/source_mock_package  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/vendor_pkg      [no test files]
ok      go.uber.org/mock/mockgen/model  2.080s
ok      go.uber.org/mock/sample 0.589s
ok      go.uber.org/mock/sample/concurrent      2.245s
?       go.uber.org/mock/sample/concurrent/mock [no test files]
?       go.uber.org/mock/sample/imp1    [no test files]
?       go.uber.org/mock/sample/imp2    [no test files]
?       go.uber.org/mock/sample/imp3    [no test files]
?       go.uber.org/mock/sample/imp4    [no test files]
❯ go version
go version go1.20.3 darwin/amd64

❯ go test ./...
?       go.uber.org/mock/gomock/internal/mock_gomock    [no test files]
ok      go.uber.org/mock/gomock 0.308s
?       go.uber.org/mock/mockgen/internal/tests/add_generate_directive  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/aux_imports_embedded_interface/faux     [no test files]
?       go.uber.org/mock/mockgen/internal/tests/const_array_length      [no test files]
?       go.uber.org/mock/mockgen/internal/tests/copyright_file  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/custom_package_name/client/v1   [no test files]
?       go.uber.org/mock/mockgen/internal/tests/custom_package_name/validator   [no test files]
?       go.uber.org/mock/mockgen/internal/tests/defined_import_local_name       [no test files]
?       go.uber.org/mock/mockgen/internal/tests/dot_imports     [no test files]
?       go.uber.org/mock/mockgen/internal/tests/empty_interface [no test files]
?       go.uber.org/mock/mockgen/internal/tests/extra_import    [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_embedded_interface/ersatz        [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_embedded_interface/faux  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_embedded_interface/other/ersatz  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_embedded_interface/other/log     [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_source   [no test files]
?       go.uber.org/mock/mockgen/internal/tests/import_source/definition        [no test files]
?       go.uber.org/mock/mockgen/internal/tests/internal_pkg    [no test files]
?       go.uber.org/mock/mockgen/internal/tests/internal_pkg/subdir/internal/pkg        [no test files]
?       go.uber.org/mock/mockgen/internal/tests/internal_pkg/subdir/internal/pkg/reflect_output [no test files]
?       go.uber.org/mock/mockgen/internal/tests/internal_pkg/subdir/internal/pkg/source_output  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/missing_import/output   [no test files]
?       go.uber.org/mock/mockgen/internal/tests/missing_import/source   [no test files]
?       go.uber.org/mock/mockgen/internal/tests/parenthesized_parameter_type    [no test files]
?       go.uber.org/mock/mockgen/internal/tests/performance/big_interface       [no test files]
?       go.uber.org/mock/mockgen/internal/tests/self_package    [no test files]
?       go.uber.org/mock/mockgen/internal/tests/vendor_dep      [no test files]
?       go.uber.org/mock/mockgen/internal/tests/vendor_dep/source_mock_package  [no test files]
?       go.uber.org/mock/mockgen/internal/tests/vendor_pkg      [no test files]
?       go.uber.org/mock/sample/concurrent/mock [no test files]
?       go.uber.org/mock/sample/imp1    [no test files]
?       go.uber.org/mock/sample/imp2    [no test files]
?       go.uber.org/mock/sample/imp3    [no test files]
?       go.uber.org/mock/sample/imp4    [no test files]
ok      go.uber.org/mock/mockgen        0.992s
ok      go.uber.org/mock/mockgen/internal/tests/aux_imports_embedded_interface  0.541s
ok      go.uber.org/mock/mockgen/internal/tests/custom_package_name/greeter     0.424s
ok      go.uber.org/mock/mockgen/internal/tests/generated_identifier_conflict   0.641s
ok      go.uber.org/mock/mockgen/internal/tests/import_embedded_interface       0.813s
ok      go.uber.org/mock/mockgen/internal/tests/mock_in_test_package    0.676s [no tests to run]
ok      go.uber.org/mock/mockgen/internal/tests/overlapping_methods     0.798s
ok      go.uber.org/mock/mockgen/internal/tests/panicing_test   0.857s [no tests to run]
ok      go.uber.org/mock/mockgen/internal/tests/test_package    0.935s [no tests to run]
ok      go.uber.org/mock/mockgen/internal/tests/unexported_method       1.017s
ok      go.uber.org/mock/mockgen/model  0.996s
ok      go.uber.org/mock/sample 1.071s
ok      go.uber.org/mock/sample/concurrent      1.108s
JacobOaks commented 3 months ago

Hey, thanks for the PR and sorry for the delay in response.

We think this is a good idea in general, but we're worried about the extra verbosity. Do you think we should instead check for the specific edge case when printing, and only use the formatting directive then?