/*
* Copyright 2011 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.jstestdriver;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.jstestdriver.model.ConcretePathPrefix;
import com.google.jstestdriver.model.NullPathPrefix;
import static com.google.jstestdriver.FailureParser.Failure;
import java.util.List;
/**
* Tests for the FailureParser.
*
* @author Cory Smith (corbinrsmith@gmail.com)
*
*/
public class FailureParserTest extends junit.framework.TestCase {
Gson gson = new Gson();
public void testParse() throws Exception {
String name1 = "TypeError";
String message1 = "Whut?";
List<String> stack1 =
Lists.newArrayList("http://someweb.com:8080/static/asserts.js",
"http://someweb.com:8080/test/foo.js");
Failure failure1 =
new Failure(String.format("%s: %s", name1, message1), Lists.newArrayList(stack1.get(1)));
String jsonFailures =
gson.toJson(Lists.newArrayList(new JsException(name1, message1, "doof.js", 1l, Joiner.on(
"\n").join(stack1))));
List<Failure> failures = new FailureParser(new NullPathPrefix()).parse(jsonFailures);
assertEquals(failure1, failures.get(0));
}
public void testParsePrefixedPathStack() throws Exception {
ConcretePathPrefix prefix = new ConcretePathPrefix("/jstd");
String name1 = "TypeError";
String message1 = "Whut?";
List<String> stack1 =
Lists.newArrayList(
"http://someweb.com:8080" + prefix.prefixPath("/static/asserts.js"),
"http://someweb.com:8080" + prefix.prefixPath("/test/foo.js"));
Failure failure1 =
new Failure(String.format("%s: %s", name1, message1), Lists.newArrayList(stack1.get(1)));
String jsonFailures =
gson.toJson(Lists.newArrayList(new JsException(name1, message1, "doof.js", 1l, Joiner.on(
"\n").join(stack1))));
List<Failure> failures = new FailureParser(prefix).parse(jsonFailures);
assertEquals(failure1, failures.get(0));
}
public void testParseMultipleErrors() throws Exception {
String name1 = "TypeError";
String message1 = "Whut?";
List<String> stack1 =
Lists.newArrayList("http://someweb.com:8080/static/asserts.js",
"http://someweb.com:8080//test/foo.js");
Failure failure1 =
new Failure(String.format("%s: %s", name1, message1), Lists.newArrayList(stack1.get(1)));
String name2 = "TypeError";
String message2 = "Thuw?";
List<String> stack2 =
Lists.newArrayList(
"http://someweb.com:8080/static/asserts.js",
"http://someweb.com:8080/test/foo.js",
"http://someweb.com:8080/test/static/foo.js",
"http://someweb.com:8080/test/baz.js");
Failure failure2 =
new Failure(String.format("%s: %s", name2, message2), Lists.newArrayList(stack2.get(1),
stack2.get(2), stack2.get(3)));
String jsonFailures =
gson.toJson(Lists.newArrayList(
new JsException(name1, message1, "doof.js", 1l, Joiner.on("\n").join(stack1)),
new JsException(name2, message2, "food.js", 3l, Joiner.on("\n").join(stack2))));
List<Failure> failures = new FailureParser(new NullPathPrefix()).parse(jsonFailures);
assertEquals(failure1, failures.get(0));
assertEquals(failure2, failures.get(1));
}
public void testParseUnparsableFailure() throws Exception {
String failure = "some unformatted failure.";
List<Failure> failures = new FailureParser(new NullPathPrefix()).parse(failure);
assertEquals(failure, failures.get(0).getMessage());
}
}