Skip to content

Commit

Permalink
minor fix-ups
Browse files Browse the repository at this point in the history
  • Loading branch information
eric-milles committed Oct 27, 2020
1 parent 2759818 commit 2c70472
Show file tree
Hide file tree
Showing 17 changed files with 315 additions and 441 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5138,16 +5138,16 @@ public void testCompileStatic9771() {
"Main.groovy",
"@groovy.transform.CompileStatic\n" +
"class Main {\n" +
" private final Map<String, Boolean> map = [:]\n" +
" void test() {\n" +
" { ->\n" +
" map['key'] = true\n" +
" }.call()\n" +
" print map\n" +
" }\n" +
" static main(args) {\n" +
" newInstance().test()\n" +
" }\n" +
" private final Map<String, Boolean> map = [:]\n" +
" void test() {\n" +
" { ->\n" +
" map['key'] = true\n" +
" }.call()\n" +
" print map\n" +
" }\n" +
" static main(args) {\n" +
" newInstance().test()\n" +
" }\n" +
"}\n",
};
//@formatter:on
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package org.codehaus.groovy.eclipse.codeassist.tests

import static org.eclipse.jdt.core.groovy.tests.search.SearchTestSuite.waitUntilReady
import static org.junit.Assert.*

import java.util.regex.Pattern
Expand All @@ -25,7 +26,6 @@ import org.codehaus.groovy.eclipse.codeassist.completions.GroovyExtendedCompleti
import org.codehaus.groovy.eclipse.codeassist.requestor.ContentAssistContext
import org.codehaus.groovy.eclipse.codeassist.requestor.GroovyCompletionProposalComputer
import org.codehaus.groovy.eclipse.test.GroovyEclipseTestSuite
import org.codehaus.groovy.eclipse.test.SynchronizationUtils
import org.codehaus.jdt.groovy.model.GroovyCompilationUnit
import org.eclipse.jdt.core.ICompilationUnit
import org.eclipse.jdt.core.IJavaElement
Expand Down Expand Up @@ -55,7 +55,6 @@ abstract class CompletionTestSuite extends GroovyEclipseTestSuite {

@Before
final void setUpCompletionTestCase() {
SynchronizationUtils.waitForDSLDProcessingToComplete()
setJavaPreference(PreferenceConstants.CODEASSIST_ADDIMPORT, true)
setJavaPreference(PreferenceConstants.CODEASSIST_INSERT_COMPLETION, true)
setJavaPreference(PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS, false)
Expand Down Expand Up @@ -91,8 +90,7 @@ abstract class CompletionTestSuite extends GroovyEclipseTestSuite {

/** Use {@link #createProposalsAtOffset} if testing {@link GroovyCompletionProposalComputer}. */
protected ICompletionProposal[] performContentAssist(ICompilationUnit unit, int offset, Class<? extends IJavaCompletionProposalComputer> computerClass) {
JavaEditor editor = openInEditor(unit)
SynchronizationUtils.waitForIndexingToComplete(unit)
JavaEditor editor = openInEditor(unit); waitUntilReady(unit.javaProject)
JavaSourceViewer viewer = editor.viewer
viewer.setSelectedRange(offset, 0)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ final class CodeSelectGenericsTests extends BrowsingTestSuite {
String contents = '[a: Number].collect { k,v -> "" }'
IJavaElement elem = assertCodeSelect([contents], 'collect')
MethodNode method = ((GroovyResolvedBinaryMethod) elem).inferredElement
assert method.returnType.toString(false) == 'java.util.List <java.lang.Object>'
assert method.returnType.toString(false) == 'java.util.List <java.lang.String>'
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import org.codehaus.groovy.eclipse.core.search.SyntheticAccessorSearchRequestor
import org.codehaus.groovy.eclipse.test.GroovyEclipseTestSuite
import org.eclipse.jdt.core.IJavaElement
import org.eclipse.jdt.core.IType
import org.eclipse.jdt.core.groovy.tests.search.SearchTestSuite
import org.eclipse.jdt.core.search.IJavaSearchConstants
import org.eclipse.jdt.core.search.SearchEngine
import org.eclipse.jdt.core.search.SearchMatch
Expand All @@ -44,7 +45,7 @@ final class SyntheticMemberSearchTests extends GroovyEclipseTestSuite {
| void setZzzz(boolean value) {}
|}
|'''.stripMargin(), 'G', 'p'

gUnit.discardWorkingCopy()
gType = gUnit.getType('G')
assert gType?.exists()
}
Expand Down Expand Up @@ -235,7 +236,6 @@ final class SyntheticMemberSearchTests extends GroovyEclipseTestSuite {
@Test
void testSearchInJava5() {
addJavaSource '''\
|package p;
|class C {
| public boolean isXxxx() {
| return false;
Expand All @@ -252,7 +252,7 @@ final class SyntheticMemberSearchTests extends GroovyEclipseTestSuite {
List<SearchMatch> matches = []
new SyntheticAccessorSearchRequestor().findSyntheticMatches(gType.children.find { it.elementName == 'xxxx' },
IJavaSearchConstants.DECLARATIONS | IJavaSearchConstants.IGNORE_DECLARING_TYPE | IJavaSearchConstants.IGNORE_RETURN_TYPE,
[SearchEngine.defaultSearchParticipant] as SearchParticipant[],
[SearchEngine.getDefaultSearchParticipant()] as SearchParticipant[],
SearchEngine.createWorkspaceScope(),
matches.&add,
null)
Expand All @@ -264,7 +264,8 @@ final class SyntheticMemberSearchTests extends GroovyEclipseTestSuite {

private List<SearchMatch> performSearch(String searchName, IType type = gType) {
IJavaElement target = type.children.find { it.elementName == searchName }
assert target != null : "child not found: $searchName"
assert target?.exists() : "child not found: $searchName"
SearchTestSuite.waitUntilReady(type.javaProject)

new LinkedList<SearchMatch>().tap {
new SyntheticAccessorSearchRequestor().findSyntheticMatches(target, it.&add, null)
Expand All @@ -275,34 +276,20 @@ final class SyntheticMemberSearchTests extends GroovyEclipseTestSuite {
assert matches.size() == expected : "Wrong number of matches found in:\n${ -> matches.join('\n')}"
}

/**
* Ensures that the given match exists at least once in the list.
*/
private void assertMatch(String enclosingName, String matchName, String contents, List<SearchMatch> matches) {
int matchIndex = 0
int matchStart = 0
boolean matchFound = false
for (match in matches) {
if (isMatchOf(enclosingName, matchName, matchStart, contents, match)) {
matchFound = true
break
}
matchIndex += 1
}
assert matchFound : "Match name $matchName not found in\n${ -> matches.join('\n')}"

SearchMatch match = matches.remove(matchIndex)
SearchMatch match = matches.find(this.&isMatchOf.curry(enclosingName, matchName, contents))
assert match : "Match for '$matchName' not found in:\n${ -> matches.join('\n')}"
assert (match.element as IJavaElement).exists()
}

private void assertNoMatch(String enclosingName, String matchName, String contents, List<SearchMatch> matches) {
boolean matchFound = matches.any(this.&isMatchOf.curry(enclosingName, matchName, contents))
assert !matchFound : "Match name $matchName was found, but should not have been.\n${ -> matches.join('\n')}"
assert !matchFound : "Match for '$matchName' was found in:\n${ -> matches.join('\n')}"
}

private static boolean isMatchOf(String enclosingName, String matchName, int matchStart = 0, String contents, SearchMatch match) {
private static boolean isMatchOf(String enclosingName, String matchName, String contents, SearchMatch match) {
(match.element as IJavaElement).elementName == enclosingName &&
contents.indexOf(matchName, matchStart) == match.offset &&
contents.indexOf(matchName) == match.offset &&
matchName.length() == match.length
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package org.codehaus.groovy.eclipse.dsl.tests

import static org.eclipse.core.resources.IncrementalProjectBuilder.FULL_BUILD

import org.codehaus.groovy.eclipse.dsl.GroovyDSLCoreActivator
import org.codehaus.groovy.eclipse.test.TestProject
import org.eclipse.jdt.groovy.core.util.GroovyUtils
Expand Down Expand Up @@ -1800,7 +1802,7 @@ final class DSLInferencingTests extends DSLInferencingTestSuite {
| property name:'other', type:Integer
|}
|'''.stripMargin())
otherProject.fullBuild()
otherProject.project.build(FULL_BUILD, null)

addProjectReference(otherProject.javaProject)
GroovyDSLCoreActivator.default.contextStoreManager.initialize(project, true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ import org.eclipse.core.resources.IncrementalProjectBuilder
import org.eclipse.core.runtime.FileLocator
import org.eclipse.core.runtime.Path
import org.eclipse.jdt.core.JavaCore
import org.eclipse.jdt.core.groovy.tests.SimpleProgressMonitor
import org.eclipse.jdt.internal.core.JavaModelManager
import org.junit.Test

final class DSLStoreTests extends DSLInferencingTestSuite {
Expand All @@ -43,22 +41,12 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
* @param allExpectedPointcuts map: dsl file name -> all pointcuts in that file
* @param expectedContributionCounts map: pointcut name -> all contribution group associated with
*/
private void assertDSLStore(int expectedNumDslFiles, Map<String, List<String>> allExpectedPointcuts, Map<String, Integer> expectedContributionCounts) {
// ensure DSLDs are refreshed
// don't schedule. instead run in the same thread.
println 'About to run RefreshDSLDJob'

SimpleProgressMonitor spm = new SimpleProgressMonitor('clean build')
project.build(IncrementalProjectBuilder.CLEAN_BUILD, spm)
spm.waitForCompletion()

JavaModelManager.indexManager.removeIndex(project.location)
JavaModelManager.indexManager.cleanUpIndexes()
SynchronizationUtils.waitForIndexingToComplete(javaProject)
private void runTest(int expectedNumDslFiles, Map<String, List<String>> allExpectedPointcuts, Map<String, Integer> expectedContributionCounts) {
project.build(IncrementalProjectBuilder.CLEAN_BUILD, null)
SynchronizationUtils.waitForDSLDProcessingToComplete()

DSLDStoreManager manager = GroovyDSLCoreActivator.default.contextStoreManager
manager.initialize(project, true)
println 'Finished RefreshDSLDJob'

DSLDStore store = manager.getDSLDStore(project)
Set<String> disabledScripts = DSLPreferences.disabledScriptsAsSet
Expand Down Expand Up @@ -131,14 +119,14 @@ final class DSLStoreTests extends DSLInferencingTestSuite {

@Test
void testNothing() {
assertDSLStore(0, [:], [:])
runTest(0, [:], [:])
}

@Test
void testSingleSimple() {
createDsls('currentType().accept { }')

assertDSLStore(1,
runTest(1,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
]),
Expand All @@ -156,7 +144,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
'g.accept { }\n' +
'g.accept { }')

assertDSLStore(1,
runTest(1,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
]),
Expand All @@ -172,7 +160,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
void testTwoPointcuts() {
createDsls('currentType().accept { }\nfields().accept { }')

assertDSLStore(1,
runTest(1,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0),
createSemiUniqueName(FindFieldPointcut, 0)
Expand All @@ -190,7 +178,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
void testTwoPointcutsTwoFiles() {
createDsls('currentType().accept { }', 'fields().accept { }')

assertDSLStore(2,
runTest(2,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
], [
Expand All @@ -209,7 +197,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
void testTwoFilesEachWith2Pointcuts() {
createDsls('currentType().accept { }\nfields().accept { }', 'currentType().accept { }\nfields().accept { }')

assertDSLStore(2,
runTest(2,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0),
createSemiUniqueName(FindFieldPointcut, 0)
Expand All @@ -233,7 +221,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
createDsls('def a = currentType()\ndef b = fields()\na.accept { }\na.accept { }\nb.accept { }\nb.accept { }',
'def a = currentType()\ndef b = fields()\na.accept { }\na.accept { }\nb.accept { }\nb.accept { }')

assertDSLStore(2,
runTest(2,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0),
createSemiUniqueName(FindFieldPointcut, 0)
Expand All @@ -259,7 +247,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
'def a = currentType()\na.accept { }\na.accept { }\na.accept { }\na.accept { }\na.accept { }',
'') // not in store

assertDSLStore(3,
runTest(3,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0),
createSemiUniqueName(FindFieldPointcut, 0)
Expand All @@ -284,11 +272,11 @@ final class DSLStoreTests extends DSLInferencingTestSuite {

@Test
void testAddAndRemove() {
assertDSLStore(0, [:], [:])
runTest(0, [:], [:])

// add one
createDsls('currentType().accept { }')
assertDSLStore(1,
runTest(1,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
]),
Expand All @@ -302,7 +290,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
// add another
createDsls('currentType().accept { }')

assertDSLStore(2,
runTest(2,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
], [
Expand All @@ -318,7 +306,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {

// remove second
deleteDslFile(1)
assertDSLStore(1,
runTest(1,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
]),
Expand All @@ -331,13 +319,13 @@ final class DSLStoreTests extends DSLInferencingTestSuite {

// remove first
deleteDslFile(0)
assertDSLStore(0, [:], [:])
runTest(0, [:], [:])
}

@Test
void testChange() {
createDsls('currentType().accept { }')
assertDSLStore(1,
runTest(1,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
]),
Expand All @@ -351,7 +339,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
// overwrite the original
deleteDslFile(0); index = 0
createDsls('currentType().accept { }\nfields().accept { }')
assertDSLStore(1,
runTest(1,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0),
createSemiUniqueName(FindFieldPointcut, 0)
Expand All @@ -368,7 +356,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
@Test
void testDisabledOfFile() {
createDsls('currentType().accept { }', 'fields().accept { }')
assertDSLStore(2,
runTest(2,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
], [
Expand All @@ -385,7 +373,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
// disable script
setDisabledScripts(DSLDStore.toUniqueString(project.getFile('dsl0.dsld')))

assertDSLStore(2,
runTest(2,
createExpectedPointcuts([], [
createSemiUniqueName(FindFieldPointcut, 1)
]),
Expand All @@ -402,7 +390,7 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
deleteDslFile(0); deleteDslFile(1); index = 0
createDsls('currentType().accept { }', 'fields().accept { }')

assertDSLStore(2,
runTest(2,
createExpectedPointcuts([
createSemiUniqueName(CurrentTypePointcut, 0)
], [
Expand All @@ -428,21 +416,21 @@ final class DSLStoreTests extends DSLInferencingTestSuite {
IStorage storage = javaProject.getPackageFragmentRoot(jarPath).getPackageFragment('dsld').nonJavaResources[0]
String dsld = DSLDStore.toUniqueString(storage), pcut = createSemiUniqueName(CurrentTypePointcut, storage)

assertDSLStore(1, [(dsld): [pcut]], [(pcut): 1])
runTest(1, [(dsld): [pcut]], [(pcut): 1])

// disable script
setDisabledScripts(dsld)
assertDSLStore(1, [:], [:])
runTest(1, [:], [:])

// re-enable
setDisabledScripts()
assertDSLStore(1, [(dsld): [pcut]], [(pcut): 1])
runTest(1, [(dsld): [pcut]], [(pcut): 1])

// remove from classpath
GroovyRuntime.removeClasspathEntry(javaProject, cpEntry)
project.refreshLocal(IResource.DEPTH_INFINITE, null)
buildProject()

assertDSLStore(0, [:], [:])
runTest(0, [:], [:])
}
}
Loading

0 comments on commit 2c70472

Please sign in to comment.