@@ -0,0 +1,1738 @@
+package org.mobilitydata.gtfsvalidator.runner;%0A%0Aimport static org.junit.Assert.assertThrows;%0A%0Aimport java.io.FileNotFoundException;%0Aimport java.io.IOException;%0Aimport java.net.URISyntaxException;%0Aimport java.nio.file.Path;%0Aimport org.junit.Test;%0Aimport org.junit.runner.RunWith;%0Aimport org.junit.runners.JUnit4;%0Aimport org.mobilitydata.gtfsvalidator.input.CountryCode;%0A%0A@RunWith(JUnit4.class)%0Apublic class ValidationRunnerTest %7B%0A%0A  private static ValidationRunnerConfig buildConfig(String gtfsDirectory) %7B%0A    ValidationRunnerConfig.Builder config = ValidationRunnerConfig.builder();%0A    config.setGtfsSource(Path.of(gtfsDirectory).toUri());%0A    config.setOutputDirectory(Path.of(%22%22));%0A    config.setNumThreads(1);%0A    config.setCountryCode(CountryCode.forStringOrUnknown(%22%22));%0A    return config.build();%0A  %7D%0A%0A  @Test%0A  public void createGtfsInput_WindowsPath_valid() throws IOException, URISyntaxException %7B%0A    ValidationRunnerConfig config =%0A        buildConfig(%22C:%5C%5Cprojects%5C%5Cgtfs-validator%5C%5Cnon-existent-file.zip%22);%0A%0A    // We are testing path parsing here only. We expect a FileNotFoundException but NOT a%0A    // InvalidPathException. This should catch issues such as #1158.%0A    assertThrows(FileNotFoundException.class, () -%3E ValidationRunner.createGtfsInput(config));%0A  %7D%0A%0A  @Test%0A  public void createGtfsInput_LinuxPath_valid() throws IOException, URISyntaxException %7B%0A    ValidationRunnerConfig config = buildConfig(%22/Users/me/gtfs-validator/non-existent-file.zip%22);%0A%0A    // We are testing path parsing here only. We expect a FileNotFoundException but NOT a%0A    // InvalidPathException. This should catch issues such as #1158.%0A    assertThrows(FileNotFoundException.class, () -%3E ValidationRunner.createGtfsInput(config));%0A  %7D%0A%7D%0A

Add path parsing tests (#1155)