Using '|&' syntax for piping both stdout and stderr is not supported by older bash. macOS pre-installs 3.2.57 as of today, and it causes test failure due to unexpected token '&'. We can use '2>&1' instead to make it compatible as much as possible.
******************** TEST 'MLIR :: mlir-cpu-runner/invalid.mlir' FAILED ******************** Script: -- : 'RUN: at line 1'; not mlir-cpu-runner --no-implicit-module llvm-project/mlir/test/mlir-cpu-runner/invalid.mlir |& llvm-project/build/bin/FileCheck llvm-project/mlir/test/mlir-cpu-runner/invalid.mlir -- Exit Code: 2 Command Output (stderr): -- mlir-cpu-runner/Output/invalid.mlir.script: line 1: syntax error near unexpected token `&' /mlir-cpu-runner/Output/invalid.mlir.script: line 1: `set -o pipefail;{ : 'RUN: at line 1'; not mlir-cpu-runner --no-implicit-module llvm-project/mlir/test/mlir-cpu-runner/invalid.mlir |& llvm-project/build/bin/FileCheck llvm-project/mlir/test/mlir-cpu-runner/invalid.mlir; }'
Reference: https://stackoverflow.com/questions/35384999/what-does-mean-in-bash