public void testDoNotConsiderImportFromTestPackageAsSelfImport() { PsiFile file = myFixture.addFileToProject("path/a_test.go", "package pack_test; import <caret>\"path\""); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.checkHighlighting(); }
public void testDoNotImportOwnPathFromNonTestPackage() throws IOException { PsiFile testFile = myFixture.addFileToProject("fuzz/fuzy_test.go", "package fuzy; import \"<caret>\""); myFixture.configureFromExistingVirtualFile(testFile.getVirtualFile()); myFixture.completeBasic(); List<String> strings = myFixture.getLookupElementStrings(); assertTrue(strings != null && !strings.contains("fuzz")); }
public void testPackageWithTestPrefix() { myFixture.addFileToProject("pack1/pack1_test.go", "package pack1_test; func Test() {}"); PsiFile file = myFixture.addFileToProject("pack2/pack2_test.go", "package pack2_test; import \"testing\"; func TestTest(*testing.T) {<error>pack1_test</error>.Test()}"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.checkHighlighting(); }
public void testDoNotResolveReceiverTypeToFunction() { myFixture.addFileToProject("pack1/a.go", "package foo; func functionInCurrentPackage() {}"); PsiFile file = myFixture.addFileToProject("pack1/b.go", "package foo; func (<error descr=\"Unresolved type 'functionInCurrentPackage'\">functionInCurrentPackage</error>) method() {}"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.checkHighlighting(); }
public void testImportWithSlashAtTheEnd() { myFixture.addFileToProject("a/pack/pack.go", "package pack; func Foo() {}"); PsiFile file = myFixture.addFileToProject("pack2/pack2.go", "package main; import \"a/pack/<error descr=\"Cannot resolve file ''\"></error>\"; import \"../a/pack/\"; func main() { pack.Foo() }"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.checkHighlighting(); }
public void testPackageWithTestPrefixNotInsideTestFile() { myFixture.addFileToProject("pack1/pack1.go", "package pack1_test; func Test() {}"); PsiFile file = myFixture.addFileToProject("pack2/pack2_test.go", "package pack2_test; import `pack1`; import \"testing\"; func TestTest(*testing.T) {pack1_test.Test()}"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.checkHighlighting(); }
public void testDoNotCompleteOwnImportPath() { myFixture.addFileToProject("package/long/long/path/test.go", "package pack"); PsiFile testFile = myFixture.addFileToProject("package/very/long/path/but/same/package/test.go", "package pack; import `package/<caret>`"); myFixture.configureFromExistingVirtualFile(testFile.getVirtualFile()); myFixture.completeBasic(); myFixture.checkResult("package pack; import `package/long/long/path`"); }
public void testAutoImportOwnImportPathFromTest() throws IOException { myFixture.addFileToProject("pack/a.go", "package myPack; func Func() {}"); PsiFile testFile = myFixture.addFileToProject("pack/a_test.go", "package myPack_test; func TestFunc() { myPack.Fun<caret> }"); myFixture.configureFromExistingVirtualFile(testFile.getVirtualFile()); myFixture.completeBasic(); myFixture.checkResult("package myPack_test;\n\nimport \"pack\"\n\nfunc TestFunc() { myPack.Func() }"); }
public void testDuplicateFinalPackageComponent() { myFixture.addFileToProject("a/pack/pack1.go", "package pack; func Foo() {}"); myFixture.addFileToProject("b/pack/pack2.go", "package pack"); PsiFile file = myFixture.addFileToProject("pack3/pack3.go", "package main; import \"a/pack\"\n" + "import <error>\"b/pack\"</error>\n" + "func main() { pack.Foo() }"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.checkHighlighting(); }
public void testInOtherPackageWithDotAlias() { myFixture.addFileToProject("a/a.go", "package a; type MyType int; func CreateMyType() MyType { return MyType{}};"); PsiFile file = myFixture.addFileToProject("b/b.go", "package b; import . \"a\"; func _() { asd<caret>(CreateMyType());};"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); applySingleQuickFix(QUICK_FIX_NAME); myFixture.checkResult("package b; import . \"a\"; func _() { asd(CreateMyType());}\nfunc asd(myType MyType) {\n\t<caret>\n};"); }
public void testInOtherPackageWithChanOfImportedTypes() { myFixture.addFileToProject("a/a.go", "package a; type MyType int; func CreateChanOfMyType() chan MyType { return nil};"); PsiFile file = myFixture.addFileToProject("b/b.go", "package b; import alias \"a\"; func _() { asd<caret>(alias.CreateChanOfMyType());};"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); applySingleQuickFix(QUICK_FIX_NAME); myFixture.checkResult("package b; import alias \"a\"; " + "func _() { asd(alias.CreateChanOfMyType());}\nfunc asd(myType chan alias.MyType) {\n\t<caret>\n};"); }
private void doTestImportOwnPath(String text, String testText, boolean shouldImport) { updateSettings(false); myFixture.addFileToProject(FileUtil.join("pack", "a.go"), text); PsiFile testFile = myFixture.addFileToProject(FileUtil.join("pack", "a_test.go"), testText); myFixture.configureFromExistingVirtualFile(testFile.getVirtualFile()); List<IntentionAction> actions = myFixture.filterAvailableIntentions("Import " + "pack" + "?"); assertTrue(shouldImport != actions.isEmpty()); }
public void testDoNoLoadUnreachableVendorDirectory() { myFixture.addFileToProject("a.go", "package a; import `foo/vendor/foo`; func _() { println(CONST_NAME) }"); PsiFile declarationFile = myFixture.addFileToProject("foo/vendor/foo/foo.go", "package foo; const CON<caret>ST_NAME = 1;"); myFixture.configureFromExistingVirtualFile(declarationFile.getVirtualFile()); failOnFileLoading(); myFixture.findUsages(myFixture.getElementAtCaret()); }
public void testInOtherPackageWithTwoAlias() { myFixture.addFileToProject("c/c.go", "package c; type MyType int;"); myFixture.addFileToProject("a/a.go", "package a; import myC \"c\" func CreateMyType() myC.MyType { return myC.MyType{}};"); PsiFile file = myFixture.addFileToProject("b/b.go", "package b; import (. \"a\"; importC \"c\"); func _() { asd<caret>(CreateMyType());};"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); applySingleQuickFix(QUICK_FIX_NAME); myFixture .checkResult( "package b; import (. \"a\"; importC \"c\"); func _() { asd(CreateMyType());}\nfunc asd(myType importC.MyType) {\n\t<caret>\n};"); }
public void testDoNotAutoImportWithTheSameImportPath() throws IOException { myFixture.addFileToProject("pack1/file2.go", "package pack1; func MyFunctionFromSamePath() {}"); myFixture.addFileToProject("pack2/file2.go", "package pack1; func MyFunctionFromOtherPath() {}"); PsiFile file = myFixture.addFileToProject("pack1/file1.go", "package pack1; func test() { pack1.MyFunc<caret> }"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.completeBasic(); myFixture.checkResult("package pack1;\n\nimport \"pack2\"\n\nfunc test() { pack1.MyFunctionFromOtherPath() }"); }
public void testLocalFunctionInDifferentFiles() { myFixture.copyFileToProject(getTestName(true) + "_context.go", "importPath/context.go"); myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject(getTestName(true) + ".go", "importPath/main.go")); myFixture.completeBasic(); myFixture.checkResultByFile(getTestName(true) + "_after.go"); }
public void testDoNotCompleteSymbolsFromShadowedVendoredPackages() { myFixture.addFileToProject("vendor/foo/foo.go", "package bar; func ShadowedFunction() {}"); myFixture.addFileToProject("vendor/foo/vendor/foo/foo.go", "package bar; func ShadowedFunction() {}"); PsiFile file = myFixture.addFileToProject("vendor/foo/main.go", "package foo; func _() { ShadowF<caret> }"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.completeBasic(); //noinspection ConstantConditions assertSameElements(myFixture.getLookupElementStrings(), "bar.ShadowedFunction"); }
public void testIgnoredBuildTag() { myFixture.addFileToProject("a/pack1.go", "package a; func Foo() {}"); myFixture.addFileToProject("a/pack2.go", "// +build ignored\n\npackage main"); myFixture.addFileToProject("b/pack1.go", "package b; func Bar() {}"); myFixture.addFileToProject("b/pack2.go", "// +build ignored\n\npackage main"); // There should be no errors: package main exists in the a/ and b/ // directories, but it is not imported as it has a non-matching build tag. // For more details see https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/1858#issuecomment-139794391. PsiFile file = myFixture.addFileToProject("c/pack1.go", "package main; import \"a\"; import \"b\"; func main() { a.Foo(); b.Bar(); }"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.checkHighlighting(); }
public void testImportUnderscore() { myFixture.addFileToProject("a/pack/pack1.go", "package pack; func Foo() {}"); myFixture.addFileToProject("b/pack/pack2.go", "package pack"); myFixture.addFileToProject("c/pack/pack3.go", "package whatever; func Bar() {}"); myFixture.addFileToProject("d/pack/pack4.go", "package another; func Baz() {}"); PsiFile file = myFixture.addFileToProject("pack3/pack3.go", "package main; import _ \"a/pack\"; import _ \"b/pack\"; import . \"c/pack\"; import . \"d/pack\"; func main() { Bar(); Baz() }"); myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); myFixture.checkHighlighting(); } }
public void testDoNoLoadUnreachableInternalDirectory() { GoSdkService.setTestingSdkVersion("1.5", getTestRootDisposable()); myFixture.addFileToProject("a.go", "package a; import `foo/internal/foo`; func _() { println(CONST_NAME) }"); PsiFile declarationFile = myFixture.addFileToProject("foo/internal/foo/foo.go", "package foo; const CON<caret>ST_NAME = 1;"); myFixture.configureFromExistingVirtualFile(declarationFile.getVirtualFile()); failOnFileLoading(); myFixture.findUsages(myFixture.getElementAtCaret()); }