xref: /petsc/src/sys/tests/options/ex55.c (revision 607e733f3db3ee7f6f605a13295c517df8dbb9c9)
1 static char help[] = "Tests options database monitoring and precedence.\n\n";
2 
3 #include <petscsys.h>
4 #include <petscviewer.h>
5 
6 PetscErrorCode PetscOptionsMonitorCustom(const char name[], const char value[], PetscOptionSource source, PetscCtx ctx)
7 {
8   PetscViewer viewer = (PetscViewer)ctx;
9 
10   PetscFunctionBegin;
11   if (!value) {
12     PetscCall(PetscViewerASCIIPrintf(viewer, "* Removing option: %s\n", name));
13   } else if (!value[0]) {
14     PetscCall(PetscViewerASCIIPrintf(viewer, "* Setting option: %s (no value)\n", name));
15   } else {
16     PetscCall(PetscViewerASCIIPrintf(viewer, "* Setting option: %s = %s\n", name, value));
17   }
18   PetscFunctionReturn(PETSC_SUCCESS);
19 }
20 
21 int main(int argc, char **argv)
22 {
23   PetscViewer       viewer = NULL;
24   PetscViewerFormat format;
25 
26   PetscFunctionBeginUser;
27   PetscCall(PetscInitialize(&argc, &argv, "ex55options", help));
28   PetscCall(PetscOptionsInsertString(NULL, "-option1 1 -option2 -option3 value3"));
29   PetscCall(PetscOptionsCreateViewer(PETSC_COMM_WORLD, NULL, NULL, "-options_monitor_viewer", &viewer, &format, NULL));
30   if (viewer) {
31     PetscCall(PetscViewerPushFormat(viewer, format));
32     PetscCall(PetscOptionsMonitorSet(PetscOptionsMonitorCustom, viewer, NULL));
33     PetscCall(PetscViewerPopFormat(viewer));
34     PetscCall(PetscViewerDestroy(&viewer));
35   }
36   PetscCall(PetscOptionsInsertString(NULL, "-option4 value4 -option5"));
37   PetscCall(PetscOptionsClearValue(NULL, "-option5"));
38   PetscCall(PetscFinalize());
39   return 0;
40 }
41 
42 /*TEST
43 
44    testset:
45       localrunfiles: ex55options .petscrc petscrc
46       args: -options_left 0 -options_view -options_monitor_viewer ascii
47       args: -skip_petscrc {{0 1}separate output} -options_monitor_cancel {{0 1}separate output}
48       test:
49         suffix: 1
50       test:
51         suffix: 2
52         args: -options_monitor
53       test:
54         suffix: 3
55         args: -options_monitor -option_cmd_1 option_cmd_1_val -option_cmd_2
56    test:
57       # test effect of -skip_petscrc in ex55options file
58       suffix: 4
59       localrunfiles: ex55options .petscrc petscrc
60       args: -options_left 0 -options_view -options_monitor
61    testset:
62       # test -help / -help intro / -version from command line
63       localrunfiles: ex55options .petscrc petscrc
64       filter: grep -E -e "(version|help|^See)"
65       args: -options_left -options_view -options_monitor
66       test:
67         suffix: 5a
68         args: -help
69       test:
70         suffix: 5b
71         args: -help intro
72       test:
73         suffix: 5c
74         args: -version
75    testset:
76       # test -help / -help intro / -version from file
77       localrunfiles: ex55options rc_help rc_help_intro rc_version
78       filter: grep -E -e "(version|help|^See)"
79       args: -skip_petscrc
80       args: -options_left -options_view -options_monitor
81       test:
82         suffix: 6a
83         args: -options_file rc_help
84       test:
85         suffix: 6b
86         args: -options_file rc_help_intro
87       test:
88         suffix: 6c
89         args: -options_file rc_version
90 
91    test:
92      localrunfiles: ex55options .petscrc petscrc
93      suffix: 7
94      args: -options_monitor -options_left 0
95 
96 TEST*/
97