Package com.github.sommeri.less4j

Source Code of com.github.sommeri.less4j.SimpleCssTest

package com.github.sommeri.less4j;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import com.github.sommeri.less4j.LessCompiler.CompilationResult;
import com.github.sommeri.less4j.LessCompiler.Configuration;
import com.github.sommeri.less4j.core.problems.BugHappened;

/**
* The test reproduces test files found in original less.js implementation. As
* less.js has only only one tag and that tag is one year old, we took tests
* from the master branch.
*
*/
@Ignore
@RunWith(Parameterized.class)
public class SimpleCssTest extends AbstractFileBasedTest {

  private static final String inputLess = "src/test/resources/minitests/debug1.less";
  //private static final String inputLess = "c:/data/meri/less4java/srot/sample.less";
  //private static final String inputLess = "src/test/resources/minitests/javascript.less";
  private static final String outputCss = "src/test/resources/minitests/debug1.css";
  private static final String mapdata = "src/test/resources/minitests/debug1.mapdata";

//private static final String inputLess = "c://data//meri//less4java//bootstrap-3.0.2//bootstrap-3.0.2//less//theme.less";
//private static final String inputLess = "c://data//meri//less4java//bootstrap-3.2.0-less//less//bootstrap.less";
//private static final String inputLess = "c://data//meri//less4java//bootstrap-3.2.0-less//flamingo-m.less";

  //private static final String inputLess = "src/test/resources/minitests/bootstrap-debug.less";
  //private static final String inputLess = "src/test/resources/minitests/bootstrap-debug-2.less";
//  private static final String inputLess = "c://data//meri//less4java//bootstrap-3.0.2//bootstrap-3.0.2-zaloha//less//bootstrap.less";
//  private static final String printTo = "c://data//meri//less4java//workspace-juno-sr2//less4j-release-tests-working-dir//testTwitterBootstrap_3_0_0//less4j-compiled.css";
  private static final String printTo = null;
 
//  private static final String inputLess = "c://data//meri//less4java//slow-recursion//recursion//style.less";
//  private static final String printTo = null;

  //  private static final String outputCss = "src/test/resources/minitests/debug1.css";

  // ***********************************************************************
  // *** fail because of identifiers, functions and missing commas
  //    private static final String inputLess = "src/test/resources/minitests/mixins-guards.less";
  //    private static final String outputCss = "src/test/resources/minitests/mixins-guards.css";

  // *** fail because of wrong mixins reference - does not accept #mixin see debug.less
  //    private static final String inputLess = "src/test/resources/minitests/mixins.less";
  //    private static final String outputCss = "src/test/resources/minitests/mixins.css";

  // ***********************************************************************
  // *** work as they are
  // private static final String inputLess = "src/test/resources/minitests/mixins-named-args.less";
  // private static final String outputCss = "src/test/resources/minitests/mixins-named-args.css";

  //  private static final String inputLess = "src/test/resources/minitests/mixins-nested.less";
  //  private static final String outputCss = "src/test/resources/minitests/mixins-nested.css";

  //  private static final String inputLess = "src/test/resources/minitests/mixins-important.less";
  //  private static final String outputCss = "src/test/resources/minitests/mixins-important.css";

  //  private static final String inputLess = "src/test/resources/minitests/mixins-pattern.less";
  //  private static final String outputCss = "src/test/resources/minitests/mixins-pattern.css";

  //  private static final String inputLess = "src/test/resources/minitests/mixins-closure.less";
  //  private static final String outputCss = "src/test/resources/minitests/mixins-closure.css";

  // *** work with minor modification
  //private static final String inputLess = "src/test/resources/minitests/mixins-args.less";
  //private static final String outputCss = "src/test/resources/minitests/mixins-args.css";
  // ***********************************************************************
  // *** fail but it is OK - not implemented in less-1.3.0.js

  public SimpleCssTest(File inputFile, File outputFile, File errorList, File mapdataFile, String testName) {
    super(inputFile, outputFile, errorList, mapdataFile, testName);
  }

  protected CompilationResult compile(File lessFile, File cssOutput) throws Less4jException {
    LessCompiler compiler = getCompiler();
    Configuration configuration = createConfiguration(cssOutput);
    configuration.getSourceMapConfiguration().setLinkSourceMap(false);
   
    CustomLessSource source = new CustomLessSource(Arrays.asList("c:/data"), lessFile, "utf-8");
    CompilationResult actual = compiler.compile(source, configuration);
    System.out.println(actual.getSourceMap());
    return actual;
  }
 
  public static class CustomLessSource extends LessSource.FileSource {

    private final List<String> searchPaths;

    public CustomLessSource(List<String> searchPaths, File inputFile) {
      super(inputFile);
      this.searchPaths = searchPaths;
    }
   
    public CustomLessSource(List<String> searchPaths, File inputFile, String charsetName) {
      super(inputFile, charsetName);
      this.searchPaths = searchPaths;
    }

    public CustomLessSource(List<String> searchPaths, FileSource parent, String filename, String charsetName) {
      super(parent, filename, charsetName);
      this.searchPaths = searchPaths;
    }

    public CustomLessSource(List<String> searchPaths, FileSource parent, File inputFile, String charsetName) {
      super(parent, inputFile, charsetName);
      this.searchPaths = searchPaths;
    }

    /**
     *
     * @param filename
     * @return
     */
    protected File createRelativeFile(String filename) {
      File thisFile = getInputFile();
      if (thisFile==null)
        return null;
     
      File thisDirectory = thisFile.getParentFile();
      File inputFile = new File(thisDirectory, filename);
      Iterator<String> cpIterator = searchPaths.iterator();
      while (!inputFile.exists() && cpIterator.hasNext()) {
        inputFile = new File(cpIterator.next(), filename);
      }
     
      return inputFile;
    }
   
    @Override
    public FileSource relativeSource(String filename) {
      return new CustomLessSource(searchPaths, this, createRelativeFile(filename), null);
    }
  }

  @Override
  protected Configuration createConfiguration(File cssOutput) {
    Configuration configuration = super.createConfiguration(cssOutput);
    configuration.getSourceMapConfiguration().setInline(false);
    configuration.getSourceMapConfiguration().setLinkSourceMap(true);
    configuration.getSourceMapConfiguration().setIncludeSourcesContent(true);
    return configuration;
  }

  @Parameters(name = "Less: {4}")
  public static Collection<Object[]> allTestsParameters() {
    //justWait();
    Collection<Object[]> result = new ArrayList<Object[]>();
    result.add(new Object[] { new File(inputLess), new File(outputCss), null, new File(mapdata), inputLess });
    return result;
  }

  @SuppressWarnings("unused")
  private static void justWait() {
    try {
      Thread.sleep(30000);
    } catch (InterruptedException e) {
      throw new RuntimeException(e);
    }
  }

  protected String canonize(String text) {
    return text.replaceAll("\r\n", "\n").replaceAll("#ffff00", "yellow").replaceAll("#ff0000", "red").replaceAll("#0000ff", "blue").replaceAll("! important", "!important").replaceAll("%!important", "% !important");
  }
}
TOP

Related Classes of com.github.sommeri.less4j.SimpleCssTest

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.