summaryrefslogtreecommitdiff
path: root/test/CompilationDatabase
diff options
context:
space:
mode:
authorJames Benton <bentonj@vmware.com>2020-10-27 16:32:10 +0000
committerJames Benton <bentonj@vmware.com>2020-11-23 10:42:37 +0000
commitcb5fd47fc19798eb7ff6d2358b24cf734a1fb2fc (patch)
tree342e3b5c63bc43a5bbb8f8469991a9dffa42ea37 /test/CompilationDatabase
parent948e8afafe3a0b4c3774aca6a935b20972a9e762 (diff)
downloadscons-git-cb5fd47fc19798eb7ff6d2358b24cf734a1fb2fc.tar.gz
Add COMPILATIONDB_USE_PATH_FILTER for filtering compilation database.
The filter is a fnmatch pattern matched against output file.
Diffstat (limited to 'test/CompilationDatabase')
-rw-r--r--test/CompilationDatabase/fixture/SConstruct_variant4
-rw-r--r--test/CompilationDatabase/variant_dir.py49
2 files changed, 53 insertions, 0 deletions
diff --git a/test/CompilationDatabase/fixture/SConstruct_variant b/test/CompilationDatabase/fixture/SConstruct_variant
index f47c732ef..d86f5933f 100644
--- a/test/CompilationDatabase/fixture/SConstruct_variant
+++ b/test/CompilationDatabase/fixture/SConstruct_variant
@@ -32,6 +32,10 @@ env.CompilationDatabase('compile_commands_over_rel.json', COMPILATIONDB_USE_ABSP
env.CompilationDatabase('compile_commands_over_abs_1.json', COMPILATIONDB_USE_ABSPATH=1)
env.CompilationDatabase('compile_commands_over_abs_0.json', COMPILATIONDB_USE_ABSPATH=0)
+# Try filter for build and build2 output
+env.CompilationDatabase('compile_commands_filter_build.json', COMPILATIONDB_USE_PATH_FILTER='build/*')
+env.CompilationDatabase('compile_commands_filter_build2.json', COMPILATIONDB_USE_PATH_FILTER='build2/*')
+
env.VariantDir('build','src')
env.Program('build/main', 'build/test_main.c')
diff --git a/test/CompilationDatabase/variant_dir.py b/test/CompilationDatabase/variant_dir.py
index a36e5164c..6a2675b40 100644
--- a/test/CompilationDatabase/variant_dir.py
+++ b/test/CompilationDatabase/variant_dir.py
@@ -56,6 +56,14 @@ abs_files = [
'compile_commands_over_abs_1.json',
]
+filter_build_files = [
+ 'compile_commands_filter_build.json',
+]
+
+filter_build2_files = [
+ 'compile_commands_filter_build2.json',
+]
+
example_rel_file = """[
{
"command": "%(exe)s mygcc.py cc -o %(output_file)s -c %(variant_src_file)s",
@@ -115,4 +123,45 @@ for f in abs_files:
test.must_exist(f)
test.must_match(f, example_abs_file, mode='r')
+example_filter_build_file = """[
+ {
+ "command": "%(exe)s mygcc.py cc -o %(output_file)s -c %(variant_src_file)s",
+ "directory": "%(workdir)s",
+ "file": "%(src_file)s",
+ "output": "%(output_file)s"
+ }
+]""" % {'exe': sys.executable,
+ 'workdir': test.workdir,
+ 'src_file': os.path.join('src', 'test_main.c'),
+ 'output_file': os.path.join('build', 'test_main.o'),
+ 'variant_src_file': os.path.join('build', 'test_main.c')
+ }
+
+if sys.platform == 'win32':
+ example_filter_build_file = example_filter_build_file.replace('\\', '\\\\')
+
+for f in filter_build_files:
+ test.must_exist(f)
+ test.must_match(f, example_filter_build_file, mode='r')
+
+example_filter_build2_file = """[
+ {
+ "command": "%(exe)s mygcc.py cc -o %(output2_file)s -c %(src_file)s",
+ "directory": "%(workdir)s",
+ "file": "%(src_file)s",
+ "output": "%(output2_file)s"
+ }
+]""" % {'exe': sys.executable,
+ 'workdir': test.workdir,
+ 'src_file': os.path.join('src', 'test_main.c'),
+ 'output2_file': os.path.join('build2', 'test_main.o'),
+ }
+
+if sys.platform == 'win32':
+ example_filter_build2_file = example_filter_build2_file.replace('\\', '\\\\')
+
+for f in filter_build2_files:
+ test.must_exist(f)
+ test.must_match(f, example_filter_build2_file, mode='r')
+
test.pass_test()