public static Path setError(Path path, ErrorDocument error) throws IOException { return setError(path, error.getMessage(), error.getTrace(), error .getCausedBy().toArray(new Path[error.getCausedBy().size()])); }
@Test public void setErrorCause() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path portIn1 = DataBundles.getPort(inputs, "in1"); Path cause1 = DataBundles.setError(portIn1, "Something did not work", "A very\n long\n error\n trace"); Path portIn2 = DataBundles.getPort(inputs, "in2"); Path cause2 = DataBundles.setError(portIn2, "Something else did not work", "Shorter trace"); Path outputs = DataBundles.getOutputs(dataBundle); Path portOut1 = DataBundles.getPort(outputs, "out1"); Path errorPath = DataBundles.setError(portOut1, "Errors in input", "", cause1, cause2); List<String> errLines = Files.readAllLines(errorPath, Charset.forName("UTF-8")); assertEquals("../inputs/in1.err", errLines.get(0)); assertEquals("../inputs/in2.err", errLines.get(1)); assertEquals("", errLines.get(2)); }
@Test(expected=FileAlreadyExistsException.class) public void setErrorExistsAsReference() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path in1 = DataBundles.getPort(inputs, "in1"); Path ref = DataBundles.setReference(in1, URI.create("http://example.com/")); assertFalse(Files.exists(in1)); assertTrue(Files.isRegularFile(ref)); DataBundles.setError(in1, "a", "b"); }
@Test public void setErrorArgs() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path portIn1 = DataBundles.getPort(inputs, "in1"); Path errorPath = DataBundles.setError(portIn1, "Something did not work", "A very\n long\n error\n trace"); assertEquals("in1.err", errorPath.getFileName().toString()); List<String> errLines = Files.readAllLines(errorPath, Charset.forName("UTF-8")); assertEquals(6, errLines.size()); assertEquals("", errLines.get(0)); assertEquals("Something did not work", errLines.get(1)); assertEquals("A very", errLines.get(2)); assertEquals(" long", errLines.get(3)); assertEquals(" error", errLines.get(4)); assertEquals(" trace", errLines.get(5)); }
@Test public void setErrorExistsAsError() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path in1 = DataBundles.getPort(inputs, "in1"); Path err = DataBundles.setError(in1, "a", "b"); assertFalse(Files.exists(in1)); assertTrue(Files.isRegularFile(err)); DataBundles.setError(in1, "c", "d"); assertEquals("c", DataBundles.getError(in1).getMessage()); }
@Test(expected = FileAlreadyExistsException.class) public void setReferenceExistsAsError() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path in1 = DataBundles.getPort(inputs, "in1"); Path err = DataBundles.setError(in1, "a", "b"); assertFalse(Files.exists(in1)); assertTrue(Files.isRegularFile(err)); DataBundles.setReference(in1, URI.create("http://example.com/")); }
@Test(expected=FileAlreadyExistsException.class) public void setErrorExistsAsValue() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path in1 = DataBundles.getPort(inputs, "in1"); DataBundles.setStringValue(in1, "test"); assertTrue(Files.isRegularFile(in1)); DataBundles.setError(in1, "a", "b"); }
@Test(expected=FileAlreadyExistsException.class) public void newListAlreadyExistsAsError() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path list = DataBundles.getPort(inputs, "in1"); Path err = DataBundles.setError(list, "a", "b"); assertFalse(Files.isRegularFile(list)); assertFalse(Files.isDirectory(list)); assertTrue(Files.isRegularFile(err)); DataBundles.createList(list); }
@Test(expected=FileAlreadyExistsException.class) public void setStringExistsAsError() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path in1 = DataBundles.getPort(inputs, "in1"); Path err = DataBundles.setError(in1, "x", "X"); assertFalse(Files.exists(in1)); assertTrue(Files.isRegularFile(err)); DataBundles.setStringValue(in1, "Hello"); }
@Test(expected=FileAlreadyExistsException.class) public void setErrorExistsAsList() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path list = DataBundles.getPort(inputs, "in1"); DataBundles.createList(list); assertFalse(Files.isRegularFile(list)); assertTrue(Files.isDirectory(list)); DataBundles.setError(list, "a", "b"); }
Path cause1 = DataBundles.setError(portIn1, "a", "b"); Path portIn2 = DataBundles.getPort(inputs, "in2"); Path cause2 = DataBundles.setError(portIn2, "c", "d"); error.setTrace("Here\nis\nwhy\n"); Path errorPath = DataBundles.setError(portOut1, error); assertEquals("out1.err", errorPath.getFileName().toString());
@Test public void isValueOnError() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); DataBundles.setError(DataBundles.getPort(inputs, "test"), "error", ""); assertFalse(DataBundles.isValue(DataBundles.getPorts(inputs).get("test"))); }
@Test public void getErrorCause() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path portIn1 = DataBundles.getPort(inputs, "in1"); Path cause1 = DataBundles.setError(portIn1, "Something did not work", "A very\n long\n error\n trace"); Path portIn2 = DataBundles.getPort(inputs, "in2"); Path cause2 = DataBundles.setError(portIn2, "Something else did not work", "Shorter trace"); Path outputs = DataBundles.getOutputs(dataBundle); Path portOut1 = DataBundles.getPort(outputs, "out1"); DataBundles.setError(portOut1, "Errors in input", "", cause1, cause2); ErrorDocument error = DataBundles.getError(portOut1); assertEquals("Errors in input", error.getMessage()); assertEquals("", error.getTrace()); assertEquals(2, error.getCausedBy().size()); assertTrue(Files.isSameFile(cause1, error.getCausedBy().get(0))); assertTrue(Files.isSameFile(cause2, error.getCausedBy().get(1))); }
@Test public void getError() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path portIn1 = DataBundles.getPort(inputs, "in1"); DataBundles.setError(portIn1, "Something did not work", "A very\n long\n error\n trace"); ErrorDocument error = DataBundles.getError(portIn1); assertTrue(error.getCausedBy().isEmpty()); assertEquals("Something did not work", error.getMessage()); // Notice that the lack of trailing \n is preserved assertEquals("A very\n long\n error\n trace", error.getTrace()); assertEquals(null, DataBundles.getError(null)); }
DataBundles.setError(out2, "Something did not work", "A very\n long\n error\n trace");
@Test public void isError() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path portIn1 = DataBundles.getPort(inputs, "in1"); DataBundles.setError(portIn1, "Something did not work", "A very\n long\n error\n trace"); assertFalse(DataBundles.isList(portIn1)); assertFalse(DataBundles.isValue(portIn1)); assertFalse(DataBundles.isMissing(portIn1)); assertFalse(DataBundles.isReference(portIn1)); assertTrue(DataBundles.isError(portIn1)); }