#!/bin/bash set -eu -o pipefail git init; function baseline() { local pathspec=$1 # first argument is the pathspec to test git ls-files "$pathspec" && status=0 || status=$? { echo "$pathspec" echo "$status" } >> baseline.git } # success # special 'there is no pathspec' spec baseline ':' # repeated_matcher_keywords baseline ':(glob,glob)' baseline ':(literal,literal)' baseline ':(top,top)' baseline ':(icase,icase)' baseline ':(attr,attr)' baseline ':!^(exclude,exclude)' # empty_signatures baseline '.' baseline ':' baseline 'some/path' baseline ':some/path' baseline ':()some/path' baseline '::some/path' baseline ':::some/path' baseline ':():some/path' # whitespace_in_pathspec baseline ' some/path' baseline 'some/ path' baseline 'some/path ' baseline ': some/path' baseline ': !some/path' baseline ': :some/path' baseline ': ()some/path' baseline ':! some/path' # short_signatures baseline ':/some/path' baseline '://some/path' baseline ':^some/path' baseline ':^^some/path' baseline ':!some/path' baseline ':!!some/path' baseline ':/!some/path' baseline ':!/^/:some/path' # signatures_and_searchmodes baseline ':(top)' baseline ':(icase)' baseline ':(attr)' baseline ':(exclude)' baseline ':(literal)' baseline ':(glob)' baseline ':(top,exclude)' baseline ':(icase,literal)' baseline ':!(literal)some/*path' baseline ':(top,literal,icase,attr,exclude)some/path' baseline ':(top,glob,icase,attr,exclude)some/path' # attributes_in_signature baseline ':(attr:someAttr)' baseline ':(attr:!someAttr)' baseline ':(attr:-someAttr)' baseline ':(attr:someAttr=value)' baseline ':(attr:a=one b=)' baseline ':(attr:a= b=two)' baseline ':(attr:a=one b=two)' baseline ':(attr:a=one b=two)' baseline ':(attr:someAttr anotherAttr)' # attributes_with_escape_chars_in_state_values baseline ':(attr:v=one\-)' baseline ':(attr:v=one\_)' baseline ':(attr:v=one\,)' baseline ':(attr:v=one\,two\,three)' baseline ':(attr:a=\d b= c=\d)' # failing #empty_input baseline "" # invalid_short_signatures baseline ':"()' baseline ':#()' baseline ':%()' baseline ':&()' baseline ":'()" baseline ':,()' baseline ':-()' baseline ':;()' baseline ':<()' baseline ':=()' baseline ':>()' baseline ':@()' baseline ':_()' baseline ':`()' baseline ':~()' # invalid_keywords baseline ':( )some/path' baseline ':(tp)some/path' baseline ':(top, exclude)some/path' baseline ':(top,exclude,icse)some/path' # invalid_attributes baseline ':(attr:+invalidAttr)some/path' baseline ':(attr:validAttr +invalidAttr)some/path' baseline ':(attr:+invalidAttr,attr:valid)some/path' baseline ':(attr:inva\lid)some/path' # invalid_attribute_values baseline ':(attr:v=inva#lid)some/path' baseline ':(attr:v=inva\\lid)some/path' baseline ':(attr:v=invalid\\)some/path' baseline ':(attr:v=invalid\#)some/path' baseline ':(attr:v=inva\=lid)some/path' baseline ':(attr:a=valid b=inva\#lid)some/path' baseline ':(attr:v=val��)' baseline ':(attr:pr=pre��x:,)�' # escape_character_at_end_of_attribute_value baseline ':(attr:v=invalid\)some/path' baseline ':(attr:v=invalid\ )some/path' baseline ':(attr:v=invalid\ valid)some/path' # empty_attribute_specification baseline ':(attr:)' # multiple_attribute_specifications baseline ':(attr:one,attr:two)some/path' # missing_parentheses baseline ':(top' # glob_and_literal_keywords_present baseline ':(glob,literal)some/path' # trailing slash baseline ':(glob,literal)some/path/' baseline 'some/path/' baseline 'path/' baseline 'a/b/' baseline 'a/' baseline '!a' baseline '\!a'