2016-06-04 8 views
0

Ich habe ein Projekt, dessen vollständige Quelle Sie auf der GitHub-Seite here auf dem Zweig feat/config finden können. Das Problem, das ich habe ist, dass ClassName.class.getClassLoader().getResourceAsStream() immer null zurückgibt, und das Erstellen eines File mit dem vollständigen Pfad (einschließlich des Quellverzeichnisses) gibt auch eine FileNotFoundException zurück.Travis CI und JUnit mit Gradle können keine Klassenpfadressourcen finden

Dieser Code sollte die Standardkonfigurationswerte aus einer Klassenpfadressource laden und in eine File schreiben. Es funktioniert lokal, scheitert jedoch an 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(); 
} 

Der obige Test schlägt mit dem folgenden Stack-Trace:

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 Konfigurationsdatei:

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

Ich machte einen dummen Fehler, siehe meine Antwort –

Antwort

0

Ähem ... VORBEREITUNG AUF CRINGE UND FACEPALM!

Ich habe gerade realisiert ... dass ... Ich hatte configs/ auf der .gitignore Datei. Dies ignorierte nicht nur das Verzeichnis configs/ im Stammprojektverzeichnis, sondern jede Instanz von configs/. Ich habe es einfach durch ./configs/ ersetzt und dann die Textdateien ACTUELL zu einem neuen Commit hinzugefügt. * Facepalms in eine neue Dimension *