#!/bin/sh # `tree-sitter test` doesn't work to validate syntax highlighting for two reasons: # - it identifies a file's language only by its filetype (not shebang/regex), but nix-shell has no filetype # - it requires the language to support comments, but nix-shell doesn't have those # # hence this custom testing tool. # # usage: test_highlight # # upon execution, performs this sequence: # 1. highlights the file at `highlight/`. # 2. asserts the result's body against `hightlight/.spec.html` here=$(dirname $(realpath $0)) input_file="$here/highlight/$1" spec_file="$here/highlight/$1.spec.html" # cd into this directory before highlighting because paths specified in the tree-sitter config are relative to PWD cd "$here" && XDG_CONFIG_HOME="$here/config" tree-sitter highlight --scope "source.nix_shell" --html "$input_file" | \ htmlq 'body' | \ diff -u "$spec_file" '/dev/stdin'