Search in sources :

Example 41 with Issue

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);
}
Also used : Issue(org.eclipse.xtext.validation.Issue) BasicDiagnostic(org.eclipse.emf.common.util.BasicDiagnostic) BasicDiagnostic(org.eclipse.emf.common.util.BasicDiagnostic) Diagnostic(org.eclipse.emf.ecore.resource.Resource.Diagnostic) ExceptionDiagnostic(org.eclipse.xtext.diagnostics.ExceptionDiagnostic) Severity(org.eclipse.xtext.diagnostics.Severity) ResourceValidatorImpl(org.eclipse.xtext.validation.ResourceValidatorImpl) IDiagnosticConverter(org.eclipse.xtext.validation.IDiagnosticConverter) ComparisonFailure(org.junit.ComparisonFailure) ExceptionDiagnostic(org.eclipse.xtext.diagnostics.ExceptionDiagnostic) List(java.util.List)

Example 42 with Issue

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;
}
Also used : XtendFile(org.eclipse.xtend.core.xtend.XtendFile) Issue(org.eclipse.xtext.validation.Issue) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) XtextResource(org.eclipse.xtext.resource.XtextResource) Resource(org.eclipse.emf.ecore.resource.Resource) LazyStringInputStream(org.eclipse.xtext.util.LazyStringInputStream) XtextResource(org.eclipse.xtext.resource.XtextResource) Predicate(com.google.common.base.Predicate)

Example 43 with Issue

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());
        }
    }
}
Also used : Issue(org.eclipse.xtext.validation.Issue) XtendClass(org.eclipse.xtend.core.xtend.XtendClass) Test(org.junit.Test)

Example 44 with Issue

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());
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Issue(org.eclipse.xtext.validation.Issue) URI(org.eclipse.emf.common.util.URI) AbstractIncrementalBuilderTest(org.eclipse.xtext.testing.builder.AbstractIncrementalBuilderTest) Test(org.junit.Test)

Example 45 with Issue

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));
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Issue(org.eclipse.xtext.validation.Issue) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) ChunkedResourceDescriptions(org.eclipse.xtext.resource.impl.ChunkedResourceDescriptions) URI(org.eclipse.emf.common.util.URI) AbstractIncrementalBuilderTest(org.eclipse.xtext.testing.builder.AbstractIncrementalBuilderTest) Test(org.junit.Test)

Aggregations

Issue (org.eclipse.xtext.validation.Issue)105 Test (org.junit.Test)38 XtextResource (org.eclipse.xtext.resource.XtextResource)33 Resource (org.eclipse.emf.ecore.resource.Resource)21 IResourceValidator (org.eclipse.xtext.validation.IResourceValidator)18 URI (org.eclipse.emf.common.util.URI)16 List (java.util.List)14 XtextResourceSet (org.eclipse.xtext.resource.XtextResourceSet)12 IssueResolution (org.eclipse.xtext.ui.editor.quickfix.IssueResolution)12 XtendFile (org.eclipse.xtend.core.xtend.XtendFile)11 ArrayList (java.util.ArrayList)9 Severity (org.eclipse.xtext.diagnostics.Severity)9 IXtextDocument (org.eclipse.xtext.ui.editor.model.IXtextDocument)9 EObject (org.eclipse.emf.ecore.EObject)8 IOException (java.io.IOException)7 CoreException (org.eclipse.core.runtime.CoreException)7 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)7 StringInputStream (org.eclipse.xtext.util.StringInputStream)7 Diagnostic (org.eclipse.emf.ecore.resource.Resource.Diagnostic)6 IssueResolutionAcceptor (org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor)6