diff --git a/org.eclipse.m2e.rcptt.tests/.project b/org.eclipse.m2e.rcptt.tests/.project deleted file mode 100644 index be8e53a35..000000000 --- a/org.eclipse.m2e.rcptt.tests/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - org.eclipse.m2e.rcptt.tests - - - - - - org.eclipse.rcptt.core.builder.q7Builder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.m2e.core.maven2Nature - org.eclipse.rcptt.core.rcpttnature - - diff --git a/org.eclipse.m2e.rcptt.tests/pom.xml b/org.eclipse.m2e.rcptt.tests/pom.xml deleted file mode 100644 index 8f877c8dc..000000000 --- a/org.eclipse.m2e.rcptt.tests/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - 4.0.0 - - - org.eclipse.m2e - m2e-core - 2.1.0-SNAPSHOT - - - org.eclipse.m2e.rcptt.tests - rcpttTest - M2E - RCPTT Integration tests - - - - rcptt - Eclipse RCPTT repository - https://repo.eclipse.org/content/repositories/rcptt-releases/ - - - - - - - org.eclipse.rcptt - rcptt-maven-plugin - 2.5.5-M3 - true - - - ../products/m2e-ide/target/products/m2e-ide-[platform].tar.gz - - - - 1800 - - 300 - - - - - - diff --git a/org.eclipse.m2e.rcptt.tests/rcptt.properties b/org.eclipse.m2e.rcptt.tests/rcptt.properties deleted file mode 100644 index 2411fe50b..000000000 --- a/org.eclipse.m2e.rcptt.tests/rcptt.properties +++ /dev/null @@ -1,9 +0,0 @@ ---- RCPTT testcase --- -Format-Version: 1.0 -Element-Name: Project Settings -Element-Type: projectMetadata -Element-Version: 2.0 -Id: _A_5OgIe9Ee2DibE_7T1Sqw -Runtime-Version: 2.5.4.202210020716 -Save-Time: 12/29/22, 10:09 PM - diff --git a/org.eclipse.m2e.rcptt.tests/src/Tests/org.eclipse.m2e.pde.ui/DependencyEditorTest.test b/org.eclipse.m2e.rcptt.tests/src/Tests/org.eclipse.m2e.pde.ui/DependencyEditorTest.test deleted file mode 100644 index cc820b2a1..000000000 --- a/org.eclipse.m2e.rcptt.tests/src/Tests/org.eclipse.m2e.pde.ui/DependencyEditorTest.test +++ /dev/null @@ -1,296 +0,0 @@ ---- RCPTT testcase --- -Format-Version: 1.0 -Contexts: _mo5J8IfaEe2N1bfX2b9TRQ -Element-Name: DependencyEditorTest -Element-Type: testcase -Element-Version: 3.0 -External-Reference: -Id: _WA75MIfaEe2N1bfX2b9TRQ -Runtime-Version: 2.5.4.202210020716 -Save-Time: 2/3/23, 7:35 PM -Tags: org.eclipse.m2e.pde.ui -Testcase-Type: ecl -Verifications: _7el9kIfGEe2DibE_7T1Sqw - -------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac -Content-Type: text/ecl -Entry-Name: .content - -with [get-view "Project Explorer" | get-tree] { - select "target-platform" | double-click - select "target-platform/target-platform.target" | double-click -} - -with [get-editor "target-platform.target" | get-section Locations | get-tree] { - get-item -path "Maven Central.*" | click - select "Maven Central.*" | double-click -} - -with [get-window "Maven Artifact Target Entry - Maven Central"] { - // Check the initial button enablement. All buttons except Undo/Redo should be enabled. - get-button Add | get-property enablement | equals true | verify-true - get-button Remove | get-property enablement | equals true | verify-true - get-button Update | get-property enablement | equals true | verify-true - get-button Undo | get-property enablement | equals false | verify-true - get-button Redo | get-property enablement | equals false | verify-true - - // #################################################################### // - // // - // [I] Check behavior of the Add button with and without the clipboard // - // // - // #################################################################### // - - to-clipboard -input "" - - // Click add -> Create blank dependency - get-button Add | click -metaKeys "" - - // Invalid GAV -> Update & Finish button should be disabled - get-button Update | get-property enablement | equals false | verify-true - get-button Finish | get-property enablement | equals false | verify-true - - // Check error messages - get-editbox -after [get-label "Edit Maven Dependency"] | get-property text - | equals "The target location contains one or more incomplete Maven dependencies.\n" - + " Each dependency requires a group id, artifact id, version and type." | verify-true - - get-label "" -after [get-label "Edit Maven Dependency"] - | get-property "image.path" | equals "org.eclipse.jface/icons/full/message_error.png" | verify-true - - with [get-table | get-item -path ""] { - get-property "columns[0]" | equals "" | verify-true - get-property "columns[1]" | equals "" | verify-true - get-property "columns[2]" | equals "" | verify-true - } - - // Fill the row with meaningful data... - with [get-window "Maven Artifact Target Entry - Maven Central" | get-table] { - get-property "getItems().TableItem[19].getData().getClassifier()" | equals "" | verify-true - get-property "getItems().TableItem[19].getData().getType()" | equals jar | verify-true - get-property "getItems().TableItem[19].getData().getVersion()" | equals "" | verify-true - get-property "getItems().TableItem[19].getData().getGroupId()" | equals "" | verify-true - get-property "getItems().TableItem[19].getData().getArtifactId()" | equals "" | verify-true - // Check selection - get-property "getSelectionCount()" | equals 1 | verify-true - get-property "getSelection().TableItem[0].getData().getKey()" | equals "::jar:" | verify-true - // Set GAV to org.apache.commons:commons-lang3:3.12.0 - select "" | activate-cell-edit -type MouseClickSelection - get-editbox | set-text "org.apache.commons" - select "" | apply-cell-edit -deactivate - select "org.apache.commons" | activate-cell-edit -column 1 -type MouseClickSelection - get-editbox | set-text "commons-lang3" - select "org.apache.commons" | apply-cell-edit -deactivate - select "org.apache.commons" | activate-cell-edit -column 2 -type MouseClickSelection - get-editbox | set-text "3.12.0" - apply-cell-edit -deactivate - select "org.apache.commons" | activate-cell-edit -column 3 -type MouseClickSelection - } - - //Valid GAV -> Update & Finish button should now be enabled again - get-button Update | get-property enablement | equals true | verify-true - get-button Finish | get-property enablement | equals true | verify-true - - to-clipboard -input "\ - org.eclipse.platform\ - org.eclipse.core.runtime\ - 3.26.100\ - " - - // Click add -> Copy dependency from clipboard - get-button Add | click -metaKeys "" - - with [get-window "Maven Artifact Target Entry - Maven Central" | get-table] { - get-property "getItems().TableItem[20].getData().getClassifier()" | equals "" | verify-true - get-property "getItems().TableItem[20].getData().getType()" | equals jar | verify-true - get-property "getItems().TableItem[20].getData().getVersion()" | equals "3.26.100" | verify-true - get-property "getItems().TableItem[20].getData().getGroupId()" | equals "org.eclipse.platform" | verify-true - get-property "getItems().TableItem[20].getData().getArtifactId()" | equals "org.eclipse.core.runtime" - | verify-true - // Check selection - get-property "getSelectionCount()" | equals 1 | verify-true - get-property "getSelection().TableItem[0].getData().getKey()" - | equals "org.eclipse.platform:org.eclipse.core.runtime:jar:3.26.100" | verify-true - } - - // Check whether you can edit the remaining columns directly. I.e. whether SWT.FULL_SELECTION is enabled. - with [get-table] { - select "org.eclipse.jdt" | activate-cell-edit -type MouseClickSelection - get-editbox | set-text newGroupId - select "org.apache.commons" | apply-cell-edit -deactivate - select newGroupId | activate-cell-edit -column 1 -type MouseClickSelection - get-editbox | set-text newArtifactId - select "jakarta.xml.bind" | apply-cell-edit -deactivate - select "jakarta.xml.bind" | activate-cell-edit -column 2 -type MouseClickSelection - get-editbox | set-text newVersion - apply-cell-edit -deactivate - } - - // ############################################################################# // - // // - // [II] Check behavior of the Update button with one more more selected elements // - // // - // ############################################################################# // - - // Select org.jetbrains.kotlin:kotlin-stdlib-common -> Click Update - with [get-table] { - select "org.jetbrains.kotlin" | activate-cell-edit -type MouseClickSelection - get-editbox | click-text 1 21 - cancel-cell-edit - deactivate-cell-edit - } - - get-button Update | click -metaKeys "" - - with [get-table] { - get-property "getItems().TableItem[12].getData().getVersion()" | equals "1.7.22" | verify-false - } - - // Select org.jetbrains.kotlin:kotlin-stdlib-jdk7 to org.jetbrains.kotlin:kotlin-stdlib -> Click Update - with [get-table] { - select [get-item -path "org.jetbrains.kotlin" -index 1] | activate-cell-edit -type MouseClickSelection - get-editbox | click-text 1 21 - cancel-cell-edit - deactivate-cell-edit - select [get-item -path "org.jetbrains.kotlin" -index 3] [get-item -path "org.jetbrains.kotlin" - -index 2] [get-item -path "org.jetbrains.kotlin" -index 1] - } - - get-button Update | click -metaKeys "" - - with [get-table] { - get-property "getItems().TableItem[13].getData().getVersion()" | equals "1.7.22" | verify-false - get-property "getItems().TableItem[14].getData().getVersion()" | equals "1.7.22" | verify-false - get-property "getItems().TableItem[15].getData().getVersion()" | equals "1.7.22" | verify-false - } - - // ########################################################################## // - // // - // [III] Check behavior of the Remove button on one or more selected elements // - // // - // ########################################################################## // - - // Selected and remove com.fasterxml.jackson.core:jackson-annotations to com.fasterxml.jackson.core:jackson-databind - with [get-table] { - select "com.fasterxml.jackson.core" | activate-cell-edit -type MouseClickSelection - get-editbox | click-text 1 27 - cancel-cell-edit - deactivate-cell-edit - select [get-item -path "com.fasterxml.jackson.core" -index 2] [get-item -path "com.fasterxml.jackson.core" - -index 1] "com.fasterxml.jackson.core" - } - - get-button Remove | click -metaKeys "" - - // The selected elements should no longer be in the table, with com.github.ben-manes.caffeine:caffeine being the first element - with [get-table] { - get-property "getSelection().length" | equals 0 - get-property "getItemCount()" | equals 18 | verify-true - get-property "getItems().TableItem[0].getText()" | equals "com.github.ben-manes.caffeine" | verify-true - } - - get-button Undo | click -metaKeys "" - - // The artifacts com.fasterxml.jackson.core:jackson-annotations to com.fasterxml.jackson.core:jackson-databind are back and selected - with [get-table] { - get-property "getItemCount()" | equals 21 | verify-true - get-property "getSelection().length" | equals 3 | verify-true - get-property "getSelection().TableItem[0].getData().getKey()" - | equals "com.fasterxml.jackson.core:jackson-annotations:jar:2.14.1" | verify-true - get-property "getSelection().TableItem[1].getData().getKey()" - | equals "com.fasterxml.jackson.core:jackson-core:jar:2.14.1" | verify-true - get-property "getSelection().TableItem[2].getData().getKey()" - | equals "com.fasterxml.jackson.core:jackson-databind:jar:2.14.1" | verify-true - } - - // Select and remove com.squareup.okio:okio-jvm - with [get-table] { - select "com.squareup.okio" | activate-cell-edit -type MouseClickSelection - get-editbox | click-text 1 18 - cancel-cell-edit - deactivate-cell-edit - } - - get-button Remove | click -metaKeys "" - - // The artifact jakarta.activation:jakarta.activation-api should now be selected, because it now at the same position as the removed element - with [get-table] { - get-property "getSelection().length" | equals 1 | verify-true - get-property "getSelection().TableItem[0].getData().getKey()" - | equals "jakarta.activation:jakarta.activation-api:jar:1.2.2" | verify-true - } - - // ############################################ // - // // - // [IV] Check behavior when sorting by columns // - // // - // ############################################ // - - with [get-table] { - // Sort by Version -> jakarta.inject:jakarta.inject-api should be first element - get-column-header Version | click - get-property "getItems().TableItem[0].getData().getKey()" | equals "jakarta.inject:jakarta.inject-api:jar:1.0.5" - | verify-true - // Sort by Artifact Id -> com.github.ben-manes.caffeine:caffeine should be the first element - get-column-header "Artifact Id" | click - get-property "getItems().TableItem[0].getData().getKey()" - | equals "com.github.ben-manes.caffeine:caffeine:jar:3.1.2" | verify-true - // Sort by Group Id -> com.fasterxml.jackson.core:jackson-annotations should be the first element - get-column-header "Group Id" | click - get-property "getItems().TableItem[0].getData().getKey()" - | equals "com.fasterxml.jackson.core:jackson-annotations:jar:2.14.1" | verify-true - } - - // Check whether dependencies are inserted into the correct position when the table is sorted - to-clipboard -input "\ - com.fasterxml.jackson.core\ - jackson-databind\ - 2.14.0\ - " - - get-button Add | click -metaKeys "" - - with [get-table] { - get-property enablement | equals true | verify-true - get-property "getItems().TableItem[2].getData().getKey()" - | equals "com.fasterxml.jackson.core:jackson-databind:jar:2.14.0" | verify-true - } - - // ################################## // - // // - // [V] Check multi-selection behavior // - // // - // ################################## // - - // Make sure items don't get lost when selecting more than one element - with [get-table] { - // Forward selection - select "com.fasterxml.jackson.core" | activate-cell-edit -type MouseClickSelection - get-editbox | click-text 1 27 - cancel-cell-edit - deactivate-cell-edit - select "com.github.ben-manes.caffeine" [get-item -path "com.fasterxml.jackson.core" -index 3] [get-item - -path "com.fasterxml.jackson.core" -index 2] [get-item -path "com.fasterxml.jackson.core" - -index 1] "com.fasterxml.jackson.core" - - get-property "selection[0].path[0]" | equals "com.fasterxml.jackson.core" | verify-true - get-property "selection[1].path[0]" | equals "com.fasterxml.jackson.core%1%" | verify-true - get-property "selection[2].path[0]" | equals "com.fasterxml.jackson.core%2%" | verify-true - get-property "selection[3].path[0]" | equals "com.fasterxml.jackson.core%3%" | verify-true - get-property "selection[4].path[0]" | equals "com.github.ben-manes.caffeine" | verify-true - - // Backward selection - select [get-item -path "org.slf4j" -index 2] | activate-cell-edit -type MouseClickSelection - get-editbox | click-text 1 10 - cancel-cell-edit - deactivate-cell-edit - select [get-item -path "org.slf4j" -index 2] [get-item -path "org.slf4j" -index 1] "org.slf4j" [get-item - -path "org.jetbrains.kotlin" -index 3] [get-item -path "org.jetbrains.kotlin" -index 2] - - get-property "selection[0].path[0]" | equals "org.jetbrains.kotlin%2%" | verify-true - get-property "selection[1].path[0]" | equals "org.jetbrains.kotlin%3%" | verify-true - get-property "selection[2].path[0]" | equals "org.slf4j" | verify-true - get-property "selection[3].path[0]" | equals "org.slf4j%1%" | verify-true - get-property "selection[4].path[0]" | equals "org.slf4j%2%" | verify-true - } -} -------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac-- diff --git a/org.eclipse.m2e.rcptt.tests/src/Tests/org.eclipse.m2e.pde.ui/_Context/WorkspaceWithTargetPlatform.ctx b/org.eclipse.m2e.rcptt.tests/src/Tests/org.eclipse.m2e.pde.ui/_Context/WorkspaceWithTargetPlatform.ctx deleted file mode 100644 index bf7434a66..000000000 --- a/org.eclipse.m2e.rcptt.tests/src/Tests/org.eclipse.m2e.pde.ui/_Context/WorkspaceWithTargetPlatform.ctx +++ /dev/null @@ -1,60 +0,0 @@ ---- RCPTT testcase --- -Format-Version: 1.0 -Context-Type: org.eclipse.rcptt.ctx.workspace -Element-Name: WorkspaceWithTargetPlatform -Element-Type: context -Element-Version: 2.0 -Id: _mo5J8IfaEe2N1bfX2b9TRQ -Runtime-Version: 2.5.4.202210020716 -Save-Time: 12/30/22, 1:40 AM - -------=_contents/target-platform/target-platform.target-39adf134-5244-371e-a7da-2823002f1d57 -Content-Type: q7/binary -Entry-Name: contents/target-platform/target-platform.target - -UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADdl8+OmzAQxs+bp0Dc -cUjYNjlAcmhVqYc9bfsAE3sgJsamtkmbt6+B/NnNSjXSiijdnGD4Bn+/kT1k0vWfSgR71IYrmYUzEocB -SqoYl0UW/vzxLVqGgbEgGQglMQulCterSbquGV7SErLsohZ0gTaQUDllfxPVAmyudBWuJoH7pUJRsC7L -rCYPrwIBl1Q0DL9ijZI5Ewd3ZbftkhLDt0+fqarRZCFVVc3FRfGsGk3b9XXjggI2KLLwCfYogy8orQYR -BhU3xhE+geQ5GpuFBUrUYF2CPdR41DvLD71HdlqVY+v7OnroYn2w0Kqpv7OVs0VyMBa1qzApge6MkoQq -jen0pLlkgbY8B2pd8CiNQEpl+1Kl0xfPL0nH+q/mZPZIZun0dH9RtDDuhTqddldn59Mr6zfA6aX/PwcD -Cxsu2Z2wFNxumw3ZoIwqkGgIhTxHLn04F9k/MRIyI/PxKcyvBjQ2NVG7rbV14jHfqzzWXfljEt/UO1de -41xF5b7yVn0+tvMSds4CEGeB77su493/1wkR1NwD4jbP2Nvn7OvcLoeCnBMGgSTk021AuCyR2oEQvXgQ -QHwrgN+GaDPQf6cdYN+1U/L5Nvbb70Lf4AcRnOSDIBKSjAuhdEGQCl4bJCXz7aIr9asz5CGZk0U8cotq -3ZVoNxq4NGSnrOC+s92LImOZ4Bv3l6OqvCgzsiDzkXvUu0lKtlt8EI7lB+C4EwQj8sfS16aoiJQzEh3F -nmMdj91lh/ruNIN66p1ZNryqhX/SeZ/rq1g/lfbB0zh9HLenL+Zt99JuJl/9BVBLBwjVgN3qVwIAAPYP -AABQSwECFAAUAAgICAAAACEA1YDd6lcCAAD2DwAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUA -AQAAAABQSwUGAAAAAAEAAQA/AAAAlgIAAAAA -------=_contents/target-platform/target-platform.target-39adf134-5244-371e-a7da-2823002f1d57-- -------=_contents/target-platform/.project-faabef30-8b6b-367d-9526-544b3980ac44 -Content-Type: q7/binary -Entry-Name: contents/target-platform/.project - -UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAABVjsEOwiAQRM/2Kxru -Fb15oPRi+gPqByBdGwwsZNkaP1+s2tjbm5mdzajuGXz9AMouYiv2252oAW0cHI6tuJz75iA6XalE8Q6W -j5AtucTlWFcbhSaAZkMjcJO84VukoOTsltTGEABZK/mjYn4f5TfLf3GdnB9OCeycrBQangg+lYWX9mrT -C1BLBwhlg0YFhgAAANAAAABQSwECFAAUAAgICAAAACEAZYNGBYYAAADQAAAACAAJAAAAAAAAAAAAAAAA -AAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAxQAAAAAA -------=_contents/target-platform/.project-faabef30-8b6b-367d-9526-544b3980ac44-- -------=_contents/target-platform/.settings/org.eclipse.core.resources.prefs-423fdf98-40c5-315c-9909-2031eed35758 -Content-Type: q7/binary -Entry-Name: contents/target-platform/.settings/org.eclipse.core.resources.prefs - -UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAABLTc7JLChO1SsoSk1L -LUrNS04t1itLLSrOzM+zNeQC8vNTMvPS9W0KivKzUpNL7GxDQ9x0LbgAUEsHCA3o3k03AAAANwAAAFBL -AQIUABQACAgIAAAAIQAN6N5NNwAAADcAAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAA -AFBLBQYAAAAAAQABAD8AAAB2AAAAAAA= -------=_contents/target-platform/.settings/org.eclipse.core.resources.prefs-423fdf98-40c5-315c-9909-2031eed35758-- -------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf -Content-Type: q7/binary -Entry-Name: .q7.content - -UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVkV1rgzAUhu/7K0Lu -m6zCoBO1F2MXHWxso9DeDRtPbDZNJDmd/vxFa0RKYewuH895Tt6TZNPVFfkB65TRKV2xO0pAC1MoXab0 -jHK5pptskRhbMhCVahwwKxpEJrBjrbHfrskFxPuwejQaoUPS1SqetFGv9Y20i/15Sk+ITcx527bM1CXz -cn542Qbkj15TeWD68oHjnuMTR4nOa09PT9srPO1yWwK+VTlKY2tKVJHSz9rcP6+3Mn+C6HV1lIfo+LD7 -eKfZgpBE9Hk09mu/a6z5AoFuVONgWzZBd6E8J1UFAWJjEeU3r68c7LKfw6Yq/CCDzQGi/xw3Nbvyzacn -jPUjBGfOVoDzDwHpZmY+qsdwPKQbgvMpecL/+/vZ4hdQSwcIDa6p8x0BAABYAgAAUEsBAhQAFAAICAgA -AAAhAA2uqfMdAQAAWAIAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAAB -AAEAPwAAAFwBAAAAAA== -------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf-- diff --git a/org.eclipse.m2e.rcptt.tests/src/Verification/Empty Log Verification.verification b/org.eclipse.m2e.rcptt.tests/src/Verification/Empty Log Verification.verification deleted file mode 100644 index 56be46340..000000000 --- a/org.eclipse.m2e.rcptt.tests/src/Verification/Empty Log Verification.verification +++ /dev/null @@ -1,25 +0,0 @@ ---- RCPTT verification --- -Format-Version: 1.0 -Element-Name: Empty Log Verification -Element-Type: verification -Element-Version: 2.0 -Id: _7el9kIfGEe2DibE_7T1Sqw -Runtime-Version: 2.5.4.202210020716 -Save-Time: 12/29/22, 11:33 PM -Verification-Type: org.eclipse.rcptt.verifications.log - -------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa -Content-Type: text/plain -Entry-Name: .description - -Validates that no error has been thrown during the test execution. -------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa-- -------=_.errorlog.verification-3ceb5b18-8b7c-3939-9191-416e6e78eb57 -Content-Type: text/errorlog-verification -Entry-Name: .errorlog.verification - -INCLUDE CONTEXTS: true -DENIED: -4 0 .* Message:.* - -------=_.errorlog.verification-3ceb5b18-8b7c-3939-9191-416e6e78eb57-- diff --git a/org.eclipse.m2e.swtbot.tests/.classpath b/org.eclipse.m2e.swtbot.tests/.classpath new file mode 100644 index 000000000..9479140d1 --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/.classpath @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/org.eclipse.m2e.swtbot.tests/.project b/org.eclipse.m2e.swtbot.tests/.project new file mode 100644 index 000000000..678256ff9 --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/.project @@ -0,0 +1,34 @@ + + + org.eclipse.m2e.swtbot.tests + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.pde.PluginNature + + diff --git a/org.eclipse.m2e.rcptt.tests/.settings/org.eclipse.core.resources.prefs b/org.eclipse.m2e.swtbot.tests/.settings/org.eclipse.core.resources.prefs similarity index 100% rename from org.eclipse.m2e.rcptt.tests/.settings/org.eclipse.core.resources.prefs rename to org.eclipse.m2e.swtbot.tests/.settings/org.eclipse.core.resources.prefs diff --git a/org.eclipse.m2e.swtbot.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.m2e.swtbot.tests/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..66dee60c5 --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/org.eclipse.m2e.swtbot.tests/META-INF/MANIFEST.MF b/org.eclipse.m2e.swtbot.tests/META-INF/MANIFEST.MF new file mode 100644 index 000000000..38832af77 --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: SWTBot Integration Tests +Bundle-SymbolicName: org.eclipse.m2e.swtbot.tests +Bundle-Version: 2.1.0.qualifier +Require-Bundle: org.eclipse.m2e.core, + org.eclipse.m2e.tests.common, + org.eclipse.core.resources;bundle-version="3.20.200", + org.eclipse.core.runtime;bundle-version="3.31.100", + org.eclipse.swt;bundle-version="3.126.0", + org.eclipse.swtbot.eclipse.finder;bundle-version="4.2.1", + org.eclipse.ui.workbench;bundle-version="3.132.0", + org.eclipse.ui.ide;bundle-version="3.22.200", + org.junit;bundle-version="4.13.2" +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Automatic-Module-Name: org.eclipse.m2e.rcptt.tests diff --git a/org.eclipse.m2e.swtbot.tests/build.properties b/org.eclipse.m2e.swtbot.tests/build.properties new file mode 100644 index 000000000..34d2e4d2d --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/org.eclipse.m2e.swtbot.tests/pom.xml b/org.eclipse.m2e.swtbot.tests/pom.xml new file mode 100644 index 000000000..ac93077d0 --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/pom.xml @@ -0,0 +1,18 @@ + + 4.0.0 + + + org.eclipse.m2e + m2e-core + 2.1.0-SNAPSHOT + + + org.eclipse.m2e.swtbot.tests + eclipse-test-plugin + M2E - SWTBot Integration tests + + + false + + diff --git a/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/.project b/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/.project new file mode 100644 index 000000000..cedbacfab --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/.project @@ -0,0 +1,11 @@ + + + target-platform + + + + + + + + diff --git a/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/.settings/org.eclipse.core.resources.prefs b/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..2446d971e --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 + diff --git a/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/target-platform.target b/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/target-platform.target new file mode 100644 index 000000000..b777b0949 --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/resources/projects/target-platform/target-platform.target @@ -0,0 +1,124 @@ + + + + + + + + com.fasterxml.jackson.core + jackson-annotations + 2.14.1 + jar + + + com.fasterxml.jackson.core + jackson-core + 2.14.1 + jar + + + com.fasterxml.jackson.core + jackson-databind + 2.14.1 + jar + + + com.github.ben-manes.caffeine + caffeine + 3.1.2 + jar + + + com.squareup.okhttp3 + okhttp + 4.10.0 + jar + + + com.squareup.okio + okio-jvm + 3.2.0 + jar + + + jakarta.activation + jakarta.activation-api + 1.2.2 + jar + + + jakarta.annotation + jakarta.annotation-api + 1.3.5 + jar + + + jakarta.inject + jakarta.inject-api + 1.0.5 + jar + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 + jar + + + jakarta.xml.bind + jakarta.xml.bind-api + 2.3.3 + jar + + + org.eclipse.jdt + org.eclipse.jdt.annotation + 2.2.700 + jar + + + org.jetbrains.kotlin + kotlin-stdlib-common + 1.7.22 + jar + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + 1.7.22 + jar + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + 1.7.22 + jar + + + org.jetbrains.kotlin + kotlin-stdlib + 1.7.22 + jar + + + org.slf4j + jcl-over-slf4j + 2.0.6 + jar + + + org.slf4j + slf4j-api + 2.0.6 + jar + + + org.slf4j + slf4j-simple + 2.0.6 + jar + + + + + diff --git a/org.eclipse.m2e.swtbot.tests/src/org/eclipse/m2e/pde/ui/MavenTargetDependencyEditorTest.java b/org.eclipse.m2e.swtbot.tests/src/org/eclipse/m2e/pde/ui/MavenTargetDependencyEditorTest.java new file mode 100644 index 000000000..20f02b770 --- /dev/null +++ b/org.eclipse.m2e.swtbot.tests/src/org/eclipse/m2e/pde/ui/MavenTargetDependencyEditorTest.java @@ -0,0 +1,349 @@ +package org.eclipse.m2e.pde.ui; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.m2e.tests.common.AbstractMavenProjectTestCase; +import org.eclipse.swt.dnd.Clipboard; +import org.eclipse.swt.dnd.TextTransfer; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; +import org.eclipse.swtbot.eclipse.finder.waits.Conditions; +import org.eclipse.swtbot.swt.finder.SWTBot; +import org.eclipse.swtbot.swt.finder.matchers.WithText; +import org.eclipse.swtbot.swt.finder.utils.TableCollection; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.ide.IDE; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * Integration tests for {@code MavenTargetDependencyEditor} using SWTBot. + */ +public class MavenTargetDependencyEditorTest extends AbstractMavenProjectTestCase { + private static final String MAVEN_EDITOR_TITLE = "Maven Artifact Target Entry - Maven Central"; + private static final String TARGET_FILE = "target-platform.target"; + private SWTWorkbenchBot workbench; + + @Before + public void setUp() throws Exception { + if (Display.getCurrent() != null) { + fail(""" + SWTBot test needs to run in a non-UI thread. + Make sure that "Run in UI thread" is unchecked in your launch configuration or that useUIThread is set to false in the pom.xml + """); + } + super.setUp(); + // Open target editor + IProject project = importEclipseProject("target-platform", "resources/projects/target-platform"); + IFile targetFile = project.getFile(TARGET_FILE); + workbench = new SWTWorkbenchBot(); + workbench.getDisplay().syncCall(() -> IDE.openEditor(getActivePage(), targetFile)); + } + + @After + public void tearDown() throws Exception { + for (Shell shell : workbench.getFinder().findShells(MAVEN_EDITOR_TITLE)) { + workbench.getDisplay().syncExec(shell::dispose); + } + super.tearDown(); + } + + private IWorkbenchPage getActivePage() { + return workbench.getDisplay().syncCall(() -> PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()); + } + + private SWTBot openTargetEditor() { + SWTBot editor = workbench.editorByTitle(TARGET_FILE).bot(); + SWTBotTree locations = editor.tree(); + // This name is only set once the target platform has been resolved + SWTBotTreeItem mavenLocation = locations.getTreeItem("Maven Central 38 plug-ins available"); + mavenLocation.doubleClick(); + // Opening the editor may take a few seconds... + workbench.waitUntil(Conditions.waitForShell(WithText.withText(MAVEN_EDITOR_TITLE))); + return workbench.shell(MAVEN_EDITOR_TITLE).bot(); + } + + /** + * Checks whether the initial "enablement" state of all buttons in the Maven + * dependency editor is set correctly. + */ + @Test + public void testInitialButtonState() { + SWTBot dialog = openTargetEditor(); + assertTrue(dialog.button("Add").isEnabled()); + assertTrue(dialog.button("Remove").isEnabled()); + assertTrue(dialog.button("Update").isEnabled()); + assertFalse(dialog.button("Undo").isEnabled()); + assertFalse(dialog.button("Redo").isEnabled()); + } + + /** + * Checks whether new Maven coordinates can be added and edited. + */ + @Test + public void testAddMavenLocation() { + SWTBot dialog = openTargetEditor(); + workbench.getDisplay().syncExec(() -> { + Clipboard clipboard = new Clipboard(workbench.getDisplay()); + clipboard.setContents(new Object[] { + """ + + """ + }, new Transfer[] { TextTransfer.getInstance() }); + clipboard.dispose(); + }); + dialog.button("Add").click(); + + SWTBotTable table = dialog.table(); + assertEquals(table.cell(19, 0), ""); + assertEquals(table.cell(19, 1), ""); + assertEquals(table.cell(19, 2), ""); + assertEquals(table.cell(19, 3), ""); + assertEquals(table.cell(19, 4), "jar"); + + assertFalse(dialog.button("Update").isEnabled()); + assertFalse(dialog.button("Finish").isEnabled()); + + table.click(19, 0); + dialog.text("").setText("org.apache.commons"); + table.click(19, 1); + dialog.text("").setText("commons-lang3"); + table.click(19, 2); + dialog.text("").setText("3.12.0"); + table.click(19, 3); // Close cell editor + + assertTrue(dialog.button("Update").isEnabled()); + assertTrue(dialog.button("Finish").isEnabled()); + + assertEquals(table.cell(19, 0), "org.apache.commons"); + assertEquals(table.cell(19, 1), "commons-lang3"); + assertEquals(table.cell(19, 2), "3.12.0"); + assertEquals(table.cell(19, 3), ""); + assertEquals(table.cell(19, 4), "jar"); + } + + /** + * Checks whether adding Maven dependencies from the clipboard is supported. + */ + @Test + public void testAddMavenLocationWithClipboard() { + SWTBot dialog = openTargetEditor(); + workbench.getDisplay().syncExec(() -> { + Clipboard clipboard = new Clipboard(workbench.getDisplay()); + clipboard.setContents(new Object[] { + """ + + org.eclipse.platform + org.eclipse.core.runtime + 3.26.100 + " + """ + }, new Transfer[] { TextTransfer.getInstance() }); + clipboard.dispose(); + }); + dialog.button("Add").click(); + + SWTBotTable table = dialog.table(); + assertEquals(table.cell(19, 0), "org.eclipse.platform"); + assertEquals(table.cell(19, 1), "org.eclipse.core.runtime"); + assertEquals(table.cell(19, 2), "3.26.100"); + assertEquals(table.cell(19, 3), ""); + assertEquals(table.cell(19, 4), "jar"); + } + + /** + * Tests whether the cells can be edited directly without first having to select + * the row (only possible with SWT.FULL_SELECTION). + */ + @Test + public void testEditCellsDirectly() { + SWTBot dialog = openTargetEditor(); + + SWTBotTable table = dialog.table(); + table.click(0, 0); + dialog.text("com.fasterxml.jackson.core").setText("a"); + table.click(1, 1); + dialog.text("jackson-core").setText("b"); + table.click(2, 2); + dialog.text("2.14.1").setText("c"); + table.click(0, 0); // Close cell editor + + assertEquals(table.cell(0, 0), "a"); + assertEquals(table.cell(1, 1), "b"); + assertEquals(table.cell(2, 2), "c"); + } + + /** + * Tests whether the version of one or more dependencies can be updated. + */ + @Test + public void testUpdateMavenArtifactVersion() { + SWTBot dialog = openTargetEditor(); + + SWTBotTable table = dialog.table(); + // Update single artifact + assertEquals(table.cell(12, 1), "kotlin-stdlib-common"); + assertEquals(table.cell(12, 2), "1.7.22"); + + table.select(12); + dialog.button("Update").click(); + + assertEquals(table.cell(12, 1), "kotlin-stdlib-common"); + assertNotEquals(table.cell(12, 2), "1.7.22"); + + // Update multiple artifacts + assertEquals(table.cell(13, 1), "kotlin-stdlib-jdk7"); + assertEquals(table.cell(13, 2), "1.7.22"); + assertEquals(table.cell(15, 1), "kotlin-stdlib"); + assertEquals(table.cell(15, 2), "1.7.22"); + + table.select(13, 15); + dialog.button("Update").click(); + + assertEquals(table.cell(13, 1), "kotlin-stdlib-jdk7"); + assertNotEquals(table.cell(13, 2), "1.7.22"); + assertEquals(table.cell(15, 1), "kotlin-stdlib"); + assertNotEquals(table.cell(15, 2), "1.7.22"); + } + + /** + * Tests whether one or more artifacts can be deleted and whether the selection + * is updated correctly. + */ + @Test + public void testRemoveArtifacts() { + SWTBot dialog = openTargetEditor(); + + // Removing multiple elements clears the selection + SWTBotTable table = dialog.table(); + assertEquals(table.cell(0, 1), "jackson-annotations"); + assertEquals(table.cell(1, 1), "jackson-core"); + assertEquals(table.cell(2, 1), "jackson-databind"); + table.select(0, 1, 2); + + dialog.button("Remove").click(); + assertEquals(table.cell(0, 1), "caffeine"); + assertEquals(table.selectionCount(), 0); + + // Removing a single element selects the next element + assertEquals(table.cell(3, 1), "jakarta.activation-api"); + table.select(3); + + dialog.button("Remove").click(); + assertEquals(table.cell(3, 1), "jakarta.annotation-api"); + assertEquals(table.selectionCount(), 1); + assertEquals(table.selection().get(0, 1), "jakarta.annotation-api"); + } + + /** + * Tests whether changes to the artifacts can be tracked via undo/redo. + */ + @Test + public void testUndoRedo() { + SWTBot dialog = openTargetEditor(); + + SWTBotTable table = dialog.table(); + assertEquals(table.cell(6, 1), "jakarta.activation-api"); + + // Tests undo/redo on removal + table.select(6); + dialog.button("Remove").click(); + assertEquals(table.cell(6, 1), "jakarta.annotation-api"); + + dialog.button("Undo").click(); + assertEquals(table.cell(6, 1), "jakarta.activation-api"); + + dialog.button("Redo").click(); + assertEquals(table.cell(6, 1), "jakarta.annotation-api"); + + // Tests undo/redo on editing + table.click(6, 1); + dialog.text("jakarta.annotation-api").setText("foo"); + table.click(6, 2); // Close cell editor + assertEquals(table.cell(6, 1), "foo"); + + dialog.button("Undo").click(); + assertEquals(table.cell(6, 1), "jakarta.annotation-api"); + + dialog.button("Redo").click(); + assertEquals(table.cell(6, 1), "foo"); + } + + /** + * Tests whether artifacts are correctly sorted by the selected columns and + * whether items are inserted at the correct location. + */ + @Test + public void testColumnSorting() { + SWTBot dialog = openTargetEditor(); + SWTBotTable table = dialog.table(); + + // Sort by Version + table.header("Version").click(); + assertEquals(table.cell(0, 1), "jakarta.inject-api"); + + // Sort by Artifact Id + table.header("Artifact Id").click(); + assertEquals(table.cell(0, 1), "caffeine"); + + // Sort by Artifact Id + table.header("Group Id").click(); + assertEquals(table.cell(0, 1), "jackson-annotations"); + + workbench.getDisplay().syncExec(() -> { + Clipboard clipboard = new Clipboard(workbench.getDisplay()); + clipboard.setContents(new Object[] { + """ + + com.fasterxml.jackson.core + jackson-databind + 2.14.0 + " + """ + }, new Transfer[] { TextTransfer.getInstance() }); + clipboard.dispose(); + }); + dialog.button("Add").click(); + assertEquals(table.cell(2, 1), "jackson-databind"); + } + + /** + * Tests whether items are preserved when selecting more than one element. + */ + @Test + public void testMultiSelection() { + SWTBot dialog = openTargetEditor(); + SWTBotTable table = dialog.table(); + + // Forward selection + table.select(0, 1, 2, 3); + TableCollection selection = table.selection(); + assertEquals(selection.rowCount(), 4); + assertEquals(selection.get(0, 1), "jackson-annotations"); + assertEquals(selection.get(1, 1), "jackson-core"); + assertEquals(selection.get(2, 1), "jackson-databind"); + assertEquals(selection.get(3, 1), "caffeine"); + + // Backward selection + table.select(16, 15, 14, 13); + selection = table.selection(); + assertEquals(selection.rowCount(), 4); + assertEquals(selection.get(0, 1), "kotlin-stdlib-jdk7"); + assertEquals(selection.get(1, 1), "kotlin-stdlib-jdk8"); + assertEquals(selection.get(2, 1), "kotlin-stdlib"); + assertEquals(selection.get(3, 1), "jcl-over-slf4j"); + } +} diff --git a/org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF b/org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF index f02dc6f5a..747474681 100644 --- a/org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF +++ b/org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF @@ -21,6 +21,6 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-Vendor: Eclipse.org - m2e MavenArtifact-GroupId: org.eclipse.m2e MavenArtifact-ArtifactId: org.eclipse.m2e.tests.common -Export-Package: org.eclipse.m2e.tests.common;x-friends:="org.eclipse.m2e.tests,org.eclipse.m2e.core.tests,org.eclipse.m2e.jdt.tests,org.eclipse.m2e.core.ui.tests,org.eclipse.m2e.wtp.tests" +Export-Package: org.eclipse.m2e.tests.common;x-friends:="org.eclipse.m2e.tests,org.eclipse.m2e.core.tests,org.eclipse.m2e.jdt.tests,org.eclipse.m2e.core.ui.tests,org.eclipse.m2e.wtp.tests,org.eclipse.m2e.swtbot.tests" Import-Package: org.eclipse.jetty.io;version="12.0.0" Automatic-Module-Name: org.eclipse.m2e.tests.common diff --git a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/AbstractMavenProjectTestCase.java b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/AbstractMavenProjectTestCase.java index 9b86f4cce..7a51c1876 100644 --- a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/AbstractMavenProjectTestCase.java +++ b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/AbstractMavenProjectTestCase.java @@ -54,6 +54,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceDescription; +import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.IWorkspaceRunnable; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; @@ -577,6 +578,22 @@ protected IProject importProject(String projectName, String projectLocation, return workspace.getRoot().getProject(projectName); } + protected IProject importEclipseProject(String name, String base) throws Exception { + IWorkspaceRoot root = workspace.getRoot(); + // copy + File src = new File(base); + File dst = new File(root.getLocation().toFile(), name); + copyDir(src, dst); + + IProject project = root.getProject(name); + project.create(monitor); + + if(!project.isOpen()) { + project.open(monitor); + } + return project; + } + protected void waitForJobsToComplete() throws InterruptedException, CoreException { waitForJobsToComplete(monitor); } diff --git a/pom.xml b/pom.xml index 22be31246..0d63f7ad0 100644 --- a/pom.xml +++ b/pom.xml @@ -95,7 +95,7 @@ products - org.eclipse.m2e.rcptt.tests + org.eclipse.m2e.swtbot.tests diff --git a/target-platform/target-platform.target b/target-platform/target-platform.target index d8c6037c7..7157ab9df 100644 --- a/target-platform/target-platform.target +++ b/target-platform/target-platform.target @@ -45,6 +45,10 @@ + + + +