forked from scala/scala
-
Notifications
You must be signed in to change notification settings - Fork 0
/
partest-paths
executable file
·27 lines (22 loc) · 972 Bytes
/
partest-paths
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/sh
#
# Given a list of files on stdin, translates them into a set
# of tests covering those files. That means paths which aren't
# part of a test are dropped and the rest are rewritten to the
# primary test path, with duplicates dropped.
cd "$(dirname "$0")/.."
# We have to enumerate good test dirs since partest chokes and fails
# on continuations, bench, etc. tests
pathRegex="test/files/(pos|neg|jvm|run|scalap|presentation)/[^/.]+([.]scala)?\$"
# Echo the argument only if it matches our idea of a test and exists.
isPath () { [[ "$1" =~ $pathRegex ]] && [[ -e "$1" ]]; }
# Filter stdin down to actual test paths.
asTestPaths() {
while read -r p; do
# Matched file at the standard test depth
p1="${p%.*}" && isPath "$p1.scala" && echo "$p1.scala" && continue
# Or, matched file may be in a test subdirectory, so strip the last path segment and check
p2="${p1%/*}" && isPath "$p2" && echo "$p2" && continue
done
}
asTestPaths | sort -u