# Copyright (C) 2013 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#    * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#    * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
#    * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import unittest

from webkitpy.tool.commands.newcommitbot import NewCommitBot


class NewCommitBotTest(unittest.TestCase):
    def test_summarize_commit_log_basic(self):
        self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
r143106 | jochen@chromium.org | 2013-02-16 10:27:07 -0800 (Sat, 16 Feb 2013) | 10 lines

[chromium] initialize all variables of TestRunner classes
https://bugs.webkit.org/show_bug.cgi?id=110013

Reviewed by Adam Barth.

* DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
(WebTestRunner::TestInterfaces::TestInterfaces):
* DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
(WebTestRunner::TestRunner::TestRunner):

------------------------------------------------------------------------"""),
            "https://trac.webkit.org/r143106 by Jochen Eisinger (jochen__) [chromium] initialize all variables of TestRunner classes"
            " https://webkit.org/b/110013 Reviewed by Adam Barth (abarth).")

        self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
r140066 | simon.fraser@apple.com | 2013-01-17 16:10:31 -0800 (Thu, 17 Jan 2013) | 10 lines

Allow PaintInfo to carry all PaintBehavior flags
https://bugs.webkit.org/show_bug.cgi?id=106980

Reviewed by Beth Dakin.

In r139908 I missed one instance of the PaintInfo constructor that should take PaintBehaviorNormal
instead of "false".

* rendering/RenderScrollbarPart.cpp:
(WebCore::RenderScrollbarPart::paintIntoRect):
------------------------------------------------------------------------"""),
            "https://trac.webkit.org/r140066 by Simon Fraser (smfr)"
            " Allow PaintInfo to carry all PaintBehavior flags https://webkit.org/b/106980 Reviewed by Beth Dakin (dethbakin).")

        self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
r211085 | commit-queue@webkit.org | 2017-01-24 09:01:44 -0800 (Tue, 24 Jan 2017) | 9 lines

Remove always true openGLMultisamplingEnabled setting
https://bugs.webkit.org/show_bug.cgi?id=167364

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-01-24
Reviewed by Sam Weinig.

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::create):
* page/Settings.in:
------------------------------------------------------------------------"""),
            "https://trac.webkit.org/r211085 by Joseph Pecoraro (JoePeck)"
            " Remove always true openGLMultisamplingEnabled setting https://webkit.org/b/167364 Reviewed by Sam Weinig (weinig).")

    def test_summarize_commit_log_revert(self):
        self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
r143104 | commit-queue@webkit.org | 2013-02-16 09:09:01 -0800 (Sat, 16 Feb 2013) | 27 lines

Unreviewed, reverting r142734.
https://trac.webkit.org/changeset/142734
https://bugs.webkit.org/show_bug.cgi?id=110018

"Triggered crashes on lots of websites" (Requested by ggaren
on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2013-02-16

Source/WebCore:

------------------------------------------------------------------------"""),
                         "Geoffrey Garen (ggaren) reverted r142734 in https://trac.webkit.org/r143104 : Triggered crashes on lots of websites")

        self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
r139884 | kov@webkit.org | 2013-01-16 08:26:10 -0800 (Wed, 16 Jan 2013) | 23 lines

[GStreamer][Soup] Let GStreamer provide the buffer data is downloaded to, to avoid copying
https://bugs.webkit.org/show_bug.cgi?id=105552

Reverting 139877. It made a couple of API tests fail.

* platform/graphics/gstreamer/GStreamerVersioning.cpp:
* platform/graphics/gstreamer/GStreamerVersioning.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(StreamingClient):
(_WebKitWebSrcPrivate):

------------------------------------------------------------------------"""),
                         "Gustavo Noronha Silva (kov) reverted 139877 in https://trac.webkit.org/r139884"
                         " [GStreamer][Soup] Let GStreamer provide the buffer data is downloaded to, to avoid copying"
                         " https://webkit.org/b/105552 It made a couple of API tests fail.")

        self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
r135487 | commit-queue@webkit.org | 2012-11-22 00:09:25 -0800 (Thu, 22 Nov 2012) | 52 lines

Unreviewed, reverting r134927 and r134944.
https://trac.webkit.org/changeset/134927
https://trac.webkit.org/changeset/134944
https://bugs.webkit.org/show_bug.cgi?id=103028

Reverting the reverts after merging. (Requested by vsevik on
#webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-11-22

* English.lproj/localizedStrings.js:
* WebCore.gypi:
* WebCore.vcproj/WebCore.vcproj:
* inspector/compile-front-end.py:
* inspector/front-end/AdvancedSearchController.js:
* inspector/front-end/CallStackSidebarPane.js:

------------------------------------------------------------------------"""),
                         "Vsevolod Vlasov (vsevik) reverted r134927 and r134944 in https://trac.webkit.org/r135487 :"
                         " Reverting the reverts after merging.")

    # Miguel <magomez@igalia.com> is not to be confused with Andres <agomez@igalia.com>.
    def test_email_substring_problem(self):
        self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
r211084 | magomez@igalia.com | 2017-01-24 10:25:31 -0600 (Tue, 24 Jan 2017) | 13 lines

[GTK] Do not paint non composited content into the window when using the threaded compositor
https://bugs.webkit.org/show_bug.cgi?id=167367

Reviewed by Carlos Garcia Campos.

When using the threaded compositor we need to send the non composited content for compositing as well,
not painting it directly into the window.

No new tests.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintsIntoWindow):

------------------------------------------------------------------------"""),
            "https://trac.webkit.org/r211084 by Miguel Gomez (magomez) [GTK] Do not paint non composited content into the window when using the threaded compositor"
            " https://webkit.org/b/167367 Reviewed by Carlos Garcia Campos (KaL).")
