Skip to content

Commit

Permalink
Add check for outdated file lists
Browse files Browse the repository at this point in the history
  • Loading branch information
lballabio committed Dec 18, 2020
1 parent 55fc755 commit 5e968f4
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 19 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/filelists.yml
@@ -0,0 +1,10 @@
name: Check CMake file list and VC++ projects
on: [push, pull_request]
jobs:
filelists:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Check
run: |
./tools/check_filelists.sh
2 changes: 1 addition & 1 deletion QuantLib.vcxproj
Expand Up @@ -542,7 +542,7 @@
<ClInclude Include="ql\experimental\amortizingbonds\amortizingfloatingratebond.hpp" />
<ClInclude Include="ql\experimental\asian\all.hpp" />
<ClInclude Include="ql\experimental\asian\analytic_cont_geom_av_price_heston.hpp" />
<ClInclude Include="ql\experimental\asian\analytic_cont_discr_av_price_heston.hpp" />
<ClInclude Include="ql\experimental\asian\analytic_discr_geom_av_price_heston.hpp" />
<ClInclude Include="ql\experimental\averageois\all.hpp" />
<ClInclude Include="ql\experimental\averageois\arithmeticaverageois.hpp" />
<ClInclude Include="ql\experimental\averageois\arithmeticoisratehelper.hpp" />
Expand Down
6 changes: 6 additions & 0 deletions QuantLib.vcxproj.filters
Expand Up @@ -2334,6 +2334,9 @@
<ClInclude Include="ql\pricingengines\asian\mc_discr_arith_av_price.hpp">
<Filter>pricingengines\asian</Filter>
</ClInclude>
<ClInclude Include="ql\pricingengines\asian\mc_discr_arith_av_price_heston.hpp">
<Filter>pricingengines\asian</Filter>
</ClInclude>
<ClInclude Include="ql\pricingengines\asian\mc_discr_arith_av_strike.hpp">
<Filter>pricingengines\asian</Filter>
</ClInclude>
Expand Down Expand Up @@ -5575,6 +5578,9 @@
<ClCompile Include="ql\pricingengines\asian\mc_discr_arith_av_price.cpp">
<Filter>pricingengines\asian</Filter>
</ClCompile>
<ClCompile Include="ql\pricingengines\asian\mc_discr_arith_av_price_heston.cpp">
<Filter>pricingengines\asian</Filter>
</ClCompile>
<ClCompile Include="ql\pricingengines\asian\mc_discr_arith_av_strike.cpp">
<Filter>pricingengines\asian</Filter>
</ClCompile>
Expand Down
35 changes: 17 additions & 18 deletions tools/sync_projects.sh → tools/check_filelists.sh
Expand Up @@ -7,7 +7,7 @@
# with 'make dist', not from a working copy.)

find ql -name '*.[hc]pp' -or -name '*.[hc]' \
| grep -v 'ql/config\.hpp' | grep -v 'ql/ad\.hpp' | sort > ql.ref.files
| grep -v 'ql/config\.hpp' | sort > ql.ref.files
find test-suite -name '*.[hc]pp' \
| grep -v 'quantlibbenchmark' | grep -v '/main\.cpp' \
| sort > test-suite.ref.files
Expand All @@ -28,11 +28,11 @@ grep -o -E 'Include=".*\.[hc]p*"' test-suite/testsuite.vcxproj \

grep -o -E 'Include=".*\.[hc]p*"' QuantLib.vcxproj.filters \
| awk -F'"' '{ print $2 }' | sed -e 's|\\|/|g' | sed -e 's|^./||' \
| sort > ql.vcx.filters
| sort > ql.vcx.filters.files

grep -o -E 'Include=".*\.[hc]p*"' test-suite/testsuite.vcxproj.filters \
| awk -F'"' '{ print $2 }' | sed -e 's|\\|/|g' | sed -e 's|^./||' \
| sed -e 's|^|test-suite/|' | sort > test-suite.vcx.filters
| sed -e 's|^|test-suite/|' | sort > test-suite.vcx.filters.files

# same with CMakelists

Expand All @@ -45,22 +45,21 @@ grep -o -E '[a-zA-Z0-9_/\.]*\.cpp' test-suite/CMakeLists.txt \

# write out differences...

echo 'CMake:'
diff -b ql.cmake.files ql.ref.files
diff -b test-suite.cmake.files test-suite-cpp.ref.files
echo
diff -b ql.cmake.files ql.ref.files > ql.cmake.diff
diff -b test-suite.cmake.files test-suite-cpp.ref.files > test-suite.cmake.diff

echo 'Visual Studio:'
echo 'project:'
diff -b ql.vcx.files ql.ref.files
diff -b test-suite.vcx.files test-suite.ref.files
echo 'filters:'
diff -b ql.vcx.filters ql.ref.files
diff -b test-suite.vcx.filters test-suite.ref.files
diff -b ql.vcx.files ql.ref.files > ql.vcx.diff
diff -b test-suite.vcx.files test-suite.ref.files > test-suite.vcx.diff

diff -b ql.vcx.filters.files ql.ref.files > ql.vcx.filters.diff
diff -b test-suite.vcx.filters.files test-suite.ref.files > test-suite.vcx.filters.diff

# ...process...
./tools/check_filelists_diffs.py
result=$?

# ...and cleanup
rm -f ql.ref.files test-suite.ref.files test-suite-cpp.ref.files
rm -f ql.cmake.files test-suite.cmake.files
rm -f ql.vcx.files test-suite.vcx.files
rm -f ql.vcx.filters test-suite.vcx.filters
rm -f ql.*.files test-suite.*.files test-suite-cpp.ref.files
rm -f ql.*.diff test-suite.*.diff

exit $result
37 changes: 37 additions & 0 deletions tools/check_filelists_diffs.py
@@ -0,0 +1,37 @@
#!/usr/bin/python

import sys

inputs = [
("ql.cmake.diff", "ql/CMakeLists.txt"),
("test-suite.cmake.diff", "test-suite/CMakeLists.txt"),
("ql.vcx.diff", "QuantLib.vcxproj"),
("ql.vcx.filters.diff", "QuantLib.vcxproj.filters"),
("test-suite.vcx.diff", "test-suite/testsuite.vcxproj"),
("test-suite.vcx.filters.diff", "test-suite/testsuite.vcxproj.filters"),
]

result = 0


def format(line):
filename = line[2:].strip()
if filename.endswith(".hpp"):
return "header file %s" % filename
elif filename.endswith(".cpp"):
return "source file %s" % filename
else:
return "file %s" % filename


for diffs, target in inputs:
with open(diffs) as f:
for line in f:
if line.startswith("< "):
print("%s contains extra %s" % (target, format(line)))
result = 1
if line.startswith("> "):
print("%s doesn't contain %s" % (target, format(line)))
result = 1

sys.exit(result)

0 comments on commit 5e968f4

Please sign in to comment.