Merge lp:~saviq/unity/phablet.unity-test-module into lp:unity/phablet

Proposed by Michał Sawicz
Status: Merged
Approved by: Albert Astals Cid
Approved revision: no longer in the source branch.
Merged at revision: 614
Proposed branch: lp:~saviq/unity/phablet.unity-test-module
Merge into: lp:unity/phablet
Diff against target: 884 lines (+293/-36)
37 files modified
cmake/modules/QmlTest.cmake (+6/-0)
tests/CMakeLists.txt (+1/-0)
tests/qmltests/CMakeLists.txt (+15/-9)
tests/qmltests/Components/tst_ListViewWithPageHeader.qml (+2/-1)
tests/qmltests/Components/tst_PageHeader.qml (+2/-1)
tests/qmltests/Components/tst_ResponsiveFlowView.qml (+2/-1)
tests/qmltests/Components/tst_ResponsiveGridView.qml (+2/-1)
tests/qmltests/Components/tst_Revealer.qml (+2/-1)
tests/qmltests/Components/tst_Showable.qml (+2/-1)
tests/qmltests/Components/tst_Stage.qml (+2/-1)
tests/qmltests/Components/tst_Tile.qml (+2/-1)
tests/qmltests/Dash/tst_DashPreview.qml (+2/-1)
tests/qmltests/Dash/tst_FilterGrids.qml (+2/-1)
tests/qmltests/Dash/tst_PeoplePreview.qml (+2/-1)
tests/qmltests/Greeter/tst_Clock.qml (+2/-1)
tests/qmltests/Greeter/tst_Greeter.qml (+2/-1)
tests/qmltests/Hud/tst_Hud.qml (+2/-1)
tests/qmltests/Launcher/tst_Launcher.qml (+2/-1)
tests/qmltests/Panel/tst_IndicatorItem.qml (+2/-1)
tests/qmltests/Panel/tst_IndicatorRow.qml (+5/-4)
tests/qmltests/Panel/tst_Indicators.qml (+2/-1)
tests/qmltests/Panel/tst_MenuContent.qml (+2/-1)
tests/qmltests/Panel/tst_Overview.qml (+2/-1)
tests/qmltests/Panel/tst_Panel.qml (+2/-1)
tests/qmltests/Panel/tst_SearchIndicator.qml (+2/-1)
tests/qmltests/SideStage/tst_SideStage.qml (+2/-1)
tests/qmltests/utils/Unity/Test/tst_UnityTest.qml (+51/-0)
tests/utils/CMakeLists.txt (+1/-0)
tests/utils/modules/CMakeLists.txt (+1/-0)
tests/utils/modules/Unity/CMakeLists.txt (+1/-0)
tests/utils/modules/Unity/Test/CMakeLists.txt (+21/-0)
tests/utils/modules/Unity/Test/plugin.cpp (+33/-0)
tests/utils/modules/Unity/Test/plugin.h (+32/-0)
tests/utils/modules/Unity/Test/qmldir (+3/-0)
tests/utils/modules/Unity/Test/testutil.cpp (+36/-0)
tests/utils/modules/Unity/Test/testutil.h (+38/-0)
unity.qmlproject (+5/-1)
To merge this branch: bzr merge lp:~saviq/unity/phablet.unity-test-module
Reviewer Review Type Date Requested Status
Albert Astals Cid (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+159410@code.launchpad.net

Commit message

add TestUtil class with isInstanceOf utility method

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Albert Astals Cid (aacid) wrote :

I'd prefer if you use the expectFailContinue() function instead of just commenting out the tests that don't work.

This way when they start to work we'll know :-)

review: Needs Fixing
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Albert Astals Cid (aacid) wrote :

CI triggered

Revision history for this message
Albert Astals Cid (aacid) wrote :

qmluitests doesn't pass here

Scanning dependencies of target testFilterGrids
file:///home/tsdgeos_work/phablet/lalala/tests/qmltests/Dash/tst_FilterGrids.qml:102:5: UnityTestCase is not a type
         UnityTestCase {
         ^
********* Start testing of qmltestrunner *********
Config: Using QTest library 5.0.1, Qt 5.0.1
QWARN : qmltestrunner::tst_FilterGrids::compile()
  /home/tsdgeos_work/phablet/lalala/tests/qmltests/Dash/tst_FilterGrids.qml produced 1 error(s):
    /home/tsdgeos_work/phablet/lalala/tests/qmltests/Dash/tst_FilterGrids.qml:102,5: UnityTestCase is not a type
  Working directory: /home/tsdgeos_work/phablet/lalala/builddir/tests/qmltests
  View: QQuickView, import paths:
    '/home/tsdgeos_work/phablet/lalala/builddir/plugins'
    '/usr/lib/x86_64-linux-gnu/qt5/bin'
    '/usr/lib/x86_64-linux-gnu/qt5/qml'
  Plugin paths:
    '.'

FAIL! : qmltestrunner::tst_FilterGrids::compile() UnityTestCase is not a type
   Loc: [/home/tsdgeos_work/phablet/lalala/tests/qmltests/Dash/tst_FilterGrids.qml(102)]
Totals: 0 passed, 1 failed, 0 skipped
********* Finished testing of qmltestrunner *********

review: Needs Fixing
Revision history for this message
Michał Sawicz (saviq) wrote :

Indeed, fixed.

Revision history for this message
Albert Astals Cid (aacid) wrote :

Works for me, let's wait to see what CI says

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Albert Astals Cid (aacid) wrote :

Needs remerging

review: Needs Fixing
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Albert Astals Cid (aacid) wrote :

qmluitests got stuck again, retriggering CI

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Michał Sawicz (saviq) wrote :

Triggered CI again :/

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Albert Astals Cid (aacid) wrote :

Retriggered CI

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Albert Astals Cid (aacid) wrote :

Good to go

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'cmake/modules/QmlTest.cmake'
--- cmake/modules/QmlTest.cmake 2013-04-17 10:14:28 +0000
+++ cmake/modules/QmlTest.cmake 2013-04-19 21:00:36 +0000
@@ -12,6 +12,7 @@
12# To change/set a default value for the whole test suite, prior to calling add_qml_test, set:12# To change/set a default value for the whole test suite, prior to calling add_qml_test, set:
13# qmltest_DEFAULT_NO_ADD_TEST (default: FALSE)13# qmltest_DEFAULT_NO_ADD_TEST (default: FALSE)
14# qmltest_DEFAULT_TARGETS14# qmltest_DEFAULT_TARGETS
15# qmltest_DEFAULT_IMPORT_PATHS
15# qmltest_DEFAULT_PROPERTIES16# qmltest_DEFAULT_PROPERTIES
1617
17find_program(qmltestrunner_exe qmltestrunner)18find_program(qmltestrunner_exe qmltestrunner)
@@ -35,6 +36,11 @@
35 list(APPEND qmltestrunner_imports "-import")36 list(APPEND qmltestrunner_imports "-import")
36 list(APPEND qmltestrunner_imports ${IMPORT_PATH})37 list(APPEND qmltestrunner_imports ${IMPORT_PATH})
37 endforeach(IMPORT_PATH)38 endforeach(IMPORT_PATH)
39 elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")
40 foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})
41 list(APPEND qmltestrunner_imports "-import")
42 list(APPEND qmltestrunner_imports ${IMPORT_PATH})
43 endforeach(IMPORT_PATH)
38 endif()44 endif()
3945
40 set(qmltest_command46 set(qmltest_command
4147
=== modified file 'tests/CMakeLists.txt'
--- tests/CMakeLists.txt 2013-04-18 17:20:37 +0000
+++ tests/CMakeLists.txt 2013-04-19 21:00:36 +0000
@@ -7,3 +7,4 @@
7add_subdirectory(whitespace)7add_subdirectory(whitespace)
8add_subdirectory(cleanincludes)8add_subdirectory(cleanincludes)
9add_subdirectory(plugins)9add_subdirectory(plugins)
10add_subdirectory(utils)
1011
=== modified file 'tests/qmltests/CMakeLists.txt'
--- tests/qmltests/CMakeLists.txt 2013-04-19 14:51:08 +0000
+++ tests/qmltests/CMakeLists.txt 2013-04-19 21:00:36 +0000
@@ -9,6 +9,11 @@
99
10add_subdirectory(plugins)10add_subdirectory(plugins)
1111
12set(qmltest_DEFAULT_IMPORT_PATHS
13 ${CMAKE_CURRENT_BINARY_DIR}/plugins
14 ${CMAKE_BINARY_DIR}/tests/utils/modules
15)
16
12set(qmltest_DEFAULT_TARGETS qmlunittests qmltests)17set(qmltest_DEFAULT_TARGETS qmlunittests qmltests)
13set(qmltest_DEFAULT_NO_ADD_TEST FALSE)18set(qmltest_DEFAULT_NO_ADD_TEST FALSE)
14set(qmltest_DEFAULT_PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=minimal")19set(qmltest_DEFAULT_PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=minimal")
@@ -21,30 +26,31 @@
21add_qml_test(Components TimeLocal)26add_qml_test(Components TimeLocal)
22add_qml_test(Greeter Clock)27add_qml_test(Greeter Clock)
23add_qml_test(Panel IndicatorItem)28add_qml_test(Panel IndicatorItem)
29add_qml_test(utils/Unity/Test UnityTest)
2430
25set(qmltest_DEFAULT_TARGETS qmluitests qmltests)31set(qmltest_DEFAULT_TARGETS qmluitests qmltests)
26set(qmltest_DEFAULT_NO_ADD_TEST TRUE)32set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
27set(qmltest_DEFAULT_PROPERTIES "")33set(qmltest_DEFAULT_PROPERTIES "")
28add_qml_test(Components DraggingArea)34add_qml_test(Components DraggingArea)
29add_qml_test(Components FilterGrid IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)35add_qml_test(Components FilterGrid IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
30add_qml_test(Components ListViewWithPageHeader)36add_qml_test(Components ListViewWithPageHeader)
31add_qml_test(Components ResponsiveFlowView)37add_qml_test(Components ResponsiveFlowView)
32add_qml_test(Components ResponsiveGridView)38add_qml_test(Components ResponsiveGridView)
33add_qml_test(Components Revealer)39add_qml_test(Components Revealer)
34add_qml_test(Components Showable)40add_qml_test(Components Showable)
35add_qml_test(Components Stage IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks)41add_qml_test(Components Stage IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
36add_qml_test(Components Tile)42add_qml_test(Components Tile)
37add_qml_test(Components PageHeader)43add_qml_test(Components PageHeader)
38add_qml_test(Dash DashPreview)44add_qml_test(Dash DashPreview)
39add_qml_test(Dash PeoplePreview)45add_qml_test(Dash PeoplePreview)
40add_qml_test(Dash FilterGrids IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${CMAKE_CURRENT_SOURCE_DIR}/plugins)46add_qml_test(Dash FilterGrids IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins ${CMAKE_CURRENT_SOURCE_DIR}/plugins)
41add_qml_test(Greeter Greeter)47add_qml_test(Greeter Greeter)
42add_qml_test(Hud Hud IMPORT_PATHS ${CMAKE_CURRENT_BINARY_DIR}/plugins)48add_qml_test(Hud Hud)
43add_qml_test(Launcher Launcher)49add_qml_test(Launcher Launcher)
44add_qml_test(Panel IndicatorRow IMPORT_PATHS ${CMAKE_CURRENT_BINARY_DIR}/plugins)50add_qml_test(Panel IndicatorRow)
45add_qml_test(Panel Indicators IMPORT_PATHS ${CMAKE_CURRENT_BINARY_DIR}/plugins)51add_qml_test(Panel Indicators)
46add_qml_test(Panel MenuContent IMPORT_PATHS ${CMAKE_CURRENT_BINARY_DIR}/plugins)52add_qml_test(Panel MenuContent)
47add_qml_test(Panel Overview)53add_qml_test(Panel Overview)
48add_qml_test(Panel Panel IMPORT_PATHS ${CMAKE_CURRENT_BINARY_DIR}/plugins)54add_qml_test(Panel Panel)
49add_qml_test(Panel SearchIndicator)55add_qml_test(Panel SearchIndicator)
50add_qml_test(SideStage SideStage IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks)56add_qml_test(SideStage SideStage IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
5157
=== modified file 'tests/qmltests/Components/tst_ListViewWithPageHeader.qml'
--- tests/qmltests/Components/tst_ListViewWithPageHeader.qml 2013-04-11 15:16:45 +0000
+++ tests/qmltests/Components/tst_ListViewWithPageHeader.qml 2013-04-19 21:00:36 +0000
@@ -20,6 +20,7 @@
20import "../../../Components"20import "../../../Components"
21import Ubuntu.Components.ListItems 0.1 as ListItem21import Ubuntu.Components.ListItems 0.1 as ListItem
22import Ubuntu.Components 0.122import Ubuntu.Components 0.1
23import Unity.Test 0.1 as UT
2324
24Item {25Item {
25 id: root26 id: root
@@ -136,7 +137,7 @@
136137
137138
138139
139 UnityTestCase {140 UT.UnityTestCase {
140 name: "ListViewWithPageHeader"141 name: "ListViewWithPageHeader"
141 when: windowShown142 when: windowShown
142143
143144
=== modified file 'tests/qmltests/Components/tst_PageHeader.qml'
--- tests/qmltests/Components/tst_PageHeader.qml 2013-04-09 12:25:07 +0000
+++ tests/qmltests/Components/tst_PageHeader.qml 2013-04-19 21:00:36 +0000
@@ -19,12 +19,13 @@
19import ".."19import ".."
20import "../../../Components"20import "../../../Components"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
2223
23Item {24Item {
24 width: units.gu(110)25 width: units.gu(110)
25 height: units.gu(30)26 height: units.gu(30)
2627
27 UnityTestCase {28 UT.UnityTestCase {
28 name: "PageHeaderTest"29 name: "PageHeaderTest"
29 when: windowShown30 when: windowShown
3031
3132
=== modified file 'tests/qmltests/Components/tst_ResponsiveFlowView.qml'
--- tests/qmltests/Components/tst_ResponsiveFlowView.qml 2013-04-09 09:51:32 +0000
+++ tests/qmltests/Components/tst_ResponsiveFlowView.qml 2013-04-19 21:00:36 +0000
@@ -20,6 +20,7 @@
20import "../../../Components"20import "../../../Components"
21import Ubuntu.Components.ListItems 0.1 as ListItem21import Ubuntu.Components.ListItems 0.1 as ListItem
22import Ubuntu.Components 0.122import Ubuntu.Components 0.1
23import Unity.Test 0.1 as UT
2324
24Item {25Item {
25 width: flowRect.width + controls.width26 width: flowRect.width + controls.width
@@ -118,7 +119,7 @@
118 }119 }
119 }120 }
120121
121 UnityTestCase {122 UT.UnityTestCase {
122 name: "ResponsiveFlowView"123 name: "ResponsiveFlowView"
123 when: windowShown124 when: windowShown
124125
125126
=== modified file 'tests/qmltests/Components/tst_ResponsiveGridView.qml'
--- tests/qmltests/Components/tst_ResponsiveGridView.qml 2013-04-09 15:52:21 +0000
+++ tests/qmltests/Components/tst_ResponsiveGridView.qml 2013-04-19 21:00:36 +0000
@@ -20,6 +20,7 @@
20import "../../../Components"20import "../../../Components"
21import Ubuntu.Components.ListItems 0.1 as ListItem21import Ubuntu.Components.ListItems 0.1 as ListItem
22import Ubuntu.Components 0.122import Ubuntu.Components 0.1
23import Unity.Test 0.1 as UT
2324
24Item {25Item {
25 width: gridRect.width + controls.width26 width: gridRect.width + controls.width
@@ -118,7 +119,7 @@
118 }119 }
119 }120 }
120121
121 UnityTestCase {122 UT.UnityTestCase {
122 name: "ResponsiveGridView"123 name: "ResponsiveGridView"
123 when: windowShown124 when: windowShown
124125
125126
=== modified file 'tests/qmltests/Components/tst_Revealer.qml'
--- tests/qmltests/Components/tst_Revealer.qml 2013-04-09 14:49:00 +0000
+++ tests/qmltests/Components/tst_Revealer.qml 2013-04-19 21:00:36 +0000
@@ -16,6 +16,7 @@
1616
17import QtQuick 2.017import QtQuick 2.0
18import QtTest 1.018import QtTest 1.0
19import Unity.Test 0.1 as UT
19import ".."20import ".."
2021
21/*22/*
@@ -59,7 +60,7 @@
59 direction: Qt.RightToLeft60 direction: Qt.RightToLeft
60 }61 }
6162
62 UnityTestCase {63 UT.UnityTestCase {
63 name: "Revealer"64 name: "Revealer"
64 when: windowShown65 when: windowShown
6566
6667
=== modified file 'tests/qmltests/Components/tst_Showable.qml'
--- tests/qmltests/Components/tst_Showable.qml 2013-04-09 14:49:00 +0000
+++ tests/qmltests/Components/tst_Showable.qml 2013-04-19 21:00:36 +0000
@@ -17,6 +17,7 @@
17import QtQuick 2.017import QtQuick 2.0
18import QtTest 1.018import QtTest 1.0
19import Ubuntu.Components 0.119import Ubuntu.Components 0.1
20import Unity.Test 0.1 as UT
20import ".."21import ".."
21import "../../../Components"22import "../../../Components"
2223
@@ -100,7 +101,7 @@
100 }101 }
101 }102 }
102103
103 UnityTestCase {104 UT.UnityTestCase {
104 name: "Showable"105 name: "Showable"
105 when: windowShown106 when: windowShown
106107
107108
=== modified file 'tests/qmltests/Components/tst_Stage.qml'
--- tests/qmltests/Components/tst_Stage.qml 2013-04-09 14:49:00 +0000
+++ tests/qmltests/Components/tst_Stage.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Components"20import "../../../Components"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
22import "../../../Applications/applications.js" as ApplicationsModel23import "../../../Applications/applications.js" as ApplicationsModel
23import "tst_Stage"24import "tst_Stage"
2425
@@ -190,7 +191,7 @@
190 }191 }
191 }192 }
192193
193 UnityTestCase {194 UT.UnityTestCase {
194 name: "Stage"195 name: "Stage"
195 when: windowShown196 when: windowShown
196197
197198
=== modified file 'tests/qmltests/Components/tst_Tile.qml'
--- tests/qmltests/Components/tst_Tile.qml 2013-04-10 09:19:27 +0000
+++ tests/qmltests/Components/tst_Tile.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Components"20import "../../../Components"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
2223
23Item {24Item {
24 id: root25 id: root
@@ -36,7 +37,7 @@
36 imageHeight: width37 imageHeight: width
37 }38 }
3839
39 UnityTestCase {40 UT.UnityTestCase {
40 name: "Tile"41 name: "Tile"
41 when: windowShown42 when: windowShown
4243
4344
=== modified file 'tests/qmltests/Dash/tst_DashPreview.qml'
--- tests/qmltests/Dash/tst_DashPreview.qml 2013-04-10 09:19:27 +0000
+++ tests/qmltests/Dash/tst_DashPreview.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Dash"20import "../../../Dash"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
2223
23Item {24Item {
24 id: root25 id: root
@@ -91,7 +92,7 @@
91 signalName: "previewImageClicked"92 signalName: "previewImageClicked"
92 }93 }
9394
94 UnityTestCase {95 UT.UnityTestCase {
95 name: "DashPreview"96 name: "DashPreview"
96 when: windowShown97 when: windowShown
9798
9899
=== modified file 'tests/qmltests/Dash/tst_FilterGrids.qml'
--- tests/qmltests/Dash/tst_FilterGrids.qml 2013-04-18 11:29:52 +0000
+++ tests/qmltests/Dash/tst_FilterGrids.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import "../../../Dash/Video"19import "../../../Dash/Video"
20import Ubuntu.Components.ListItems 0.1 as ListItem20import Ubuntu.Components.ListItems 0.1 as ListItem
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
22import "../"23import "../"
2324
24Rectangle {25Rectangle {
@@ -99,7 +100,7 @@
99 }100 }
100 }101 }
101102
102 UnityTestCase {103 UT.UnityTestCase {
103 id: testCase104 id: testCase
104 name: "FilterGrids"105 name: "FilterGrids"
105 when: windowShown106 when: windowShown
106107
=== modified file 'tests/qmltests/Dash/tst_PeoplePreview.qml'
--- tests/qmltests/Dash/tst_PeoplePreview.qml 2013-04-11 11:04:15 +0000
+++ tests/qmltests/Dash/tst_PeoplePreview.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Dash/People"20import "../../../Dash/People"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
2223
23Item {24Item {
24 id: root25 id: root
@@ -67,7 +68,7 @@
67 signalName: "clicked"68 signalName: "clicked"
68 }69 }
6970
70 UnityTestCase {71 UT.UnityTestCase {
71 id: testCase72 id: testCase
72 name: "PeoplePreview"73 name: "PeoplePreview"
73 when: windowShown74 when: windowShown
7475
=== modified file 'tests/qmltests/Greeter/tst_Clock.qml'
--- tests/qmltests/Greeter/tst_Clock.qml 2013-04-16 13:31:55 +0000
+++ tests/qmltests/Greeter/tst_Clock.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Greeter"20import "../../../Greeter"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
2223
23Rectangle {24Rectangle {
24 width: units.gu(60)25 width: units.gu(60)
@@ -34,7 +35,7 @@
34 }35 }
35 }36 }
3637
37 UnityTestCase {38 UT.UnityTestCase {
38 name: "Clock"39 name: "Clock"
3940
40 function test_customDate() {41 function test_customDate() {
4142
=== modified file 'tests/qmltests/Greeter/tst_Greeter.qml'
--- tests/qmltests/Greeter/tst_Greeter.qml 2013-04-10 09:19:27 +0000
+++ tests/qmltests/Greeter/tst_Greeter.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Greeter"20import "../../../Greeter"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
2223
23Item {24Item {
24 width: units.gu(120)25 width: units.gu(120)
@@ -41,7 +42,7 @@
41 signalName: "selected"42 signalName: "selected"
42 }43 }
4344
44 UnityTestCase {45 UT.UnityTestCase {
45 name: "Greeter"46 name: "Greeter"
46 when: windowShown47 when: windowShown
4748
4849
=== modified file 'tests/qmltests/Hud/tst_Hud.qml'
--- tests/qmltests/Hud/tst_Hud.qml 2013-04-09 14:49:00 +0000
+++ tests/qmltests/Hud/tst_Hud.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Hud"20import "../../../Hud"
21import HudClient 0.121import HudClient 0.1
22import Unity.Test 0.1 as UT
2223
23Hud {24Hud {
24 id: hud25 id: hud
@@ -37,7 +38,7 @@
37 id: hudClientStub38 id: hudClientStub
38 }39 }
3940
40 UnityTestCase {41 UT.UnityTestCase {
41 name: "Hud"42 name: "Hud"
42 when: windowShown43 when: windowShown
4344
4445
=== modified file 'tests/qmltests/Launcher/tst_Launcher.qml'
--- tests/qmltests/Launcher/tst_Launcher.qml 2013-04-09 14:49:00 +0000
+++ tests/qmltests/Launcher/tst_Launcher.qml 2013-04-19 21:00:36 +0000
@@ -16,6 +16,7 @@
1616
17import QtQuick 2.017import QtQuick 2.0
18import QtTest 1.018import QtTest 1.0
19import Unity.Test 0.1 as UT
19import ".."20import ".."
20import "../../../Launcher"21import "../../../Launcher"
21import "../../../Applications/applications.js" as ApplicationsModel22import "../../../Applications/applications.js" as ApplicationsModel
@@ -54,7 +55,7 @@
54 }55 }
55 }56 }
5657
57 UnityTestCase {58 UT.UnityTestCase {
58 id: testCase59 id: testCase
59 name: "Launcher"60 name: "Launcher"
60 when: windowShown61 when: windowShown
6162
=== modified file 'tests/qmltests/Panel/tst_IndicatorItem.qml'
--- tests/qmltests/Panel/tst_IndicatorItem.qml 2013-04-16 13:31:55 +0000
+++ tests/qmltests/Panel/tst_IndicatorItem.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Panel"20import "../../../Panel"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
2223
23Rectangle {24Rectangle {
24 width: units.gu(10)25 width: units.gu(10)
@@ -32,7 +33,7 @@
32 label: "Clock"33 label: "Clock"
33 }34 }
3435
35 UnityTestCase {36 UT.UnityTestCase {
36 name: "IndicatorItem"37 name: "IndicatorItem"
3738
38 function init_test() {39 function init_test() {
3940
=== modified file 'tests/qmltests/Panel/tst_IndicatorRow.qml'
--- tests/qmltests/Panel/tst_IndicatorRow.qml 2013-04-12 10:51:20 +0000
+++ tests/qmltests/Panel/tst_IndicatorRow.qml 2013-04-19 21:00:36 +0000
@@ -16,6 +16,7 @@
1616
17import QtQuick 2.017import QtQuick 2.0
18import QtTest 1.018import QtTest 1.0
19import Unity.Test 0.1 as UT
19import ".."20import ".."
20import "../../../Panel"21import "../../../Panel"
21import Ubuntu.ChewieUI 0.1 as ChewieUI22import Ubuntu.ChewieUI 0.1 as ChewieUI
@@ -54,7 +55,7 @@
54 id: indicatorModel55 id: indicatorModel
55 }56 }
5657
57 UnityTestCase {58 UT.UnityTestCase {
58 name: "IndicatorRow"59 name: "IndicatorRow"
59 when: windowShown60 when: windowShown
6061
@@ -71,7 +72,7 @@
71 }72 }
72 }73 }
7374
74 UnityTestCase {75 UT.UnityTestCase {
75 name: "IndicatorRow_IconPosition"76 name: "IndicatorRow_IconPosition"
76 when: windowShown77 when: windowShown
7778
@@ -93,7 +94,7 @@
93 }94 }
94 }95 }
9596
96 UnityTestCase {97 UT.UnityTestCase {
97 name: "IndicatorRow_Highlight"98 name: "IndicatorRow_Highlight"
98 when: windowShown99 when: windowShown
99100
@@ -167,7 +168,7 @@
167 }168 }
168 }169 }
169170
170 UnityTestCase {171 UT.UnityTestCase {
171 name: "IndicatorRow_Dimmed"172 name: "IndicatorRow_Dimmed"
172 when: windowShown173 when: windowShown
173174
174175
=== modified file 'tests/qmltests/Panel/tst_Indicators.qml'
--- tests/qmltests/Panel/tst_Indicators.qml 2013-04-10 09:45:49 +0000
+++ tests/qmltests/Panel/tst_Indicators.qml 2013-04-19 21:00:36 +0000
@@ -16,6 +16,7 @@
1616
17import QtQuick 2.017import QtQuick 2.0
18import QtTest 1.018import QtTest 1.0
19import Unity.Test 0.1 as UT
19import ".."20import ".."
20import "../../../Panel"21import "../../../Panel"
21import "../../../Components"22import "../../../Components"
@@ -93,7 +94,7 @@
93 }94 }
94 }95 }
9596
96 UnityTestCase {97 UT.UnityTestCase {
97 name: "Indicators"98 name: "Indicators"
98 when: windowShown99 when: windowShown
99100
100101
=== modified file 'tests/qmltests/Panel/tst_MenuContent.qml'
--- tests/qmltests/Panel/tst_MenuContent.qml 2013-04-12 10:51:20 +0000
+++ tests/qmltests/Panel/tst_MenuContent.qml 2013-04-19 21:00:36 +0000
@@ -16,6 +16,7 @@
1616
17import QtQuick 2.017import QtQuick 2.0
18import QtTest 1.018import QtTest 1.0
19import Unity.Test 0.1 as UT
19import ".."20import ".."
20import "../../../Panel"21import "../../../Panel"
21import Ubuntu.ChewieUI 0.1 as ChewieUI22import Ubuntu.ChewieUI 0.1 as ChewieUI
@@ -143,7 +144,7 @@
143 return menu.parent == current_loader;144 return menu.parent == current_loader;
144 }145 }
145146
146 UnityTestCase {147 UT.UnityTestCase {
147 id: menu_content_test148 id: menu_content_test
148 name: "MenuContentTest"149 name: "MenuContentTest"
149 when: windowShown150 when: windowShown
150151
=== modified file 'tests/qmltests/Panel/tst_Overview.qml'
--- tests/qmltests/Panel/tst_Overview.qml 2013-04-12 20:16:47 +0000
+++ tests/qmltests/Panel/tst_Overview.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Panel/Menus"20import "../../../Panel/Menus"
21import "../../../Components"21import "../../../Components"
22import Unity.Test 0.1 as UT
2223
23Rectangle {24Rectangle {
24 id: shell25 id: shell
@@ -61,7 +62,7 @@
61 signalName: "menuSelected"62 signalName: "menuSelected"
62 }63 }
6364
64 UnityTestCase {65 UT.UnityTestCase {
65 name: "Overview"66 name: "Overview"
66 when: windowShown67 when: windowShown
6768
6869
=== modified file 'tests/qmltests/Panel/tst_Panel.qml'
--- tests/qmltests/Panel/tst_Panel.qml 2013-04-09 18:02:40 +0000
+++ tests/qmltests/Panel/tst_Panel.qml 2013-04-19 21:00:36 +0000
@@ -16,6 +16,7 @@
1616
17import QtQuick 2.017import QtQuick 2.0
18import QtTest 1.018import QtTest 1.0
19import Unity.Test 0.1 as UT
19import ".."20import ".."
20import "../../../Panel"21import "../../../Panel"
21import Ubuntu.ChewieUI 0.1 as ChewieUI22import Ubuntu.ChewieUI 0.1 as ChewieUI
@@ -42,7 +43,7 @@
42 anchors.fill: parent43 anchors.fill: parent
43 }44 }
4445
45 UnityTestCase {46 UT.UnityTestCase {
46 name: "Panel"47 name: "Panel"
47 when: windowShown48 when: windowShown
4849
4950
=== modified file 'tests/qmltests/Panel/tst_SearchIndicator.qml'
--- tests/qmltests/Panel/tst_SearchIndicator.qml 2013-04-09 14:49:00 +0000
+++ tests/qmltests/Panel/tst_SearchIndicator.qml 2013-04-19 21:00:36 +0000
@@ -19,6 +19,7 @@
19import ".."19import ".."
20import "../../../Panel"20import "../../../Panel"
21import Ubuntu.Components 0.121import Ubuntu.Components 0.1
22import Unity.Test 0.1 as UT
2223
23Item {24Item {
24 width: units.gu(9)25 width: units.gu(9)
@@ -35,7 +36,7 @@
35 anchors.fill: parent36 anchors.fill: parent
36 }37 }
3738
38 UnityTestCase {39 UT.UnityTestCase {
39 name: "SearchIndicator"40 name: "SearchIndicator"
40 when: windowShown41 when: windowShown
4142
4243
=== modified file 'tests/qmltests/SideStage/tst_SideStage.qml'
--- tests/qmltests/SideStage/tst_SideStage.qml 2013-04-16 13:31:55 +0000
+++ tests/qmltests/SideStage/tst_SideStage.qml 2013-04-19 21:00:36 +0000
@@ -16,11 +16,12 @@
1616
17import QtQuick 2.017import QtQuick 2.0
18import QtTest 1.018import QtTest 1.0
19import Unity.Test 0.1 as UT
19import ".."20import ".."
20import "../../../SideStage"21import "../../../SideStage"
21import Ubuntu.Components 0.122import Ubuntu.Components 0.1
2223
23UnityTestCase {24UT.UnityTestCase {
24 name: "SideStage"25 name: "SideStage"
2526
26 SideStage {27 SideStage {
2728
=== added directory 'tests/qmltests/utils'
=== added directory 'tests/qmltests/utils/Unity'
=== added directory 'tests/qmltests/utils/Unity/Test'
=== added file 'tests/qmltests/utils/Unity/Test/tst_UnityTest.qml'
--- tests/qmltests/utils/Unity/Test/tst_UnityTest.qml 1970-01-01 00:00:00 +0000
+++ tests/qmltests/utils/Unity/Test/tst_UnityTest.qml 2013-04-19 21:00:36 +0000
@@ -0,0 +1,51 @@
1/*
2 * Copyright (C) 2012, 2013 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17
18import QtQuick 2.0
19import QtTest 1.0
20import Unity.Test 0.1
21
22TestCase {
23 Rectangle {
24 id: rect
25 }
26
27 // Singletons need to be bound to a property and not-named-imported
28 // for them to be able to be properly passed back to C++.
29 // See https://bugreports.qt-project.org/browse/QTBUG-30730
30 property var util: Util
31
32 function test_direct() {
33 compare(Util.isInstanceOf(rect, "QQuickRectangle"), true, "rect should be an instance of QQuickRectangle");
34 compare(Util.isInstanceOf(util, "TestUtil"), true, "Util should be an instance of TestUtil");
35 }
36
37 function test_inherited() {
38 compare(Util.isInstanceOf(rect, "QQuickItem"), true, "rect should be an instance of QQuickItem");
39 compare(Util.isInstanceOf(rect, "QObject"), true, "rect should be an instance of QObject");
40 compare(Util.isInstanceOf(util, "QObject"), true, "Util should be an instance of QObject");
41 }
42
43 function test_negative() {
44 compare(Util.isInstanceOf(rect, "QQuickMouseArea"), false, "rect should not be an instance of MouseArea");
45 compare(Util.isInstanceOf(util, "QQuickItem"), false, "Util should not be an instance of QQuickItem");
46 }
47
48 function test_undefined() {
49 compare(Util.isInstanceOf(undefined, "QObject"), false, "passing undefined should fail");
50 }
51}
052
=== added directory 'tests/utils'
=== added file 'tests/utils/CMakeLists.txt'
--- tests/utils/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ tests/utils/CMakeLists.txt 2013-04-19 21:00:36 +0000
@@ -0,0 +1,1 @@
1add_subdirectory(modules)
02
=== added directory 'tests/utils/modules'
=== added file 'tests/utils/modules/CMakeLists.txt'
--- tests/utils/modules/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/CMakeLists.txt 2013-04-19 21:00:36 +0000
@@ -0,0 +1,1 @@
1add_subdirectory(Unity)
02
=== added directory 'tests/utils/modules/Unity'
=== added file 'tests/utils/modules/Unity/CMakeLists.txt'
--- tests/utils/modules/Unity/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/Unity/CMakeLists.txt 2013-04-19 21:00:36 +0000
@@ -0,0 +1,1 @@
1add_subdirectory(Test)
02
=== added directory 'tests/utils/modules/Unity/Test'
=== added file 'tests/utils/modules/Unity/Test/CMakeLists.txt'
--- tests/utils/modules/Unity/Test/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/Unity/Test/CMakeLists.txt 2013-04-19 21:00:36 +0000
@@ -0,0 +1,21 @@
1find_package(Qt5Core REQUIRED)
2find_package(Qt5Quick REQUIRED)
3
4set(CMAKE_AUTOMOC ON)
5add_definitions(-DQT_NO_KEYWORDS)
6
7set(UnityTestQML_SOURCES
8 testutil.cpp
9 plugin.cpp
10)
11
12add_library(UnityTestQml MODULE ${UnityTestQML_SOURCES})
13
14qt5_use_modules(UnityTestQml Core Quick)
15
16# copy qmldir file into build directory for shadow builds
17file(GLOB QML_JS_FILES *.js *.qml)
18
19file(COPY qmldir ${QML_JS_FILES}
20 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
21 )
022
=== renamed file 'tests/qmltests/UnityTestCase.qml' => 'tests/utils/modules/Unity/Test/UnityTestCase.qml'
=== added file 'tests/utils/modules/Unity/Test/plugin.cpp'
--- tests/utils/modules/Unity/Test/plugin.cpp 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/Unity/Test/plugin.cpp 2013-04-19 21:00:36 +0000
@@ -0,0 +1,33 @@
1/*
2 * Copyright (C) 2012, 2013 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17
18#include "plugin.h"
19#include "testutil.h"
20
21#include <qqml.h>
22
23static QObject *testutil_provider(QQmlEngine* /* engine */, QJSEngine* /* scriptEngine */)
24{
25 return new TestUtil();
26}
27
28void UnityTestPlugin::registerTypes(const char *uri)
29{
30 Q_ASSERT(QLatin1String(uri) == QLatin1String("Unity.Test"));
31 // @uri Unity.Test
32 qmlRegisterSingletonType<TestUtil>(uri, 0, 1, "Util", testutil_provider);
33}
034
=== added file 'tests/utils/modules/Unity/Test/plugin.h'
--- tests/utils/modules/Unity/Test/plugin.h 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/Unity/Test/plugin.h 2013-04-19 21:00:36 +0000
@@ -0,0 +1,32 @@
1/*
2 * Copyright (C) 2012, 2013 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17
18#ifndef UNITY_TEST_PLUGIN_H
19#define UNITY_TEST_PLUGIN_H
20
21#include <QQmlExtensionPlugin>
22
23class UnityTestPlugin : public QQmlExtensionPlugin
24{
25 Q_OBJECT
26 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
27
28public:
29 void registerTypes(const char *uri);
30};
31
32#endif // UNITY_TEST_PLUGIN_H
033
=== added file 'tests/utils/modules/Unity/Test/qmldir'
--- tests/utils/modules/Unity/Test/qmldir 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/Unity/Test/qmldir 2013-04-19 21:00:36 +0000
@@ -0,0 +1,3 @@
1module Unity.Test
2plugin UnityTestQml
3UnityTestCase 0.1 UnityTestCase.qml
04
=== added file 'tests/utils/modules/Unity/Test/testutil.cpp'
--- tests/utils/modules/Unity/Test/testutil.cpp 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/Unity/Test/testutil.cpp 2013-04-19 21:00:36 +0000
@@ -0,0 +1,36 @@
1/*
2 * Copyright (C) 2012, 2013 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17
18#include "testutil.h"
19
20#include <QDebug>
21
22TestUtil::TestUtil(QObject *parent)
23: QObject(parent)
24{
25}
26
27TestUtil::~TestUtil()
28{
29}
30
31bool
32TestUtil::isInstanceOf(QObject *obj, QString name)
33{
34 if (!obj) return false;
35 return obj->metaObject()->className() == name || obj->inherits(name.toUtf8());
36}
037
=== added file 'tests/utils/modules/Unity/Test/testutil.h'
--- tests/utils/modules/Unity/Test/testutil.h 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/Unity/Test/testutil.h 2013-04-19 21:00:36 +0000
@@ -0,0 +1,38 @@
1/*
2 * Copyright (C) 2012, 2013 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17
18#ifndef TESTUTIL_H
19#define TESTUTIL_H
20
21#include <QtQuick/QQuickItem>
22
23class TestUtil : public QObject
24{
25 Q_OBJECT
26 Q_DISABLE_COPY(TestUtil)
27
28public:
29 TestUtil(QObject *parent = 0);
30 ~TestUtil();
31
32 Q_INVOKABLE bool isInstanceOf(QObject*, QString);
33};
34
35QML_DECLARE_TYPE(TestUtil)
36
37#endif // TESTUTIL_H
38
039
=== modified file 'unity.qmlproject'
--- unity.qmlproject 2013-03-22 12:01:20 +0000
+++ unity.qmlproject 2013-04-19 21:00:36 +0000
@@ -16,5 +16,9 @@
16 directory: "."16 directory: "."
17 }17 }
18 /* List of plugin directories passed to QML runtime */18 /* List of plugin directories passed to QML runtime */
19 importPaths: [ "plugins" ]19 importPaths: [
20 "builddir/plugins",
21 "builddir/tests/plugins",
22 "builddir/tests/utils/modules"
23 ]
20}24}

Subscribers

People subscribed via source and target branches