Imported Upstream version 1.34.0
[platform/upstream/grpc.git] / tools / run_tests / sanity / cpp_banned_constructs.sh
1 #!/bin/sh
2 # Copyright 2019 gRPC authors.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 set -e
17
18 cd "$(dirname "$0")/../../.."
19
20 #
21 # Prevent the use of synchronization and threading constructs from std:: since
22 # the code should be using grpc_core::Mutex, grpc::internal::Mutex,
23 # grpc_core::Thread, etc.
24 #
25
26 grep -EIrn \
27     'std::(mutex|condition_variable|lock_guard|unique_lock|thread)' \
28     include/grpc include/grpcpp src/core src/cpp | \
29     grep -Ev include/grpcpp/impl/codegen/sync.h | \
30     diff - /dev/null
31
32 #
33 # Prevent the include of disallowed C++ headers.
34 #
35
36 grep -EIrn \
37     '^#include (<mutex>|<condition_variable>|<thread>|<ratio>|<filesystem>|<future>|<system_error>)' \
38     include/grpc include/grpcpp src/core src/cpp | \
39     grep -Ev include/grpcpp/impl/codegen/sync.h | \
40     diff - /dev/null
41
42 #
43 # Prevent the include of headers that shouldn't be used in tests.
44 #
45
46 grep -EIrn \
47     '^#include (<pthread.h>)' \
48     test | \
49     diff - /dev/null