LoadFromRelativeFile break on windows when using maven traversal

Description

When invoking LoadFromRelativeFile and passing in a traversal substitution stories are not found because the substitution is not applied. This is due to the difference in the StoryFilePath which forces path separators to be '/'. When the LoadFromRelativeFile code gets the absolute path of location file separators are converted to '\'. This keeps the locationPath.replace code from working

Im invoking the code as..

public Configuration configuration() {
return new MostUsefulConfiguration() // where to find the stories
.useStoryLoader(new LoadFromRelativeFile(CodeLocations.codeLocationFromClass(getClass()), LoadFromRelativeFile.mavenModuleTestStoryFilePath("src/test/resources/jbehave/")))
.useStoryReporterBuilder(
new StoryReporterBuilder().withDefaultFormats()
.withFormats(Format.CONSOLE, Format.TXT));

The code that breaks in LoadFromRelativeFile that break is

String locationPath = new File(CodeLocations.getPathFromURL(location)).getAbsolutePath();
for (StoryFilePath traversal : traversals) {
String filePath = locationPath.replace(traversal.toRemove, traversal.relativePath) + "/" + resourcePath;

locationPath would have all '/' converted to '\' by getAbsolutePath on windows machines.

Maybe the following line should be inserted after the definition of locationPath

locationPath = locationPath.replace("
","/");

}

Activity

Fixed

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

Created April 12, 2012 at 2:51 PM
Updated May 22, 2015 at 8:10 AM
Resolved April 14, 2012 at 9:44 AM