[clang] 29b95f0 - [clang][deps] NFC: Refactor inferred modules test

Jan Svoboda via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 8 16:58:17 PST 2023


Author: Jan Svoboda
Date: 2023-02-08T16:57:41-08:00
New Revision: 29b95f05738fed5bf9777e285ccb084ada54b9b1

URL: https://github.com/llvm/llvm-project/commit/29b95f05738fed5bf9777e285ccb084ada54b9b1
DIFF: https://github.com/llvm/llvm-project/commit/29b95f05738fed5bf9777e285ccb084ada54b9b1.diff

LOG: [clang][deps] NFC: Refactor inferred modules test

This patch squashes two tests with identical inputs into a single test, and adopts the `split-file` utility. This allows us to remove `sed` invocation with multiple commands, where "s|-E|-x objective-c -E|g" could've caused issues if previous replacements injected path containing "-E".

Reviewed By: benlangmuir

Differential Revision: https://reviews.llvm.org/D143615

Added: 
    

Modified: 
    clang/test/ClangScanDeps/modules-inferred.m

Removed: 
    clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h
    clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Headers/Inferred.h
    clang/test/ClangScanDeps/Inputs/modules_inferred_cdb.json
    clang/test/ClangScanDeps/modules-inferred-explicit-build.m


################################################################################
diff  --git a/clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h b/clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h
deleted file mode 100644
index e69de29bb2d1d..0000000000000

diff  --git a/clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Headers/Inferred.h b/clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Headers/Inferred.h
deleted file mode 100644
index 1855e4fad5f8d..0000000000000
--- a/clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Headers/Inferred.h
+++ /dev/null
@@ -1 +0,0 @@
-typedef int inferred;

diff  --git a/clang/test/ClangScanDeps/Inputs/modules_inferred_cdb.json b/clang/test/ClangScanDeps/Inputs/modules_inferred_cdb.json
deleted file mode 100644
index 23de66f74cfc3..0000000000000
--- a/clang/test/ClangScanDeps/Inputs/modules_inferred_cdb.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
-{
-  "directory": "DIR",
-  "command": "clang -E DIR/modules_cdb_input.cpp -FFRAMEWORKS -fmodules -fcxx-modules -fmodules-cache-path=DIR/module-cache -fimplicit-modules -fimplicit-module-maps -pedantic -Werror",
-  "file": "DIR/modules_cdb_input.cpp"
-}
-]

diff  --git a/clang/test/ClangScanDeps/modules-inferred-explicit-build.m b/clang/test/ClangScanDeps/modules-inferred-explicit-build.m
deleted file mode 100644
index 6a631d4ab9d26..0000000000000
--- a/clang/test/ClangScanDeps/modules-inferred-explicit-build.m
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: rm -rf %t.dir
-// RUN: rm -rf %t.cdb
-// RUN: mkdir -p %t.dir
-// RUN: cp %s %t.dir/modules_cdb_input.cpp
-// RUN: sed -e "s|DIR|%/t.dir|g" -e "s|FRAMEWORKS|%/S/Inputs/frameworks|g" -e "s|-E|-x objective-c -E|g" \
-// RUN:   %S/Inputs/modules_inferred_cdb.json > %t.cdb
-//
-// RUN: clang-scan-deps -compilation-database %t.cdb -j 1 -format experimental-full -mode preprocess-dependency-directives > %t.db
-// RUN: %deps-to-rsp %t.db --module-name=Inferred > %t.inferred.cc1.rsp
-// RUN: %deps-to-rsp %t.db --module-name=System > %t.system.cc1.rsp
-// RUN: %deps-to-rsp %t.db --tu-index=0 > %t.tu.rsp
-// RUN: %clang @%t.inferred.cc1.rsp -pedantic -Werror
-// RUN: %clang @%t.system.cc1.rsp -pedantic -Werror
-// RUN: %clang @%t.tu.rsp -pedantic -Werror
-
-#include <Inferred/Inferred.h>
-#include <System/System.h>
-
-inferred a = bigger_than_int;

diff  --git a/clang/test/ClangScanDeps/modules-inferred.m b/clang/test/ClangScanDeps/modules-inferred.m
index ac0168324dd61..4d18a20949205 100644
--- a/clang/test/ClangScanDeps/modules-inferred.m
+++ b/clang/test/ClangScanDeps/modules-inferred.m
@@ -1,47 +1,73 @@
-// RUN: rm -rf %t.dir
-// RUN: rm -rf %t.cdb
-// RUN: mkdir -p %t.dir
-// RUN: cp %s %t.dir/modules_cdb_input.cpp
-// RUN: sed -e "s|DIR|%/t.dir|g" -e "s|FRAMEWORKS|%/S/Inputs/frameworks|g" \
-// RUN:   %/S/Inputs/modules_inferred_cdb.json > %t.cdb
-//
-// RUN: clang-scan-deps -compilation-database %t.cdb -j 1 -format experimental-full \
-// RUN:   -mode preprocess-dependency-directives > %t.result
-// RUN: cat %t.result | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t.dir -DSOURCEDIR=%/S --check-prefixes=CHECK
+// This test checks that inferred frameworks/modules are accounted for in the
+// scanner and can be explicitly built by Clang.
 
+// RUN: rm -rf %t
+// RUN: split-file %s %t
+
+//--- frameworks/Inferred.framework/Headers/Inferred.h
+typedef int inferred;
+
+//--- frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h
+
+//--- frameworks/module.modulemap
+framework module * {}
+
+//--- tu.m
 #include <Inferred/Inferred.h>
 
 inferred a = 0;
 
+//--- cdb.json.template
+[{
+  "directory": "DIR",
+  "file": "DIR/tu.m",
+  "command": "clang -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache -F DIR/frameworks -c DIR/tu.m -o DIR/tu.o"
+}]
+
+// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
+// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+
 // CHECK:      {
 // CHECK-NEXT:   "modules": [
 // CHECK-NEXT:     {
 // CHECK-NEXT:       "clang-module-deps": [],
-// CHECK-NEXT:       "clang-modulemap-file": "[[SOURCEDIR]]/Inputs/frameworks/module.modulemap",
+// CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/frameworks/module.modulemap",
 // CHECK-NEXT:       "command-line": [
 // CHECK:            ],
-// CHECK-NEXT:       "context-hash": "[[HASH_INFERRED:[A-Z0-9]+]]",
+// CHECK-NEXT:       "context-hash": "{{.*}}",
 // CHECK-NEXT:       "file-deps": [
-// CHECK-NEXT:         "[[SOURCEDIR]]/Inputs/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h",
-// CHECK-NEXT:         "[[SOURCEDIR]]/Inputs/frameworks/Inferred.framework/Headers/Inferred.h",
-// CHECK-NEXT:         "[[SOURCEDIR]]/Inputs/frameworks/module.modulemap"
+// CHECK-NEXT:         "[[PREFIX]]/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h",
+// CHECK-NEXT:         "[[PREFIX]]/frameworks/Inferred.framework/Headers/Inferred.h",
+// CHECK-NEXT:         "[[PREFIX]]/frameworks/module.modulemap"
 // CHECK-NEXT:       ],
 // CHECK-NEXT:       "name": "Inferred"
 // CHECK-NEXT:     }
 // CHECK-NEXT:   ],
 // CHECK-NEXT:   "translation-units": [
 // CHECK-NEXT:     {
-// CHECK:            "clang-context-hash": "[[HASH_TU:[A-Z0-9]+]]",
-// CHECK-NEXT:       "clang-module-deps": [
+// CHECK-NEXT:       "commands": [
 // CHECK-NEXT:         {
-// CHECK-NEXT:           "context-hash": "[[HASH_INFERRED]]",
-// CHECK-NEXT:           "module-name": "Inferred"
+// CHECK-NEXT:           "clang-context-hash": "{{.*}}",
+// CHECK-NEXT:           "clang-module-deps": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:               "context-hash": "{{.*}}",
+// CHECK-NEXT:               "module-name": "Inferred"
+// CHECK-NEXT:             }
+// CHECK-NEXT:           ],
+// CHECK-NEXT:           "command-line": [
+// CHECK:                ],
+// CHECK:                "file-deps": [
+// CHECK-NEXT:             "[[PREFIX]]/tu.m"
+// CHECK-NEXT:           ],
+// CHECK-NEXT:           "input-file": "[[PREFIX]]/tu.m"
 // CHECK-NEXT:         }
-// CHECK-NEXT:       ],
-// CHECK-NEXT:       "command-line": [
-// CHECK:            ],
-// CHECK:            "file-deps": [
-// CHECK-NEXT:         "[[PREFIX]]/modules_cdb_input.cpp"
-// CHECK-NEXT:       ],
-// CHECK-NEXT:       "input-file": "[[PREFIX]]/modules_cdb_input.cpp"
-// CHECK-NEXT:     }
+// CHECK:            ]
+// CHECK:          }
+// CHECK:        ]
+// CHECK:      }
+
+// RUN: %deps-to-rsp %t/result.json --module-name=Inferred > %t/Inferred.cc1.rsp
+// RUN: %deps-to-rsp %t/result.json --tu-index=0 > %t/tu.rsp
+// RUN: %clang @%t/Inferred.cc1.rsp -pedantic -Werror
+// RUN: %clang @%t/tu.rsp -pedantic -Werror


        


More information about the cfe-commits mailing list