use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.
the class NoJRESmokeTester method checkNoErrorsInValidator.
protected void checkNoErrorsInValidator(final String model, XtextResource resource) {
ResourceValidatorImpl validator = resourceValidatorProvider.get();
Assert.assertNotSame(validator, resource.getResourceServiceProvider().getResourceValidator());
validator.setDiagnosticConverter(new IDiagnosticConverter() {
@Override
public void convertValidatorDiagnostic(org.eclipse.emf.common.util.Diagnostic diagnostic, IAcceptor<Issue> acceptor) {
if (diagnostic instanceof BasicDiagnostic) {
List<?> data = diagnostic.getData();
if (!data.isEmpty() && data.get(0) instanceof Throwable) {
Throwable t = (Throwable) data.get(0);
throwError(t);
}
if (EObjectValidator.DIAGNOSTIC_SOURCE.equals(diagnostic.getSource()) && diagnostic.getCode() == EObjectValidator.EOBJECT__EVERY_REFERENCE_IS_CONTAINED) {
throwError(new RuntimeException("Dangling reference found."));
}
}
}
private void throwError(Throwable e) {
ComparisonFailure result = new ComparisonFailure(e.getMessage(), model, "");
result.setStackTrace(e.getStackTrace());
throw result;
}
@Override
public void convertResourceDiagnostic(Diagnostic diagnostic, Severity severity, IAcceptor<Issue> acceptor) {
if (diagnostic instanceof ExceptionDiagnostic) {
Exception e = ((ExceptionDiagnostic) diagnostic).getException();
throwError(e);
}
}
});
validator.validate(resource, CheckMode.ALL, CancelIndicator.NullImpl);
}
use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.
the class AbstractXtendTestCase method file.
protected XtendFile file(String string, boolean validate, boolean shouldBeSyntacticallyValid) throws Exception {
XtextResourceSet set = getResourceSet();
String fileName = getFileName(string);
Resource resource = set.createResource(URI.createURI(fileName + ".xtend"));
resource.load(new LazyStringInputStream(string, StandardCharsets.ISO_8859_1.name()), null);
if (shouldBeSyntacticallyValid) {
assertEquals(resource.getErrors().toString(), 0, resource.getErrors().size());
}
if (validate) {
List<Issue> issues = Lists.newArrayList(Iterables.filter(((XtextResource) resource).getResourceServiceProvider().getResourceValidator().validate(resource, CheckMode.ALL, CancelIndicator.NullImpl), new Predicate<Issue>() {
@Override
public boolean apply(Issue issue) {
return issue.getSeverity() == Severity.ERROR;
}
}));
assertTrue("Resource contained errors : " + issues.toString(), issues.isEmpty());
}
XtendFile file = (XtendFile) resource.getContents().get(0);
return file;
}
use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.
the class XtendValidationTest method testOverridingBug515801.
@Test
public void testOverridingBug515801() throws Exception {
XtendClass clazz = clazz("class Foo implements int {" + "override void doSth(Object obj){ " + "}" + "}");
List<Issue> issues = helper.validate(clazz);
for (Issue issue : issues) {
if (issue.getMessage() != null && issue.getMessage().contains("Error executing EValidator")) {
fail(issue.getMessage());
}
}
}
use of org.eclipse.xtext.validation.Issue in project xtext-core by eclipse.
the class IncrementalBuilderTest method testDelete_01.
@Test
public void testDelete_01() {
build(newBuildRequest((BuildRequest it) -> {
String modelA = "foo {\n" + " entity A {foo.B references}\n" + "}\n";
String modelB = "foo {\n" + " entity B\n" + "}\n";
it.setDirtyFiles(Lists.newArrayList(newFile("src/A.indextestlanguage", modelA), newFile("src/B.indextestlanguage", modelB)));
}));
AtomicBoolean validateCalled = new AtomicBoolean(false);
build(newBuildRequest((BuildRequest it) -> {
it.setDeletedFiles(Lists.newArrayList(uri("src/B.indextestlanguage")));
it.setAfterValidate((URI uri, Iterable<Issue> issues) -> {
if (Objects.equal(uri("src/A.indextestlanguage"), uri)) {
Assert.assertTrue(issues.toString(), Iterables.<Issue>getFirst(issues, null).getMessage().contains("Couldn't resolve reference to Type 'foo.B'"));
validateCalled.set(true);
return false;
} else {
if (Objects.equal(uri("src/B.indextestlanguage"), uri)) {
Assert.assertEquals("zero issues expected", 0, Iterables.size(issues));
return true;
} else {
throw new IllegalStateException(("unexpected issues for " + uri));
}
}
});
}));
Assert.assertTrue(validateCalled.get());
}
use of org.eclipse.xtext.validation.Issue in project xtext-core by eclipse.
the class IncrementalBuilderTest method testDeleteClearsReusedResourceSet.
@Test
public void testDeleteClearsReusedResourceSet() {
BuildRequest req = newBuildRequest((BuildRequest it) -> {
String modelA = "foo {\n" + " entity A {foo.B references}\n" + "}\n";
String modelB = "foo {\n" + " entity B\n" + "}\n";
it.setDirtyFiles(Lists.newArrayList(newFile("src/A.indextestlanguage", modelA), newFile("src/B.indextestlanguage", modelB)));
});
XtextResourceSet resourceSet = req.getResourceSet();
build(req);
AtomicBoolean validateCalled = new AtomicBoolean(false);
build(newBuildRequest((BuildRequest it) -> {
it.setDeletedFiles(Lists.newArrayList(uri("src/B.indextestlanguage")));
it.setAfterValidate((URI uri, Iterable<Issue> issues) -> {
if (Objects.equal(uri("src/A.indextestlanguage"), uri)) {
Assert.assertTrue(issues.toString(), !Iterables.isEmpty(issues) && Iterables.<Issue>getFirst(issues, null).getMessage().contains("Couldn't resolve reference to Type 'foo.B'"));
validateCalled.set(true);
return false;
} else {
if (Objects.equal(uri("src/B.indextestlanguage"), uri)) {
Assert.assertEquals("zero issues expected", 0, Iterables.size(issues));
return true;
} else {
throw new IllegalStateException(("unexpected issues for " + uri));
}
}
});
it.setResourceSet(resourceSet);
ChunkedResourceDescriptions desc = ChunkedResourceDescriptions.findInEmfObject(it.getResourceSet());
desc.setContainer("test-project", it.getState().getResourceDescriptions());
}));
Assert.assertTrue(validateCalled.get());
Assert.assertNull(resourceSet.getResource(uri("src/B.indextestlanguage"), false));
}
Aggregations