GP-0 corrected GhidraURL related test failures

This commit is contained in:
ghidra1 2023-10-04 12:12:45 -04:00
parent 41076f3af0
commit 34b08077dd
2 changed files with 12 additions and 9 deletions

View file

@ -56,7 +56,7 @@ public abstract class GhidraProtocolConnector {
checkProtocol();
checkUserInfo();
checkHostInfo();
this.repositoryName = GhidraURL.isServerRepositoryURL(url) ? parseRepositoryName() : null;
this.repositoryName = parseRepositoryName();
this.itemPath = parseItemPath();
}
@ -185,6 +185,9 @@ public abstract class GhidraProtocolConnector {
String path = url.getPath();
if (repositoryName == null) {
if (!StringUtils.isEmpty(path) && !"/".equals(path)) {
throw new MalformedURLException();
}
return null; // presumed server-only URL
}
@ -206,7 +209,8 @@ public abstract class GhidraProtocolConnector {
}
/**
* Gets the repository name associated with the URL.
* Gets the repository name associated with the URL. If a local URL is used this will
* correspond to the project name.
* @return the repository name or null if URL does not identify a specific repository
*/
public String getRepositoryName() {

View file

@ -35,38 +35,37 @@ public class DefaultLocalGhidraProtocolConnectorParseTest extends AbstractGeneri
DefaultLocalGhidraProtocolConnector pp =
new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/C:/x/y/proj"));
assertNull(pp.getRepositoryName());
assertEquals("proj", pp.getRepositoryName());
assertEquals("/", pp.getFolderPath());
assertNull(pp.getFolderItemName());
assertEquals("/", getInstanceField("itemPath", pp));
pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj"));
assertNull(pp.getRepositoryName());
assertEquals("proj", pp.getRepositoryName());
assertEquals("/", pp.getFolderPath());
assertNull(pp.getFolderItemName());
assertEquals("/", getInstanceField("itemPath", pp));
pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?/"));
assertNull(pp.getRepositoryName());
assertEquals("proj", pp.getRepositoryName());
assertEquals("/", pp.getFolderPath());
assertNull(pp.getFolderItemName());
assertEquals("/", getInstanceField("itemPath", pp));
pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?/a"));
assertNull(pp.getRepositoryName());
assertEquals("proj", pp.getRepositoryName());
assertEquals("/", pp.getFolderPath());
assertEquals("a", pp.getFolderItemName());
assertEquals("/a", getInstanceField("itemPath", pp));
pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?/a/b#ref"));
assertNull(pp.getRepositoryName());
assertEquals("proj", pp.getRepositoryName());
assertEquals("/a", pp.getFolderPath());
assertEquals("b", pp.getFolderItemName());
assertEquals("/a/b", getInstanceField("itemPath", pp));
try {
pp =
new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?//"));
pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?//"));
fail();
}
catch (MalformedURLException e) {