summaryrefslogtreecommitdiff
path: root/oox
AgeCommit message (Collapse)AuthorFilesLines
2019-03-25tdf#42949 Fix IWYU warnings in include/sfx2/[a-D]*Gabor Kelemen1-0/+1
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I444cb71bc3d045072a4b1f9eed279ed7e425a0d4 Reviewed-on: https://gerrit.libreoffice.org/69481 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-03-25new loplugin:unoqueryNoel Grandin2-2/+2
look for places we are doing code like: Reference<XProperty>(model, css::uno::UNO_QUERY)->getAsProperty() which might result in a SIGSEGV is the query fails Change-Id: I5cbdbc9e64bd0bed588297c512bf60cbacb9442e Reviewed-on: https://gerrit.libreoffice.org/69044 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-03-20tdf#123909 fix event source that refers to a timenode.Mark Hung3-3/+27
p:tn (see below) were treated as delay value instead of timenode id. <p:stCondLst> <p:cond evt="begin" delay="0"> <p:tn val="5"/> </p:cond> </p:stCondLst> Just convert the timenode id to XAnimationNode and set the event source properly. Change-Id: Ib408be6714c6ac70dad7018e544e560cf59a40c0 Reviewed-on: https://gerrit.libreoffice.org/69340 Tested-by: Jenkins Reviewed-by: Mark Hung <marklh9@gmail.com>
2019-03-20Further reducion of OString copying by in-string comparisonMatteo Casalin1-13/+10
Only copy string for SAL_WARN call, to not print unneeded information Change-Id: I962ac8a7ed9bc8ee08d1ea31f4f13a0670cbdf3a Reviewed-on: https://gerrit.libreoffice.org/69232 Tested-by: Jenkins Reviewed-by: Matteo Casalin <matteo.casalin@yahoo.com>
2019-03-20Reduce OString copying by using in-string comparisonMatteo Casalin1-44/+32
Change-Id: I75dbafe00609c6f85ec7cc0cca492bc01cb62052 Reviewed-on: https://gerrit.libreoffice.org/69231 Tested-by: Jenkins Reviewed-by: Matteo Casalin <matteo.casalin@yahoo.com>
2019-03-18tdf#81437 XLSX import: fix missing chart borderBalazs Varga2-4/+24
of MSO 2007/2010 documents with "automatic" chart area formatting, setting also the default 0.75 pt border width and light gray border color. Note: MSO 2007/2010 and MSO 2013/2016 have different "automatic" border colors. This fix uses the last, light gray version instead of the dark one. Change-Id: I579f3745d5fcb2a36e1b4d519320631d20e60fd4 Reviewed-on: https://gerrit.libreoffice.org/69341 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2019-03-18PPTX import: save also OOXDrawing in InteropGrabBagGrzegorz Araminowicz3-27/+32
Change-Id: Ieaf341dd13e06046044f3523c3aad74476160402 Reviewed-on: https://gerrit.libreoffice.org/69328 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-03-14PPTX import: import SmartArt drawing into single GroupShapeGrzegorz Araminowicz3-8/+6
before that there were imported two GroupShapes: - empty one with properties like id, name, InteropGrapBag - second one with actual shapes also fixed tests that relyed on that behaviour Change-Id: I2b94a53e21666b16725c4353448d75e916e4f9df Reviewed-on: https://gerrit.libreoffice.org/69252 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-03-12tdf#115012 XLSX chart import: workaround for no gapLászló Németh1-0/+85
DispBlanksAs=gap mode of OOXML is different from treat-empty-cells=leave-gap mode of OpenDocument, because formulas with no numerical values and strings are no gaps in OOXML line charts, but zeroes. When the data source of the line charts contains formulas with no numerical values or strings, but it doesn't contain empty cells, as a workaround, the charts will be imported with the treat-empty-cells=use-zero setting to get the same line chart as in MSO. Note: now result of ScChart2DataSequence::getData(), a sequence of Any values contains UNO void values for empty cells instead empty strings, allowing the distinction of the empty cells and cells with empty string values. Change-Id: If9a101d66b5b750051928fa7b10b05cea6040071 Reviewed-on: https://gerrit.libreoffice.org/69054 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2019-03-11PPTX import: save SmartArt markup into InteropGrabBagGrzegorz Araminowicz2-11/+28
it will allow to preserve SmartArt when saving PPTX files Change-Id: I9bb66c59d202b4ce426864599014d042d4aa04b0 Reviewed-on: https://gerrit.libreoffice.org/68916 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-03-07log nice exception messages whereever possibleNoel Grandin4-8/+16
Change-Id: Idd125c18bee1a39b9ea8cc4f8c55cddfd37c33e1 Reviewed-on: https://gerrit.libreoffice.org/68579 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-03-05Use indexed getToken and improve tokenizationMatteo Casalin1-9/+8
Third token (i.e. day) would span to the end of the string and conversion to int works just because it stops at first non-numeric character. Change-Id: I4f608aafadd634c312f7cfd986966f453bfca872 Reviewed-on: https://gerrit.libreoffice.org/68121 Tested-by: Jenkins Reviewed-by: Matteo Casalin <matteo.casalin@yahoo.com>
2019-03-05re-land "new loplugin typedefparam""Noel Grandin1-1/+1
This reverts commit c9bb48386bad7d2a40e6958883328145ae439cad, and adds a bunch more fixes. Change-Id: Ib584d302a73125528eba85fa1e722cb6fc41538a Reviewed-on: https://gerrit.libreoffice.org/68680 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-03-04Revert "new loplugin typedefparam"Noel Grandin1-1/+1
This reverts commit 9865440d217d975206a3f91612f0666312bc8fd8. This is not ready to land yet, seems like the latest update of the logic reveals a bunch more places I need to fix before it can land.
2019-03-04new loplugin typedefparamNoel Grandin1-1/+1
verify that parameters use the exact same typedef-names (if any) in definition and declaration Change-Id: I55d2817f599b0253904dce2d35a1a93967e15a77 Reviewed-on: https://gerrit.libreoffice.org/68439 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-28oox smartart, picture strip: fix too wide child shapesMiklos Vajna1-1/+8
Once the constraints determine the size, the aspect ratio may shrink one dimension to achieve the requested ratio. Implement the case where a >1 ratio shrinks the width, so the container of the image-text shape pair has correct aspect ratio. Change-Id: I7bac764c031e80bac532c4f97ebd5b5096401096 Reviewed-on: https://gerrit.libreoffice.org/68510 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-27oox smartart, picture strip: fix lack of margin in text shapesMiklos Vajna1-3/+55
Shape text has two kind of spacing inside the shape's bounding box: the shape-level margin and the paragraph-level one. Only the second was handled in the tx algorithm so far, add support for the first. The margins taken from constraints were way large by default: the only explanation I found for that is that SmartArt layout sometimes calculates in MMs, sometimes in Points, and the ratio between the two is exactly the Impress / PowerPoint margin. So assume that indeed that unit difference is the reason for the smaller in-PowerPoint margin values and do the same on our side. Change-Id: I6f1e54301e2e9b33a7e721be34244d968cccf42d Reviewed-on: https://gerrit.libreoffice.org/68453 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-27loplugin:unusedfields look for classes where we can make all the..Noel Grandin3-3/+3
fields private Change-Id: Id3c6b123f06ab5dcf87628de4c347626110d2d27 Reviewed-on: https://gerrit.libreoffice.org/68302 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-26oox smartart, picture strip: fix lack of spacing around the picture listMiklos Vajna1-3/+28
The snake algorithm in PowerPoint seem to interpret spacing as follows: if you have N elements, then there should be the requested amount of spacing between the elements, and also double amount of spacing around the actual list of elements. With this, the SmartArt and the title shape in the bugdoc no longer overlaps. Change-Id: I5d6885b434bfaff9de9aac595a298a5346524e19 Reviewed-on: https://gerrit.libreoffice.org/68397 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-26oox smartart, picture strip: fix too many columns with aspect ratio requestMiklos Vajna1-7/+22
The bugdoc has 3 items in the picture strip and PowerPoint laid this out as a single column with 3 rows (as a snake algorithm). We used to put the first two items to the first row and the third item to the second row. Improve out layout by taking into account what aspect ratio the child algorithms request: this way it's obvious that we should use a single column in case we have a large enough aspect ratio and few enough items. (PowerPoint also uses multiple columns without the aspect ratio request.) Change-Id: I9f1158c04c665fc6a2c85e4ac3a1ed363b1c75fb Reviewed-on: https://gerrit.libreoffice.org/68370 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-25oox smartart, picture strip: expose aspect ratio of children for snake algoMiklos Vajna5-13/+26
The aspect ratio request of the Shape is not yet used in AlgAtom::layoutShape(), though. The heavy-lifting is needed, because the number of cols/rows in the snake algorithm depends on the aspect ratio request from the child algorithm, so need to transfer the aspect ratio from child algorithm -> layout node -> shape -> parent algorithm. Still no functional changes intended. Change-Id: I8cbe53cfac0965ab5d8c05f75fe27e819de6836a Reviewed-on: https://gerrit.libreoffice.org/68354 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-25oox smartart, picture strip: fetch # of children only once in snake algoMiklos Vajna1-5/+3
No functional changes intended. Change-Id: I847f725a5ecf516755a4b6d85e3180979520eee2 Reviewed-on: https://gerrit.libreoffice.org/68344 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-25tdf#123557 PPTX: import timenode condition targets.Mark Hung1-1/+11
Handle timenode condition properly. Begin and End of TimenodeContainer allow Sequence, Event, Timing, double, and VOID. Only events with Source set are valid. Change-Id: I25519110715072ca36b7f5c55c26415f9fbe9deb Reviewed-on: https://gerrit.libreoffice.org/68210 Tested-by: Jenkins Reviewed-by: Mark Hung <marklh9@gmail.com>
2019-02-25loplugin:unusedfields in variousNoel Grandin1-3/+2
Change-Id: I31d0e6c3559af2e322fb474b97f3bbf4d5064831 Reviewed-on: https://gerrit.libreoffice.org/68280 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-23tdf#47365: import support for PPTX presentation's loop attributeMike Kaganski3-0/+65
presProps stream handler is added to do this. Export is not handled here. Change-Id: I1979941a09c472c14f96c778ca9960ec14786fbe Reviewed-on: https://gerrit.libreoffice.org/68237 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2019-02-22oox smartart, picture strip: handle bitmap fill of pres nodesMiklos Vajna3-0/+11
There were two problems here: 1) We did not import bitmap fill from presentation nodes. 2) Presentation nodes contained properties with reference semantics, so if you set a bitmap fill for a first and a second shape, then at the end both shapes contained the second bitmap. With this, both bitmaps are imported exactly once. Change-Id: I098a006eb3f58a338400663d57888ca671ed9909 Reviewed-on: https://gerrit.libreoffice.org/68218 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-21Fix code formatting, typos and grammar in comments, follow-up of 48ef20f2039Andras Timar1-32/+33
Change-Id: Ia5fa581936e33be1d163dca349ddbe006a79d5db Reviewed-on: https://gerrit.libreoffice.org/68145 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
2019-02-21tdf#123090 Handle removed column with gridSpan.Gülşah Köse1-4/+46
Change-Id: If477845972ce4c8e7bf09ea8718c58851a5b9740 Signed-off-by: Gülşah Köse <gulsah.kose@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/68102 Tested-by: Jenkins Reviewed-by: Andras Timar <andras.timar@collabora.com>
2019-02-20oox smartart, cycle matrix: fix fill and line props of shapeMiklos Vajna1-0/+15
The topmost shape may not have 0 depth, but something larger. In that case at least it's safe to still use fill & line properties. The B1 quadrant of the test file now has the proper orange background, and B2's border is also properly orange. Change-Id: Iccc5f6993693a0f1cf8f50d163003c24d3ad690e Reviewed-on: https://gerrit.libreoffice.org/68104 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-20Related: tdf#122226 OOXML Chart Import data label separatorBalazs Varga1-1/+5
Set the data label separator to "new line" if there is not present explicit point separator and the "percentage format wins over number value format". In MS-Office (2007/2010/2013/2016) the defult separator is the "new line" in that case, any other case the separator is a semicolon. Change-Id: I7f562d814b74eba15b2fba2954efd42747dd7960 Reviewed-on: https://gerrit.libreoffice.org/67974 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2019-02-19oox smartart, cycle matrix: handle destination order in connectionsMiklos Vajna3-11/+16
It is possible to have connections from multiple data nodes to the same presentation node with a presOf type. We use to order these based on as they appear in the data XML, but we need to order them according to the destOrd attribute. Introduce an std::map for that, so get ordering automatically as we iterate. Turn the std::pair into a struct to make the code a bit more readable. Change-Id: I3d2bb047ed3f171a194851f89151bd94071a8176 Reviewed-on: https://gerrit.libreoffice.org/68027 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-19pretty up logging of exceptionsNoel Grandin2-3/+5
Add exceptionToString() and getCaughtExceptionAsString() methods in tools. Use the new methods in DbgUnhandledException() Add special-case case code for most of the exceptions that contain extra fields, so all of the relevant data ends up in the log Change-Id: I376f6549b4d7bd480202f8bff17a454657c75ece Reviewed-on: https://gerrit.libreoffice.org/67857 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-18oox smartart, cycle matrix: handle aspect ratio in composite algoMiklos Vajna3-10/+40
This way the 4 quadrant shapes in the center of the SmartArt form a circle, as width is shrinking. It's not height growing, as OOXML spec clearly says "ar" always just shrinks one axis. (>1 and <1 "ar" is to be handled when they are seen in action in an actual document.) Change-Id: I69f2390ee881253151cccc336ecbf1806a1216dc Reviewed-on: https://gerrit.libreoffice.org/67980 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-18oox smartart, cycle matrix: fix too large height in composite algoMiklos Vajna1-2/+2
The user-level problem was that the height of the entire smartart was too large. The reason for this was that: - composite algorithm gets the constraint height should be 77% of width, this means 6096000 -> 4693920 EMUs - at the same time the parent container is already smaller, 4064000 EMUs - a few lines later we already limit the max height with std::min(), but in the meantime an incorrect y position is calculated, exactly due to the lack of early limited height Solve the problem by making sure composite algorithm never works with a height (even when using it to calculate vertical center) that exceeds the height of the parent. Change-Id: Iba29ed8b6e376bf379c40f1cddfce3ae45beff0a Reviewed-on: https://gerrit.libreoffice.org/67970 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-15Simplify containers iterations in oox, opencl, packageArkadiy Illarionov6-50/+51
Use range-based loop or replace with STL functions Change-Id: I91405920d91383bc6cf13b9497d262b1f6f0a84d Reviewed-on: https://gerrit.libreoffice.org/67848 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-15tdf#97575 Chart OOXML: Export ShapeProps of Error BarsBalazs Varga1-0/+2
Export the shapeProps (fillstyle, linestyle, linewidth, linecolor etc.) of the Error Bars to OOXML. Change-Id: Iff74fa463fdd0fb6ed95e4d1bf0d3e906349860c Reviewed-on: https://gerrit.libreoffice.org/67825 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2019-02-13tdf#123400 OOXML Chart: Export Data Label SeparatorBalazs Varga1-0/+11
Export the data label separator XML tag and the separated character to OOXML. Change-Id: I9b3bcb588e42a42494107ebde70f4a72492cfac4 Reviewed-on: https://gerrit.libreoffice.org/67753 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2019-02-12Fix build without HAVE_FEATURE_AVMEDIA (iOS at least)Tor Lillqvist2-1/+10
Change-Id: I72d7c7478eba13db93cb88b86e911163c38b312b
2019-02-12tdf#122226 OOXML Chart Import: data label new line separatorBalazs Varga1-1/+1
Set the data label separator to "new line" if there is not present explicit point separator, just like in MS Office. Change-Id: I9ee0fb9f98fc1bb322892616af50954f4f8db0f9 Reviewed-on: https://gerrit.libreoffice.org/67533 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2019-02-11new loplugin writeonlyvarsNoel Grandin1-6/+0
largely based on the relevant portion of the unusedfields loplugin, but adapted for local vars Change-Id: Ic522a941573940e8f75c88f90ba5f37508ca49b1 Reviewed-on: https://gerrit.libreoffice.org/66835 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-09loplugin:indentation in oox..packageNoel Grandin12-63/+63
Change-Id: Ie50a1ad6e27786ccdaae2ba1ae96f5682c4a38f6 Reviewed-on: https://gerrit.libreoffice.org/67560 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-08oox smartart, cycle matrix: handle left/bottom constraint in composite algoMiklos Vajna1-0/+4
The bugdoc has 3 shapes in the "outer" circle which have a position where either x or y is not 0. But these are defined using constraints talking about the right or bottom edge of the shape. Map that to top/left, given that we already know the shape size. Change-Id: If7ccc2fb642046eb53b48c8b2c2b2c6b023ba9e8 Reviewed-on: https://gerrit.libreoffice.org/67544 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-07oox smartart, cycle matrix: fix counting presentation childrenMiklos Vajna1-0/+8
The markup is: <dgm:if name="Name6" axis="ch ch" ptType="node node" st="1 1" cnt="1 0" func="cnt" op="gte" val="1"> Where PowerPoint evaluated the condition to true, but Impress evaluated to false. This means that the undocumented relation between the child lists is "OR" (not "AND"). Also, our code assumed that "node" has to be a data node (not presentation node), but it seems the only way this condition can be true if presentation children is also counted. (The presentation node in question is not a presentation of anything.) Change-Id: I094b44351aeb8058cd50753f46fcdac7a88b35cd Reviewed-on: https://gerrit.libreoffice.org/67510 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-06Add PPTX import of shape descriptionKatarina Behrens2-0/+6
Which was skipped before. Change-Id: I7fcd5608a8cdbeea9ea15c9c9aa32c9020154750
2019-02-06fix assert seen on opening attachment from tdf#123163Caolán McNamara1-1/+2
I imagine it should have been seqPos-(idPos+2) seems to be like this since the initial commit of commit 091fe76b6329b4bb974987554369cbfadd8f2401 Date: Tue Jun 30 12:55:18 2015 +0300 tdf#87348 implement mso-next-textbox vml-style textbox chaining import Change-Id: Ic2f527ede2102c01c8589d58d8c705d59b0a6ffe Reviewed-on: https://gerrit.libreoffice.org/67450 Reviewed-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-02-05oox: disable gradient fill grab-bag for PPTXMiklos Vajna1-1/+3
This was added in commit 2fcf3a871c94feeca11619ef5c8c0466ce61eb74 (ooxml: preserve gradient shape fill, 2014-01-31), and assumes that the theme colors can be preserved, as the theme definition is grab-bagged as well. But the theme is grab-bagged only for DOCX, not for PPTX, so skip gradient grab-bag for PPTX, otherwise the gradient would refer to incorrect colors in the theme. Change-Id: I98e1c67d4b10e68916f81dd7fc508eb4146d506b Reviewed-on: https://gerrit.libreoffice.org/67386 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-04Related: tdf#94238 PPTX export: handle border and center of radial gradientMiklos Vajna1-4/+53
Map Border to a gradient stop before the final one. Map X/YOffset to the focus rectangle of the center shade, i.e. the opposite of what the import already does. Change-Id: I88db7d579da7327e5e06b736a75a6892b338dd73 Reviewed-on: https://gerrit.libreoffice.org/67369 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2019-02-04tdf#44223 oox: import embedded media stream.Mark Hung4-7/+31
- Handle cTn and tgtEl of MediaNodeContext. - Setting the audio source of XAudio. - Embed the media in TimeNodeTargetElementContext. - Embed the media in SoundActionContext. - Allow avmedia::EmbedMedia to embed media from a XInputStream. Change-Id: I164ac50f97f2036db4bfa2f99adedff0bba382e2 Reviewed-on: https://gerrit.libreoffice.org/67208 Tested-by: Jenkins Reviewed-by: Mark Hung <marklh9@gmail.com>
2019-02-02oox: OOX_DRAWINGML_EXPORT_ROTATE_CLOCKWISIFY() can be a templateMiklos Vajna1-1/+1
Change-Id: I9d3d371e3942e3f7ba3f2fabfb31e5d339c41ee0 Reviewed-on: https://gerrit.libreoffice.org/67264 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-01-30Related: tdf#94238 PPTX import: handle subset of radial gradient fillMiklos Vajna2-6/+50
Handle the case when the horizontal center is at 50%. Other cases are still unhandled, those are more complex. After fixing the style, center and border, the gradient fill looks similar to how PowerPoint renders it. Change-Id: I419da70482de37031aa2c7fc735692019d7665f5 Reviewed-on: https://gerrit.libreoffice.org/67168 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins