[ 
https://issues.apache.org/jira/browse/TINKERPOP-1041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15057806#comment-15057806
 ] 

Martin Häusler commented on TINKERPOP-1041:
-------------------------------------------

I've localized the error in TestHelper.java, in the method "computePath":

{code}
private static String computePath(final Class clazz) {
    final String clsUri = clazz.getName().replace('.', '/') + ".class";
    final URL url = clazz.getClassLoader().getResource(clsUri);
    final String clsPath = url.getPath();
    return clsPath.substring(0, clsPath.length() - clsUri.length());
}
{code}

The problem is that {{url.getPath()}} still contains the protocol (in this case 
{{file:/}}). This is then used as input later into {{new File(...)}}, and some 
concatenation operations. Windows apparently isn't able to decode that. I'm 
actually surprised that this works under linux. The solution should be to 
simply strip the protocol part from "clsPath".

> StructureStandardTestSuite has file I/O issues on Windows
> ---------------------------------------------------------
>
>                 Key: TINKERPOP-1041
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1041
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: test-suite
>    Affects Versions: 3.0.2-incubating
>         Environment: Windows 10, Java 8, TinkerPop version "3.0.2-incubating"
>            Reporter: Martin Häusler
>             Fix For: 3.1.1-incubating
>
>   Original Estimate: 3h
>  Remaining Estimate: 3h
>
> Most of the tests in StructureStandardTestSuite/IoGraphTest cause an 
> unexpected java.io.IOException. The stack trace looks like this:
> {panel:title=Stack Trace}
> java.io.IOException: The the file name, directory name or volume label syntax 
> is incorrect.
>       at java.io.WinNTFileSystem.createFileExclusively(Native Method)
>       at java.io.File.createTempFile(Unknown Source)
>       at 
> org.apache.tinkerpop.gremlin.TestHelper.generateTempFile(TestHelper.java:74)
>       at 
> org.apache.tinkerpop.gremlin.structure.io.IoGraphTest.shouldReadWriteModernToFileWithHelpers(IoGraphTest.java:164)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>       at java.lang.reflect.Method.invoke(Unknown Source)
> {panel}
> I'm running the test suite from Eclipse under Java 8, on a Windows 10 x64 
> machine. The dependencies in my project are managed with gradle. 
> Investigating the offinsive line 
> (org.apache.tinkerpop.gremlin.TestHelper.java@74) in the debugger reveals the 
> following parameters of "File.createTempFile(...)":
> {noformat}
> fileName = "shouldReadWriteModernToFileWithHelpers[graphml]"
> fileNameSuffix = ".xml"
> path = 
> "file:\D:\guh\caches\modules-2\files-2.1\org.apache.tinkerpop\gremlin-test\3.0.2-incubating\345ec87b74923b76374111f2e4040d4d105f256\temp"
> {noformat}
> The offensive part is the "path" variable, because it contains the prefix 
> "file:\". I tried the same thing in a dedicated JUnit test without the prefix 
> and it works fine.
> I would be very happy to see this issue fixed, as this considerably reduces 
> the amount of tests in the suite that I can run against my graph 
> implementation.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to