angular/packages/compiler-cli/test/compliance/test_cases/replace.sh
Dylan Hunn 54340a9fff refactor(compiler): Delete TemplateDefinitionBuilder acceptance test expectations (#54757)
Many acceptance tests define goldens for both `TemplateDefinitionBuilder` and Template Pipeline. All such tests have had the TDB golden files removed, and the corresponding expectations adjusted.

PR Close #54757
2024-03-08 16:51:01 -08:00

61 lines
2.7 KiB
Bash
Executable file

#!/bin/bash
# Step 1: Find all .pipeline.js files recursively
find . -type f -name "*.pipeline.js" | while read -r pipeline_file; do
base_dir=$(dirname "$pipeline_file")
base_name=$(basename "$pipeline_file" .pipeline.js)
# Step 2: Attempt to delete the corresponding .js, .template.js, or _template.js file
js_file="${base_dir}/${base_name}.js"
template_js_file="${base_dir}/${base_name}.template.js"
underscore_template_js_file="${base_dir}/${base_name}_template.js"
file_deleted=false
if [ -f "$js_file" ]; then
rm "$js_file" && echo "Deleted file: $js_file"
file_deleted=true
fi
if [ -f "$template_js_file" ]; then
rm "$template_js_file" && echo "Deleted file: $template_js_file"
file_deleted=true
fi
if [ -f "$underscore_template_js_file" ]; then
rm "$underscore_template_js_file" && echo "Deleted file: $underscore_template_js_file"
file_deleted=true
fi
if [ "$file_deleted" = false ]; then
echo "Error: Corresponding file for $pipeline_file not found."
fi
# Step 3: Modify TEST_CASES.json if it exists in the same directory
test_cases_file="${base_dir}/TEST_CASES.json"
if [ -f "$test_cases_file" ]; then
# Patterns to match "expected" before the filename
js_pattern="expected.*$base_name\.js"
template_js_pattern="expected.*$base_name\.template\.js"
underscore_template_js_pattern="expected.*$base_name\_template\.js"
# Use a more compatible sed in-place editing command
if grep -q -E "expected.*(js|template\.js|_template\.js)" "$test_cases_file"; then
# Determine if we are using GNU sed or BSD sed and adjust the command accordingly
if sed --version 2>/dev/null | grep -q GNU; then
# GNU sed
sed -i "/$js_pattern/d" "$test_cases_file"
sed -i "/$template_js_pattern/d" "$test_cases_file"
sed -i "/$underscore_template_js_pattern/d" "$test_cases_file"
else
# BSD sed
sed -i '' "/$js_pattern/d" "$test_cases_file"
sed -i '' "/$template_js_pattern/d" "$test_cases_file"
sed -i '' "/$underscore_template_js_pattern/d" "$test_cases_file"
fi
echo "Modified $test_cases_file to remove references to ${base_name}.js, ${base_name}.template.js, and/or ${base_name}_template.js with 'expected' preceding"
else
echo "Error: No line found in $test_cases_file for 'expected' preceding ${base_name}.js, ${base_name}.template.js, or ${base_name}_template.js"
fi
else
echo "Error: TEST_CASES.json not found in $base_dir"
fi
done