Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
47 lines (31 sloc) 1.74 KB

Testing your Mustache implementation against this specification should be relatively simple. If you have a readily available testing framework on your platform, your task may be even simpler.

In general, the process for each .yml file is as follows:

  1. Use a YAML parser to load the file.

  2. For each test in the 'tests' array:

    1. Ensure that each element of the 'partials' hash (if it exists) is stored in a place where the interpreter will look for it.

    2. If your implementation will not support lambdas, feel free to skip over the optional '~lambdas.yml' file.

    2.1. If your implementation will support lambdas, ensure that each member of 'data' tagged with '!code' is properly processed into a language- specific lambda reference.

    *   e.g. Given this YAML data hash:
    
        `{ x: !code { ruby: 'proc { "x" }', perl: 'sub { "x" }' } }`
    
        a Ruby-based Mustache implementation would process it such that it
        was equivalent to this Ruby hash:
    
        `{ 'x' => proc { "x" } }`
    
    *   If your implementation language does not currently have lambda
        examples in the spec, feel free to implement them and send a pull
        request.
    
    *   The JSON version of the spec represents these tagged values as a hash
        with a '`__tag__`' key of 'code'.
    
    1. Render the template (stored in the 'template' key) with the given 'data' hash.

    2. Compare the results of your rendering against the 'expected' value; any differences should be reported, along with any useful debugging information.

      • Of note, the 'desc' key contains a rough one-line description of the behavior being tested -- this is most useful in conjunction with the file name and test 'name'.
Jump to Line
Something went wrong with that request. Please try again.