diff --git a/src/goModules.ts b/src/goModules.ts
index ab0dd04..61c503c 100644
--- a/src/goModules.ts
+++ b/src/goModules.ts
@@ -193,7 +193,7 @@
 	const moduleName = await vscode.window.showInputBox({
 		prompt: 'Enter module name',
 		value: '',
-		placeHolder: 'example.com/m'
+		placeHolder: 'example/project'
 	});
 
 	const goRuntimePath = getBinPath('go');
diff --git a/test/integration/extension.test.ts b/test/integration/extension.test.ts
index bd8dc3d..c8d5bc1 100644
--- a/test/integration/extension.test.ts
+++ b/test/integration/extension.test.ts
@@ -725,8 +725,8 @@
 		const vendorSupport = await isVendorSupported();
 		const filePath = path.join(fixturePath, 'vendoring', 'main.go');
 		const workDir = path.dirname(filePath);
-		const vendorPkgsFullPath = ['test/testfixture/vendoring/vendor/example.com/vendorpls'];
-		const vendorPkgsRelativePath = ['example.com/vendorpls'];
+		const vendorPkgsFullPath = ['test/testfixture/vendoring/vendor/example/vendorpls'];
+		const vendorPkgsRelativePath = ['example/vendorpls'];
 
 		const gopkgsPromise = getAllPackages(workDir).then((pkgMap) => {
 			const pkgs = Array.from(pkgMap.keys()).filter((p) => {
@@ -785,7 +785,7 @@
 		} // not working in module mode.
 		const vendorSupport = await isVendorSupported();
 		const filePath = path.join(fixturePath, 'baseTest', 'test.go');
-		const vendorPkgs = ['test/testfixture/vendoring/vendor/example.com/vendorpls'];
+		const vendorPkgs = ['test/testfixture/vendoring/vendor/example/vendorpls'];
 
 		const gopkgsPromise = new Promise<void>((resolve, reject) => {
 			const cmd = cp.spawn(getBinPath('gopkgs'), ['-format', '{{.ImportPath}}'], {
@@ -865,7 +865,7 @@
 			configWithoutIgnoringFolders
 		).then((results) => {
 			assert.equal(results[0].name, 'SomethingStrange');
-			assert.equal(results[0].path, path.join(workspacePath, 'vendor/example.com/vendorpls/lib.go'));
+			assert.equal(results[0].path, path.join(workspacePath, 'vendor/example/vendorpls/lib.go'));
 		});
 		const withIgnoringFolders = getWorkspaceSymbols(
 			workspacePath,
diff --git a/test/testdata/cwdTest/cwdTest/go.mod b/test/testdata/cwdTest/cwdTest/go.mod
index 4981e72..93511c4 100644
--- a/test/testdata/cwdTest/cwdTest/go.mod
+++ b/test/testdata/cwdTest/cwdTest/go.mod
@@ -1,3 +1,3 @@
-module example.com/cwdTest
+module example/cwdTest
 
 go 1.15
diff --git a/test/testdata/goTestTest/go.mod b/test/testdata/goTestTest/go.mod
index 24872e7..df5eb44 100644
--- a/test/testdata/goTestTest/go.mod
+++ b/test/testdata/goTestTest/go.mod
@@ -1,3 +1,3 @@
-module example.com/a
+module example/a
 
 go 1.14
diff --git a/test/testdata/stretchrTestSuite/go.mod b/test/testdata/stretchrTestSuite/go.mod
index dd7ea74..272ea9c 100644
--- a/test/testdata/stretchrTestSuite/go.mod
+++ b/test/testdata/stretchrTestSuite/go.mod
@@ -1,4 +1,4 @@
-module example.com/a
+module example/a
 
 go 1.16
 
diff --git a/test/testdata/vendoring/main.go b/test/testdata/vendoring/main.go
index 85b606a..fdb6ca9 100644
--- a/test/testdata/vendoring/main.go
+++ b/test/testdata/vendoring/main.go
@@ -1,11 +1,11 @@
 package main
 
 import (
-  "fmt"
+	"fmt"
 
-  "example.com/vendorpls"
+	"example/vendorpls"
 )
 
 func main() {
-  fmt.Prinln(vendorpls.F())
+	fmt.Prinln(vendorpls.F())
 }
diff --git a/test/testdata/vendoring/vendor/example.com/vendorpls/lib.go b/test/testdata/vendoring/vendor/example/vendorpls/lib.go
similarity index 73%
rename from test/testdata/vendoring/vendor/example.com/vendorpls/lib.go
rename to test/testdata/vendoring/vendor/example/vendorpls/lib.go
index 2993afc..f74997a 100644
--- a/test/testdata/vendoring/vendor/example.com/vendorpls/lib.go
+++ b/test/testdata/vendoring/vendor/example/vendorpls/lib.go
@@ -1,9 +1,9 @@
 package vendorpls
 
 func F() string {
-  return "vendor please"
+	return "vendor please"
 }
 
 func SomethingStrange() {
 
-}
\ No newline at end of file
+}
