1. 10 Jun, 2020 1 commit
    • Abseil Team's avatar
      Googletest export · 13a433a9
      Abseil Team authored
      Change string matchers, like HasSubstr, to accept `string_view` input if available.
      
      PiperOrigin-RevId: 315726484
      13a433a9
  2. 28 May, 2020 3 commits
    • dmauro's avatar
      Googletest export · 8f3854e2
      dmauro authored
      Rollback of warning on unused ACTION result change
      
      PiperOrigin-RevId: 313380971
      8f3854e2
    • Abseil Team's avatar
      Googletest export · 1397db9e
      Abseil Team authored
      Mark ACTION_Pn()-generated functions as must-use-result.
      
      This catches when a client creates an action and discards it, thinking that the action has actually been applied to something.
      
      This will help people who make the mistake of defining, for example, both `void Use(Foo*)` and `ACTION(Use) { Use(arg); }` for later application to a Foo.  With such an overload, a client may then write `Use();`, forgetting the param and being confused why nothing happens.
      
      This also catches when a client defines their own action in terms of an ACTION()-generated one, invokes the ACTION's builder, and then fails to invoke the resulting action, thinking it's operating on the outer action's parameters.
      
      PiperOrigin-RevId: 312108101
      1397db9e
    • Abseil Team's avatar
      Googletest export · 63713e1c
      Abseil Team authored
      Fix the ACTION* macros to allow for more than 10 arguments in the action.
      Only the first 10 will be passed as individual arguments as `argN`, but the rest
      can be accessed from the `args` tuple.
      
      PiperOrigin-RevId: 311542098
      63713e1c
  3. 07 May, 2020 1 commit
    • Abseil Team's avatar
      Googletest export · a09ea700
      Abseil Team authored
      Fix `-Wgnu-zero-variadic-macro-arguments` in GMock
      
      Passing zero arguments to the variadic part of a macro is a GNU
      extension and triggers warnings when build projects using GMock with
      `-pedantic`.
      
       - Fix uses of `GMOCK_PP_INTERNAL_16TH` to always receive at least 17
      arguments. (this was triggered when `GMOCK_PP_NARG` or `GMOCK_PP_HAS_COMMA`
      were used with an argument containing no commas).
       - Fix `GMOCK_PP_HEAD` to append a dummy unused argument so that
      `GMOCK_PP_INTERNAL_HEAD` always has two arguments.
      
      PiperOrigin-RevId: 310414611
      a09ea700
  4. 01 May, 2020 2 commits
    • Abseil Team's avatar
      Googletest export · 95555251
      Abseil Team authored
      Rewrite ReturnNew action without using pump.
      
      PiperOrigin-RevId: 308219616
      95555251
    • Abseil Team's avatar
      Googletest export · fb5d9b66
      Abseil Team authored
      Fix comment that describes how to test against nullopt.
      
      PiperOrigin-RevId: 307448375
      fb5d9b66
  5. 24 Apr, 2020 2 commits
    • Arthur O'Dwyer's avatar
      Fix a -Wdeprecated warning. · 11b3cec1
      Arthur O'Dwyer authored
          gmock-spec-builders.h:503:3: error:
          definition of implicit copy constructor for 'Expectation' is deprecated
          because it has a user-declared destructor [-Werror,-Wdeprecated]
              ~Expectation();
              ^
      11b3cec1
    • Arthur O'Dwyer's avatar
      Remove all uses of GTEST_DISALLOW_{MOVE_,}ASSIGN_. · 766ac2e1
      Arthur O'Dwyer authored
      None of these are strictly needed for correctness.
      A large number of them (maybe all of them?) trigger `-Wdeprecated`
      warnings on Clang trunk as soon as you try to use the implicitly
      defaulted (but deprecated) copy constructor of a class that has
      deleted its copy assignment operator.
      
      By declaring a deleted copy assignment operator, the old code
      also caused the move constructor and move assignment operator
      to be non-declared. This means that the old code never got move
      semantics -- "move-construction" would simply call the defaulted
      (but deprecated) copy constructor instead. With the new code,
      "move-construction" calls the defaulted move constructor, which
      I believe is what we want to happen. So this is a runtime
      performance optimization.
      
      Unfortunately we can't yet physically remove the definitions
      of these macros from gtest-port.h, because they are being used
      by other code internally at Google (according to zhangxy988).
      But no new uses should be added going forward.
      766ac2e1
  6. 16 Apr, 2020 1 commit
    • Arthur O'Dwyer's avatar
      VariadicMatcher needs a non-defaulted move constructor for compile-time performance. · 4f002f1e
      Arthur O'Dwyer authored
      We are about to remove all uses of GTEST_DISALLOW_ASSIGN_ in favor
      of using the Rule of Zero everywhere.
      
      Unfortunately, if we use the Rule of Zero here, then when the compiler
      needs to figure out if VariadicMatcher is move-constructible, it will
      recurse down into `tuple<Args...>`, which on libstdc++ recurses too deeply.
      
          In file included from googlemock/test/gmock-matchers_test.cc:43:
          In file included from googlemock/include/gmock/gmock-matchers.h:258:
          In file included from /usr/include/c++/5.5.0/algorithm:60:
          In file included from /usr/include/c++/5.5.0/utility:70:
          In file included from /usr/include/c++/5.5.0/bits/stl_pair.h:59:
          In file included from /usr/include/c++/5.5.0/bits/move.h:57:
          /usr/bin/include/c++/5.5.0/type_traits:115:26: fatal error:
                recursive template instantiation exceeded maximum depth of 256
              : public conditional<_B1::value, _B1, _B2>::type
                                   ^
      
      The move constructor is the only problematic case, for some unknown reason.
      With GTEST_DISALLOW_ASSIGN_, the presence of a copy assignment operator
      causes the move constructor to be non-declared, thus non-defaulted, thus
      non-problematic. Without GTEST_DISALLOW_ASSIGN_, we have to do one of the
      following:
      
      - Default the copy constructor, so that the move constructor will be non-declared.
      
      - Define our own non-defaulted move constructor.
      
      ...except that doing the latter STILL did not work!
      Fortunately, the former (default the copy constructor, don't provide
      any move constructor) both works in practice and is semantically
      equivalent to the old code.
      4f002f1e
  7. 31 Mar, 2020 1 commit
    • Abseil Team's avatar
      Googletest export · 61f010d7
      Abseil Team authored
      Do not use std::result_of as it was removed in C++20.
      
      PiperOrigin-RevId: 303783600
      61f010d7
  8. 18 Mar, 2020 1 commit
  9. 28 Feb, 2020 2 commits
    • Abseil Team's avatar
      Googletest export · 909b1ccf
      Abseil Team authored
      Relax the implementation of MatcherCast to allow conversion of `Matcher<T>` to
      `Matcher<const T&>`. They have the same match signature.
      
      PiperOrigin-RevId: 297115843
      909b1ccf
    • Abseil Team's avatar
      Googletest export · fd538161
      Abseil Team authored
      Allow construction of an Action from a callable of zero args
      
      Action already allows construction from a callable with the same args as the mocked function, without needing to wrap the callable in Invoke. However, if you don't care about the arguments to the mocked function you need to either accept all of them or wrap your callable in InvokeWithoutArgs. This change makes both of those unnecessary, since it allows you to pass a no-args callable to Action directly.
      
      PiperOrigin-RevId: 296117034
      fd538161
  10. 11 Feb, 2020 1 commit
    • Abseil Team's avatar
      Googletest export · 6f5fd0d7
      Abseil Team authored
      Add gmock Matcher<std::string_view> specialization.
      
      PiperOrigin-RevId: 294443240
      6f5fd0d7
  11. 07 Feb, 2020 10 commits
    • Abseil Team's avatar
      Googletest export · 41b5f149
      Abseil Team authored
      Get rid of gmock-generated-matchers.h and gmock-generated-matchers.h.pump.
      
      Stop using pump for MATCHER* macroses generation.
      
      PiperOrigin-RevId: 293878808
      41b5f149
    • durandal's avatar
      Googletest export · 2d6d7a01
      durandal authored
      Tag the function generated by MATCHER with GTEST_ATTRIBUTE_UNUSED_ to fix CI builds of gmock-matchers_test.cc vs. -Wunused-function.
      
      See https://github.com/google/googletest/pull/2697 for breakage.
      
      PiperOrigin-RevId: 293669752
      2d6d7a01
    • Abseil Team's avatar
      Googletest export · fbf67a70
      Abseil Team authored
      Get rid of gmock-generated-function-mockers.h and
      gmock-generated-function-mockers.h.pump.
      
      Stop using pump for GMOCK_METHOD* macroses generation.
      
      PiperOrigin-RevId: 293454519
      fbf67a70
    • Abseil Team's avatar
      Googletest export · d02e2772
      Abseil Team authored
      Pass method's parameters count to internal GMOCK_METHOD* macro.
      
      This will help removing copypaste in every GMOCK_METHOD* macro in future.
      
      PiperOrigin-RevId: 292932554
      d02e2772
    • Abseil Team's avatar
      Googletest export · 4f660912
      Abseil Team authored
      Fix std::move to std::forward where appropriate to support reference types.
      
      PiperOrigin-RevId: 292923058
      4f660912
    • Abseil Team's avatar
      Googletest export · 572e261b
      Abseil Team authored
      Fix use of reserved names.
      Minimize code duplication needed for explict-vs-nonexplicit constructor.
      
      PiperOrigin-RevId: 292555014
      572e261b
    • Abseil Team's avatar
      Googletest export · 38f6608e
      Abseil Team authored
      Add includes for type_traits and utility to gmock-function-mocker.h: macros in the file require these headers.
      
      PiperOrigin-RevId: 291782497
      38f6608e
    • Abseil Team's avatar
      Googletest export · d6ce39ed
      Abseil Team authored
      Create implementation macroses for matchers to move variadic parameters to the
      end of parameters list.
      
      To save backward compatibility, old macroses will be still taking `description`
      parameter as the last one. But they will use INTERNAL macro that takes
      `description` as the second parameter.
      
      PiperOrigin-RevId: 291724469
      d6ce39ed
    • Abseil Team's avatar
      Googletest export · 87061810
      Abseil Team authored
      Move part of functionality of Matcher* class to the base one. Reduce copypaste.
      
      Make constructor and conversion operator of Matcher* class independent of pump.
      
      PiperOrigin-RevId: 291405510
      87061810
    • Abseil Team's avatar
      Googletest export · 22397f28
      Abseil Team authored
      Add missing explicit keyword for gmock_Impl constructor.
      
      When switching to using GMOCK_PP in ACTION* macroses `explicit` keyword was
      missed in gmock_Impl constructor causing ClangTidy warnings in ACTION_P macro.
      
      PiperOrigin-RevId: 291159975
      22397f28
  12. 21 Jan, 2020 1 commit
    • Abseil Team's avatar
      Googletest export · d01e356e
      Abseil Team authored
      Allow copying of the string in MatchAndExplain.
      
      Otherwise, conversions from std::string_view to std::string will fail as being
      explicit
      
      PiperOrigin-RevId: 290301103
      d01e356e
  13. 16 Jan, 2020 2 commits
    • Abseil Team's avatar
      Googletest export · 5336106b
      Abseil Team authored
      Use GMOCK_PP to create GMOCK_INTERNAL_ACTION macro.
      
      Create GMOCK_INTERNAL_ACTION macro that generates ACTION_P* macroses using
      GMOCK_PP.
      
      PiperOrigin-RevId: 289815906
      5336106b
    • Abseil Team's avatar
      Googletest export · 7a8591e6
      Abseil Team authored
      Use GMOCK_PP to generate args boilerplate.
      
      Move common args describing part to separate macroses that uses GMOCK_PP to
      generate sequences.
      
      PiperOrigin-RevId: 289655624
      7a8591e6
  14. 09 Jan, 2020 2 commits
    • Abseil Team's avatar
      Googletest export · c901f67d
      Abseil Team authored
      Move part of functionality of Action* class to the base one. Reduce copypaste.
      
      Make constructor and conversion operator of Action* class independent of pump.
      
      PiperOrigin-RevId: 288907005
      c901f67d
    • Abseil Team's avatar
      Googletest export · 4b9c1691
      Abseil Team authored
      Use C++11 variadic templates for Invoke in gmock-generated-actions.h.
      
      Replace InvokeArgumentAdl with Invoke that uses C++11 variadic templates.
      
      PiperOrigin-RevId: 288449236
      4b9c1691
  15. 02 Jan, 2020 3 commits
    • Abseil Team's avatar
      Googletest export · 306f3754
      Abseil Team authored
      Explicitly default copy constructor in BoundSecondMatcher
      
      Since C++11, implicit defaulting of copy constructors is deprecated for types
      with user-defined copy assignment operators, so we should explicitly default the
      copy constructor of BoundSecondMatcher.
      
      PiperOrigin-RevId: 287587847
      306f3754
    • Abseil Team's avatar
      Googletest export · d0a52125
      Abseil Team authored
      Use C++11 variadic templates for InvokeArgumentAdl in gmock-generated-actions.h.
      
      Make InvokeArgumentAdl use variadic templates to generate its overloads instead
      of using pump.py syntax.
      
      PiperOrigin-RevId: 286267615
      d0a52125
    • Abseil Team's avatar
      Googletest export · 6f1a8ffd
      Abseil Team authored
      Use C++11 variadic templates for InvokeArgumentAdl in gmock-generated-actions.h.
      
      Make InvokeArgumentAdl use variadic templates to generate its overloads instead
      of using pump.py syntax.
      
      PiperOrigin-RevId: 286148805
      6f1a8ffd
  16. 13 Dec, 2019 1 commit
    • Abseil Team's avatar
      Googletest export · d8eeb976
      Abseil Team authored
      Use C++11 variadic templates for ActionHelper in gmock-generated-actions.h.
      
      Make ActionHelper use variadic templates to generate Perform static member function specializations instead of using pump.py syntax.
      
      PiperOrigin-RevId: 284988441
      d8eeb976
  17. 22 Nov, 2019 5 commits
  18. 21 Nov, 2019 1 commit