2016-06-04 4 views
0

У меня есть проект, полный источник которого вы можете найти на его странице GitHub here на ветке feat/config. Проблема, с которой я сталкиваюсь, заключается в том, что ClassName.class.getClassLoader().getResourceAsStream() всегда возвращает null, а создание File с полным путем (включая исходный каталог) также возвращает FileNotFoundException.Travis CI и JUnit с Gradle не могут найти ресурсы для пути к лечению

Этот код должен загружать значения конфигурации по умолчанию из ресурса pathpath и записывать его в File. Он работает локально, но не работает на Travis CI.

public static void writeDefault(String res, File out) throws IOException { 
    if (!out.exists()) { 
     out.getParentFile().mkdirs(); 
     out.createNewFile(); 
    } 
    OutputStream stream = new FileOutputStream(out); 
    InputStream in = FileConfig.class.getClassLoader().getResourceAsStream(res); 
    if (in == null) { 
     stream.close(); 
     throw new FileNotFoundException(res); 
    } 
    IOUtils.copy(in, stream); 
    stream.close(); 
} 

@Test 
public void testFileConfig() throws IOException { 
    System.out.println("Creating default config file"); 
    File testConfigFile = new File("configs/test.txt"); 
    if (!testConfigFile.exists()) 
     FileConfig.writeDefault("configs/test.txt", testConfigFile); 
    System.out.println("Loading config file"); 
    Config testConfig = FileConfig.loadConfig(testConfigFile); 
    System.out.println("Loaded value: " + testConfig.getValue("value-1")); 
    System.out.println("Deleting config file"); 
    testConfigFile.deleteOnExit(); 
} 

выше тест не пройден со следующей трассировки стека:

jtrial.config.TestConfig > testFileConfig STANDARD_OUT 
    Creating default config file 
jtrial.config.TestConfig > testFileConfig FAILED 
    java.io.FileNotFoundException: configs/test.txt 
     at jtrial.config.FileConfig.writeDefault(FileConfig.java:111) 
     at jtrial.config.TestConfig.testFileConfig(TestConfig.java:24) 

.travis.yml конфигурационный файл:

language: java 
jdk: 
    - oraclejdk8 
notifications: 
    email: false 
install: 
    - chmod +x ./gradlew 
    - ./gradlew --info assemble 
script: ./gradlew --info check 
+0

Я сделал глупую ошибку, см. мой ответ –

ответ

0

Ahem ... ПОДГОТОВЬТЕ К CRINGE И FACEPALM!

Я только что понял ... что ... у меня был configs/ на файле .gitignore. Это было не только игнорирование каталога configs/ в корневом каталоге проекта, но каждый экземпляр configs/. Я только что заменил его ./configs/, а затем ACTUALLY добавил текстовые файлы в новый коммит. * facepalms в новое измерение *