Skip to content

Commit 2d95241

Browse files
committed
Update DartWorkflowTest to be package_config based
1 parent 4969571 commit 2d95241

File tree

2 files changed

+30
-66
lines changed

2 files changed

+30
-66
lines changed

third_party/src/main/java/com/jetbrains/lang/dart/util/PackageConfigFileUtil.java

Lines changed: 6 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@
1515
import com.intellij.openapi.util.io.FileUtil;
1616
import com.intellij.openapi.util.io.OSAgnosticPathUtil;
1717
import com.intellij.openapi.util.text.StringUtil;
18+
import com.intellij.openapi.vfs.VfsUtilCore;
1819
import com.intellij.openapi.vfs.VirtualFile;
1920
import com.intellij.util.io.URLUtil;
2021
import org.jetbrains.annotations.NotNull;
2122
import org.jetbrains.annotations.Nullable;
2223

23-
import java.io.IOException;
24-
import java.nio.charset.StandardCharsets;
2524
import java.util.HashMap;
26-
import java.util.List;
2725
import java.util.Map;
2826

2927
public final class PackageConfigFileUtil {
@@ -129,8 +127,11 @@ public final class PackageConfigFileUtil {
129127
* ```
130128
*/
131129
private static @Nullable Map<String, String> loadPackagesMapFromJson(@NotNull VirtualFile packageConfigJsonFile) {
132-
String fileContentsStr = FileUtil.loadFileOrNull(packageConfigJsonFile.getPath());
133-
if (fileContentsStr == null) {
130+
final String fileContentsStr;
131+
try {
132+
fileContentsStr = StringUtil.convertLineSeparators(VfsUtilCore.loadText(packageConfigJsonFile));
133+
}
134+
catch (Exception e) {
134135
return null;
135136
}
136137

@@ -171,62 +172,6 @@ public final class PackageConfigFileUtil {
171172
return null;
172173
}
173174

174-
public static @Nullable Map<String, String> getPackagesMap(final @NotNull VirtualFile dotPackagesFile) {
175-
Pair<Long, Map<String, String>> data = dotPackagesFile.getUserData(MOD_STAMP_TO_PACKAGES_MAP);
176-
177-
final Long currentTimestamp = dotPackagesFile.getModificationCount();
178-
final Long cachedTimestamp = Pair.getFirst(data);
179-
180-
if (cachedTimestamp == null || !cachedTimestamp.equals(currentTimestamp)) {
181-
data = null;
182-
dotPackagesFile.putUserData(MOD_STAMP_TO_PACKAGES_MAP, null);
183-
final Map<String, String> packagesMap = loadPackagesMap(dotPackagesFile);
184-
185-
if (packagesMap != null) {
186-
data = Pair.create(currentTimestamp, packagesMap);
187-
dotPackagesFile.putUserData(MOD_STAMP_TO_PACKAGES_MAP, data);
188-
}
189-
}
190-
191-
return Pair.getSecond(data);
192-
}
193-
194-
private static @Nullable Map<String, String> loadPackagesMap(@NotNull VirtualFile dotPackagesFile) {
195-
try {
196-
final List<String> lines;
197-
if (ApplicationManager.getApplication().isUnitTestMode()) {
198-
lines = StringUtil.split(new String(dotPackagesFile.contentsToByteArray(), StandardCharsets.UTF_8), "\n");
199-
}
200-
else {
201-
lines = FileUtil.loadLines(dotPackagesFile.getPath(), "UTF-8");
202-
}
203-
204-
final Map<String, String> result = new HashMap<>();
205-
206-
for (String line : lines) {
207-
if (line.trim().isEmpty() || line.startsWith("#")) continue;
208-
209-
final int colonIndex = line.indexOf(':');
210-
if (colonIndex > 0 && colonIndex < line.length() - 1) {
211-
final String packageName = line.substring(0, colonIndex).trim();
212-
final String encodedUri = line.substring(colonIndex + 1).trim();
213-
// need to protect '+' chars because URLDecoder.decode replaces '+' with space
214-
final String encodedUriWithoutPluses = StringUtil.replace(encodedUri, "+", "%2B");
215-
final String uri = URLUtil.decode(encodedUriWithoutPluses);
216-
final String packageUri = getAbsolutePackageRootPath(dotPackagesFile.getParent(), uri);
217-
if (!packageName.isEmpty() && packageUri != null) {
218-
result.put(packageName, packageUri);
219-
}
220-
}
221-
}
222-
223-
return result;
224-
}
225-
catch (IOException e) {
226-
return null;
227-
}
228-
}
229-
230175
private static @Nullable String getAbsolutePackageRootPath(@NotNull VirtualFile baseDir, @NotNull String uri) {
231176
if (uri.startsWith("file:/")) {
232177
final String pathAfterSlashes = StringUtil.trimEnd(StringUtil.trimLeading(StringUtil.trimStart(uri, "file:/"), '/'), "/");

third_party/src/test/java/com/jetbrains/lang/dart/workflow/DartWorkflowTest.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,15 +140,34 @@ public void testDartUrlResolver() {
140140
name: NestedProject
141141
dependencies:
142142
RootProject:
143-
path: ../""").getVirtualFile();
143+
path: ../
144+
SomePackage: any""").getVirtualFile();
144145
myFixture.addFileToProject("example/lib/src/nestedlib.dart", "");
145146
myFixture.addFileToProject("example/packages/NestedProject/nestedlib.dart", "");
146147
myFixture.addFileToProject("example/packages/RootProject/rootlib.dart", "");
147148
myFixture.addFileToProject("pub/global/cache/SomePackage/lib/somepack.dart", "");
148-
myFixture.saveText(myFixture.addFileToProject("example/.packages", "").getVirtualFile(),
149-
"RootProject:../lib/\n" +
150-
"NestedProject:lib/\n" +
151-
"SomePackage:" + rootUrl + "/pub/global/cache/SomePackage/lib/");
149+
myFixture.saveText(myFixture.addFileToProject("example/.dart_tool/package_config.json", "").getVirtualFile(),
150+
String.format("""
151+
{
152+
"configVersion": 2,
153+
"packages": [
154+
{
155+
"name": "SomePackage",
156+
"rootUri": "%s",
157+
"packageUri": "lib/"
158+
},
159+
{
160+
"name": "RootProject",
161+
"rootUri": "../../",
162+
"packageUri": "lib/"
163+
},
164+
{
165+
"name": "NestedProject",
166+
"rootUri": "../",
167+
"packageUri": "lib/"
168+
}
169+
]
170+
}""", rootUrl + "/pub/global/cache/SomePackage"));
152171

153172
DartUrlResolver resolver = DartUrlResolver.getInstance(getProject(), nestedPubspec);
154173
VirtualFile file;

0 commit comments

Comments
 (0)