tests: extract stdout redirection
[platform/core/system/dlog.git] / tests / test_config_redirect.c
1 /* DLOG
2  * Copyright (c) 2023 Samsung Electronics Co., Ltd.
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
17 #include <stdio.h>
18 #include <stdlib.h>
19 #include <stdbool.h>
20 #include <unistd.h>
21 #include <string.h>
22
23 #include <dlog-redirect-stdout.h>
24 #include <dlog.h>
25
26 int main(int argc, char** argv)
27 {
28         int log_count = argc - 1;
29         bool* expected_results = (bool*)malloc(sizeof(bool) * (log_count));
30
31         for (int i = 1; i < argc; i++) {
32                 if (strcmp(argv[i], "1") == 0) {
33                         expected_results[i - 1] = true;
34                 } else if (strcmp(argv[i], "0") == 0) {
35                         expected_results[i - 1] = false;
36                 } else {
37                         free(expected_results);
38                         return EXIT_FAILURE;
39                 }
40         }
41
42         for (int i = 0; i < log_count; i++) {
43                 int result = dlog_connect_fd(i, STDOUT_FILENO, "tag", DLOG_INFO);
44                 bool is_eopnotsupp = (result == -EOPNOTSUPP);
45                 if (is_eopnotsupp != expected_results[i]) {
46                         free(expected_results);
47                         return EXIT_FAILURE;
48                 }
49         }
50
51         free(expected_results);
52         return EXIT_SUCCESS;
53 }