Exemple #1
0
 public void compareFile(DirectoryRunner.TestParams params, File file) throws Throwable {
   StringBuilder messages = new StringBuilder();
   StringWriter result = new StringWriter();
   transformCode(messages, result, file);
   compare(
       file.getName(),
       readFile(params.getAfterDirectory(), file, false),
       result.toString(),
       readFile(params.getMessagesDirectory(), file, true),
       messages.toString(),
       params.printErrors());
 }
  public boolean compareFile(DirectoryRunner.TestParams params, File file) throws Throwable {
    StringBuilder messages = new StringBuilder();
    StringWriter writer = new StringWriter();
    transformCode(messages, writer, file);
    String expectedFile = readFile(params.getAfterDirectory(), file, false);
    String expectedMessages = readFile(params.getMessagesDirectory(), file, true);

    StringReader r = new StringReader(expectedFile);
    BufferedReader br = new BufferedReader(r);
    if ("//ignore".equals(br.readLine())) return false;

    compare(
        file.getName(),
        expectedFile,
        writer.toString(),
        expectedMessages,
        messages.toString(),
        params.printErrors());

    return true;
  }
  public final FileTester createTester(final DirectoryRunner.TestParams params, final File file)
      throws IOException {
    ConfigurationKeysLoader.LoaderLoader.loadAllConfigurationKeys();
    AssertionError directiveFailure = null;
    LombokTestSource sourceDirectives = null;
    try {
      sourceDirectives = LombokTestSource.readDirectives(file);
      if (sourceDirectives.isIgnore()) return null;
      if (!sourceDirectives.versionWithinLimit(params.getVersion())) return null;
      if (!sourceDirectives.versionWithinLimit(getClasspathVersion())) return null;
    } catch (AssertionError ae) {
      directiveFailure = ae;
    }

    String fileName = file.getName();
    final LombokTestSource expected =
        LombokTestSource.read(params.getAfterDirectory(), params.getMessagesDirectory(), fileName);

    if (expected.isIgnore()) return null;
    if (!expected.versionWithinLimit(params.getVersion())) return null;

    final LombokTestSource sourceDirectives_ = sourceDirectives;
    final AssertionError directiveFailure_ = directiveFailure;
    return new FileTester() {
      @Override
      public void runTest() throws Throwable {
        if (directiveFailure_ != null) throw directiveFailure_;
        LinkedHashSet<CompilerMessage> messages = new LinkedHashSet<CompilerMessage>();
        StringWriter writer = new StringWriter();

        LombokConfiguration.overrideConfigurationResolverFactory(
            new ConfigurationResolverFactory() {
              @Override
              public ConfigurationResolver createResolver(AST<?, ?, ?> ast) {
                return sourceDirectives_.getConfiguration();
              }
            });

        boolean changed =
            transformCode(
                messages,
                writer,
                file,
                sourceDirectives_.getSpecifiedEncoding(),
                sourceDirectives_.getFormatPreferences());
        boolean forceUnchanged =
            sourceDirectives_.forceUnchanged() || sourceDirectives_.isSkipCompareContent();
        if (params.expectChanges() && !forceUnchanged && !changed)
          messages.add(new CompilerMessage(-1, -1, true, "not flagged modified"));
        if (!params.expectChanges() && changed)
          messages.add(new CompilerMessage(-1, -1, true, "unexpected modification"));

        compare(
            file.getName(),
            expected,
            writer.toString(),
            messages,
            params.printErrors(),
            sourceDirectives_.isSkipCompareContent() || expected.isSkipCompareContent());
      }
    };
  }