Package com.googlecode.jslint4java.maven

Source Code of com.googlecode.jslint4java.maven.ReportWriterImplTest

package com.googlecode.jslint4java.maven;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import java.io.File;
import java.io.IOException;

import org.hamcrest.CoreMatchers;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;

import com.google.common.base.Charsets;
import com.google.common.io.Files;
import com.googlecode.jslint4java.JSLintResult.ResultBuilder;
import com.googlecode.jslint4java.formatter.JSLintResultFormatter;
import com.googlecode.jslint4java.formatter.JSLintXmlFormatter;

public class ReportWriterImplTest {

    private static final String REPORT_XML = "report.xml";

    @Rule
    public TemporaryFolder tmpf = new TemporaryFolder();

    @Rule
    public ExpectedException kaboom = ExpectedException.none();

    private final JSLintResultFormatter formatter = new JSLintXmlFormatter();

    private ReportWriterImpl createReportWriter(String filename) {
        return new ReportWriterImpl(new File(tmpf.getRoot(), filename), formatter);
    }

    @Test
    public void createsNonEmptyFile() {
        ReportWriterImpl rw = createReportWriter(REPORT_XML);
        rw.open();
        rw.close();
        assertThat(rw.getReportFile().exists(), is(true));
        assertThat(rw.getReportFile().length(), is(not(0L)));
    }

    @Test
    public void makesParentDirectory() {
        // issue 65: ensure we make *all* intervening directories.
        File parent = new File(new File(tmpf.getRoot(), "some"), "dir");
        ReportWriter rw = new ReportWriterImpl(new File(parent, REPORT_XML), formatter);
        rw.open();
        rw.close();
        assertThat(parent.exists(), is(true));
    }

    /**
     * issue 65: If we configure an invalid report xml, we should blow up with a
     * {@link RuntimeException} (wrapping a
     * {@link IOException}). Instead, we're blowing up with an
     * {@link NullPointerException}when we try to close().
     */
    @Test
    public void closeDoesntHideIoExceptionWithNullPointerException() throws IOException {
        kaboom.expect(RuntimeException.class);
        kaboom.expectCause(CoreMatchers.<Throwable>instanceOf(IOException.class));

        // This is guaranteed to fail as it's a file not a directory.
        File f  = tmpf.newFile("bob");
        ReportWriter rw = new ReportWriterImpl(new File(f, REPORT_XML), formatter);
        try {
            rw.open();
        } finally {
            // This shouldn't blow up with an NPE.
            rw.close();
        }
    }

    private String readFile(File reportFile) throws IOException {
        return Files.toString(reportFile, Charsets.UTF_8);
    }

    @Test
    public void reportContentsSanity() throws Exception {
        ReportWriterImpl rw = createReportWriter(REPORT_XML);
        rw.open();
        // Create a result with no problems.
        rw.report(new ResultBuilder("foo.js").build());
        rw.close();
        String report = readFile(rw.getReportFile());
        assertThat(report, containsString("<jslint>"));
        assertThat(report, containsString("<file name='foo.js'>"));
        assertThat(report, containsString("</jslint>"));
    }
}
TOP

Related Classes of com.googlecode.jslint4java.maven.ReportWriterImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.