Skip to content

Commit

Permalink
[clang][deps] NFC: Refactor inferred modules test
Browse files Browse the repository at this point in the history
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
  • Loading branch information
jansvoboda11 committed Feb 9, 2023
1 parent 936819b commit 29b95f0
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 54 deletions.
Empty file.

This file was deleted.

7 changes: 0 additions & 7 deletions clang/test/ClangScanDeps/Inputs/modules_inferred_cdb.json

This file was deleted.

19 changes: 0 additions & 19 deletions clang/test/ClangScanDeps/modules-inferred-explicit-build.m

This file was deleted.

80 changes: 53 additions & 27 deletions 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

0 comments on commit 29b95f0

Please sign in to comment.