Skip to content

Commit 778e40d

Browse files
committed
#238 fix custom binary location fails on macOS
1 parent 503ade1 commit 778e40d

File tree

4 files changed

+63
-31
lines changed

4 files changed

+63
-31
lines changed

src/main/java/io/specto/hoverfly/junit/core/HoverflyUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
*/
3333
class HoverflyUtils {
3434

35-
private static ObjectWriter OBJECT_WRITER = new ObjectMapper().writerFor(Simulation.class);
35+
private static final ObjectWriter OBJECT_WRITER = new ObjectMapper().writerFor(Simulation.class);
3636
private static final ObjectReader SIMULATION_READER = new ObjectMapper().readerFor(Simulation.class);
3737

3838
static void checkPortInUse(int port) {

src/main/java/io/specto/hoverfly/junit/core/SystemConfigFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class SystemConfigFactory {
99

1010
static final String DEFAULT_BINARY_NAME_FORMAT = "hoverfly_%s_%s%s";
1111

12-
private SystemInfo systemInfo = new SystemInfo();
12+
private final SystemInfo systemInfo = new SystemInfo();
1313
private HoverflyConfiguration configs;
1414

1515
SystemConfigFactory() {

src/main/java/io/specto/hoverfly/junit/core/TempFileManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ private Path getOrCreateTempDirectory() {
110110
}
111111

112112
void setBinaryLocation(String binaryLocation) {
113-
this.tempDirectory = Paths.get(binaryLocation);
113+
this.tempDirectory = Paths.get(binaryLocation).toAbsolutePath();
114114
}
115115

116116
}

src/test/java/io/specto/hoverfly/junit/core/HoverflyTest.java

Lines changed: 60 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
package io.specto.hoverfly.junit.core;
22

3+
import static io.specto.hoverfly.junit.core.HoverflyConfig.localConfigs;
4+
import static io.specto.hoverfly.junit.core.HoverflyConfig.remoteConfigs;
5+
import static io.specto.hoverfly.junit.core.HoverflyMode.CAPTURE;
6+
import static io.specto.hoverfly.junit.core.HoverflyMode.DIFF;
7+
import static io.specto.hoverfly.junit.core.HoverflyMode.SIMULATE;
8+
import static io.specto.hoverfly.junit.core.HoverflyMode.SPY;
9+
import static io.specto.hoverfly.junit.core.SimulationSource.classpath;
10+
import static java.lang.String.format;
11+
import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric;
12+
import static org.assertj.core.api.Assertions.assertThat;
13+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
14+
import static org.assertj.core.api.Assertions.catchThrowable;
15+
import static org.junit.Assume.assumeTrue;
16+
import static org.mockito.Mockito.any;
17+
import static org.mockito.Mockito.argThat;
18+
import static org.mockito.Mockito.atLeastOnce;
19+
import static org.mockito.Mockito.doThrow;
20+
import static org.mockito.Mockito.eq;
21+
import static org.mockito.Mockito.inOrder;
22+
import static org.mockito.Mockito.mock;
23+
import static org.mockito.Mockito.never;
24+
import static org.mockito.Mockito.spy;
25+
import static org.mockito.Mockito.verify;
26+
import static org.mockito.Mockito.when;
27+
import static org.springframework.http.HttpStatus.OK;
28+
329
import ch.qos.logback.classic.Level;
430
import ch.qos.logback.classic.Logger;
531
import ch.qos.logback.classic.spi.ILoggingEvent;
@@ -18,6 +44,19 @@
1844
import io.specto.hoverfly.junit.core.model.RequestFieldMatcher;
1945
import io.specto.hoverfly.junit.core.model.RequestResponsePair;
2046
import io.specto.hoverfly.junit.core.model.Simulation;
47+
import java.io.BufferedReader;
48+
import java.io.File;
49+
import java.io.InputStreamReader;
50+
import java.net.InetSocketAddress;
51+
import java.net.URL;
52+
import java.nio.file.Files;
53+
import java.nio.file.Path;
54+
import java.nio.file.Paths;
55+
import java.util.ArrayList;
56+
import java.util.Arrays;
57+
import java.util.List;
58+
import javax.net.ssl.SSLContext;
59+
import org.apache.commons.lang3.SystemUtils;
2160
import org.apache.http.HttpResponse;
2261
import org.apache.http.client.HttpClient;
2362
import org.apache.http.client.methods.HttpGet;
@@ -35,36 +74,15 @@
3574
import org.springframework.web.client.RestTemplate;
3675
import org.zeroturnaround.exec.StartedProcess;
3776

38-
import javax.net.ssl.SSLContext;
39-
40-
import java.io.BufferedReader;
41-
import java.io.File;
42-
import java.io.InputStreamReader;
43-
import java.net.InetSocketAddress;
44-
import java.net.URL;
45-
import java.util.ArrayList;
46-
import java.util.Arrays;
47-
import java.util.List;
48-
49-
import static io.specto.hoverfly.junit.core.HoverflyConfig.localConfigs;
50-
import static io.specto.hoverfly.junit.core.HoverflyConfig.remoteConfigs;
51-
import static io.specto.hoverfly.junit.core.HoverflyMode.*;
52-
import static io.specto.hoverfly.junit.core.SimulationSource.classpath;
53-
import static java.lang.String.format;
54-
import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric;
55-
import static org.assertj.core.api.Assertions.*;
56-
import static org.junit.Assume.assumeTrue;
57-
import static org.mockito.Mockito.*;
58-
import static org.springframework.http.HttpStatus.OK;
59-
6077
public class HoverflyTest {
6178

79+
private static final int EXPECTED_PROXY_PORT = 8890;
80+
6281
@Rule
6382
public final SystemOutRule systemOut = new SystemOutRule();
6483

65-
private static final int EXPECTED_PROXY_PORT = 8890;
84+
private final ObjectMapper mapper = new ObjectMapper();
6685
private Hoverfly hoverfly;
67-
private ObjectMapper mapper = new ObjectMapper();
6886

6987
@Test
7088
public void shouldStartHoverflyOnConfiguredPort() {
@@ -666,9 +684,8 @@ public void shouldBeAbleToPassFlagsViaCommandsConfig() {
666684
}
667685

668686
@Test
669-
public void shouldStartHoverflyFromCustomBinaryLocation() {
670-
final String os = System.getProperty("os.name").toLowerCase();
671-
assumeTrue("Currently this case is tested only in Windows, in Linux ps may be used", os.contains("windows"));
687+
public void shouldStartHoverflyFromCustomBinaryLocationForWindows() {
688+
assumeTrue("Currently this case is tested only in Windows, in Linux ps may be used", SystemUtils.IS_OS_WINDOWS);
672689

673690
final String binaryLocation = "build/tmp";
674691
clearBinaryFiles(binaryLocation);
@@ -683,8 +700,23 @@ public void shouldStartHoverflyFromCustomBinaryLocation() {
683700
assertThat(exes.length).isEqualTo(1);
684701
}
685702

703+
@Test
704+
public void shouldStartHoverflyFromCustomBinaryLocation() {
705+
706+
assumeTrue("Test case for Mac OS only", !SystemUtils.IS_OS_WINDOWS);
707+
708+
final String binaryLocation = "build/tmp";
709+
Path hoverflyBinary = Paths.get(binaryLocation).resolve(new SystemConfigFactory().createSystemConfig().getHoverflyBinaryName()).toAbsolutePath();
710+
assertThat(Files.exists(hoverflyBinary)).isFalse();
711+
712+
hoverfly = new Hoverfly(localConfigs().binaryLocation(binaryLocation), SIMULATE);
713+
hoverfly.start();
714+
715+
assertThat(Files.exists(hoverflyBinary)).isTrue();
716+
}
717+
686718
private void clearBinaryFiles(final String binaryLocation) {
687-
Arrays.stream(getBinaryFiles(binaryLocation)).forEach(f -> f.delete());
719+
Arrays.stream(getBinaryFiles(binaryLocation)).forEach(File::delete);
688720
}
689721

690722
private File[] getBinaryFiles(final String binaryLocation) {

0 commit comments

Comments
 (0)