diff --git a/doc/developer/advance.tex b/doc/developer/advance.tex index db1da3450701a754f0036a5e10e15ff392b7de37..7763e2d7650dbe7d97224e6c16ab0a0dd88b184f 100644 --- a/doc/developer/advance.tex +++ b/doc/developer/advance.tex @@ -949,18 +949,22 @@ Figure~\ref{fig:test-directives} shows all the directives that can be used in the configuration header of a test (or a test suite). \begin{figure}[ht] \begin{center} -\begin{tabular}{|c|c|p{5cm}|l|} +\begin{tabular}{|c|c|p{4.5cm}|p{5.2cm}|} \hline \textbf{Kind} & \textbf{Name} & \textbf{Specification} & \textbf{default}\\ \hline \hline \multirow{4}{23mm}{\centering{Command}} +& \texttt{PLUGIN}\nscodeidxdef{Test!Directive}{PLUGIN} +& Plugins to be loaded with each subsequent run. +& \texttt{from inout eva scope variadic} for tests under \texttt{./tests} directory +\\ & \texttt{CMD}\nscodeidxdef{Test!Directive}{CMD} & Program to run & \texttt{./bin/toplevel.opt} \\ & \texttt{OPT}\nscodeidxdef{Test!Directive}{OPT} & Options given to the program -& \texttt{-val -out -input -deps} +& \texttt{-val -out -input -deps} for tests under \texttt{./tests} directory \\ & \texttt{STDOPT}\nscodeidxdef{Test!Directive}{STDOPT} & Add and remove options from the default set @@ -1015,7 +1019,7 @@ and report a failure & selects the files to test & \texttt{.*\bss.\bss(c|i\bss)} \\ -\hline \multirow{2}{23mm}{\centering{Miscellaneous}} +\hline \multirow{2}{23mm}{\centering{Misc.}} & \texttt{COMMENT}\nscodeidxdef{Test!Directive}{COMMENT} & Comment in the configuration & \textit{None} @@ -1175,9 +1179,9 @@ or In such a directive, the predefined macro \texttt{@PTEST\_ORACLE@} is set to the basename of the oracle. That allows running a \texttt{diff} command with the oracle of another - test configuration: + test configuration \texttt{config}: \begin{code} - FILTER: diff --new-file @PTEST_DIR@/oracle_configuration/@PTEST_ORACLE@ - +FILTER: diff --new-file @PTEST_DIR@/oracle_config/@PTEST_ORACLE@ - \end{code} Chaining multiple filter commands is possible by defining several \texttt{FILTER} directives (they are applied in the reverse order), and an empty command drops the previous \texttt{FILTER} directives. diff --git a/doc/developer/architecture.tex b/doc/developer/architecture.tex index 7e8c832343a31723a796df600c1139b011e25318..d1de7b6f1945e40f3c2ea63fde9aaae929508afb 100644 --- a/doc/developer/architecture.tex +++ b/doc/developer/architecture.tex @@ -48,9 +48,11 @@ documentation generated by \texttt{make doc} for that purpose. \begin{figure}[htbp] \begin{center} -\begin{tikzpicture}[remember picture,scale=0.9, every node/.style={transform shape}] +\begin{tikzpicture}[remember picture,every node/.style={transform shape}] +\node (bottom) { +\begin{tikz-hbox}[node distance=\bigpadding]{bottom} % kernel internals -\node[structural] (internals) { +\node[structural,on chain] (internals) { \tikztitleboxbig{Kernel Internals}{LightCyan}{ \begin{tikz-hbox}{internals} \node[on chain,draw,plain]{parsing}; @@ -60,93 +62,22 @@ documentation generated by \texttt{make doc} for that purpose. } }; -\node[structural, above=\bigpadding] at (internals.north) (middle) { - \begin{tikz-hbox}[node distance=\bigpadding] - {middle} - % kernel services - \node[on chain, structural] (services) { - \tikztitleboxbig{Kernel Services}{darkgreen}{ - \begin{tikz-hbox}{services} - \node[on chain,structural]{ - \begin{tikz-vbox}{services-left} - \node[on chain,structural] (traversal){ - \tikztitlebox{AST Traversal}{% - \begin{tikz-vbox}{traversal} - \node[on chain,draw,plain] (visitor) {visitor}; - \node[on chain,structural] { - \begin{tikz-hbox}{traversal-1} - \node[on chain,draw,plain] (analysis) {analysis}; - \node[on chain,draw,plain] (transfo) {ast\_transformations}; - \end{tikz-hbox} - }; - \draw[-Latex] (analysis) -- (visitor); - \draw[-Latex] (transfo) -- (visitor); - \end{tikz-vbox} - } - }; - \node[on chain,structural] (ai) { - \tikztitlebox{AI}{ - \begin{tikz-vbox}{ai} - \node[on chain,draw,plain] {abstract\_interp}; - \end{tikz-vbox} - } - }; - \end{tikz-vbox} - }; - \node[on chain,structural] { - \begin{tikz-vbox}{services-right} - \node[on chain,structural](ast){ - \tikztitlebox{ASTs}{% - \begin{tikz-vbox}{ast} - \node[on chain,draw,plain] (data) {ast\_data}; - \node[on chain,draw,plain] (queries) {ast\_queries}; - \node[on chain,draw,plain] (parsetree) {parsetree}; - \draw[-Latex] (queries) -- (data); - \end{tikz-vbox} - } - }; - \node[on chain,structural] (interactions) { - \tikztitlebox{Plug-in Interactions}{ - \begin{tikz-vbox}{plugin-api} - \node[on chain,draw,plain] {cmdline\_parameters}; - \node[on chain,draw,plain] {plugin\_entry\_points}; - \end{tikz-vbox} - } - }; - \draw[bigarrow,<->] (ast.south) -- (interactions.north); - \end{tikz-vbox} - }; +% libraries +\node[structural, on chain] (libraries) {% + \tikztitleboxbig{Libraries}{Orange}{ + \begin{tikz-vbox}[node distance=\bigpadding]{libraries} + \node[on chain,draw,plain] (stdlib){stdlib}; + \node[on chain,structural]{ + \begin{tikz-hbox}{lib-middle} + \node[on chain,draw,plain] (datatype) {datatype}; + \node[on chain,draw,plain] (project) {project}; \end{tikz-hbox} - \begin{tikzpicture}[overlay] - \coordinate (ai2) at ($(ai.north east)!.75!(ai.south east)$); - \coordinate (traversal1) at - ($(traversal.south east)!0.2!(traversal.south west)$); - \coordinate (interactions1) at - ($(interactions.north west)!0.2!(interactions.south west)$); - \draw[bigarrow,->] (traversal.east) -- (ast.west); - \draw[bigarrow,->] (traversal1) -- (interactions1); - \draw[bigarrow,bend right,->] (ai.east) to[in=170] (ast.west); - \draw[bigarrow,->] (ai.east) -- (interactions.west); - \end{tikzpicture} - } - }; - %libraries - \node[on chain, structural] (libraries) {% - \tikztitleboxbig{Libraries}{Orange}{ - \begin{tikz-vbox}[node distance=\bigpadding]{libraries} - \node[on chain,draw,plain] (stdlib){stdlib}; - \node[on chain,structural]{ - \begin{tikz-hbox}{lib-middle} - \node[on chain,draw,plain] (datatype) {datatype}; - \node[on chain,draw,plain] (project) {project}; - \end{tikz-hbox} - }; - \node[on chain,draw,plain] (utils) {utils}; - \end{tikz-vbox}% - } - }; - \draw[bigarrow,->] (services.east) -- (libraries.west); - \end{tikz-hbox} + }; + \node[on chain,draw,plain] (utils) {utils}; + \end{tikz-vbox}% + } +}; +\end{tikz-hbox} \begin{tikzpicture}[overlay] \draw[Latex-Latex] (stdlib.south) -- (datatype); \draw[Latex-Latex] (datatype) -- (utils); @@ -157,8 +88,76 @@ documentation generated by \texttt{make doc} for that purpose. \end{tikzpicture} }; +\node[structural, above=\bigpadding] at (bottom.north) (services) { + % kernel services + \tikztitleboxbig{Kernel Services}{darkgreen}{ + \begin{tikz-hbox}{services} + \node[on chain,structural]{ + \begin{tikz-vbox}{services-left} + \node[on chain,structural] (traversal){ + \tikztitlebox{AST Traversal}{% + \begin{tikz-vbox}{traversal} + \node[on chain,draw,plain] (visitor) {visitor}; + \node[on chain,structural] { + \begin{tikz-hbox}{traversal-1} + \node[on chain,draw,plain] (analysis) {analysis}; + \node[on chain,draw,plain] (transfo) {ast\_transformations}; + \end{tikz-hbox} + }; + \draw[-Latex] (analysis) -- (visitor); + \draw[-Latex] (transfo) -- (visitor); + \end{tikz-vbox} + } + }; + \node[on chain,structural] (ai) { + \tikztitlebox{AI}{ + \begin{tikz-vbox}{ai} + \node[on chain,draw,plain] {abstract\_interp}; + \end{tikz-vbox} + } + }; + \end{tikz-vbox} + }; + \node[on chain,structural] { + \begin{tikz-vbox}{services-right} + \node[on chain,structural](ast){ + \tikztitlebox{ASTs}{% + \begin{tikz-vbox}{ast} + \node[on chain,draw,plain] (data) {ast\_data}; + \node[on chain,draw,plain] (queries) {ast\_queries}; + \node[on chain,draw,plain] (parsetree) {parsetree}; + \draw[-Latex] (queries) -- (data); + \end{tikz-vbox} + } + }; + \node[on chain,structural] (interactions) { + \tikztitlebox{Plug-in Interactions}{ + \begin{tikz-vbox}{plugin-api} + \node[on chain,draw,plain] {cmdline\_parameters}; + \node[on chain,draw,plain] {plugin\_entry\_points}; + \end{tikz-vbox} + } + }; + \draw[bigarrow,<->] (ast.south) -- (interactions.north); + \end{tikz-vbox} + }; + \end{tikz-hbox} + \begin{tikzpicture}[overlay] + \coordinate (ai2) at ($(ai.north east)!.75!(ai.south east)$); + \coordinate (traversal1) at + ($(traversal.south east)!0.2!(traversal.south west)$); + \coordinate (interactions1) at + ($(interactions.north west)!0.2!(interactions.south west)$); + \draw[bigarrow,->] (traversal.east) -- (ast.west); + \draw[bigarrow,->] (traversal1) -- (interactions1); + \draw[bigarrow,bend right, ->] (ai.east) to[in=170] (ast.west); + \draw[bigarrow,->] (ai.east) -- (interactions.west); + \end{tikzpicture} + } +}; + %plugins -\node[above=\bigpadding,structural] at (middle.north) (plugins) { +\node[above=\bigpadding,structural] at (services.north) (plugins) { \tikztitleboxbig{Plug-ins}{palered}{ \begin{tikz-hbox}{plugins} \node[on chain,draw,plain] (pi1) {plug-in 1}; @@ -174,10 +173,11 @@ documentation generated by \texttt{make doc} for that purpose. \end{tikz-hbox} } }; + \draw[bigarrow,<->] (services.south) -- (internals.north); - %TODO: understand why remembered nodes are not accurate. - \draw[bigarrow,->] (plugins.south) -- ($(services.north)+(0,-28pt)$); - \draw[bigarrow,->,bend right] (internals.east) to ($(libraries.south west)+(0,-5pt)$); + \draw[bigarrow,->] (plugins.south) -- (services.north); + \draw[bigarrow,->] (internals.east) -- (libraries.west); + \draw[bigarrow,->] (services.south) to (libraries.north); \end{tikzpicture} \caption{Frama-C Architecture Design.}\label{fig:architecture} \end{center} diff --git a/doc/developer/developer.tex b/doc/developer/developer.tex index af1cae1b8bbc1809deaef9e64c559332154206f1..26c80c5c03c60cfee2b45abf3c31300abf7acb5e 100644 --- a/doc/developer/developer.tex +++ b/doc/developer/developer.tex @@ -4,7 +4,7 @@ %%MODERN \documentclass[a4paper,11pt,twoside,openright]{report} \documentclass[web,svgnames]{frama-c-book} -\usepackage{xspace,alltt,calc,multirow,tabularx,bigdelim} +\usepackage{xspace,alltt,calc,multirow,tabularx,bigdelim,spverbatim} \usepackage{amsmath} \IfFileExists{diagbox.sty} % Compatibility with newer diagbox and older slashbox {\usepackage{diagbox} diff --git a/doc/developer/examples/syntactic_check.ml b/doc/developer/examples/syntactic_check.ml index f99b0921fc07f060eabba009751658119adab29b..02350a04f73e7e2a1e810fa45987b5fbb1e04f1a 100644 --- a/doc/developer/examples/syntactic_check.ml +++ b/doc/developer/examples/syntactic_check.ml @@ -18,8 +18,8 @@ module M = Plugin.Register (* Each annotation in Frama-C has an emitter, for traceability. We create thus our own, and says that it will only be used to emit code - annotations, and that these annotations do not depend on Frama-C's command - line parameters. + annotations, and that these annotations do not depend + on Frama-C's command line parameters. *) let syntax_alarm = Emitter.create diff --git a/doc/developer/macros.sty b/doc/developer/macros.sty index 5ffdaac2edd1bb37828ab23e18c696dbab0fef83..86469e96b81d7243fb571078f0fb284983601754 100644 --- a/doc/developer/macros.sty +++ b/doc/developer/macros.sty @@ -208,12 +208,14 @@ bigarrow/.style={thick,>=Latex,red} start chain=#2 going below, node distance=\padding, every on chain/.style={rectangle}, + remember picture, #1] } {\end{tikzpicture}} \newenvironment{tikz-hbox}[2][] {\begin{tikzpicture}[ + remember picture, inner sep=0pt, every node/.style={transform shape}, start chain=#2 going right, @@ -223,7 +225,7 @@ bigarrow/.style={thick,>=Latex,red} {\end{tikzpicture}} \newcommand{\tikztitlebox}[3][]{% -\begin{tikzpicture}[every node/.style={transform shape},#1,inner sep=0pt] +\begin{tikzpicture}[every node/.style={transform shape},#1,inner sep=0pt,remember picture] \node[structural] (#2-content) {#3}; \node[structural,above=\bigpaddelta,small-title] at (#2-content.north) (#2-title) {#2}; \node[fit=(#2-content) (#2-title), @@ -231,11 +233,12 @@ bigarrow/.style={thick,>=Latex,red} \end{tikzpicture}% } \newcommand{\tikztitleboxbig}[4][]{% -\begin{tikzpicture}[inner sep=0pt,every node/.style={transform shape},#1] -\node[structural] (#2-content) {#4}; -\node[above=1.5\bigpaddelta,big-title,structural] at (#2-content.north) (#2-title) {#2}; +\def\name{\detokenize{#2}} +\begin{tikzpicture}[inner sep=0pt,every node/.style={transform shape},#1,remember picture] +\node[structural] (\name-content) {#4}; +\node[above=1.5\bigpaddelta,big-title,structural,align=center] at (\name-content.north) (\name-title) {#2}; \begin{scope}[on background layer] -\node[fit=(#2-content) (#2-title), fill=#3, +\node[fit=(\name-content) (\name-title), fill=#3, inner xsep=\padding, inner ysep=\bigpaddelta, draw, rounded corners=20pt, outer sep=0pt] {}; \end{scope} diff --git a/doc/developer/refman.tex b/doc/developer/refman.tex index 2b6313b3054f87c4c3e786ea4006fd99b8dddc46..222fd58a7509a24fefe4b47c07ca1a06134bb1e5 100644 --- a/doc/developer/refman.tex +++ b/doc/developer/refman.tex @@ -185,10 +185,10 @@ generation/.style={-Latex,very thick,dashed,fill=none}, \node[on chain,opt,draw=black] (user) {.Makefile.user}; } {[start chain=specific going right,node distance=\bigpaddelta] - \node[on chain,plugin,draw=black,anchor=north east,yshift=-\largepadding] - at (opt-begin.south east) { specific Makefile for plug-in 1 }; + \node[on chain,plugin,draw=black,anchor=north east,xshift=-\largepadding,yshift=-\largepadding] + at (opt-begin.south east) {Makefile for plug-in 1 }; \node[on chain] {\ldots}; - \node[on chain,plugin,draw=black] {specific Makefile for plugin $n$}; + \node[on chain,plugin,draw=black] {Makefile for plugin $n$}; } \end{scope} \matrix[anchor=north east,yshift=-\bigpadding,matrix of nodes, @@ -225,7 +225,7 @@ Makefile $m_1$ is included in Makefile $m_2$ \draw[plugin,include,bend right] (generated.north west) to (makefile.north east); \draw[generated,generation] (template) -- (generated); \draw[kernel,include] (generated) -- (dynamic); -\draw[plugin,include] (dynamic) -- (node cs:name=specific-begin,angle=10); +\draw[plugin,include,bend left] (dynamic) to (node cs:name=specific-begin,angle=10); \draw[plugin,include] (dynamic) -- (specific-end); \draw[opt,include] (user) -- (makefile); \draw[opt,include] (clean) -- (makefile); @@ -842,7 +842,7 @@ to your needs. See \texttt{ocamlmerlin -help} for the list of flags. Ptests pre-defines a certain number of macros for each test about to be run. Figure~\ref{fig:ptests-macros} gives their definition. \begin{figure}[htbp] -\begin{tabular}{|p{3cm}|p{10cm}|} +\begin{tabular}{|p{4.5cm}|p{10cm}|} \hline Name & Expansion \\ \hline @@ -864,6 +864,31 @@ name of the current alternative configuration fact two independent numbering schemes: one for \verb|EXECNOW| commands and one for regular tests (if more than one \verb|OPT|).\\ \hline +\verb|PTEST_RESULT| & shorthand alias to \verb|@PTEST_DIR@/result@PTEST_CONFIG@| +(the result directory dedicated to the tested configuration)\\ +\hline +\verb|PTEST_ORACLE| & basename of the current oracle file (macro only usable in FILTER directives)\\ +\hline +\verb|PTEST_MODULE| & current list of module defined by the \verb|MODULE| directive\\ +\hline +\verb|PTEST_PLUGIN| & current list of plugins defined by the \verb|PLUGIN| directive\\ +\hline +\verb|PTEST_DEFAULT_OPTIONS| & the default option list: \verb|-journal-disable| \verb|-check| \verb|-no-autoload-plugins|\\ +\hline +\verb|PTEST_LOAD_MODULE| & the \verb|-load-module| option related to the \verb|MODULE| directive\\ +\hline +\verb|PTEST_LOAD_PLUGIN| & the \verb|-load-module| option related to the \verb|PLUGIN| directive\\ +\hline +\verb|PTEST_LOAD_OPTIONS| & shorthand alias to \spverb|@PTEST_LOAD_PLUGIN@ @PTEST_LOAD_MODULE@|\\ +\hline +\verb|PTEST_OPTIONS| & the current list of options related to \verb|OPT| and \verb|STDOPT| directives (for \verb|CMD| directives)\\ +\hline +\verb|frama-c| & shortcut defined as follows: \spverb|@frama-c-exe@ @PTEST_DEFAULT_OPTIONS@ @PTEST_LOAD_OPTIONS@|\\ +\hline +\verb|frama-c-cmd| & shortcut defined as follows: \spverb|@frama-c-exe@ @PTEST_DEFAULT_OPTIONS@|\\ +\hline +\verb|frama-c-exe| & set to the value of the \verb|TOPLEVEL_PATH| variable from \verb|./tests/ptests_config| file\\ +\hline \end{tabular} \caption{Predefined macros for ptests}\label{fig:ptests-macros} \end{figure} diff --git a/doc/developer/tutorial.tex b/doc/developer/tutorial.tex index fa627601a68dcf5bf21d649ff493b4f1000290ff..832fee3fcc70f60857c2526e8fe0df54c365887e 100644 --- a/doc/developer/tutorial.tex +++ b/doc/developer/tutorial.tex @@ -109,7 +109,7 @@ platform. This tutorial focuses on specific parts of this figure. \newlength{\captionheight}\settototalheight{\captionheight}{\captionbox} \begin{tikzpicture}[remember picture,txt/.style={inner xsep=3pt}] \node[inner sep=0pt] (implem) { - \tikztitleboxbig{Plug-in implementation}{darkgreen}{ + \tikztitleboxbig{Plug-in\\implementation}{darkgreen}{ \begin{tikz-vbox}{plugin-text} \node[on chain, draw, txt,minimum height=\designheight](register){Register}; \node[on chain, draw, txt,minimum height=\designheight](options){Options}; @@ -556,12 +556,12 @@ directives which can be used to test plug-ins. Once the \texttt{run.config} has been configured, it becomes possible to get the output generated by the plug-in: -\begin{shell} +\begin{shell}[breaklines=true] \$ ptests.opt -show Env: <...> Command: -/usr/local/bin/frama-c.byte tests/hello/hello_test.c -check -hello 2>tests/hello/result/hello_test.err.log >tests/hello/result/hello_test.res.log +/usr/local/bin/frama-c.byte tests/hello/hello_test.c -check -hello 2>tests/hello/result/hello_test.err.log >tests/hello/result/hello_test.res.log [kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) [kernel] Parsing tests/hello/hello_test.c (with preprocessing) [hello] Hello, world! @@ -610,7 +610,7 @@ Let's now assume the plug-in is later erroneously modified as follows: where \texttt{Hello, world!} is incorrectly changed to \texttt{Hello world!}. Running the command: -\begin{shell} +\begin{shell}[breaklines=true] \$ make <...> \$ make tests diff --git a/doc/frama-c-book.cls b/doc/frama-c-book.cls index 2dce074dba3e88dfbdcbf4accf40649dc42ece9e..e2d476f9ae44f43b4c17f7d5099d33bb1fd0be9e 100644 --- a/doc/frama-c-book.cls +++ b/doc/frama-c-book.cls @@ -10,7 +10,6 @@ % -------------------------------------------------------------------------- \makeatletter \RequirePackage{kvoptions} -\RequirePackage{kvoptions-patch} \SetupKeyvalOptions{ family=framacbook, prefix=framacbook@, @@ -18,7 +17,7 @@ prefix=framacbook@, \RequirePackage{ifthen} \DeclareVoidOption{web}{\PassOptionsToPackage{colorlinks,urlcolor=blue}{hyperref}} \DeclareVoidOption{paper}{\PassOptionsToPackage{pdfborder=0 0 0}{hyperref}} -\DeclareStringOption[{version=4.0,modifier=by-sa}]{license} +\DeclareStringOption[{type=CC,version=4.0,modifier=by-sa}]{license} \DeclareStringOption[english]{lang} \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{report}} \PassOptionsToClass{a4paper,11pt,twoside,openright}{report} diff --git a/ptests/ptests.ml b/ptests/ptests.ml index e945f7923794f1bc819cbb5c5b36befa230546af..b8ac6adfa6d8d664e3dc23938619a1bca3348e7a 100644 --- a/ptests/ptests.ml +++ b/ptests/ptests.ml @@ -20,10 +20,6 @@ (* *) (**************************************************************************) -(** the options to launch the toplevel with if the test file is not - annotated with test options *) -let default_options = "-journal-disable -check" - let system = if Sys.os_type = "Win32" then fun f -> @@ -195,24 +191,6 @@ let opt_to_byte_options = let regex_cmxs = Str.regexp ("\\([^/]+\\)[.]cmxs\\($\\|[ \t]\\)") in fun options -> str_global_replace regex_cmxs "\\1.cmo\\2" options -let opt_to_byte cmd = - let opt_to_byte toplevel = - match string_del_suffix "frama-c" toplevel with - | Some path -> path ^ "frama-c.byte" - | None -> - match string_del_suffix "toplevel.opt" toplevel with - | Some path -> path ^ "toplevel.byte" - | None -> - match string_del_suffix "frama-c-gui" toplevel with - | Some path -> path ^ "frama-c-gui.byte" - | None -> - match string_del_suffix "viewer.opt" toplevel with - | Some path -> path ^ "viewer.byte" - | None -> toplevel - in - let cmdname, options = command_partition cmd in - (opt_to_byte cmdname) ^ (opt_to_byte_options options) - let output_unix_error (exn : exn) = match exn with | Unix.Unix_error (error, _function, arg) -> @@ -269,20 +247,11 @@ let do_cmp = ref (if Sys.os_type="Win32" then !do_diffs else "cmp -s") let do_make = ref "make" let n = ref 4 (* the level of parallelism *) -let suites = ref [] -(** options appended to toplevel for all tests *) -let additional_options = ref "" -(** options prepended to toplevel for all tests *) -let additional_options_pre = ref "" (** special configuration, with associated oracles *) let special_config = ref "" let do_error_code = ref false -let exclude_suites = ref [] - -let exclude s = exclude_suites := s :: !exclude_suites - let xunit = ref false let io_mutex = Mutex.create () @@ -294,71 +263,88 @@ let lock_fprintf f = let lock_printf s = lock_fprintf Format.std_formatter s let lock_eprintf s = lock_fprintf Format.err_formatter s +let suites = ref [] let make_test_suite s = suites := s :: !suites +let exclude_suites = ref [] +let exclude s = exclude_suites := s :: !exclude_suites + +let macro_post_options = ref "" (* value set to @PTEST_POST_OPTIONS@ macro *) +let macro_pre_options = ref "" (* value set to @PTEST_PRE_OPTIONS@ macro *) +let macro_options = ref "@PTEST_PRE_OPTIONS@ @PTEST_OPT@ @PTEST_POST_OPTIONS@" +let macro_default_options = ref "-journal-disable -check -no-autoload-plugins" + +let macro_frama_c_cmd = ref "@frama-c-exe@ @PTEST_DEFAULT_OPTIONS@" +let macro_frama_c = ref "@frama-c-exe@ @PTEST_DEFAULT_OPTIONS@ @PTEST_LOAD_OPTIONS@" +let default_toplevel = ref "@frama-c@" + (* Those variables are read from a ptests_config file *) +let toplevel_path = ref "" (* value set to @frama-c-exe@ macro *) let default_suites = ref [] -let toplevel_path = ref "" - -let change_toplevel_to_gui () = - let s = !toplevel_path in - match string_del_suffix "toplevel.opt" s with - | Some s -> toplevel_path := s ^ "viewer.opt" - | None -> - match string_del_suffix "toplevel.byte" s with - | Some s -> toplevel_path := s ^ "viewer.byte" - | None -> - match string_del_suffix "frama-c" s with - | Some s -> toplevel_path := s ^ "frama-c-gui" - | None -> - match string_del_suffix "frama-c.byte" s with - | Some s -> toplevel_path := s ^ "frama-c-gui.byte" - | None -> () - let () = - Unix.putenv "LC_ALL" "C" (* some oracles, especially in Jessie, depend on the - locale *) + Unix.putenv "LC_ALL" "C" (* for oracles that depend on the locale *) + let example_msg = Format.sprintf "@.@[<v 0>\ A test suite can be the name of a directory in ./tests or \ the path to a file.@ @ \ Directives of \"test_config[_<mode>]\" files:@ \ - COMMENT: <comment> @[<v 0># Just a comment line.@]@ \ - FILEREG: <regexp> @[<v 0># Ignores the files in suites whose name doesn't matche the pattern.@]@ \ - DONTRUN: @[<v 0># Ignores the file.@]@ \ + COMMENT: <comment> @[<v 0># Just a comment line.@]@ \ + FILEREG: <regexp> @[<v 0># Ignores the files in suites whose name doesn't matche the pattern.@]@ \ + DONTRUN: @[<v 0># Ignores the file.@]@ \ EXECNOW: ([LOG|BIN] <file>)+ <command> @[<v 0># Defines the command to execute to build a 'LOG' (textual) 'BIN' (binary) targets.@ \ # Note: the textual targets are compared to oracles.@]@ \ - MODULE: <module>... @[<v 0># Compile the module and adds the corresponding '-load-module' option to all sub-test commands.@]@ \ - LOG: <file>... @[<v 0># Defines targets built by the next sub-test command.@]@ \ - CMD: <command> @[<v 0># Defines the command to execute for all tests in order to get results to be compared to oracles.@]@ \ - OPT: <options> @[<v 0># Defines a sub-test using the 'CMD' definition: <command> <options>@]@ \ - STDOPT: +<extra> @[<v 0># Defines a sub-test and append the extra to the current option.@]@ \ - STDOPT: #<extra> @[<v 0># Defines a sub-test and prepend the extra to the current option.@]@ \ - EXIT: <number> @[<v 0># Defines the exit code required for the next sub-test commands.@]@ \ - FILTER: <cmd> @[<v 0># Performs a transformation on the test result files before the comparison from the oracles.@ \ + MODULE: <module>... @[<v 0># Compile the module and set the @PTEST_MODULE@ macro@]@ \ + PLUGIN: <plugin>... @[<v 0># Set the @PTEST_PLUGIN@ macro.@]@ \ + LOG: <file>... @[<v 0># Defines targets built by the next sub-test command.@]@ \ + CMD: <command> @[<v 0># Defines the command to execute for all tests in order to get results to be compared to oracles.@]@ \ + OPT: <options> @[<v 0># Defines a sub-test using the 'CMD' definition: <command> <options>@]@ \ + STDOPT: +<extra> @[<v 0># Defines a sub-test and append the extra to the current option.@]@ \ + STDOPT: #<extra> @[<v 0># Defines a sub-test and prepend the extra to the current option.@]@ \ + EXIT: <number> @[<v 0># Defines the exit code required for the next sub-test commands.@]@ \ + FILTER: <cmd> @[<v 0># Performs a transformation on the test result files before the comparison from the oracles.@ \ # The oracle will be compared from the standard output of the command: cat <test-output-file> | <cmd> .@ \ # Chaining multiple filter commands is possible by defining several FILTER directives.@ \ # An empty command drops the previous FILTER directives.@ \ # Note: in such a command, the @@PTEST_ORACLE@@ macro is set to the basename of the oracle.@ \ # This allows running a 'diff' command with the oracle of another test configuration:@ \ # FILTER: diff --new-file @@PTEST_DIR@@/oracle_configuration/@@PTEST_ORACLE@@ @]@ \ - TIMEOUT: <delay> @[<v 0># Set a timeout for all sub-test.@]@ \ - NOFRAMAC: @[<v 0># Drops previous sub-test definitions and considers that there is no defined default sub-test.@]@ \ - GCC: @[<v 0># Deprecated.@]@ \ - MACRO: <name> <def> @[<v 0># Set a definition to the macro @@<name>@@.@]@ \ + TIMEOUT: <delay> @[<v 0># Set a timeout for all sub-test.@]@ \ + NOFRAMAC: @[<v 0># Drops previous sub-test definitions and considers that there is no defined default sub-test.@]@ \ + GCC: @[<v 0># Deprecated.@]@ \ + MACRO: <name> <def> @[<v 0># Set a definition to the macro @@<name>@@.@]@ \ + @]@ \ + @[<v 1>\ + Default directive values:@ \ + FILEREG: %s@ \ + CMD: %s@ \ + EXIT: 0@ \ @]@ \ @[<v 1>\ - Some predefined macros can be used in test commands:@ \ - @@PTEST_DIR@@ # Dirname of the test file.@ \ - @@PTEST_FILE@@ # Substituted by the test filename.@ \ - @@PTEST_NAME@@ # Basename of the test file.@ \ - @@PTEST_NUMBER@@ # Test command number.@ \ - @@PTEST_CONFIG@@ # Test configuration suffix.@ \ - @@PTEST_RESULT@@ # Shorthand alias to @@PTEST_DIR@@/result@@PTEST_CONFIG@@ (the result directory dedicated to the tested configuration).@ \ - @@PTEST_ORACLE@@ # Basename of the current oracle file (macro only usable in FILTER directives).@ \ + Some predefined macros can be used in test commands:@ \ + @@PTEST_DIR@@ # Dirname of the test file.@ \ + @@PTEST_FILE@@ # Substituted by the test filename.@ \ + @@PTEST_NAME@@ # Basename of the test file.@ \ + @@PTEST_NUMBER@@ # Test command number.@ \ + @@PTEST_CONFIG@@ # Test configuration suffix.@ \ + @@PTEST_RESULT@@ # Shorthand alias to '@@PTEST_DIR@@/result@@PTEST_CONFIG@@' (the result directory dedicated to the tested configuration).@ \ + @@PTEST_ORACLE@@ # Basename of the current oracle file (macro only usable in FILTER directives).@ \ + @@PTEST_MODULE@@ # Current list of module defined by the MODULE directive.@ \ + @@PTEST_PLUGIN@@ # Current list of plugins defined by the PLUGIN directive.@ \ + @]@ \ + Other macros can only be used in test commands (CMD and EXECNOW directives):@ \ + @@PTEST_DEFAULT_OPTIONS@@ # The default option list: %s@ \ + @@PTEST_LOAD_MODULE@@ # The '-load-module' option related to the MODULE directive.@ \ + @@PTEST_LOAD_PLUGIN@@ # The '-load-module' option related to the PLUGIN directive.@ \ + @@PTEST_LOAD_OPTIONS@@ # Shorthand alias to '@@PTEST_LOAD_PLUGIN@@ @@PTEST_LOAD_MODULE@@' .@ \ + @@PTEST_OPTIONS@@ # The current list of options related to OPT and STDOPT directives (for CMD directives).@ \ + @@frama-c@@ # Shortcut defined as follow: %s@ \ + @@frama-c-cmd@@ # Shortcut defined as follow: %s@ \ + @@frama-c-exe@@ # set to the value of the 'TOPLEVEL_PATH' variable from './tests/ptests_config' file.@ \ + @]@ \ @[<v 1>\ Examples:@ \ ptests@ \ @@ -373,7 +359,11 @@ let example_msg = ptests -v -j 1 \ # to check the time taken by each test\ @]@ @]" -;; + test_file_regexp + !default_toplevel + !macro_default_options + !macro_frama_c + !macro_frama_c_cmd let umsg = "Usage: ptests [options] [names of test suites]";; @@ -419,13 +409,13 @@ let rec argspec = " Use native toplevel (default)"; "-config", Arg.Set_string special_config, " <name> Use special configuration and oracles"; - "-add-options", Arg.Set_string additional_options, + "-add-options", Arg.Set_string macro_post_options, "<options> Add additional options to be passed to the toplevels \ that will be launched. <options> are added after standard test options"; - "-add-options-pre", Arg.Set_string additional_options_pre, + "-add-options-pre", Arg.Set_string macro_pre_options, "<options> Add additional options to be passed to the toplevels \ that will be launched. <options> are added before standard test options."; - "-add-options-post", Arg.Set_string additional_options, + "-add-options-post", Arg.Set_string macro_post_options, "Synonym of -add-options"; "-exclude", Arg.String exclude, "<name> Exclude a test or a suite from the run"; @@ -535,7 +525,35 @@ let () = end (** Must be done after reading config *) -let () = if !behavior = Gui then change_toplevel_to_gui () +let () = + if !use_byte then begin + match string_del_suffix "frama-c" !toplevel_path with + | Some path -> toplevel_path := path ^ "frama-c.byte" + | None -> + match string_del_suffix "toplevel.opt" !toplevel_path with + | Some path -> toplevel_path := path ^ "toplevel.byte" + | None -> + match string_del_suffix "frama-c-gui" !toplevel_path with + | Some path -> toplevel_path := path ^ "frama-c-gui.byte" + | None -> + match string_del_suffix "viewer.opt" !toplevel_path with + | Some path -> toplevel_path := path ^ "viewer.byte" + | None -> () + end; + if !behavior = Gui then begin + match string_del_suffix "toplevel.opt" !toplevel_path with + | Some s -> toplevel_path := s ^ "viewer.opt" + | None -> + match string_del_suffix "toplevel.byte" !toplevel_path with + | Some s -> toplevel_path := s ^ "viewer.byte" + | None -> + match string_del_suffix "frama-c" !toplevel_path with + | Some s -> toplevel_path := s ^ "frama-c-gui" + | None -> + match string_del_suffix "frama-c.byte" !toplevel_path with + | Some s -> toplevel_path := s ^ "frama-c-gui.byte" + | None -> () + end (* redefine name if special configuration expected *) let redefine_name name = @@ -588,6 +606,12 @@ end = struct end +type does_expand = { + has_ptest_file : bool; + has_ptest_opt : bool; + has_frama_c_exe : bool; +} + module Macros = struct module StringMap = Map.Make (String) @@ -612,6 +636,9 @@ struct let macro_regex = Str.regexp "@\\([-A-Za-z_0-9]+\\)@" in fun macros s -> let has_ptest_file = ref false in + let has_ptest_opt = ref false in + let has_ptest_options = ref false in + let has_frama_c_exe = ref false in if !verbosity >= 3 then lock_printf "%% Expand: %s@." s; if !verbosity >= 4 then print_macros macros; let rec aux s = @@ -621,9 +648,14 @@ struct if Str.string_match macro_regex s 0 then begin let macro = Str.matched_group 1 s in try + (match macro with + | "PTEST_FILE" -> has_ptest_file := true + | "PTEST_OPT" -> has_ptest_opt := true + | "PTEST_OPTIONS" -> has_ptest_options := true + | "frama-c-exe" -> has_frama_c_exe := true + | _ -> ()); if !verbosity >= 4 then lock_printf "%% - macro is %s\n%!" macro; let replacement = find macro macros in - if String.(macro = "PTEST_FILE") then has_ptest_file := true; if !verbosity >= 3 then lock_printf "%% - replacement for %s is %s\n%!" macro replacement; aux replacement @@ -639,7 +671,10 @@ struct let r = aux s in Mutex.unlock str_mutex; if !verbosity >= 3 then lock_printf "%% Expansion result: %s@." r; - !has_ptest_file, r + { has_ptest_file= !has_ptest_file; + has_ptest_opt= !has_ptest_opt; + has_frama_c_exe= !has_frama_c_exe; + }, r with e -> lock_eprintf "Uncaught exception %s\n%!" (Printexc.to_string e); Mutex.unlock str_mutex; @@ -652,7 +687,10 @@ struct try find name macros with Not_found -> default let add_list l map = - List.fold_left (fun acc (k,v) -> add k v acc) map l + List.fold_left (fun acc (k,v) -> + if !verbosity >= 3 then + lock_printf "%% - Adds macro %s with definition %s@." k v; + add k v acc) map l let add_expand name def macros = add name (expand macros def) macros @@ -661,7 +699,6 @@ struct add name (get name macros ^ expand macros def) macros end - type execnow = { ex_cmd: string; (** command to launch *) @@ -748,9 +785,16 @@ end = struct let default_macros () = let l = [ - "frama-c", !toplevel_path; + "frama-c-exe", !toplevel_path; + "frama-c-cmd", !macro_frama_c_cmd; + "frama-c", !macro_frama_c; + "PTEST_DEFAULT_OPTIONS", !macro_default_options; + "PTEST_OPTIONS", !macro_options; + "PTEST_PRE_OPTIONS", !macro_pre_options; + "PTEST_POST_OPTIONS", !macro_post_options; "PTEST_MAKE_MODULE", "make -s"; - "PTEST_LOAD_MODULES", "" + "PTEST_MODULE", ""; + "PTEST_PLUGIN", ""; ] in Macros.add_list l Macros.empty @@ -761,8 +805,8 @@ end = struct dc_execnow = []; dc_filter = None ; dc_exit_code = None; - dc_default_toplevel = !toplevel_path; - dc_commands = [ { toplevel= !toplevel_path; opts=default_options; macros=Macros.empty; exit_code=None; logs= []; timeout= ""} ]; + dc_default_toplevel = !default_toplevel; + dc_commands = [ { toplevel= !default_toplevel; opts=""; macros=Macros.empty; exit_code=None; logs= []; timeout= ""} ]; dc_dont_run = false; dc_load_module = ""; dc_cmxs_module = StringSet.empty; @@ -850,7 +894,6 @@ end = struct (* preserve options ordering *) List.fold_right (fun x s -> s ^ " " ^ x) opts "" - (* how to process options *) let config_exec ~once ~file:_ dir s current = { current with @@ -875,33 +918,51 @@ end = struct current end - let set_load_modules deps macros = - let name = "PTEST_LOAD_MODULES" in - let def = String.concat "," deps in - if !verbosity >= 3 then - lock_printf "%% - Macro %s for -load-module with definition %s@." name def; - Macros.add_list [name, def] macros + let update_module s = + "@PTEST_DIR@/" ^ (Filename.remove_extension s) ^ (if !use_byte then ".cmo" else ".cmxs") let add_make_modules ~file dir deps current = let deps,current = List.fold_left (fun ((deps,curr) as acc) s -> + let s = update_module s in if StringSet.mem s curr.dc_cmxs_module then acc else - (s ^ " " ^ deps), + (deps ^ " " ^ s), { curr with dc_cmxs_module = StringSet.add s curr.dc_cmxs_module }) ("",current) deps in if String.(deps = "") then current - else + else begin let make_cmd = Macros.expand current.dc_macros "@PTEST_MAKE_MODULE@" in - config_exec ~once:true ~file dir (make_cmd ^ " " ^ deps) current + config_exec ~once:true ~file dir (make_cmd ^ deps) current + end + + let update_module_macros modules macros = + let def = String.concat "," modules in + let load_def = if String.(def = "") then "" else + "-load-module=" ^ (String.concat "," (List.map update_module modules)) + in + Macros.add_list [ "PTEST_MODULE", def ; + "PTEST_LOAD_MODULE", load_def ; + ] macros let config_module ~file dir s current = - let s = Macros.expand current.dc_macros s in - let deps = List.map (fun s -> "@PTEST_DIR@/" ^ (Filename.remove_extension s) ^ ".cmxs") - (str_split_list s) + let deps = str_split_list (Macros.expand current.dc_macros s) in + let current = { current with dc_macros = update_module_macros deps current.dc_macros } in + add_make_modules ~file dir deps current + + let update_plugin_macros plugins macros = + let def = String.concat "," plugins in + let load_def = if String.(def = "") then "" else + (* the option "-load-plugin" will be used in a future version for PLUGIN *) + "-load-module=" ^ def in - let current = add_make_modules ~file dir deps current in - { current with dc_macros = set_load_modules deps current.dc_macros } + Macros.add_list [ "PTEST_PLUGIN", def ; + "PTEST_LOAD_PLUGIN", load_def ; + ] macros + + let config_plugins ~file dir s current = + let deps = str_split_list (Macros.expand current.dc_macros s) in + { current with dc_macros = update_plugin_macros deps current.dc_macros } let config_options = [ "CMD", @@ -978,6 +1039,8 @@ end = struct "MODULE", config_module; + "PLUGIN", config_plugins; + "LOG", (fun ~file:_ _ s current -> { current with dc_default_log = s :: current.dc_default_log }); @@ -1217,21 +1280,49 @@ end = struct try Filename.chop_extension cmd.file with Invalid_argument _ -> cmd.file in + let ptest_file = Filename.sanitize ptest_file in + let ptest_load_plugin = Macros.get "PTEST_LOAD_PLUGIN" cmd.macros in + let ptest_load_module = Macros.get "PTEST_LOAD_MODULE" cmd.macros in let macros = [ "PTEST_CONFIG", ptest_config; "PTEST_DIR", SubDir.get cmd.directory; "PTEST_RESULT", SubDir.get cmd.directory ^ "/" ^ redefine_name "result"; - "PTEST_FILE", Filename.sanitize ptest_file; + "PTEST_FILE", ptest_file; "PTEST_NAME", ptest_name; "PTEST_NUMBER", string_of_int cmd.n; + "PTEST_OPT", cmd.options; + "PTEST_LOAD_OPTIONS", (String.concat " " + [ ptest_load_plugin ; + ptest_load_module ]) ] in let macros = Macros.add_list macros cmd.macros in let macros = Macros.add_defaults ~defaults macros in let process_macros s = Macros.expand macros s in + let toplevel = + let in_toplevel,toplevel= Macros.does_expand macros cmd.toplevel in + if not cmd.execnow then begin + let has_ptest_file, options = + if in_toplevel.has_ptest_opt then in_toplevel.has_ptest_file, [] + else + let in_option,options= Macros.does_expand macros cmd.options in + (in_option.has_ptest_file || in_toplevel.has_ptest_file), + (if in_toplevel.has_frama_c_exe then + [ process_macros "@PTEST_PRE_OPTIONS@" ; + options ; + process_macros "@PTEST_POST_OPTIONS@" ; + ] + else [ options ]) + in + String.concat " " (toplevel::(if has_ptest_file then options else ptest_file::options)) + end + else toplevel + in { cmd with macros; + toplevel; + options = ""; (* no more usable *) log_files = List.map process_macros cmd.log_files; filter = match cmd.filter with @@ -1239,45 +1330,12 @@ end = struct | Some filter -> Some (process_macros filter) } - let contains_frama_c_binary_name = - Str.regexp "[^( ]*\\(toplevel\\|viewer\\|frama-c-gui\\|frama-c[^-]\\).*" - - let frama_c_binary_name = - Str.regexp "\\([^ ]*\\(toplevel\\|viewer\\|frama-c-gui\\|frama-c\\)\\(\\.opt\\|\\.byte\\|\\.exe\\)?\\)" - let basic_command_string = fun command -> - let macros = command.macros in - let has_ptest_file_t, toplevel = - Macros.does_expand macros command.toplevel - in - let has_ptest_file_o, options = Macros.does_expand macros command.options in - let toplevel = if !use_byte then opt_to_byte toplevel else toplevel in - let toplevel, contains_frama_c_binary = - str_string_match_and_replace contains_frama_c_binary_name - frama_c_binary_name ~suffix:" -check" toplevel - in - let options = - if contains_frama_c_binary - then begin - let opt_modules = match Macros.expand macros - (Macros.get "PTEST_LOAD_MODULES" macros) with - | "" -> "" - | s -> "-load-module=" ^ s ^ "" - in - let opt_pre = Macros.expand macros !additional_options_pre in - let opt_post = Macros.expand macros !additional_options in - opt_modules ^ opt_pre ^ " " ^ options ^ " " ^ opt_post - end else options - in - let options = if !use_byte then opt_to_byte_options options else options in let raw_command = - if has_ptest_file_t || has_ptest_file_o || command.execnow then - toplevel ^ " " ^ options - else begin - let file = Filename.sanitize @@ get_ptest_file command in - toplevel ^ " " ^ file ^ " " ^ options - end + (* necessary until OPT are using direct -load-module option *) + if !use_byte then opt_to_byte_options command.toplevel + else command.toplevel in if command.timeout = "" then raw_command else "ulimit -t " ^ command.timeout ^ " && " ^ raw_command @@ -1521,12 +1579,7 @@ let do_command command = if !behavior <> Examine && not (!(execnow.ex_done) && execnow.ex_once) then begin remove_execnow_results execnow; - let cmd = - if !use_byte then - opt_to_byte execnow.ex_cmd - else - execnow.ex_cmd - in + let cmd = execnow.ex_cmd in if !verbosity >= 1 || !behavior = Show then begin lock_printf "%% launch %s@." cmd; end; diff --git a/src/plugins/aorai/tests/test_config b/src/plugins/aorai/tests/test_config index 68cdb87e735aee9026598e4f773117fd73492efd..c8feb6120b561b4eb45efc918a4a79b4f992de3d 100644 --- a/src/plugins/aorai/tests/test_config +++ b/src/plugins/aorai/tests/test_config @@ -1 +1,6 @@ +PLUGIN: aorai eva,from,scope report wp,rtegen + +COMMENT: work around to allow the loading of the aorai_test lib +MACRO: PTEST_DEFAULT_OPTIONS -check -journal-disable + MACRO: PROVE_OPTIONS diff --git a/src/plugins/aorai/tests/test_config_prove.in b/src/plugins/aorai/tests/test_config_prove.in index 8875fe9a4de64611beee7a96c8a56fda2ff051ef..2e96488c0c4f976ca795877722a23d9fe8f139ef 100644 --- a/src/plugins/aorai/tests/test_config_prove.in +++ b/src/plugins/aorai/tests/test_config_prove.in @@ -1 +1,6 @@ +PLUGIN: aorai eva,from,scope report wp,rtegen + +COMMENT: work around to allow the loading of the aorai_test lib +MACRO: PTEST_DEFAULT_OPTIONS -check -journal-disable + MACRO: PROVE_OPTIONS @AORAI_WP_SHARE@ -aorai-test-prove-aux-spec diff --git a/src/plugins/e-acsl/tests/test_config_ci.in b/src/plugins/e-acsl/tests/test_config_ci.in index 9b58fc5a4a9550952da1aaca405d6aec67e4899c..3f61a9a95f6c298c32d76b9bc59425a1aba9e566 100644 --- a/src/plugins/e-acsl/tests/test_config_ci.in +++ b/src/plugins/e-acsl/tests/test_config_ci.in @@ -1,9 +1,14 @@ MACRO: DEST @PTEST_RESULT@/gen_@PTEST_NAME@ MACRO: MACHDEP -machdep gcc_x86_64 MACRO: GLOBAL @MACHDEP@ -remove-unused-specified-functions -verbose 0 + MACRO: EACSL -e-acsl -e-acsl-share ./share/e-acsl -e-acsl-verbose 1 MACRO: EVA -eva -eva-no-alloc-returns-null -eva-no-results -eva-no-print -eva-warn-key libc:unsupported-spec=inactive + MACRO: EVENTUALLY -print -ocode @DEST@.c -load-script ./tests/print.cmxs + +PLUGIN: E_ACSL eva,scope,variadic rtegen + LOG: gen_@PTEST_NAME@.c OPT: @GLOBAL@ @EACSL@ -then-last @EVA@ @EVENTUALLY@ FILTER:@SEDCMD@ -e "s|[a-zA-Z/\\]\+frama_c_project_e-acsl_[a-z0-9]*|PROJECT_FILE|" -e "s|$FRAMAC_SHARE|FRAMAC_SHARE|g" -e "s|../../share|FRAMAC_SHARE|g" -e "s|./share/e-acsl|FRAMAC_SHARE/e-acsl|g" -e "s|share/e-acsl|FRAMAC_SHARE/e-acsl|g" diff --git a/src/plugins/e-acsl/tests/test_config_dev.in b/src/plugins/e-acsl/tests/test_config_dev.in index 045e0fac2c994cb0d4fe5edc094ed3ddfb5b5a62..6c7b2aca44643307f328535feb302172ef21c182 100644 --- a/src/plugins/e-acsl/tests/test_config_dev.in +++ b/src/plugins/e-acsl/tests/test_config_dev.in @@ -12,7 +12,9 @@ MACRO: ROOT_EACSL_GCC_MISC_OPTS -q -X COMMENT: Default options for the frama-c invocation MACRO: ROOT_EACSL_GCC_FC_EXTRA -journal-disable -verbose 0 -EXEC: LOG @EACSL_ERR@ if test "@ROOT_EACSL_GCC_ENABLE@" = "yes"; then ./scripts/e-acsl-gcc.sh -I @frama-c@ -c @ROOT_EACSL_GCC_MISC_OPTS@ --frama-c-extra="@ROOT_EACSL_GCC_FC_EXTRA@ @ROOT_EACSL_GCC_FC_EXTRA_EXT@" @ROOT_EACSL_GCC_OPTS_EXT@ -o @DEST@.gcc.c -O @DEST@ @PTEST_FILE@ > @PTEST_RESULT@/@OUT@ 2> @PTEST_RESULT@/@ERR@ && ./@DEST@.e-acsl 2>&1 1>/dev/null | @ROOT_EACSL_EXEC_FILTER@ > @PTEST_RESULT@/@EACSL_ERR@; fi +PLUGIN: E_ACSL eva,scope,variadic rtegen + +EXEC: LOG @EACSL_ERR@ if test "@ROOT_EACSL_GCC_ENABLE@" = "yes"; then ./scripts/e-acsl-gcc.sh -I @frama-c-exe@ -c @ROOT_EACSL_GCC_MISC_OPTS@ --frama-c-extra="@PTEST_DEFAULT_OPTIONS@ @PTEST_LOAD_OPTIONS@ @ROOT_EACSL_GCC_FC_EXTRA@ @ROOT_EACSL_GCC_FC_EXTRA_EXT@" @ROOT_EACSL_GCC_OPTS_EXT@ -o @DEST@.gcc.c -O @DEST@ @PTEST_FILE@ > @PTEST_RESULT@/@OUT@ 2> @PTEST_RESULT@/@ERR@ && ./@DEST@.e-acsl 2>&1 1>/dev/null | @ROOT_EACSL_EXEC_FILTER@ > @PTEST_RESULT@/@EACSL_ERR@; fi COMMENT: These next macros can be redefined in a test file COMMENT: Define the following macro in a test to pass extra options to the frama-c invocation diff --git a/src/plugins/instantiate/tests/test_config b/src/plugins/instantiate/tests/test_config new file mode 100644 index 0000000000000000000000000000000000000000..e76859ce46eb70cae21c0221ee19cde81dda11f4 --- /dev/null +++ b/src/plugins/instantiate/tests/test_config @@ -0,0 +1 @@ +PLUGIN: instantiate diff --git a/src/plugins/loop_analysis/tests/loop_analysis/with_value.i b/src/plugins/loop_analysis/tests/loop_analysis/with_value.i index b030fa5e58dbcbe8a8d388fcc49097265f53ec38..66a5ec6025be62fb11852a4cd88c80cab1d764e4 100644 --- a/src/plugins/loop_analysis/tests/loop_analysis/with_value.i +++ b/src/plugins/loop_analysis/tests/loop_analysis/with_value.i @@ -1,7 +1,7 @@ /*run.config -OPT: -no-autoload-plugins -load-module from,inout,loopanalysis,eva,scope -eva -eva-show-progress -then -loop +PLUGIN: from,inout,loopanalysis,eva,scope +OPT: -eva -eva-show-progress -then -loop */ - void f1(int n) { for (int i = 1; i < n+2; i++); // i IN [1..6] (6) } diff --git a/src/plugins/loop_analysis/tests/test_config b/src/plugins/loop_analysis/tests/test_config index 4d0023c27475cdf9b242f862679fa8375c351218..f5a7fe2c3073d7012157044a16ee50637344ba4e 100644 --- a/src/plugins/loop_analysis/tests/test_config +++ b/src/plugins/loop_analysis/tests/test_config @@ -1 +1,2 @@ -OPT: -no-autoload-plugins -load-module loopanalysis -loop +PLUGIN: loopanalysis +OPT: -loop diff --git a/src/plugins/markdown-report/tests/md/test_config b/src/plugins/markdown-report/tests/md/test_config index 2d99fda9914fe40e3d6dad849ead724f9a88ec2e..a6de95a18b6e6ac762b8988ba15d90f1dd4ac8d4 100644 --- a/src/plugins/markdown-report/tests/md/test_config +++ b/src/plugins/markdown-report/tests/md/test_config @@ -1,2 +1,3 @@ +PLUGIN: eva,inout,scope markdown_report CMD: @frama-c@ -eva @PTEST_FILE@ -mdr-gen md -mdr-date="now" -mdr-out @PTEST_DIR@/result/@PTEST_NAME@.@PTEST_NUMBER@.md LOG: @PTEST_NAME@.@PTEST_NUMBER@.md diff --git a/src/plugins/markdown-report/tests/sarif/cwe125.c b/src/plugins/markdown-report/tests/sarif/cwe125.c index 4e3013719a1b91a9d99f904c7fc30fc044683df5..be4e873fb8849e996300279cb3406d967de04147 100644 --- a/src/plugins/markdown-report/tests/sarif/cwe125.c +++ b/src/plugins/markdown-report/tests/sarif/cwe125.c @@ -4,8 +4,8 @@ EXECNOW: LOG @PTEST_NAME@.parse.log @frama-c@ @PTEST_FILE@ -save @PTEST_DIR@/res EXECNOW: LOG @PTEST_NAME@.eva.log @frama-c@ -load @PTEST_DIR@/result/@PTEST_NAME@_parse.sav -eva -save @PTEST_DIR@/result/@PTEST_NAME@_eva.sav > @PTEST_DIR@/result/@PTEST_NAME@.eva.log EXECNOW: LOG @PTEST_NAME@.sarif @frama-c@ -load @PTEST_DIR@/result/@PTEST_NAME@_eva.sav -then -mdr-out @PTEST_DIR@/result/@PTEST_NAME@.sarif -mdr-gen sarif -mdr-no-print-libc -mdr-sarif-deterministic */ -#include "__fc_builtin.h" +#include "__fc_builtin.h" #define LENGTH 10 int getValueFromArray(int *array, int len, int index) { diff --git a/src/plugins/markdown-report/tests/sarif/libc.c b/src/plugins/markdown-report/tests/sarif/libc.c index 2f7438beff35d307549bdbe6d896110fa98956c0..ebddde12484e96c3ce1921fe5432db3d83d87a5b 100644 --- a/src/plugins/markdown-report/tests/sarif/libc.c +++ b/src/plugins/markdown-report/tests/sarif/libc.c @@ -1,5 +1,5 @@ /* run.config - CMD: @frama-c@ @PTEST_FILE@ -no-autoload-plugins -load-module eva,from,scope,markdown_report -eva -eva-no-results -mdr-gen sarif -mdr-sarif-deterministic + CMD: @frama-c@ -eva -eva-no-results -mdr-gen sarif -mdr-sarif-deterministic LOG: with-libc.sarif OPT: -mdr-out @PTEST_DIR@/result/with-libc.sarif LOG: without-libc.sarif diff --git a/src/plugins/markdown-report/tests/sarif/oracle/cwe125.sarif b/src/plugins/markdown-report/tests/sarif/oracle/cwe125.sarif index 01038bb8a72d1d607ca386bebf1c5ed0289b8063..05cf14524c10a6fb740df19c593e92e62f0eb406 100644 --- a/src/plugins/markdown-report/tests/sarif/oracle/cwe125.sarif +++ b/src/plugins/markdown-report/tests/sarif/oracle/cwe125.sarif @@ -16,9 +16,11 @@ "invocations": [ { "commandLine": - "frama-c -check tests/sarif/cwe125.c -save tests/sarif/result/cwe125_parse.sav", + "frama-c -journal-disable -check -no-autoload-plugins -load-module=eva,from,scope,markdown_report tests/sarif/cwe125.c -save tests/sarif/result/cwe125_parse.sav", "arguments": [ - "-check", "tests/sarif/cwe125.c", "-save", + "-journal-disable", "-check", "-no-autoload-plugins", + "-load-module=eva,from,scope,markdown_report", + "tests/sarif/cwe125.c", "-save", "tests/sarif/result/cwe125_parse.sav" ], "exitCode": 0, @@ -26,21 +28,25 @@ }, { "commandLine": - "frama-c -check -load tests/sarif/result/cwe125_parse.sav -eva -save tests/sarif/result/cwe125_eva.sav", + "frama-c -journal-disable -check -no-autoload-plugins -load-module=eva,from,scope,markdown_report -load tests/sarif/result/cwe125_parse.sav -eva -save tests/sarif/result/cwe125_eva.sav", "arguments": [ - "-check", "-load", "tests/sarif/result/cwe125_parse.sav", "-eva", - "-save", "tests/sarif/result/cwe125_eva.sav" + "-journal-disable", "-check", "-no-autoload-plugins", + "-load-module=eva,from,scope,markdown_report", "-load", + "tests/sarif/result/cwe125_parse.sav", "-eva", "-save", + "tests/sarif/result/cwe125_eva.sav" ], "exitCode": 0, "executionSuccessful": true }, { "commandLine": - "frama-c -check -load tests/sarif/result/cwe125_eva.sav -then -mdr-out tests/sarif/result/cwe125.sarif -mdr-gen sarif -mdr-no-print-libc -mdr-sarif-deterministic", + "frama-c -journal-disable -check -no-autoload-plugins -load-module=eva,from,scope,markdown_report -load tests/sarif/result/cwe125_eva.sav -then -mdr-out tests/sarif/result/cwe125.sarif -mdr-gen sarif -mdr-no-print-libc -mdr-sarif-deterministic", "arguments": [ - "-check", "-load", "tests/sarif/result/cwe125_eva.sav", "-then", - "-mdr-out", "tests/sarif/result/cwe125.sarif", "-mdr-gen", - "sarif", "-mdr-no-print-libc", "-mdr-sarif-deterministic" + "-journal-disable", "-check", "-no-autoload-plugins", + "-load-module=eva,from,scope,markdown_report", "-load", + "tests/sarif/result/cwe125_eva.sav", "-then", "-mdr-out", + "tests/sarif/result/cwe125.sarif", "-mdr-gen", "sarif", + "-mdr-no-print-libc", "-mdr-sarif-deterministic" ], "exitCode": 0, "executionSuccessful": true diff --git a/src/plugins/markdown-report/tests/sarif/oracle/std_string.sarif b/src/plugins/markdown-report/tests/sarif/oracle/std_string.sarif index 92989f9ff24ed46cd969d699cbe957a4e091c99f..09463aba3706bc50f7c4ddc224a7f773ee9389a6 100644 --- a/src/plugins/markdown-report/tests/sarif/oracle/std_string.sarif +++ b/src/plugins/markdown-report/tests/sarif/oracle/std_string.sarif @@ -16,9 +16,11 @@ "invocations": [ { "commandLine": - "frama-c -check tests/sarif/std_string.c -eva -then -mdr-sarif-deterministic -mdr-gen sarif -mdr-out tests/sarif/result/std_string.sarif", + "frama-c -journal-disable -check -no-autoload-plugins -load-module=eva,from,scope,markdown_report tests/sarif/std_string.c -eva -then -mdr-sarif-deterministic -mdr-gen sarif -mdr-out tests/sarif/result/std_string.sarif", "arguments": [ - "-check", "tests/sarif/std_string.c", "-eva", "-then", + "-journal-disable", "-check", "-no-autoload-plugins", + "-load-module=eva,from,scope,markdown_report", + "tests/sarif/std_string.c", "-eva", "-then", "-mdr-sarif-deterministic", "-mdr-gen", "sarif", "-mdr-out", "tests/sarif/result/std_string.sarif" ], diff --git a/src/plugins/markdown-report/tests/sarif/oracle/with-libc.sarif b/src/plugins/markdown-report/tests/sarif/oracle/with-libc.sarif index 2e65770160b67d52666d872c32c3ccff177cf6d1..1c47d708f582d55b6f2214609000909f832b3abe 100644 --- a/src/plugins/markdown-report/tests/sarif/oracle/with-libc.sarif +++ b/src/plugins/markdown-report/tests/sarif/oracle/with-libc.sarif @@ -16,12 +16,12 @@ "invocations": [ { "commandLine": - "frama-c -check tests/sarif/libc.c -no-autoload-plugins -load-module eva,from,scope,markdown_report -eva -eva-no-results -mdr-gen sarif -mdr-sarif-deterministic -mdr-out tests/sarif/result/with-libc.sarif", + "frama-c -journal-disable -check -no-autoload-plugins -load-module=eva,from,scope,markdown_report -eva -eva-no-results -mdr-gen sarif -mdr-sarif-deterministic tests/sarif/libc.c -mdr-out tests/sarif/result/with-libc.sarif", "arguments": [ - "-check", "tests/sarif/libc.c", "-no-autoload-plugins", - "-load-module", "eva,from,scope,markdown_report", "-eva", + "-journal-disable", "-check", "-no-autoload-plugins", + "-load-module=eva,from,scope,markdown_report", "-eva", "-eva-no-results", "-mdr-gen", "sarif", - "-mdr-sarif-deterministic", "-mdr-out", + "-mdr-sarif-deterministic", "tests/sarif/libc.c", "-mdr-out", "tests/sarif/result/with-libc.sarif" ], "exitCode": 0, diff --git a/src/plugins/markdown-report/tests/sarif/oracle/without-libc.sarif b/src/plugins/markdown-report/tests/sarif/oracle/without-libc.sarif index b22b1bf8f4209a3f890c272cdee6d5470526ac48..0772f06e8dc221cd8bf486cbcd3a21702bf27055 100644 --- a/src/plugins/markdown-report/tests/sarif/oracle/without-libc.sarif +++ b/src/plugins/markdown-report/tests/sarif/oracle/without-libc.sarif @@ -16,12 +16,13 @@ "invocations": [ { "commandLine": - "frama-c -check tests/sarif/libc.c -no-autoload-plugins -load-module eva,from,scope,markdown_report -eva -eva-no-results -mdr-gen sarif -mdr-sarif-deterministic -mdr-no-print-libc -mdr-out tests/sarif/result/without-libc.sarif", + "frama-c -journal-disable -check -no-autoload-plugins -load-module=eva,from,scope,markdown_report -eva -eva-no-results -mdr-gen sarif -mdr-sarif-deterministic tests/sarif/libc.c -mdr-no-print-libc -mdr-out tests/sarif/result/without-libc.sarif", "arguments": [ - "-check", "tests/sarif/libc.c", "-no-autoload-plugins", - "-load-module", "eva,from,scope,markdown_report", "-eva", + "-journal-disable", "-check", "-no-autoload-plugins", + "-load-module=eva,from,scope,markdown_report", "-eva", "-eva-no-results", "-mdr-gen", "sarif", - "-mdr-sarif-deterministic", "-mdr-no-print-libc", "-mdr-out", + "-mdr-sarif-deterministic", "tests/sarif/libc.c", + "-mdr-no-print-libc", "-mdr-out", "tests/sarif/result/without-libc.sarif" ], "exitCode": 0, diff --git a/src/plugins/markdown-report/tests/test_config b/src/plugins/markdown-report/tests/test_config new file mode 100644 index 0000000000000000000000000000000000000000..d8bce8de28a2aa935d226e8561a3097808500d60 --- /dev/null +++ b/src/plugins/markdown-report/tests/test_config @@ -0,0 +1 @@ +PLUGIN: eva,from,scope markdown_report diff --git a/src/plugins/nonterm/tests/test_config b/src/plugins/nonterm/tests/test_config index 91f0e5ec1ff948b34ba561fc9d7369be7fd38b87..521ad6d1a0c2ee0cdd8963bbf7f80c5a0f35f524 100644 --- a/src/plugins/nonterm/tests/test_config +++ b/src/plugins/nonterm/tests/test_config @@ -1 +1,2 @@ -OPT: -no-autoload-plugins -load-module from,inout,nonterm,scope -eva -eva-show-progress -eva-msg-key=-summary -then -nonterm -nonterm-verbose 2 +PLUGIN: from,inout,nonterm,scope +OPT: -eva -eva-show-progress -eva-msg-key=-summary -then -nonterm -nonterm-verbose 2 diff --git a/src/plugins/report/tests/report/classify.c b/src/plugins/report/tests/report/classify.c index 59d10572d66174086765df608e8473c6ad2c2f62..53068d1fb7a6bb272020cde4a7cf821693cf6e5b 100644 --- a/src/plugins/report/tests/report/classify.c +++ b/src/plugins/report/tests/report/classify.c @@ -1,5 +1,6 @@ /* run.config - CMD: @frama-c@ -kernel-warn-key=annot-error=active -no-autoload-plugins -load-module wp,report -report-output @PTEST_RESULT@/classified.@PTEST_NUMBER@.json -wp -wp-msg-key shell + CMD: @frama-c@ -kernel-warn-key=annot-error=active -report-output @PTEST_RESULT@/classified.@PTEST_NUMBER@.json -wp -wp-msg-key shell +PLUGIN: wp,rtegen,report LOG: classified.@PTEST_NUMBER@.json OPT: -wp-prover qed -report-unclassified-untried REVIEW -then -report-classify EXIT: 1 @@ -18,7 +19,6 @@ EXIT: 1 int a ; - /*@ requires a >= 0 ; ensures a > 0 ; diff --git a/src/plugins/report/tests/report/csv.c b/src/plugins/report/tests/report/csv.c index 536cfb432f2702af8035011868cad8ee785095d9..c9e27daea85800e65c791ee988974205ca027585 100644 --- a/src/plugins/report/tests/report/csv.c +++ b/src/plugins/report/tests/report/csv.c @@ -1,10 +1,10 @@ /* run.config +PLUGIN: report from,inout,scope,eva LOG: csv.csv - OPT: -no-autoload-plugins -load-module from,inout,report,scope,eva -eva-warn-copy-indeterminate=-main4 -eva -eva-show-progress -eva-remove-redundant-alarms -eva-warn-key=alarm=inactive -then -report-csv @PTEST_RESULT@/csv.csv -report-no-proven -then -report-csv= -eva-warn-key=alarm -eva-slevel 1 + OPT: -eva-warn-copy-indeterminate=-main4 -eva -eva-show-progress -eva-remove-redundant-alarms -eva-warn-key=alarm=inactive -then -report-csv @PTEST_RESULT@/csv.csv -report-no-proven -then -report-csv= -eva-warn-key=alarm -eva-slevel 1 COMMENT: first, do an analysis without any message, but check that the .csv is complete. Then, redo the analysis with value warnings. slevel 1 is just there to force Value to restart */ volatile v; - void main1(int x) { int t[10]; int u[15]; diff --git a/src/plugins/report/tests/report/hyp.i b/src/plugins/report/tests/report/hyp.i index e8181b82a7f38bea8a94a56acc0a8545eee610df..8c448f2f02063d8dfc837607137387266ff1841f 100644 --- a/src/plugins/report/tests/report/hyp.i +++ b/src/plugins/report/tests/report/hyp.i @@ -1,6 +1,6 @@ /* run.config - OPT: -no-autoload-plugins -load-module report -load-script tests/report/one_hyp.ml - OPT: -no-autoload-plugins -load-module report -load-script tests/report/several_hyps.ml + OPT: -load-script tests/report/one_hyp.ml + OPT: -load-script tests/report/several_hyps.ml */ void f(void); diff --git a/src/plugins/report/tests/report/single.i b/src/plugins/report/tests/report/single.i index 5f152e86922de3c4d21e6dd15371cf24d9b75e89..ee9b1b4359d8283a9ec3f48769c6e35c9462127d 100644 --- a/src/plugins/report/tests/report/single.i +++ b/src/plugins/report/tests/report/single.i @@ -1,7 +1,7 @@ /* run.config - OPT: -no-autoload-plugins -load-module report -load-script tests/report/projectified_status.ml - OPT: -no-autoload-plugins -load-module report -load-script tests/report/no_hyp.ml - OPT: -no-autoload-plugins -load-module report -load-script tests/report/multi_emitters.ml + OPT: -load-script tests/report/projectified_status.ml + OPT: -load-script tests/report/no_hyp.ml + OPT: -load-script tests/report/multi_emitters.ml */ void main() { diff --git a/src/plugins/report/tests/test_config b/src/plugins/report/tests/test_config new file mode 100644 index 0000000000000000000000000000000000000000..3c86d70370368197bb9b50d59a1557c9e37bf46a --- /dev/null +++ b/src/plugins/report/tests/test_config @@ -0,0 +1 @@ +PLUGIN: report diff --git a/src/plugins/server/tests/batch/test_config b/src/plugins/server/tests/batch/test_config index 4addf96dff82842ab79ae170fda242244765a7c0..38b36108cbd35f2b835cf9811ca9d0af06f960ab 100644 --- a/src/plugins/server/tests/batch/test_config +++ b/src/plugins/server/tests/batch/test_config @@ -1,2 +1,3 @@ +PLUGIN: server LOG: @PTEST_NAME@.out.json -OPT: -no-autoload-plugins -load-module server -check -server-batch @PTEST_DIR@/@PTEST_NAME@.json -server-batch-output-dir @PTEST_RESULT@ -server-msg-key use-relative-filepath +OPT: -server-batch @PTEST_DIR@/@PTEST_NAME@.json -server-batch-output-dir @PTEST_RESULT@ -server-msg-key use-relative-filepath diff --git a/src/plugins/studia/tests/test_config b/src/plugins/studia/tests/test_config index dc79c97068c8125cbff6a916b7fed6d7b881d5f2..75c01a81568f5bd37820738e9a6fffd25798a21f 100644 --- a/src/plugins/studia/tests/test_config +++ b/src/plugins/studia/tests/test_config @@ -1 +1,2 @@ +PLUGIN: eva,inout,deps OPT: -eva -journal-disable -out -input -deps diff --git a/src/plugins/variadic/tests/known/print_libc.c b/src/plugins/variadic/tests/known/print_libc.c index 265018f2c74c6d406a2f0b2e28e6866fe3dc03af..a7df6ff263a8daff3f836fa14a1d98b4e2e585ea 100644 --- a/src/plugins/variadic/tests/known/print_libc.c +++ b/src/plugins/variadic/tests/known/print_libc.c @@ -1,6 +1,7 @@ /* run.config +PLUGIN: variadic LOG: print_libc.pretty.c - OPT: @PTEST_DIR@/empty.c -no-autoload-plugins -load-module variadic -no-print-libc -print -ocode @PTEST_DIR@/result/@PTEST_NAME@.pretty.c -then @PTEST_DIR@/result/@PTEST_NAME@.pretty.c + OPT: @PTEST_DIR@/empty.c -no-print-libc -print -ocode @PTEST_DIR@/result/@PTEST_NAME@.pretty.c -then @PTEST_DIR@/result/@PTEST_NAME@.pretty.c */ #include <stdio.h> diff --git a/src/plugins/variadic/tests/test_config b/src/plugins/variadic/tests/test_config index e076935b23463006f8f89ffcddb93f7f2748c691..e93c90a92be816e38e26da50679fb9e4a0a0fcb7 100644 --- a/src/plugins/variadic/tests/test_config +++ b/src/plugins/variadic/tests/test_config @@ -1 +1,2 @@ -OPT: -no-autoload-plugins -load-module from,inout,eva,variadic,scope -check -print -kernel-verbose 0 -variadic-verbose 2 -eva -eva-slevel 10 -eva-msg-key=-initial-state,-summary -eva-no-show-progress -eva-print +PLUGIN: variadic from,inout,eva,scope +OPT: -print -kernel-verbose 0 -variadic-verbose 2 -eva -eva-slevel 10 -eva-msg-key=-initial-state,-summary -eva-no-show-progress -eva-print diff --git a/src/plugins/wp/tests/test_config b/src/plugins/wp/tests/test_config index 51675fdbc52d819cf3c99c4480b3130bd0fa64f3..122bc50aadc0af5e1a21b2b2baf4703d6955ef59 100644 --- a/src/plugins/wp/tests/test_config +++ b/src/plugins/wp/tests/test_config @@ -1,2 +1,3 @@ -CMD: @frama-c@ -no-autoload-plugins -load-module wp -wp -wp-prover none -wp-print -wp-share ./share -wp-msg-key shell -wp-warn-key "pedantic-assigns=inactive" +PLUGIN: wp +CMD: @frama-c@ -wp -wp-prover none -wp-print -wp-share ./share -wp-msg-key shell -wp-warn-key "pedantic-assigns=inactive" OPT: diff --git a/src/plugins/wp/tests/test_config_qualif b/src/plugins/wp/tests/test_config_qualif index f5f56f99251f2a4100444ab7bb74b0abc2128e07..f0225eb3f9a0c31d90b77761394778c3a2268793 100644 --- a/src/plugins/wp/tests/test_config_qualif +++ b/src/plugins/wp/tests/test_config_qualif @@ -1,2 +1,3 @@ -CMD: @frama-c@ -no-autoload-plugins -load-module wp -wp -wp-par 1 -wp-share ./share -wp-msg-key shell -wp-warn-key pedantic-assigns=inactive -wp-report tests/qualif.report -wp-session @PTEST_DIR@/oracle@PTEST_CONFIG@/@PTEST_NAME@.@PTEST_NUMBER@.session -wp-cache-env -wp-cache replay @PTEST_FILE@ -wp-coq-timeout 120 +PLUGIN: wp +CMD: @frama-c@ -wp -wp-par 1 -wp-share ./share -wp-msg-key shell -wp-warn-key pedantic-assigns=inactive -wp-report tests/qualif.report -wp-session @PTEST_DIR@/oracle@PTEST_CONFIG@/@PTEST_NAME@.@PTEST_NUMBER@.session -wp-cache-env -wp-cache replay @PTEST_FILE@ -wp-coq-timeout 120 OPT: diff --git a/src/plugins/wp/tests/wp_acsl/checks.i b/src/plugins/wp/tests/wp_acsl/checks.i index f3fdcbfcab8f623e1c5393ae7e7b4b977300a6c2..c55cf4d5c8907db89f1cb70eb449041ace623a33 100644 --- a/src/plugins/wp/tests/wp_acsl/checks.i +++ b/src/plugins/wp/tests/wp_acsl/checks.i @@ -1,14 +1,14 @@ /* run.config - OPT: -eva -load-module scope,eva,report -then -report +PLUGIN: wp,rtegen,scope,eva,report + OPT: -then -eva -then -report +PLUGIN: wp,rtegen OPT: -wp-prop=@check OPT: -wp-prop=-@check */ /* run.config_qualif - OPT: -load-module report -wp-steps 5 -then -report +PLUGIN: wp,rtegen,report + OPT: -wp-steps 5 -then -report */ - -// note: eva and wp gives the same reporting - //@ axiomatic A { predicate P reads \nothing ; } void main() { //@check c1: P; @@ -17,3 +17,4 @@ void main() { //@assert a2: P; ; } +// note: eva and wp gives the same reporting diff --git a/src/plugins/wp/tests/wp_manual/manual.i b/src/plugins/wp/tests/wp_manual/manual.i index 11a04e0783ab7854b9dcb873766eaa739de19bfa..9f3afd5d3ae753eb86fa336712f033cf4b64a825 100644 --- a/src/plugins/wp/tests/wp_manual/manual.i +++ b/src/plugins/wp/tests/wp_manual/manual.i @@ -4,6 +4,7 @@ /* run.config_qualif OPT: -wp-msg-key shell @PTEST_DIR@/working_dir/swap.c @PTEST_DIR@/working_dir/swap1.h OPT: -wp-msg-key shell -wp-rte @PTEST_DIR@/working_dir/swap.c @PTEST_DIR@/working_dir/swap2.h - OPT: -load-module report -kernel-verbose 0 -wp-msg-key shell -wp-rte @PTEST_DIR@/working_dir/swap.c @PTEST_DIR@/working_dir/swap2.h -wp-verbose 0 -then -no-unicode -report +PLUGIN: wp,rtegen,report + OPT: -kernel-verbose 0 -wp-msg-key shell -wp-rte @PTEST_DIR@/working_dir/swap.c @PTEST_DIR@/working_dir/swap2.h -wp-verbose 0 -then -no-unicode -report */ void look_at_working_dir(void); diff --git a/src/plugins/wp/tests/wp_plugin/nosession.i b/src/plugins/wp/tests/wp_plugin/nosession.i index bb038ffd831fcb13d4ecbfeeef7154c92d576820..d1873a1222997221ed75c281b72bb3663ce61eeb 100644 --- a/src/plugins/wp/tests/wp_plugin/nosession.i +++ b/src/plugins/wp/tests/wp_plugin/nosession.i @@ -1,9 +1,9 @@ /* run.config DONTRUN: */ - /* run.config_qualif - CMD: @frama-c@ -no-autoload-plugins -load-module wp -wp-share ./share -wp-msg-key shell -wp-warn-key pedantic-assigns=inactive + CMD: @frama-c@ -wp-share ./share -wp-msg-key shell -wp-warn-key pedantic-assigns=inactive +PLUGIN: wp,rtegen OPT: -wp -wp-prover alt-ergo -wp-session shall_not_exists_dir -wp-cache offline -wp-no-cache-env COMMENT: The session directory shall not be created */ diff --git a/src/plugins/wp/tests/wp_plugin/removed.i b/src/plugins/wp/tests/wp_plugin/removed.i index 9a4824f460e97fc22bacd03aae895c0e4c6147eb..08ad6804231703160d824e710dd98a9abfbc47f0 100644 --- a/src/plugins/wp/tests/wp_plugin/removed.i +++ b/src/plugins/wp/tests/wp_plugin/removed.i @@ -1,7 +1,7 @@ /* run.config_qualif - OPT: -load-module eva,scope -no-wp -eva -eva-msg-key=-summary -then -wp -then -no-eva -warn-unsigned-overflow -wp +PLUGIN: wp,rtegen,eva,scope + OPT: -no-wp -eva -eva-msg-key=-summary -then -wp -then -no-eva -warn-unsigned-overflow -wp */ - /* run.config DONTRUN: */ diff --git a/src/plugins/wp/tests/wp_region/test_config b/src/plugins/wp/tests/wp_region/test_config index 57d4ae071a433f4d3cecca0d8a218c0557f02e6d..c85101d0b58d18ca145d6963a56e1163ad1a7a0e 100644 --- a/src/plugins/wp/tests/wp_region/test_config +++ b/src/plugins/wp/tests/wp_region/test_config @@ -1,3 +1,4 @@ -CMD: @frama-c@ -no-autoload-plugins -load-module wp +PLUGIN: wp,rtegen +CMD: @frama-c@ LOG: @PTEST_NAME@/region/job.dot OPT: -wp-prover none -wp-region -wp-msg-key dot,chunk,roots,garbled -wp-warn-key pedantic-assigns=inactive -wp-out @PTEST_DIR@/result/@PTEST_NAME@ -wp-fct job diff --git a/src/plugins/wp/tests/wp_usage/save_load.i b/src/plugins/wp/tests/wp_usage/save_load.i index 8e908e8b69636dbd586fb832035975253a0cb13f..72e3c2595a6d9d9bf219e0b22aa4cbe494b9cb4c 100644 --- a/src/plugins/wp/tests/wp_usage/save_load.i +++ b/src/plugins/wp/tests/wp_usage/save_load.i @@ -1,6 +1,6 @@ /* run.config - EXECNOW: LOG save_load.sav.res LOG save_load.sav.err BIN @PTEST_NAME@.sav @frama-c@ -no-autoload-plugins -load-module wp -wp-warn-key pedantic-assigns=inactive -wp-share ./share -wp -wp-print -wp-prover none @PTEST_FILE@ -save @PTEST_DIR@/@PTEST_NAME@.sav > @PTEST_DIR@/result/@PTEST_NAME@.sav.res 2> @PTEST_DIR@/result/@PTEST_NAME@.sav.err - CMD: @frama-c@ -no-autoload-plugins -load-module wp -load @PTEST_DIR@/@PTEST_NAME@.sav -wp-warn-key pedantic-assigns=inactive + EXECNOW: LOG save_load.sav.res LOG save_load.sav.err BIN @PTEST_NAME@.sav @frama-c@ -wp-warn-key pedantic-assigns=inactive -wp-share ./share -wp -wp-print -wp-prover none @PTEST_FILE@ -save @PTEST_DIR@/@PTEST_NAME@.sav > @PTEST_DIR@/result/@PTEST_NAME@.sav.res 2> @PTEST_DIR@/result/@PTEST_NAME@.sav.err + CMD: @frama-c@ -load @PTEST_DIR@/@PTEST_NAME@.sav -wp-warn-key pedantic-assigns=inactive OPT: -print OPT: -wp -wp-prover none -wp-print */ diff --git a/tests/builtins/big_local_array.i b/tests/builtins/big_local_array.i index 83bb0fda45a32a5472b6aed4986d7fd80fa2cc0b..7c0854e14ae028bfb36a286b0aff0c94f6139784 100644 --- a/tests/builtins/big_local_array.i +++ b/tests/builtins/big_local_array.i @@ -1,7 +1,9 @@ /* run.config* + PLUGIN: @EVA_PLUGINS@ report OPT: @EVA_OPTIONS@ -print -journal-disable -eva -report MODULE: big_local_array_script OPT: @EVA_OPTIONS@ -then-on prj -print -report + PLUGIN: @EVA_PLUGINS@ MODULE: OPT: @EVA_OPTIONS@ -print -journal-disable -no-initialized-padding-locals -eva */ @@ -12,7 +14,7 @@ struct S { }; int main () { - struct S x[32] = + struct S x[32] = { [0] = { .a = { 1,2,3 }, .b = { [5] = 5, 6, 7 }}, [3] = { 0,1,2,3,.b = { [17]=17 } } }; diff --git a/tests/builtins/test_config b/tests/builtins/test_config index 365fdc8d48cbda0c83335a388b0cf9b0d7ceb848..0264f96531357bbcf6c3f754e378dae60f5d84b8 100644 --- a/tests/builtins/test_config +++ b/tests/builtins/test_config @@ -1,3 +1,4 @@ MACRO: EVA_OPTIONS @EVA_OPTIONS@ -eva-msg-key malloc -eva-warn-key malloc:weak=feedback -eva-no-alloc-returns-null -MACRO: EVA_CONFIG @EVA_OPTIONS@ -no-autoload-plugins -load-module from,inout,eva,scope,variadic -machdep x86_32 -OPT: -eva @EVA_CONFIG@ -journal-disable -out -input -deps +MACRO: EVA_CONFIG @EVA_OPTIONS@ -machdep x86_32 +PLUGIN: @EVA_PLUGINS@ +OPT: -eva @EVA_CONFIG@ -out -input -deps diff --git a/tests/callgraph/issue_55_iter_over_unregistered_function.i b/tests/callgraph/issue_55_iter_over_unregistered_function.i index a39e29e042e8c876ef5338610289c83d56478cd0..535d2f3c5494e545651504c2b5e5e0bf88018e1c 100644 --- a/tests/callgraph/issue_55_iter_over_unregistered_function.i +++ b/tests/callgraph/issue_55_iter_over_unregistered_function.i @@ -1,8 +1,8 @@ /* run.config +PLUGIN: @PTEST_PLUGIN@ eva,scope,inout COMMENT: Test call to Callgraph.Uses.iter_on_callers/callees (through Inout) OPT: -inout */ - /*@ assigns *p \from x; */ extern void f(int x, int *p); diff --git a/tests/callgraph/no_fp_unsound_warning.i b/tests/callgraph/no_fp_unsound_warning.i index f841a6e1821b5c00be834118f3cd6a8594a9c59f..dcb0da94e41ae1c1c33a964b1015767b78cb163b 100644 --- a/tests/callgraph/no_fp_unsound_warning.i +++ b/tests/callgraph/no_fp_unsound_warning.i @@ -1,8 +1,8 @@ /* run.config +PLUGIN: @PTEST_PLUGIN@ eva,scope,inout COMMENT: Test that callgraph users are warned about -cg-no-function-pointers OPT: -cg-function-pointers -out OPT: -cg-no-function-pointers -out */ - void main() { } diff --git a/tests/callgraph/test_config b/tests/callgraph/test_config new file mode 100644 index 0000000000000000000000000000000000000000..0757d9602b453e52bac8b869d4f07371c66d6a89 --- /dev/null +++ b/tests/callgraph/test_config @@ -0,0 +1,5 @@ +PLUGIN: callgraph +STDOPT: + +# COMMENT: Directive to add in your test file when using STDOPT: +# COMMENT: PLUGIN: @PTEST_PLUGIN@ @EVA_PLUGINS@ diff --git a/tests/compliance/test_config b/tests/compliance/test_config new file mode 100644 index 0000000000000000000000000000000000000000..2454128362a6b8b71db649b6d45f3baf2b6df496 --- /dev/null +++ b/tests/compliance/test_config @@ -0,0 +1 @@ +PLUGIN: diff --git a/tests/constant_propagation/bts117.c b/tests/constant_propagation/bts117.c index 420cd12e426c82096ca8e4d57efc742b1e5258c8..5d0662f5a3382c3daa5aa7ce45acb44717853194 100644 --- a/tests/constant_propagation/bts117.c +++ b/tests/constant_propagation/bts117.c @@ -1,9 +1,13 @@ /* run.config -OPT: -journal-disable -print -OPT: -journal-disable -semantic-const-folding @EVA_OPTIONS@ -OPT: -journal-disable -sparecode-analysis @EVA_OPTIONS@ +PLUGIN: + OPT: -print +PLUGIN: @CONSTANT_PROPAGATION_PLUGINS@ + OPT: -semantic-const-folding @EVA_OPTIONS@ +PLUGIN: @PTEST_PLUGIN@ sparecode + OPT: -sparecode-analysis @EVA_OPTIONS@ */ + int main1 (void) { int r ; if (1) r = 0; else r = 2; @@ -15,6 +19,7 @@ int main2 (void){ if (r) r = 0; else r = 2; return r; } + int main (void) { int x1 = main1(); int x2 = main2(); diff --git a/tests/constant_propagation/const_propagate.c b/tests/constant_propagation/const_propagate.c index 064fee49c0ef0e892a9850a3d8acc80e410265bb..2e5e3f728eb889020c6c3f66a94155cfb7eecb2b 100644 --- a/tests/constant_propagation/const_propagate.c +++ b/tests/constant_propagation/const_propagate.c @@ -1,9 +1,9 @@ /* run.config - OPT: -eva @EVA_OPTIONS@ -deps -out -input -scf -journal-disable - OPT: -scf @EVA_OPTIONS@ -cast-from-constant -semantic-const-fold add3 -main init -journal-disable +PLUGIN: @CONSTANT_PROPAGATION_PLUGINS@ from inout + OPT: -eva @EVA_OPTIONS@ -deps -out -input -scf + OPT: -scf @EVA_OPTIONS@ -main init -journal-disable -cast-from-constant -semantic-const-fold add3 */ -int x,y,z; -int TAB[10]; +int x,y,z, TAB[10]; struct st { int a, b ; } s1, s2; typedef struct st ST ; void test_struct (void) { diff --git a/tests/constant_propagation/oracle/bts117.1.res.oracle b/tests/constant_propagation/oracle/bts117.1.res.oracle index d496d1cea9692624bbb6b2c2f995932ef05c64d9..a918171fe0348838a78e2a483c3ee8dc38bc022a 100644 --- a/tests/constant_propagation/oracle/bts117.1.res.oracle +++ b/tests/constant_propagation/oracle/bts117.1.res.oracle @@ -6,11 +6,11 @@ [eva:initial-state] Values of globals at initialization [eva] computing for function main1 <- main. - Called from tests/constant_propagation/bts117.c:19. + Called from tests/constant_propagation/bts117.c:24. [eva] Recording results for main1 [eva] Done for function main1 [eva] computing for function main2 <- main. - Called from tests/constant_propagation/bts117.c:20. + Called from tests/constant_propagation/bts117.c:25. [eva] Recording results for main2 [eva] Done for function main2 [eva] Recording results for main diff --git a/tests/constant_propagation/oracle/bts117.2.res.oracle b/tests/constant_propagation/oracle/bts117.2.res.oracle index c4fe5b334c660df8b4797674fe3eb150bf073a10..493c47fa83c80699c7fe64a78162c6f389e49e39 100644 --- a/tests/constant_propagation/oracle/bts117.2.res.oracle +++ b/tests/constant_propagation/oracle/bts117.2.res.oracle @@ -6,11 +6,11 @@ [eva:initial-state] Values of globals at initialization [eva] computing for function main1 <- main. - Called from tests/constant_propagation/bts117.c:19. + Called from tests/constant_propagation/bts117.c:24. [eva] Recording results for main1 [eva] Done for function main1 [eva] computing for function main2 <- main. - Called from tests/constant_propagation/bts117.c:20. + Called from tests/constant_propagation/bts117.c:25. [eva] Recording results for main2 [eva] Done for function main2 [eva] Recording results for main diff --git a/tests/constant_propagation/test_config b/tests/constant_propagation/test_config index c9ce20f05d9b350fd5d065e1d08f26e53fc065b6..b3a8965ab1afefa926424d9f4730c5832a90b05a 100644 --- a/tests/constant_propagation/test_config +++ b/tests/constant_propagation/test_config @@ -1 +1,3 @@ +MACRO: CONSTANT_PROPAGATION_PLUGINS constant_propagation eva,scope +PLUGIN: @CONSTANT_PROPAGATION_PLUGINS@ OPT: -journal-disable -scf @EVA_OPTIONS@ -machdep x86_32 diff --git a/tests/dynamic/test_config b/tests/dynamic/test_config new file mode 100644 index 0000000000000000000000000000000000000000..2454128362a6b8b71db649b6d45f3baf2b6df496 --- /dev/null +++ b/tests/dynamic/test_config @@ -0,0 +1 @@ +PLUGIN: diff --git a/tests/float/absorb.c b/tests/float/absorb.c index a71117b1674d5f6ba2b6dc97aeacd836c6f275cd..dbc2c9be16eb08e8623adacb43484cee5e14f4b2 100644 --- a/tests/float/absorb.c +++ b/tests/float/absorb.c @@ -1,16 +1,16 @@ /* run.config COMMENT: run.config is intentionally not-* - EXECNOW: BIN absorb.sav LOG absorb_sav.res LOG absorb_sav.err FRAMAC_PLUGIN=tests/.empty @frama-c@ -journal-disable -save @PTEST_DIR@/result/absorb.sav @PTEST_FILE@ > @PTEST_DIR@/result/absorb_sav.res 2> @PTEST_DIR@/result/absorb_sav.err - EXECNOW: BIN absorb.sav2 LOG absorb_sav2.res LOG absorb_sav2.err @frama-c@ -load @PTEST_DIR@/result/absorb.sav -eva @EVA_CONFIG@ -journal-disable -float-hex -save @PTEST_DIR@/result/absorb.sav2 > @PTEST_DIR@/result/absorb_sav2.res 2> @PTEST_DIR@/result/absorb_sav2.err +PLUGIN: + EXECNOW: BIN absorb.sav LOG absorb_sav.res LOG absorb_sav.err @frama-c@ -save @PTEST_DIR@/result/absorb.sav @PTEST_FILE@ > @PTEST_DIR@/result/absorb_sav.res 2> @PTEST_DIR@/result/absorb_sav.err +PLUGIN: @EVA_PLUGINS@ + EXECNOW: BIN absorb.sav2 LOG absorb_sav2.res LOG absorb_sav2.err @frama-c@ -load @PTEST_DIR@/result/absorb.sav -eva @EVA_CONFIG@ -float-hex -save @PTEST_DIR@/result/absorb.sav2 > @PTEST_DIR@/result/absorb_sav2.res 2> @PTEST_DIR@/result/absorb_sav2.err OPT: -load @PTEST_DIR@/result/absorb.sav2 -deps -out -input */ /* run.config* DONTRUN: */ #include "__fc_builtin.h" - float x = 1.0, y = 0.0, z, t, min_f, min_fl, den; - void main() { long long b = Frama_C_interval(-2000000001, 2000000001); b = b * b; diff --git a/tests/impact/test_config b/tests/impact/test_config index c449d18f602ef2fe815b38e0f2cdc3d467e1c815..953d2049ccde9dd0f40d5b3d195c5e3eb371b070 100644 --- a/tests/impact/test_config +++ b/tests/impact/test_config @@ -1 +1,2 @@ -OPT: -journal-disable -impact-print @EVA_OPTIONS@ +PLUGIN: @EVA_PLUGINS@ impact +OPT: -impact-print @EVA_OPTIONS@ diff --git a/tests/jcdb/jcdb.c b/tests/jcdb/jcdb.c index 13af9552975e857f6e062cd3068b82e98d9a33bd..c35dc80b7bfb0406a6653fcd8891cb2d7063b2a4 100644 --- a/tests/jcdb/jcdb.c +++ b/tests/jcdb/jcdb.c @@ -5,7 +5,7 @@ OPT: -json-compilation-database @PTEST_DIR@/with_arguments.json -no-autoload-plugins MODULE: EXECNOW: LOG list_files.res LOG list_files.err share/analysis-scripts/list_files.py @PTEST_DIR@/compile_commands_working.json > @PTEST_DIR@/result/list_files.res 2> @PTEST_DIR@/result/list_files.err - EXECNOW: LOG logic-pp-include.res LOG logic-pp-include.err @frama-c@ -json-compilation-database @PTEST_DIR@/logic-pp-include @PTEST_DIR@/logic-pp-include/no-stdio.c -print -no-autoload-plugins > @PTEST_DIR@/result/logic-pp-include.res 2> @PTEST_DIR@/result/logic-pp-include.err + EXECNOW: LOG logic-pp-include.res LOG logic-pp-include.err @frama-c@ -json-compilation-database @PTEST_DIR@/logic-pp-include @PTEST_DIR@/logic-pp-include/no-stdio.c -print > @PTEST_DIR@/result/logic-pp-include.res 2> @PTEST_DIR@/result/logic-pp-include.err */ #include <stdio.h> diff --git a/tests/jcdb/test_config b/tests/jcdb/test_config new file mode 100644 index 0000000000000000000000000000000000000000..2454128362a6b8b71db649b6d45f3baf2b6df496 --- /dev/null +++ b/tests/jcdb/test_config @@ -0,0 +1 @@ +PLUGIN: diff --git a/tests/journal/intra.i b/tests/journal/intra.i index 71676ee94fde86777dcac52dfb32ac462dbeba74..274b87c862bf5786beffcb180565eb82d3ddda93 100644 --- a/tests/journal/intra.i +++ b/tests/journal/intra.i @@ -1,5 +1,6 @@ /* run.config - MODULE: @PTEST_NAME@ + PLUGIN: @EVA_PLUGINS@ sparecode + MODULE: @PTEST_NAME@ EXECNOW: BIN intra_journal.ml @frama-c@ -eva-show-progress -journal-enable -journal-name tests/journal/result/intra_journal.ml @PTEST_DIR@/@PTEST_NAME@.i > /dev/null 2> /dev/null CMD: @frama-c@ OPT: -load-script tests/journal/result/intra_journal -journal-disable @@ -12,7 +13,6 @@ * slicing analysis removes statement having variables with * prefix "spare_" and "any_" */ - int G; int tmp (int a) { diff --git a/tests/journal/test_config b/tests/journal/test_config new file mode 100644 index 0000000000000000000000000000000000000000..5b4e9a8bdd2b7dce5f1cd2d18923ecc5f7519b56 --- /dev/null +++ b/tests/journal/test_config @@ -0,0 +1,2 @@ +PLUGIN: +STDOPT: diff --git a/tests/libc/coverage.c b/tests/libc/coverage.c index 342d79af62894d72d30d5a03c8e9c215baf37229..8f628572259c0844ff92bea687695c87757e4cd1 100644 --- a/tests/libc/coverage.c +++ b/tests/libc/coverage.c @@ -1,7 +1,7 @@ /* run.config* +PLUGIN: @PTEST_PLUGIN@ metrics OPT: -eva-no-builtins-auto @EVA_OPTIONS@ share/libc/string.c -eva -eva-slevel 6 -metrics-eva-cover -then -metrics-libc */ - #include "string.h" void main() { diff --git a/tests/libc/fc_libc.c b/tests/libc/fc_libc.c index a4bf6fc2786257dcf7d1e638573ac0698478a1a6..c222f77c8033529b9f07801298f9ab474d5dc783 100644 --- a/tests/libc/fc_libc.c +++ b/tests/libc/fc_libc.c @@ -1,6 +1,7 @@ /* run.config* + PLUGIN: @EVA_PLUGINS@ metrics MODULE: check_libc_naming_conventions, check_const - OPT: -print -cpp-extra-args='-nostdinc -Ishare/libc' -metrics -metrics-libc -load-module metrics -eva @EVA_CONFIG@ -then -lib-entry -no-print -metrics-no-libc + OPT: -print -cpp-extra-args='-nostdinc -Ishare/libc' -metrics -metrics-libc -eva @EVA_CONFIG@ -then -lib-entry -no-print -metrics-no-libc MODULE: OPT: -print -print-libc -machdep x86_32 MODULE: check_parsing_individual_headers @@ -152,7 +153,6 @@ #include "utmpx.h" #include "wchar.h" #include "wctype.h" - void main() { /* The variables below must be const; otherwise the preconditions and the assigns/from of some functions will not match */ diff --git a/tests/libc/oracle/fc_libc.0.res.oracle b/tests/libc/oracle/fc_libc.0.res.oracle index 2cb4208b4b8543fdc33daf7ffb990420c03315a2..e52007ddeeca10602d81f5e6517071ed5aa43d5f 100644 --- a/tests/libc/oracle/fc_libc.0.res.oracle +++ b/tests/libc/oracle/fc_libc.0.res.oracle @@ -1,7 +1,4 @@ [kernel] Parsing tests/libc/fc_libc.c (with preprocessing) -[kernel] :0: Warning: unnamed requires -[kernel] share/libc/sys/socket.h:451: Warning: - clause with '\initialized' must contain name 'initialization' [eva] Analyzing a complete application starting at main [eva] Computing initial state [eva] Initial state computed @@ -201,6 +198,9 @@ Function call = 98 Pointer dereferencing = 161 Cyclomatic complexity = 299 +[kernel] :0: Warning: unnamed requires +[kernel] share/libc/sys/socket.h:451: Warning: + clause with '\initialized' must contain name 'initialization' /* Generated by Frama-C */ #include "__fc_builtin.c" #include "__fc_builtin.h" diff --git a/tests/libc/test_config b/tests/libc/test_config index cf5c5bb18359425ba47e530ac8c06c936f24d7e8..069a4888d38f81544d6797ecad65e1e1070e3198 100644 --- a/tests/libc/test_config +++ b/tests/libc/test_config @@ -1 +1,2 @@ +PLUGIN: @EVA_PLUGINS@ OPT: -eva @EVA_CONFIG@ -cpp-extra-args='-nostdinc -Ishare/libc' diff --git a/tests/metrics/test_config b/tests/metrics/test_config index de6ff0089d8e793cb118e41d7cf4db48f4dfd3d6..b528a2dd90282d3f8f7655c1da9554b390f84662 100644 --- a/tests/metrics/test_config +++ b/tests/metrics/test_config @@ -1 +1,2 @@ -OPT: -no-autoload-plugins -load-module metrics,scope -metrics +PLUGIN: metrics,scope +OPT: -metrics diff --git a/tests/misc/audit.c b/tests/misc/audit.c index 094beded8fc1e0ed11bd9f1b31a8ffd134e870de..40a9e6b9f1b3e13039be451f6027cd259e0c055e 100644 --- a/tests/misc/audit.c +++ b/tests/misc/audit.c @@ -1,8 +1,8 @@ /* run.config +PLUGIN: @EVA_PLUGINS@ LOG: audit-out.json STDOPT: #"-audit-check @PTEST_DIR@/audit-in.json -audit-prepare @PTEST_RESULT@/audit-out.json -kernel-warn-key audit=active" */ - #include "audit_included.h" #include "audit_included_but_not_listed.h" diff --git a/tests/misc/booleans.i b/tests/misc/booleans.i index 08cbc6cbd89c770448b363d827b620424faf1faa..224a393116b2932b4f29075fbb35705e354b3ca6 100644 --- a/tests/misc/booleans.i +++ b/tests/misc/booleans.i @@ -1,6 +1,8 @@ /*run.config +PLUGIN: @EVA_PLUGINS@ OPT: -eva -print */ + int main (void) { int x = 42; /*@ check (boolean)x == 17; */ diff --git a/tests/misc/bts0541.c b/tests/misc/bts0541.c index 6bbabaaa30cadda796dfc7d69e53074fb4058368..a8dd2eebf5d3e4c744ef72e7eabf100b2c8241e2 100644 --- a/tests/misc/bts0541.c +++ b/tests/misc/bts0541.c @@ -1,7 +1,7 @@ /* run.config +PLUGIN: @EVA_PLUGINS@ OPT: -pp-annot -cpp-extra-args="-I./share/libc" -pp-annot -eva @EVA_CONFIG@ */ - #include <stdbool.h> #include <stdint.h> #include <stdlib.h> diff --git a/tests/misc/bts1201.i b/tests/misc/bts1201.i index dda5727fbcd2222c91dcb711d8d75098afd97857..9f4c1d1506d94d42df8fd76ff4a6317639b94298 100644 --- a/tests/misc/bts1201.i +++ b/tests/misc/bts1201.i @@ -1,8 +1,11 @@ /* run.config + PLUGIN: @EVA_PLUGINS@ MODULE: @PTEST_NAME@ OPT: -eva-verbose 2 -print */ -void main() { //@ assert \true; + +void main() { + //@ assert \true; } void main2() { diff --git a/tests/misc/bts1347.i b/tests/misc/bts1347.i index 2cb8c609baa0dfb5d506d7f24694408d1363f62e..f4f0441da5a6fc233463f202e6e1f8dee7175314 100644 --- a/tests/misc/bts1347.i +++ b/tests/misc/bts1347.i @@ -1,6 +1,13 @@ /* run.config + PLUGIN: @EVA_PLUGINS@ report MODULE: @PTEST_NAME@ OPT: @EVA_OPTIONS@ -then -report */ -int f(int *x) { return *x; } -int g(int *x) { return *(x++); } + +int f(int *x) { + return *x; +} + +int g(int *x) { + return *(x++); +} diff --git a/tests/misc/change_main.i b/tests/misc/change_main.i index 374658f38ce3c2823acdbe90a413a4b8e17deb55..49e603b43cdee671bad07b0047e70732f9dfa92e 100644 --- a/tests/misc/change_main.i +++ b/tests/misc/change_main.i @@ -1,6 +1,6 @@ /* run.config* + PLUGIN: @EVA_PLUGINS@ MODULE: @PTEST_NAME@ OPT: -eva -main f -then-on change_main -main g -eva */ - int f(int x) { return x; } diff --git a/tests/misc/char_ampamp.c b/tests/misc/char_ampamp.c index aaa77b01d752f75c7487100266144678c766550b..ca336e60b0d24d6dfb1619fbc1e9f1d20f2b08eb 100644 --- a/tests/misc/char_ampamp.c +++ b/tests/misc/char_ampamp.c @@ -1,3 +1,8 @@ +/* run.config + PLUGIN: @EVA_PLUGINS@ +STDOPT: +*/ + char c=1; int y; diff --git a/tests/misc/ensures.i b/tests/misc/ensures.i index 88df7e52cee82769532184b9ea77ea1b73d27644..876ba0671a7ffc352a9dab685b156152be9df7f2 100644 --- a/tests/misc/ensures.i +++ b/tests/misc/ensures.i @@ -1,6 +1,11 @@ /* run.config +PLUGIN: @EVA_PLUGINS@ MODULE: @PTEST_NAME@ OPT: */ + + //@ ensures *p==1; -void main(int * p){ *p = 0; } +void main(int * p) { + *p = 0; +} diff --git a/tests/misc/fam_with_init.i b/tests/misc/fam_with_init.i index d7e8c5463b4468718e08c0388284d369ee08f7d5..72e16cb63b0b2b40dd11e64a6053fae0e56a64ca 100644 --- a/tests/misc/fam_with_init.i +++ b/tests/misc/fam_with_init.i @@ -1,7 +1,7 @@ /* run.config -STDOPT: +"-print" +PLUGIN: @EVA_PLUGINS@ + STDOPT: +"-print" */ - struct s { int a; char data[]; // FAM diff --git a/tests/misc/function_ptr_alignof.i b/tests/misc/function_ptr_alignof.i index 1f4b218d0bfd2f02b8e5d3e152eb1177fb4ddf75..deda78cccb535cb02e4055951cb34c12529b6f1f 100644 --- a/tests/misc/function_ptr_alignof.i +++ b/tests/misc/function_ptr_alignof.i @@ -1,9 +1,9 @@ /* run.config* +PLUGIN: @EVA_PLUGINS@ EXIT: 1 STDOPT: */ - void f(void) { } int main(void) diff --git a/tests/misc/function_ptr_lvalue_1.i b/tests/misc/function_ptr_lvalue_1.i index b48ddbd09f7be85d24a13b2f581addd5a8a8fbae..3659b05aae347cae3631c649ef9e531f4d060b19 100644 --- a/tests/misc/function_ptr_lvalue_1.i +++ b/tests/misc/function_ptr_lvalue_1.i @@ -1,9 +1,9 @@ /* run.config* +PLUGIN: @EVA_PLUGINS@ EXIT: 1 STDOPT: */ - void f(void) {} int main() diff --git a/tests/misc/function_ptr_lvalue_2.i b/tests/misc/function_ptr_lvalue_2.i index 333304c449f7728babafb3871439aa92bae480a3..a8e98ba4c41961fd96211487a1f5e990c9893a57 100644 --- a/tests/misc/function_ptr_lvalue_2.i +++ b/tests/misc/function_ptr_lvalue_2.i @@ -1,8 +1,8 @@ /* run.config* +PLUGIN: @EVA_PLUGINS@ EXIT: 1 STDOPT: */ - void f(void) {} int main() diff --git a/tests/misc/function_ptr_sizeof.i b/tests/misc/function_ptr_sizeof.i index 36558b8808f5835948fe3bbe775dda0db517ad39..da0a6d2b8aebecdd7093f6127f843562df543e36 100644 --- a/tests/misc/function_ptr_sizeof.i +++ b/tests/misc/function_ptr_sizeof.i @@ -1,9 +1,9 @@ /* run.config* +PLUGIN: @EVA_PLUGINS@ EXIT: 1 STDOPT: */ - void f(void) { } int main(void) diff --git a/tests/misc/issue109.i b/tests/misc/issue109.i index 4a6e475212ebf15e558888920e4c8e3600bc84fa..60b50daf93dd13b0f37f6a83faf4d3b9fcac4a2a 100644 --- a/tests/misc/issue109.i +++ b/tests/misc/issue109.i @@ -1,11 +1,17 @@ /* run.config + PLUGIN: @EVA_PLUGINS@ MODULE: @PTEST_NAME@ OPT: -eva @EVA_CONFIG@ -eva-slevel-function main:10 */ + void main() { + int i, j = 0; + for (i=0; i<10; i++) { j++; } + //@ assert i == j; + } diff --git a/tests/misc/log-file.i b/tests/misc/log-file.i index 498e4e0654ef12260798992d0ea71fcc66f73fd8..09a77cc462d57fc1678e9f1263f47bbdbece0569 100644 --- a/tests/misc/log-file.i +++ b/tests/misc/log-file.i @@ -6,6 +6,7 @@ LOG: log-file-value-all.txt LOG: log-file-value-default.txt LOG: plugin-log-all.txt +PLUGIN: @EVA_PLUGINS@ STDOPT: #"-kernel-log w:@PTEST_RESULT@/log-file-kernel-warnings.txt,r:@PTEST_RESULT@/log-file-kernel-results.txt -eva-log f:@PTEST_RESULT@/log-file-feedback.txt,afewr:@PTEST_RESULT@/log-file-value-all.txt -eva-log :@PTEST_RESULT@/log-file-value-default.txt -then -kernel-log f:@PTEST_RESULT@/log-file-feedback.txt" MODULE: plugin_log OPT: -kernel-msg-key foo-category -kernel-log=a:@PTEST_RESULT@/plugin-log-all.txt diff --git a/tests/misc/log_selfrec.i b/tests/misc/log_selfrec.i index e7a647f6e453e88b9a63b844539f12d718e9cfbe..46e688a3e3faf0fd1daada2cb54d82835b03a70a 100644 --- a/tests/misc/log_selfrec.i +++ b/tests/misc/log_selfrec.i @@ -1,5 +1,5 @@ /* run.config* - +PLUGIN: report EXIT: 1 OPT: -foobar -report-unclassified-error jazz */ diff --git a/tests/misc/log_twice.i b/tests/misc/log_twice.i index 06a2ebcceeb318a91580fa7d4fb7bab6b922a72f..5a43817b8e49604810dddffb5a010641b79962ae 100644 --- a/tests/misc/log_twice.i +++ b/tests/misc/log_twice.i @@ -1,8 +1,8 @@ /* run.config + PLUGIN: @EVA_PLUGINS@ MODULE: @PTEST_NAME@ OPT: @EVA_CONFIG@ */ - int* f() { int x; return &x; diff --git a/tests/misc/long_ident.c b/tests/misc/long_ident.c index e0ebb31439ac8df4662bbc3106d93d620ff94a9b..58136fd73650e7c2a9171d569c57cf3a9c6e1600 100644 --- a/tests/misc/long_ident.c +++ b/tests/misc/long_ident.c @@ -1,4 +1,5 @@ /* run.config +PLUGIN: obfuscator OPT: -obfuscate -journal-disable */ diff --git a/tests/misc/obfuscate.c b/tests/misc/obfuscate.c index f993479d0f78d337c57155e20dd3cddbf06a6228..0fb0323afb82e831788ae82bd525b0934b68d17f 100644 --- a/tests/misc/obfuscate.c +++ b/tests/misc/obfuscate.c @@ -1,4 +1,5 @@ /* run.config +PLUGIN: obfuscator OPT: -obfuscate */ diff --git a/tests/misc/oracle/audit-out.json b/tests/misc/oracle/audit-out.json index b7d55c35d2b08c652da0b87c0ac9f06e6d2abe66..8c4217e9169d95b3ceb869fb45f8a1fd96ec8877 100644 --- a/tests/misc/oracle/audit-out.json +++ b/tests/misc/oracle/audit-out.json @@ -69,7 +69,7 @@ } }, "sources": { - "tests/misc/audit.c": "aec49f030fcf92bc135bd75e7088194f", + "tests/misc/audit.c": "f94ce1c8f5e5911260931783495e2c88", "tests/misc/audit_included.h": "c2cc488143a476f69cf2ed04c3439e6e", "tests/misc/audit_included_but_not_listed.h": "c2cc488143a476f69cf2ed04c3439e6e" diff --git a/tests/misc/oracle/audit.res.oracle b/tests/misc/oracle/audit.res.oracle index 40464f54b363d2da4daa36ed357da2364c3f944e..6894ada7dc21fb8274b4aa5db6dd57ce025f0ecd 100644 --- a/tests/misc/oracle/audit.res.oracle +++ b/tests/misc/oracle/audit.res.oracle @@ -1,5 +1,5 @@ [kernel:audit] Warning: - different hashes for tests/misc/audit.c: got aec49f030fcf92bc135bd75e7088194f, expected 01010101010101010101010101010101 + different hashes for tests/misc/audit.c: got f94ce1c8f5e5911260931783495e2c88, expected 01010101010101010101010101010101 [kernel:audit] Warning: different hashes for tests/misc/audit_included_but_not_listed.h: got c2cc488143a476f69cf2ed04c3439e6e, expected <none> (not in list) [kernel:audit] Warning: diff --git a/tests/misc/oracle/booleans.res.oracle b/tests/misc/oracle/booleans.res.oracle index 8f7927c6bceb80d83a27026a4ecd2ad4e9c7862b..fbf91d58dadbc18ce9f145ce98f9aaa7d2edc5e3 100644 --- a/tests/misc/oracle/booleans.res.oracle +++ b/tests/misc/oracle/booleans.res.oracle @@ -4,7 +4,7 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva:alarm] tests/misc/booleans.i:7: Warning: check got status invalid. +[eva:alarm] tests/misc/booleans.i:9: Warning: check got status invalid. [eva] done for function main [eva] ====== VALUES COMPUTED ====== [eva:final-states] Values at end of function main: diff --git a/tests/misc/oracle/bts1201.res.oracle b/tests/misc/oracle/bts1201.res.oracle index 5d683d1decf911024bb296418d7fb0ea6661b50a..312abde0a4dbef5bb0cce723708e27bb0d10f80b 100644 --- a/tests/misc/oracle/bts1201.res.oracle +++ b/tests/misc/oracle/bts1201.res.oracle @@ -4,7 +4,7 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva] tests/misc/bts1201.i:5: assertion got status valid. +[eva] tests/misc/bts1201.i:8: assertion got status valid. [eva] done for function main [eva:summary] ====== ANALYSIS SUMMARY ====== ---------------------------------------------------------------------------- diff --git a/tests/misc/oracle/bts1347.res.oracle b/tests/misc/oracle/bts1347.res.oracle index 63b1624064934b9b4fb599dc919fbe8c4e922b4e..bd052d2107e24b757eecbc4a414c8824ad152de7 100644 --- a/tests/misc/oracle/bts1347.res.oracle +++ b/tests/misc/oracle/bts1347.res.oracle @@ -4,7 +4,7 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva:alarm] tests/misc/bts1347.i:5: Warning: +[eva:alarm] tests/misc/bts1347.i:8: Warning: out of bounds read. assert \valid_read(x); [eva] Recording results for f [eva] done for function f @@ -13,7 +13,7 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva:alarm] tests/misc/bts1347.i:6: Warning: +[eva:alarm] tests/misc/bts1347.i:12: Warning: out of bounds read. assert \valid_read(tmp); (tmp from x++) [eva] Recording results for g @@ -24,22 +24,22 @@ --- Properties of Function 'f' -------------------------------------------------------------------------------- -[ Dead ] Assertion 'emitter' (file tests/misc/bts1347.i, line 5) +[ Dead ] Assertion 'emitter' (file tests/misc/bts1347.i, line 8) Locally valid, but unreachable. By Eva because: - - Unreachable return (file tests/misc/bts1347.i, line 5) -[Unreachable] Unreachable return (file tests/misc/bts1347.i, line 5) + - Unreachable return (file tests/misc/bts1347.i, line 8) +[Unreachable] Unreachable return (file tests/misc/bts1347.i, line 8) by Eva. -------------------------------------------------------------------------------- --- Properties of Function 'g' -------------------------------------------------------------------------------- -[ - ] Assertion 'Eva,mem_access' (file tests/misc/bts1347.i, line 6) +[ - ] Assertion 'Eva,mem_access' (file tests/misc/bts1347.i, line 12) tried with Eva. -[ Partial ] Assertion 'emitter' (file tests/misc/bts1347.i, line 6) +[ Partial ] Assertion 'emitter' (file tests/misc/bts1347.i, line 12) By emitter, with pending: - - Assertion 'Eva,mem_access' (file tests/misc/bts1347.i, line 6) + - Assertion 'Eva,mem_access' (file tests/misc/bts1347.i, line 12) -------------------------------------------------------------------------------- --- Status Report Summary @@ -55,9 +55,9 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva:alarm] tests/misc/bts1347.i:5: Warning: +[eva:alarm] tests/misc/bts1347.i:8: Warning: out of bounds read. assert \valid_read(x); -[eva] tests/misc/bts1347.i:5: assertion 'emitter' got status valid. +[eva] tests/misc/bts1347.i:8: assertion 'emitter' got status valid. [eva] Recording results for f [eva] done for function f [eva] Analyzing an incomplete application starting at g @@ -65,9 +65,9 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva:alarm] tests/misc/bts1347.i:6: Warning: +[eva:alarm] tests/misc/bts1347.i:12: Warning: out of bounds read. assert \valid_read(tmp); (tmp from x++) -[eva] tests/misc/bts1347.i:6: assertion 'emitter' got status valid. +[eva] tests/misc/bts1347.i:12: assertion 'emitter' got status valid. [eva] Recording results for g [eva] done for function g diff --git a/tests/misc/oracle/char_ampamp.res.oracle b/tests/misc/oracle/char_ampamp.res.oracle index e48fc08714ecef939dbe64b842387547d45fee89..9b826050d9f6813368d462f3cbcf42717a2a6068 100644 --- a/tests/misc/oracle/char_ampamp.res.oracle +++ b/tests/misc/oracle/char_ampamp.res.oracle @@ -6,8 +6,8 @@ c ∈ {1} y ∈ {0} [eva] computing for function g <- main. - Called from tests/misc/char_ampamp.c:12. -[eva] tests/misc/char_ampamp.c:6: Frama_C_show_each_x: {1} + Called from tests/misc/char_ampamp.c:17. +[eva] tests/misc/char_ampamp.c:11: Frama_C_show_each_x: {1} [eva] Recording results for g [eva] Done for function g [eva] Recording results for main diff --git a/tests/misc/oracle/ensures.res.oracle b/tests/misc/oracle/ensures.res.oracle index ee0832cdeffc1cc003c4ae54db0a7947af527c57..395d3e8484bed83286957dc88b9227ac3313e961 100644 --- a/tests/misc/oracle/ensures.res.oracle +++ b/tests/misc/oracle/ensures.res.oracle @@ -4,7 +4,7 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva:alarm] tests/misc/ensures.i:5: Warning: +[eva:alarm] tests/misc/ensures.i:8: Warning: function main: postcondition got status invalid. [eva] done for function main [eva:summary] ====== ANALYSIS SUMMARY ====== diff --git a/tests/misc/oracle/issue109.res.oracle b/tests/misc/oracle/issue109.res.oracle index 6282ea4acd8c628f4af05e21d7bda570ddfb96c3..b31581fd4bb2e915ffde47bdaafa44636ea3b54b 100644 --- a/tests/misc/oracle/issue109.res.oracle +++ b/tests/misc/oracle/issue109.res.oracle @@ -4,7 +4,7 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva] tests/misc/issue109.i:10: assertion got status valid. +[eva] tests/misc/issue109.i:15: assertion got status valid. [eva] Recording results for main [eva] done for function main [eva] ====== VALUES COMPUTED ====== @@ -17,7 +17,7 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva] tests/misc/issue109.i:10: assertion got status valid. +[eva] tests/misc/issue109.i:15: assertion got status valid. [eva] Recording results for main [eva] done for function main [eva] ====== VALUES COMPUTED ====== diff --git a/tests/misc/oracle/well_typed_alarm.res.oracle b/tests/misc/oracle/well_typed_alarm.res.oracle index cff9cdaaa88971d0ae07d576c88835d8e353efe0..5eaf869164e05b944de3f4d17b8ca5c8cc1947d5 100644 --- a/tests/misc/oracle/well_typed_alarm.res.oracle +++ b/tests/misc/oracle/well_typed_alarm.res.oracle @@ -4,7 +4,7 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva:alarm] tests/misc/well_typed_alarm.i:11: Warning: +[eva:alarm] tests/misc/well_typed_alarm.i:16: Warning: pointer comparison. assert \pointer_comparable((void *)p, (void *)q); [eva] done for function main [eva:summary] ====== ANALYSIS SUMMARY ====== diff --git a/tests/misc/pragma-pack.c b/tests/misc/pragma-pack.c index b2e44f3f65464fb533c965f48beb09ce1d9be20a..0eda8ce2f0b4ba0a2e56bab74f6477e2ea5780b4 100644 --- a/tests/misc/pragma-pack.c +++ b/tests/misc/pragma-pack.c @@ -1,9 +1,9 @@ /*run.config + PLUGIN: @EVA_PLUGINS@ STDOPT: +"-machdep gcc_x86_64 -kernel-msg-key typing:pragma" STDOPT: +"-machdep gcc_x86_32" STDOPT: +"-machdep msvc_x86_64" */ - #include "pragma-pack-utils.h" #include <stdint.h> diff --git a/tests/misc/pragma_pack_zero.c b/tests/misc/pragma_pack_zero.c index 22f956bd3c37c453f011aee30726b8f443dfd79e..52c5a87ad91f6edc44b368af7a0119cd9402e5e6 100644 --- a/tests/misc/pragma_pack_zero.c +++ b/tests/misc/pragma_pack_zero.c @@ -1,4 +1,5 @@ /* run.config +PLUGIN: @EVA_PLUGINS@ STDOPT: +"-machdep gcc_x86_64" STDOPT: +"-machdep msvc_x86_64" */ @@ -7,7 +8,6 @@ // In GCC, its current (undocumented) behavior is equivalent to #pragma pack(), // that is, disable packing (reset to default). We emulate this behavior, // but with a warning. - #include "pragma-pack-utils.h" #include <stdint.h> diff --git a/tests/misc/test_config b/tests/misc/test_config index 111c347883729eb88f73d71774c9496d687e21fb..2cfb7e2f9204e5c904f80f601742facf6608faaa 100644 --- a/tests/misc/test_config +++ b/tests/misc/test_config @@ -1,2 +1,7 @@ +PLUGIN: MODULE: global_decl_loc MODULE: +STDOPT: + +# COMMENT: Directive to add in your test file when using STDOPT: +# COMMENT: PLUGIN: @EVA_PLUGINS@ diff --git a/tests/misc/well_typed_alarm.i b/tests/misc/well_typed_alarm.i index 11ac1cd00a1cd0e5ec6f93c00a59b6e0e3ecc00c..dcbe3dacc09f3599f32413e4ae8537b6c61b33b2 100644 --- a/tests/misc/well_typed_alarm.i +++ b/tests/misc/well_typed_alarm.i @@ -1,13 +1,19 @@ /* run.config* + PLUGIN: @EVA_PLUGINS@ MODULE: @PTEST_NAME@ OPT: */ + int main(int c) { + int x = 0; int y = 0; + int *p = &x; int *q = &y; + if (c) q = &x; if (p<=q) x++; + return *q; } diff --git a/tests/misc/widen_hints.c b/tests/misc/widen_hints.c index fca1b6e7e6ef953b698c6d2fa04bee2193bd889c..0148d513d8cad7072b213dc38041fa8d3a85163e 100644 --- a/tests/misc/widen_hints.c +++ b/tests/misc/widen_hints.c @@ -1,4 +1,5 @@ /* run.config +PLUGIN: @EVA_PLUGINS@ EXIT:1 OPT: -eva @EVA_CONFIG@ -cpp-extra-args=-DSYNTAX_ERRORS -kernel-warn-key=annot-error=active OPT: -eva @EVA_CONFIG@ -cpp-extra-args=-DNONCONST @@ -7,7 +8,6 @@ OPT: -eva @EVA_CONFIG@ -cpp-extra-args=-DALLGLOBAL -eva-msg-key widen-hints */ #define N 2 - const int x = 9; int not_const = 42; // cannot be used as widen hint diff --git a/tests/misc/widen_hints2.c b/tests/misc/widen_hints2.c index bc457535df6b9a0d18e9f93e5a1767dbbaad438d..9d35092bfb98ff4599952dc315eac04772ee74de 100644 --- a/tests/misc/widen_hints2.c +++ b/tests/misc/widen_hints2.c @@ -1,8 +1,8 @@ /* run.config + PLUGIN: @EVA_PLUGINS@ STDOPT: #"-eva-msg-key widen-hints" OPT: -print */ - #include <stdlib.h> #define N 2 diff --git a/tests/misc/widen_hints_float.c b/tests/misc/widen_hints_float.c index a01f0a357842a423528cc508dfc39663b307f0a8..13326812adfc4ab8d1637b3955172fc71a77cdff 100644 --- a/tests/misc/widen_hints_float.c +++ b/tests/misc/widen_hints_float.c @@ -1,8 +1,8 @@ /* run.config* + PLUGIN: @EVA_PLUGINS@ STDOPT: #"-eva-subdivide-non-linear 20" */ - #include "__fc_builtin.h" #include <math.h> diff --git a/tests/misc/wstring_phase6.c b/tests/misc/wstring_phase6.c index f9884778c87c760721d9a3f9616e909abe1f9ff0..c364cd912c972d11721d70b0295354cd5e22d3b5 100644 --- a/tests/misc/wstring_phase6.c +++ b/tests/misc/wstring_phase6.c @@ -1,9 +1,9 @@ /* run.config +PLUGIN: variadic MODULE: @PTEST_NAME@ OPT: -journal-disable -print -variadic-no-translation */ #include <stdio.h> - // See http://stackoverflow.com/questions/18102502/mixing-wide-and-narrow-string-literals-in-c int main(){ printf( "%s\n", "123" "456" ); diff --git a/tests/occurrence/test_config b/tests/occurrence/test_config index 5e291a6ae016a6564af7152faf5f6ea67f58a94f..54290ebd2d68ef9aecc5959967d39d46a61ec28b 100644 --- a/tests/occurrence/test_config +++ b/tests/occurrence/test_config @@ -1 +1,2 @@ -STDOPT: +"-load-module" +"occurrence" -"-eva" -"-out" -"-input" -"-deps" +"-occurrence-verbose 1" +PLUGIN: eva,scope occurrence +STDOPT: -"-eva" -"-out" -"-input" -"-deps" +"-occurrence-verbose 1" diff --git a/tests/pdg/bts1194.c b/tests/pdg/bts1194.c index baa829837c3a54216aac8310f110bc0ee53fb35d..37d50ee5443a96ae718e5d645d5540edaea18da3 100644 --- a/tests/pdg/bts1194.c +++ b/tests/pdg/bts1194.c @@ -1,7 +1,7 @@ /* run.config +PLUGIN: @EVA_PLUGINS@ pdg slicing STDOPT: +"-eva -inout -pdg -calldeps -deps -then -slice-return main -then-last -print @EVA_OPTIONS@" */ - int Y, X; volatile v; diff --git a/tests/pdg/test_config b/tests/pdg/test_config index d9d741191d10ade715f1080b42b4a421d0d5e4c1..1f84f4645e5d2c1d56c903c01d91046a298c11c2 100644 --- a/tests/pdg/test_config +++ b/tests/pdg/test_config @@ -1 +1,2 @@ -OPT: -journal-disable @EVA_OPTIONS@ -pdg-print -pdg-verbose 2 +PLUGIN: @EVA_PLUGINS@ pdg +OPT: @EVA_OPTIONS@ -pdg-print -pdg-verbose 2 diff --git a/tests/pretty_printing/test_config b/tests/pretty_printing/test_config index c43ca10542958476406623d6a34d4049fce20852..3ef00bad562303349e568b77920e4499cd980972 100644 --- a/tests/pretty_printing/test_config +++ b/tests/pretty_printing/test_config @@ -1,5 +1,6 @@ COMMENT: this directory is meant to test the parser and pretty-printer COMMENT: the default option checks that pretty-printed code can be merged COMMENT: with the original one +PLUGIN: CMD: FRAMAC_PLUGIN=tests/.empty @frama-c@ -OPT: @PTEST_FILE@ -print -journal-disable -check -then -ocode @PTEST_DIR@/result/@PTEST_NAME@.c -print -then @PTEST_DIR@/result/@PTEST_NAME@.c @PTEST_FILE@ -ocode="" -print +OPT: @PTEST_FILE@ -print -then -ocode @PTEST_DIR@/result/@PTEST_NAME@.c -print -then @PTEST_DIR@/result/@PTEST_NAME@.c @PTEST_FILE@ -ocode="" -print diff --git a/tests/rte/oracle/unspecified_sequence.res.oracle b/tests/rte/oracle/unspecified_sequence.res.oracle index 3df3256fe5fa9550c8fbe3a96a7c7e8522fd9561..2d9f1c127532b318461b9faaeb99c1befaf198b5 100644 --- a/tests/rte/oracle/unspecified_sequence.res.oracle +++ b/tests/rte/oracle/unspecified_sequence.res.oracle @@ -4,15 +4,15 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization t[0..9] ∈ {0} -[eva:alarm] tests/rte/unspecified_sequence.i:7: Warning: +[eva:alarm] tests/rte/unspecified_sequence.i:12: Warning: function main: precondition got status unknown. [eva] computing for function f <- main. - Called from tests/rte/unspecified_sequence.i:10. + Called from tests/rte/unspecified_sequence.i:15. [eva] Recording results for f [eva] Done for function f -[eva] tests/rte/unspecified_sequence.i:11: Reusing old results for call to f +[eva] tests/rte/unspecified_sequence.i:16: Reusing old results for call to f [eva] computing for function f <- main. - Called from tests/rte/unspecified_sequence.i:11. + Called from tests/rte/unspecified_sequence.i:16. [eva] Recording results for f [eva] Done for function f [eva] Recording results for main diff --git a/tests/rte/test_config b/tests/rte/test_config new file mode 100644 index 0000000000000000000000000000000000000000..8351f51e855ecf8f8f4951813caf7b5d2bdbc455 --- /dev/null +++ b/tests/rte/test_config @@ -0,0 +1,2 @@ +PLUGIN: rtegen +STDOPT: diff --git a/tests/rte/unspecified_sequence.i b/tests/rte/unspecified_sequence.i index bf067c5a072b4f58f001aa60f53788177cf504ce..63e60f119cf1b11b66d6bd7f0736be514624a28a 100644 --- a/tests/rte/unspecified_sequence.i +++ b/tests/rte/unspecified_sequence.i @@ -1,3 +1,8 @@ +/* run.config + PLUGIN: @EVA_PLUGINS@ + STDOPT: +*/ + unsigned long long f(int x) { return 0; } diff --git a/tests/rte/value_rte.c b/tests/rte/value_rte.c index 0587fca439d1864503ee51cac0cbafb41e217127..9d2ee91f6686a741f5b2dcb0fd5e23e0fad09c30 100644 --- a/tests/rte/value_rte.c +++ b/tests/rte/value_rte.c @@ -1,7 +1,7 @@ /* run.config +PLUGIN: eva,scope rtegen report OPT: -rte -then -eva @EVA_OPTIONS@ -then -report */ - #include "stdio.h" int main(){ diff --git a/tests/rte_manual/test_config b/tests/rte_manual/test_config new file mode 100644 index 0000000000000000000000000000000000000000..7455cf5899e3ce3e7270344ef8217b1c06f9f2ee --- /dev/null +++ b/tests/rte_manual/test_config @@ -0,0 +1,2 @@ +PLUGIN: @EVA_PLUGINS@ rtegen +STDOPT: diff --git a/tests/saveload/bool.c b/tests/saveload/bool.c index f90635c4440b48bc7fdd4446bd6f9adadd8a22a6..f942a8cae78be9b6917f8909f0d2349e818aaee5 100644 --- a/tests/saveload/bool.c +++ b/tests/saveload/bool.c @@ -1,5 +1,5 @@ /* run.config - EXECNOW: BIN bool.sav LOG bool_sav.res LOG bool_sav.err ./bin/toplevel.opt -save ./tests/saveload/result/bool.sav -machdep x86_32 -eva @EVA_OPTIONS@ ./tests/saveload/bool.c > tests/saveload/result/bool_sav.res 2> tests/saveload/result/bool_sav.err + EXECNOW: BIN bool.sav LOG bool_sav.res LOG bool_sav.err @frama-c@ -save ./tests/saveload/result/bool.sav -machdep x86_32 -eva @EVA_OPTIONS@ ./tests/saveload/bool.c > tests/saveload/result/bool_sav.res 2> tests/saveload/result/bool_sav.err STDOPT: +"-load ./tests/saveload/result/bool.sav -out -input -deps" STDOPT: +"-load ./tests/saveload/result/bool.sav -eva @EVA_OPTIONS@" */ diff --git a/tests/saveload/callbacks.i b/tests/saveload/callbacks.i index b1fe21aabd15e996e1b84a7ba90ab7025dcd4cdb..672fc08788ee5ecc689372682a92e5814c3faa0e 100644 --- a/tests/saveload/callbacks.i +++ b/tests/saveload/callbacks.i @@ -1,5 +1,5 @@ /* run.config - EXECNOW: LOG callbacks_initial.res LOG callbacks_initial.err BIN callbacks.sav ./bin/toplevel.opt tests/saveload/callbacks.i -out -calldeps -eva-show-progress -main main1 -save ./tests/saveload/result/callbacks.sav > ./tests/saveload/result/callbacks_initial.res 2> ./tests/saveload/result/callbacks_initial.err + EXECNOW: LOG callbacks_initial.res LOG callbacks_initial.err BIN callbacks.sav @frama-c@ tests/saveload/callbacks.i -out -calldeps -eva-show-progress -main main1 -save ./tests/saveload/result/callbacks.sav > ./tests/saveload/result/callbacks_initial.res 2> ./tests/saveload/result/callbacks_initial.err STDOPT: +"-load ./tests/saveload/result/callbacks.sav -main main2 -then -main main3" */ diff --git a/tests/saveload/isset.c b/tests/saveload/isset.c index 720c3d635f2f3bc362c24fe83422bf51766ddfa6..8cdfc876ef88218d1f1c70f547bd2254820fd3e2 100644 --- a/tests/saveload/isset.c +++ b/tests/saveload/isset.c @@ -1,5 +1,5 @@ /* run.config - EXECNOW: LOG isset_sav.res LOG isset_sav.err BIN isset.sav ./bin/toplevel.opt -quiet -eva @EVA_OPTIONS@ -save tests/saveload/result/isset.sav tests/saveload/isset.c > ./tests/saveload/result/isset_sav.res 2> ./tests/saveload/result/isset_sav.err + EXECNOW: LOG isset_sav.res LOG isset_sav.err BIN isset.sav @frama-c@ -quiet -eva @EVA_OPTIONS@ -save tests/saveload/result/isset.sav tests/saveload/isset.c > ./tests/saveload/result/isset_sav.res 2> ./tests/saveload/result/isset_sav.err STDOPT: +"-quiet -load ./tests/saveload/result/isset.sav" STDOPT: +"-load ./tests/saveload/result/isset.sav" STDOPT: +"-eva @EVA_OPTIONS@ -load ./tests/saveload/result/isset.sav" diff --git a/tests/saveload/load_one.i b/tests/saveload/load_one.i index 75dde3f72926e6957c0fdfb898dbd3c3ba37932d..6eb0a89c1bd111ae094950e02c6e9ad00eee110e 100644 --- a/tests/saveload/load_one.i +++ b/tests/saveload/load_one.i @@ -1,6 +1,7 @@ /* run.config - EXECNOW: make -s @PTEST_DIR@/@PTEST_NAME@.cmxs - STDOPT: +"-load-module @PTEST_DIR@/@PTEST_NAME@.cmxs" + PLUGIN: @EVA_PLUGINS@ sparecode + MODULE: @PTEST_NAME@ + STDOPT: */ int G; @@ -12,7 +13,6 @@ int f (int x, int y) { int main (void) { int a = 1; int b = 1; - /*@ assert a == 1; */ f (0, 0); /* this call is useless : should be removed */ diff --git a/tests/saveload/multi_project.i b/tests/saveload/multi_project.i index ab0d9a44fd15de6c80394627618705578bd54744..acdf9a01fe1bca09b9aa63049dca4f9180e00298 100644 --- a/tests/saveload/multi_project.i +++ b/tests/saveload/multi_project.i @@ -1,8 +1,8 @@ /* run.config - EXECNOW: BIN multi_project.sav LOG multi_project_sav.res LOG multi_project_sav.err ./bin/toplevel.opt -save ./tests/saveload/result/multi_project.sav @EVA_OPTIONS@ -semantic-const-folding @PTEST_DIR@/@PTEST_NAME@.i > tests/saveload/result/multi_project_sav.res 2> tests/saveload/result/multi_project_sav.err - EXECNOW: make -s @PTEST_DIR@/@PTEST_NAME@.cmxs - STDOPT: +"-load ./tests/saveload/result/multi_project.sav -journal-disable" - CMD: @frama-c@ -load-module @PTEST_DIR@/@PTEST_NAME@.cmxs + PLUGIN: @EVA_PLUGINS@ constant_propagation + EXECNOW: BIN multi_project.sav LOG multi_project_sav.res LOG multi_project_sav.err @frama-c@ -save ./tests/saveload/result/multi_project.sav @EVA_OPTIONS@ -semantic-const-folding @PTEST_DIR@/@PTEST_NAME@.i > tests/saveload/result/multi_project_sav.res 2> tests/saveload/result/multi_project_sav.err + STDOPT: +"-load ./tests/saveload/result/multi_project.sav" + MODULE: @PTEST_NAME@ OPT: -eva @EVA_OPTIONS@ */ int f(int x) { diff --git a/tests/saveload/segfault_datatypes.i b/tests/saveload/segfault_datatypes.i index 021df2f49372ecd4d9633a5c9dc94a9f945fa341..af9a24fbb57274f132682e759096ddd5ebb3aa62 100644 --- a/tests/saveload/segfault_datatypes.i +++ b/tests/saveload/segfault_datatypes.i @@ -1,10 +1,10 @@ /* run.config* - EXECNOW: make -s ./tests/saveload/segfault_datatypes_A.cmxs ./tests/saveload/segfault_datatypes_B.cmxs - EXECNOW: LOG segfault_datatypes_sav.res LOG segfault_datatypes_sav.err BIN segfault_datatypes.sav @frama-c@ -load-module ./tests/saveload/segfault_datatypes_A -eva @EVA_OPTIONS@ -out -input -deps ./tests/saveload/segfault_datatypes.i -save ./tests/saveload/result/segfault_datatypes.sav > ./tests/saveload/result/segfault_datatypes_sav.res 2> ./tests/saveload/result/segfault_datatypes_sav.err - STDOPT: +"-load-module ./tests/saveload/segfault_datatypes_B -load ./tests/saveload/result/segfault_datatypes.sav -eva -out -input -deps -journal-disable" + MODULE: segfault_datatypes_A + EXECNOW: LOG segfault_datatypes_sav.res LOG segfault_datatypes_sav.err BIN segfault_datatypes.sav @frama-c@ -eva @EVA_OPTIONS@ -out -input -deps @PTEST_FILE@ -save ./tests/saveload/result/segfault_datatypes.sav > ./tests/saveload/result/segfault_datatypes_sav.res 2> ./tests/saveload/result/segfault_datatypes_sav.err + MODULE: segfault_datatypes_B + STDOPT: +"-load ./tests/saveload/result/segfault_datatypes.sav -eva -out -input -deps" */ - int main() { int i, j; diff --git a/tests/saveload/sparecode.i b/tests/saveload/sparecode.i index 33d1776ddc1ace121e6c617062505c43b4219b3d..b82bea7578da014e9734244c1d6f95a0e62e3b30 100644 --- a/tests/saveload/sparecode.i +++ b/tests/saveload/sparecode.i @@ -1,9 +1,9 @@ /* run.config - EXECNOW: BIN sparecode.sav LOG sparecode_sav.res LOG sparecode_sav.err ./bin/toplevel.opt -slicing-level 2 -slice-return main -eva-show-progress -save ./tests/saveload/result/sparecode.sav tests/saveload/sparecode.i -then-on 'Slicing export' -print > tests/saveload/result/sparecode_sav.res 2> tests/saveload/result/sparecode_sav.err + PLUGIN: @EVA_PLUGINS@ slicing + EXECNOW: BIN sparecode.sav LOG sparecode_sav.res LOG sparecode_sav.err @frama-c@ -slicing-level 2 -slice-return main -eva-show-progress -save ./tests/saveload/result/sparecode.sav tests/saveload/sparecode.i -then-on 'Slicing export' -print > tests/saveload/result/sparecode_sav.res 2> tests/saveload/result/sparecode_sav.err STDOPT: +"-load ./tests/saveload/result/sparecode.sav" */ int G; - int f (int x, int y) { G = y; return x; diff --git a/tests/saveload/test_config b/tests/saveload/test_config index 1712a20359b38feaedc7a61eec51ffa3aebc9879..0fb1ff9fa15158c8174c8231a22976557eb4dd40 100644 --- a/tests/saveload/test_config +++ b/tests/saveload/test_config @@ -1 +1,2 @@ +PLUGIN: @EVA_PLUGINS@ OPT: @EVA_OPTIONS@ diff --git a/tests/scope/bts971.c b/tests/scope/bts971.c index 24716e1928853c5f80851385f3bd06a00519ae20..968ca119f331972615296755979e780362adc72f 100644 --- a/tests/scope/bts971.c +++ b/tests/scope/bts971.c @@ -1,11 +1,11 @@ /* run.config - MODULE: @PTEST_NAME@ - OPT: -journal-disable -then -main main2 + PLUGIN: @EVA_PLUGINS@ pdg + MODULE: @PTEST_NAME@ + OPT: -then -main main2 */ /* bug 971: */ volatile foo; int v; - void f1 () { v += 1; } diff --git a/tests/scope/test_config b/tests/scope/test_config new file mode 100644 index 0000000000000000000000000000000000000000..55b824af6be4dcc6553df43fd37dc898a4e4845f --- /dev/null +++ b/tests/scope/test_config @@ -0,0 +1,2 @@ +PLUGIN: @EVA_PLUGINS@ +STDOPT: diff --git a/tests/scope/zones.c b/tests/scope/zones.c index e8808595b16aee5132fb1348e55883ea9f6552d1..b60b239a0fcd7922d9cee94203c6c2f1594f6630 100644 --- a/tests/scope/zones.c +++ b/tests/scope/zones.c @@ -1,9 +1,9 @@ /* run.config -# MODULE: @PTEST_NAME@ - OPT: -load-module @PTEST_DIR@/@PTEST_NAME@ -eva @EVA_OPTIONS@ -journal-disable + PLUGIN: @EVA_PLUGINS@ pdg + MODULE: @PTEST_NAME@ + OPT: -eva @EVA_OPTIONS@ */ - /* bin/viewer.opt -eva @PTEST_DIR@/@PTEST_NAME@.c */ int T [10]; diff --git a/tests/slicing/combine.i b/tests/slicing/combine.i index 704851ba39349b0e151e4a225cdb9ef865970fc9..05589afc7c888447f562aa65a4c850539bb99790 100644 --- a/tests/slicing/combine.i +++ b/tests/slicing/combine.i @@ -1,6 +1,6 @@ /* run.config + PLUGIN: @PTEST_PLUGIN@ constant_propagation sparecode MODULE: libSelect @PTEST_NAME@ - OPT: @EVA_OPTIONS@ -deps */ diff --git a/tests/slicing/test_config b/tests/slicing/test_config index 1c214a23023446fa86e655de311a60df62051ceb..9c7afdad731fc9fe8f51b8d9c0d1b68a6001ebf2 100644 --- a/tests/slicing/test_config +++ b/tests/slicing/test_config @@ -1,3 +1,4 @@ MODULE: libSelect libAnim MODULE: +PLUGIN: eva,scope,variadic slicing OPT: @EVA_OPTIONS@ -machdep x86_32 diff --git a/tests/sparecode/bts334.i b/tests/sparecode/bts334.i index f6af16f8c93874894790dd75e3ce64ab219f6464..f05a44ace82ecd919b5168fe6f219d4116ad420c 100644 --- a/tests/sparecode/bts334.i +++ b/tests/sparecode/bts334.i @@ -1,7 +1,8 @@ /*run.config - STDOPT: +"-sparecode-debug 0 -main main_init -sparecode-analysis -sparecode-no-annot " - STDOPT: +"-sparecode-debug 0 -main main_init -slice-pragma loop_body -then-on 'Slicing export' -print" - STDOPT: +"-sparecode-debug 0 -main main_init -slice-pragma loop_body -calldeps -then-on 'Slicing export' -print" + STDOPT: +"-sparecode-debug 0 -main main_init -sparecode-analysis -sparecode-no-annot " +PLUGIN: @PTEST_PLUGIN@ slicing + STDOPT: +"-sparecode-debug 0 -main main_init -slice-pragma loop_body -then-on 'Slicing export' -print" + STDOPT: +"-sparecode-debug 0 -main main_init -slice-pragma loop_body -calldeps -then-on 'Slicing export' -print" */ int kf ; int k[2] ; @@ -10,7 +11,6 @@ static int si[2] = {0, 0}; static int so[2] = {0, 0}; int f(int vi , int i ) { int vo ; - {vo = so[i] / kf + k[i] * (vi - si[i]); so[i] = vo; si[i] = vi; diff --git a/tests/sparecode/calls.i b/tests/sparecode/calls.i index 91773f1b22e0e11e51ff9a4402e9dd6df50d3b3a..dd0c6996091af7f446143ccee7108a9cdf19b84a 100644 --- a/tests/sparecode/calls.i +++ b/tests/sparecode/calls.i @@ -1,9 +1,9 @@ /* run.config STDOPT: +"-sparecode-analysis" +PLUGIN: @PTEST_PLUGIN@ slicing STDOPT: +"-slicing-level 2 -slice-return main -then-on 'Slicing export' -print" */ int G; - int f (int x, int y) { G = y; return x; diff --git a/tests/sparecode/dead_code.i b/tests/sparecode/dead_code.i index 327e62941abd01360bcb74cc728a34ed68931618..5f4165959ff68c54f907c1b6707611503792f28b 100644 --- a/tests/sparecode/dead_code.i +++ b/tests/sparecode/dead_code.i @@ -1,5 +1,6 @@ /* run.config STDOPT: +"-sparecode" +PLUGIN: @PTEST_PLUGIN@ slicing STDOPT: +"-slicing-level 2 -slice-return main -then-on 'Slicing export' -print" */ diff --git a/tests/sparecode/glob_decls.i b/tests/sparecode/glob_decls.i index abdf205de22a03d9dce5d76f5e67c2cffa3695f3..eb211f029f70d1e7a2720fe26d44691f7472aeaf 100644 --- a/tests/sparecode/glob_decls.i +++ b/tests/sparecode/glob_decls.i @@ -1,6 +1,7 @@ /* run.config - STDOPT: +"-lib-entry -sparecode-analysis " - STDOPT: +"-lib-entry -slice-pragma main -slice-return main -then-on 'Slicing export' -print" + STDOPT: +"-lib-entry -sparecode-analysis " +PLUGIN: @PTEST_PLUGIN@ slicing + STDOPT: +"-lib-entry -slice-pragma main -slice-return main -then-on 'Slicing export' -print" STDOPT: +"-sparecode-rm-unused-globals" */ @@ -18,7 +19,6 @@ Ps GPs; typedef struct { int a; int b; } Ts2; Ts2 S2; - typedef char Ts2bis; Ts2bis C = 'a'; diff --git a/tests/sparecode/intra.i b/tests/sparecode/intra.i index 65316cbe60af3abe7f2e18cfe00cf1bae48b6903..21f41c1d712ad71bb0ec0e4718acf2c335e91df0 100644 --- a/tests/sparecode/intra.i +++ b/tests/sparecode/intra.i @@ -1,11 +1,13 @@ /* run.config STDOPT: +"-sparecode-analysis" +PLUGIN: @PTEST_PLUGIN@ slicing STDOPT: +"-sparecode-debug 0 -slicing-level 2 -slice-return main -then-last -print" +PLUGIN: @SPARECODE_PLUGINS@ STDOPT: +"-sparecode-debug 0 -main main2 -sparecode-analysis" +PLUGIN: @PTEST_PLUGIN@ slicing STDOPT: +"-sparecode-debug 0 -main main2 -slice-return main2 -then-last -print" STDOPT: +"-sparecode-debug 0 -main main2 -slice-return main2 -slice-assert f10 -then-last -print" */ - /* Waiting for results such as: * spare code analysis removes statements having variables with * prefix "spare_" @@ -13,9 +15,7 @@ * slicing analysis removes statement having variables with * prefix "spare_" and "any_" */ - int G; - int tmp (int a) { int x = a; //@ assert x == a ; diff --git a/tests/sparecode/params.i b/tests/sparecode/params.i index 26bb415eefc1cd598a97b4b0fe1957132d1d0cab..4fd2d1b6efdebd9eb7f0ea088e74a442bb2049ab 100644 --- a/tests/sparecode/params.i +++ b/tests/sparecode/params.i @@ -1,8 +1,8 @@ /* run.config STDOPT: +"-sparecode-analysis" +PLUGIN: @PTEST_PLUGIN@ slicing STDOPT: +"-slicing-level 2 -slice-return main -then-last -print" */ - /* This is an example from #529. 'y' in [main1] should be visible to get a * compilable result. But unfortunatly, this leads to also select [b=1] in * [main]. This should be enhanced... */ diff --git a/tests/sparecode/test_config b/tests/sparecode/test_config index a9330dd48d062e0b27b9bb948a88af6f4250c17a..40e3a32e1141194ae21aebe0470c76bca948bc06 100644 --- a/tests/sparecode/test_config +++ b/tests/sparecode/test_config @@ -1 +1,3 @@ +MACRO: SPARECODE_PLUGINS @EVA_PLUGINS@ sparecode +PLUGIN: @SPARECODE_PLUGINS@ OPT: -journal-disable @EVA_OPTIONS@ -sparecode-debug 1 diff --git a/tests/spec/array_typedef.c b/tests/spec/array_typedef.c index 86387dcf4273550cd3a88f637d544008c16bacdb..88daa60d902d2501043d8f697ce6152c0c9f44e0 100644 --- a/tests/spec/array_typedef.c +++ b/tests/spec/array_typedef.c @@ -1,9 +1,9 @@ /*run.config - OPT: -print -eva @EVA_CONFIG@ -journal-disable +PLUGIN: eva, scope + OPT: -print -eva @EVA_CONFIG@ */ #define IP_FIELD 4 typedef int ip_address[IP_FIELD]; - typedef struct { ip_address src; int dst[IP_FIELD]; diff --git a/tests/spec/assigns_result.i b/tests/spec/assigns_result.i index f850166909efe129536bc4b54cae90447f6dbaaa..55ebd04043412a8e6d2f9e9480b4c0bb94de85b5 100644 --- a/tests/spec/assigns_result.i +++ b/tests/spec/assigns_result.i @@ -1,8 +1,8 @@ /* run.config +PLUGIN: eva,scope STDOPT: +"-deps @EVA_OPTIONS@" */ int X,Y; - /*@ assigns \result; assigns \exit_status; */ diff --git a/tests/spec/assigns_void.c b/tests/spec/assigns_void.c index 6e70195b864bfe5bb5f5d6f5c48ae74d798d9fbf..36cfe99b1ec2643f87f63401a3361e8cfce14152 100644 --- a/tests/spec/assigns_void.c +++ b/tests/spec/assigns_void.c @@ -1,10 +1,10 @@ /* run.config - OPT: -print -journal-disable -kernel-warn-key=annot-error=active - OPT: -eva @EVA_CONFIG@ -main g -print -no-annot -journal-disable + OPT: -print -kernel-warn-key=annot-error=active +PLUGIN: eva,scope + OPT: -eva @EVA_CONFIG@ -main g -print -no-annot */ //@ assigns *x; void f(void *x); - void g() { int y; int* x = &y; diff --git a/tests/spec/behavior_assert.c b/tests/spec/behavior_assert.c index 2f5d7f9760516f5bb73dea22b220b91f2e07edc3..7d0ce3885199a400d456597f6083bdf51a3470c2 100644 --- a/tests/spec/behavior_assert.c +++ b/tests/spec/behavior_assert.c @@ -1,8 +1,8 @@ /* run.config -OPT: -eva @EVA_CONFIG@ -deps -out -input -journal-disable -lib-entry -OPT: -eva @EVA_CONFIG@ -deps -out -input -journal-disable +PLUGIN: eva,from,inout,scope + OPT: -eva @EVA_CONFIG@ -deps -out -input -journal-disable -lib-entry + OPT: -eva @EVA_CONFIG@ -deps -out -input -journal-disable */ - int e; /*@ diff --git a/tests/spec/default_assigns_bts0966.i b/tests/spec/default_assigns_bts0966.i index 6b4cd671eda66ecb86c8a548620127b06604a1e6..4e2abccd49e698ad4aa3fc57c1e3c48b5556d250 100644 --- a/tests/spec/default_assigns_bts0966.i +++ b/tests/spec/default_assigns_bts0966.i @@ -1,7 +1,7 @@ /* run.config +PLUGIN: eva,scope OPT: -eva -print */ - int auto_states[4] ; // = { 1 , 0 , 0, 0 }; enum states { diff --git a/tests/spec/generalized_check.i b/tests/spec/generalized_check.i index 06f74139cfb7854ec517df292b9ca720dbd9ceed..ec9786ea47fe132077767e2b02ceda89f6849843 100644 --- a/tests/spec/generalized_check.i +++ b/tests/spec/generalized_check.i @@ -1,10 +1,10 @@ /* run.config -OPT: -eva -eva-use-spec f -OPT: -print +PLUGIN: eva,scope + OPT: -eva -eva-use-spec f +PLUGIN: + OPT: -print */ - /*@ check lemma easy_proof: \false; */ // should not be put in any environment - /*@ check requires f_valid_x: \valid(x); assigns *x; check ensures f_init_x: *x == 0; diff --git a/tests/spec/kw.c b/tests/spec/kw.c index e57a4869f38f02d6bb9c79f6e7c7b1b7139b50fc..c780af02c9dc6fbc09f6badafd206db025676aa0 100644 --- a/tests/spec/kw.c +++ b/tests/spec/kw.c @@ -1,3 +1,9 @@ +/* run.config +COMMENT: eva plugin is required for the slevel annotation +PLUGIN: eva + STDOPT: +*/ + typedef int assert; assert behavior = 0; diff --git a/tests/spec/logic_def.c b/tests/spec/logic_def.c index a9050410d76999cd48d4168575d26b22c5760e8d..c01bfb9e61297a6a281ab144bdd7c3524a753d9a 100644 --- a/tests/spec/logic_def.c +++ b/tests/spec/logic_def.c @@ -1,7 +1,7 @@ /* run.config +PLUGIN: eva,scope STDOPT: +"-eva -eva-verbose 2" */ - //@ logic integer foo(int x) = x + 2 ; int main() { diff --git a/tests/spec/oracle/assigns_void.0.res.oracle b/tests/spec/oracle/assigns_void.0.res.oracle index ad68c8cfaa692fac538086d5a4969b433d91fff7..4e730b46a501a71788c2a543b438e9ad4922a0dc 100644 --- a/tests/spec/oracle/assigns_void.0.res.oracle +++ b/tests/spec/oracle/assigns_void.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/spec/assigns_void.c (with preprocessing) -[kernel:annot-error] tests/spec/assigns_void.c:5: Warning: +[kernel:annot-error] tests/spec/assigns_void.c:6: Warning: Cannot use a pointer to void here. Ignoring specification of function f /* Generated by Frama-C */ void f(void *x); diff --git a/tests/spec/oracle/statement_behavior.res.oracle b/tests/spec/oracle/statement_behavior.res.oracle index 355b543903f30f9c0f17481e84bf35b15329bd6a..75f55931501876f76e9cd706ac8856116d8a50ec 100644 --- a/tests/spec/oracle/statement_behavior.res.oracle +++ b/tests/spec/oracle/statement_behavior.res.oracle @@ -10,7 +10,7 @@ no \from part for clause 'assigns five_times;' [eva:alarm] tests/spec/statement_behavior.c:17: Warning: assertion got status unknown. -[eva:alarm] tests/spec/statement_behavior.c:4: Warning: +[eva:alarm] tests/spec/statement_behavior.c:5: Warning: function pfsqopfc: postcondition got status unknown. [eva:alarm] tests/spec/statement_behavior.c:18: Warning: accessing uninitialized left-value. assert \initialized(&five_times); diff --git a/tests/spec/preprocess.c b/tests/spec/preprocess.c index 64b0e62aeec278a03dfd822ddc33e5f539566b1f..5047548c8ecacacc9a172e81fc4cd7f069841aa2 100644 --- a/tests/spec/preprocess.c +++ b/tests/spec/preprocess.c @@ -1,7 +1,7 @@ /* run.config - OPT: -eva @EVA_CONFIG@ -journal-disable -print +PLUGIN: eva,scope + OPT: -eva @EVA_CONFIG@ -print */ - // see bts 1357 #define assert(x) (x)?1:0 diff --git a/tests/spec/shifts.c b/tests/spec/shifts.c index a7d934e68da3bb28a16e8b0922eb34cc823694dc..5979c3d67ff3dc7feb1a1da0a3728bef50dc1ab6 100644 --- a/tests/spec/shifts.c +++ b/tests/spec/shifts.c @@ -1,7 +1,7 @@ /* run.config - OPT: -eva @EVA_CONFIG@ -deps -journal-disable +PLUGIN: eva,scope,from + OPT: -eva @EVA_CONFIG@ -deps */ - int e; /*@ diff --git a/tests/spec/statement_behavior.c b/tests/spec/statement_behavior.c index e91bc04723652701f7477a479ac8abf29fbacac5..c8834f72c8ea2102631e6060ac6dc0c3acc9cc3c 100644 --- a/tests/spec/statement_behavior.c +++ b/tests/spec/statement_behavior.c @@ -1,11 +1,11 @@ /* run.config - OPT: -eva @EVA_CONFIG@ -inout -journal-disable +PLUGIN: eva,inout,scope + OPT: -eva @EVA_CONFIG@ -inout */ /*@ ensures \result == (int)(5 * x); */ int pfsqopfc(int x) { int five_times; - /*@ assigns five_times; ensures five_times == (int)(5 * x); diff --git a/tests/syntax/Refresh_visitor.i b/tests/syntax/Refresh_visitor.i index 6bf2f55e42ef1cd1009a5f8de7b7962f3349a710..c1d19f0a1d62fa1dd8b3d2f9befaaf2872fd4b25 100644 --- a/tests/syntax/Refresh_visitor.i +++ b/tests/syntax/Refresh_visitor.i @@ -1,8 +1,8 @@ /* run.config + PLUGIN: eva,scope MODULE: @PTEST_NAME@ OPT: @EVA_OPTIONS@ */ - struct S { int i; }; /*@ lemma foo: \forall struct S x; x.i >= 0 || x.i < 0; */ diff --git a/tests/syntax/char_is_unsigned.i b/tests/syntax/char_is_unsigned.i index 771ea26e6800c6fac56c23f00561be16aeda4fce..02a2088fef3e3a4aa038f1bd41a176bd45e36cf1 100644 --- a/tests/syntax/char_is_unsigned.i +++ b/tests/syntax/char_is_unsigned.i @@ -1,6 +1,7 @@ /* run.config +PLUGIN: rtegen MODULE: machdep_char_unsigned - OPT:-print -machdep unsigned_char -then -constfold -rte + OPT: -print -machdep unsigned_char -then -constfold -rte */ char t[10]; diff --git a/tests/syntax/copy_logic.i b/tests/syntax/copy_logic.i index 271bdce7af4fbd5e66c5393e3a7078be00677bbc..fee16b6120468fa4170798dc4290114348c9ee3d 100644 --- a/tests/syntax/copy_logic.i +++ b/tests/syntax/copy_logic.i @@ -1,7 +1,7 @@ /* run.config +PLUGIN: eva,scope STDOPT: +"-copy" +"-eva" */ - /*@ predicate p(int x); */ /*@ predicate q(int x) = x == 42; */ /*@ logic int f (int y); */ diff --git a/tests/syntax/copy_visitor.i b/tests/syntax/copy_visitor.i index 2f475d79ae7a5ebeaf572e79e97e4b5f533cc833..d2d4bdb124e786dd2ee04327d9803b86b6c3dbe7 100644 --- a/tests/syntax/copy_visitor.i +++ b/tests/syntax/copy_visitor.i @@ -1,4 +1,5 @@ /* run.config +PLUGIN: eva,scope STDOPT: +"-copy -eva @EVA_CONFIG@" */ struct S { @@ -6,7 +7,6 @@ struct S { int b; }; struct S s = {.a = 1, .b=2}; - /*@ requires \valid(s); assigns s->a; diff --git a/tests/syntax/copy_visitor_bts_1073.c b/tests/syntax/copy_visitor_bts_1073.c index ec7e1ab180571bc3edbdc5ddafa90c2a602d0b21..e028f3cbe4d7e4d22d360e84786dad8c073e43e7 100644 --- a/tests/syntax/copy_visitor_bts_1073.c +++ b/tests/syntax/copy_visitor_bts_1073.c @@ -1,10 +1,10 @@ /* run.config +PLUGIN: variadic MODULE: @PTEST_NAME@ OPT: MODULE: @PTEST_NAME@_bis OPT: -test -then-on filtered -print */ - #include "stdio.h" int f(int x); diff --git a/tests/syntax/cpp-command.c b/tests/syntax/cpp-command.c index 3b9d41a71f080ea682cbc3482fa8412e53af2064..48585271169f5f929f117075c3011689e3011168 100644 --- a/tests/syntax/cpp-command.c +++ b/tests/syntax/cpp-command.c @@ -1,10 +1,10 @@ /* run.config* FILTER: sed "s:/[^ ]*[/]cpp-command\.[^ ]*\.i:TMPDIR/FILE.i:g; s:$PWD/::g; s: -m32::" - OPT: -machdep x86_32 -no-autoload-plugins -cpp-frama-c-compliant -cpp-command "echo [\$(basename '%1') \$(basename '%1') \$(basename '%i') \$(basename '%input')] ['%2' '%2' '%o' '%output'] ['%args']" - OPT: -machdep x86_32 -no-autoload-plugins -cpp-frama-c-compliant -cpp-command "echo %%1 = \$(basename '%1') %%2 = '%2' %%args = '%args'" - OPT: -machdep x86_32 -no-autoload-plugins -cpp-frama-c-compliant -cpp-command "printf \"%s\n\" \"using \\% has no effect : \$(basename \"\%input\")\"" - OPT: -machdep x86_32 -no-autoload-plugins -cpp-frama-c-compliant -cpp-command "echo %var is not an interpreted placeholder" - OPT: -machdep x86_32 -no-autoload-plugins -print-cpp-commands + OPT: -machdep x86_32 -cpp-frama-c-compliant -cpp-command "echo [\$(basename '%1') \$(basename '%1') \$(basename '%i') \$(basename '%input')] ['%2' '%2' '%o' '%output'] ['%args']" + OPT: -machdep x86_32 -cpp-frama-c-compliant -cpp-command "echo %%1 = \$(basename '%1') %%2 = '%2' %%args = '%args'" + OPT: -machdep x86_32 -cpp-frama-c-compliant -cpp-command "printf \"%s\n\" \"using \\% has no effect : \$(basename \"\%input\")\"" + OPT: -machdep x86_32 -cpp-frama-c-compliant -cpp-command "echo %var is not an interpreted placeholder" + OPT: -machdep x86_32 -print-cpp-commands OPT: -cpp-extra-args-per-file=@PTEST_FILE@:"-DPF=\\\"cp%02d_3f\\\"" -no-autoload-plugins @PTEST_FILE@ -print */ diff --git a/tests/syntax/extern_init.i b/tests/syntax/extern_init.i index e6773ed70089a517ab8a9499fbeb5b1b49304902..37a97faef54b721dcfc5c135e34f9c294e4c7235 100644 --- a/tests/syntax/extern_init.i +++ b/tests/syntax/extern_init.i @@ -1,7 +1,9 @@ /* run.config +PLUGIN: eva,scope OPT: @PTEST_DIR@/@PTEST_NAME@_1.i @PTEST_DIR@/@PTEST_NAME@_2.i -eva @EVA_CONFIG@ OPT: @PTEST_DIR@/@PTEST_NAME@_2.i @PTEST_DIR@/@PTEST_NAME@_1.i -eva @EVA_CONFIG@ */ + extern int a[] ; /*@ assigns a[3] \from \nothing; */ diff --git a/tests/syntax/fct_ptr.i b/tests/syntax/fct_ptr.i index 6b64b57479349ea4bb49e98aba19bcfce06789d3..63a57c55fdf6f3f53de8efb85cf41aa2a6aad003 100644 --- a/tests/syntax/fct_ptr.i +++ b/tests/syntax/fct_ptr.i @@ -1,20 +1,20 @@ -int f(int); +/* run.config + PLUGIN: variadic + STDOPT: +*/ +int f(int); void *p = f; - int (*pf) (int x) = f; - int g() { return ((int (*)(int))(*pf))(4); } - int main () { int (*q)(int) = (void *)0xfff45; q(2); q = p; q(3); } - typedef int (*Function_ptr)(); char *f_va(int a, ...) { return a; } Function_ptr fp_table[1] = {(Function_ptr) f_va}; // warning, but no error diff --git a/tests/syntax/function-types-compatible.i b/tests/syntax/function-types-compatible.i index 770198b5691b45604630bd53effc937be6319407..a02b6ba9d748b2b9d10446148b7c43fd3f65c2bd 100644 --- a/tests/syntax/function-types-compatible.i +++ b/tests/syntax/function-types-compatible.i @@ -1,5 +1,12 @@ +/* run.config +PLUGIN: variadic +STDOPT: +*/ + void (*p)(int, ...); + void f(); + void main() { p = f; p(1, 2); // warning, but no parsing error; will fail during execution diff --git a/tests/syntax/gcc_builtins.c b/tests/syntax/gcc_builtins.c index 00a9054c8b191a212b70e1b5000c4b710c4984ae..db5d0e38bdd1c27bea62b457f061eacbdb2c3211 100644 --- a/tests/syntax/gcc_builtins.c +++ b/tests/syntax/gcc_builtins.c @@ -1,7 +1,7 @@ /* run.config + PLUGIN: variadic STDOPT: +"-machdep gcc_x86_32" */ - #include "stdint.h" #define likely(x) __builtin_expect((x),1) diff --git a/tests/syntax/inline_calls.i b/tests/syntax/inline_calls.i index a71073677d14b7d1b989f2d667f54b3d2bb917ac..4cf6b9c05992ba6000408bbe11dde27f4ad4bda0 100644 --- a/tests/syntax/inline_calls.i +++ b/tests/syntax/inline_calls.i @@ -1,9 +1,9 @@ /* run.config +PLUGIN: eva,scope STDOPT: +"-inline-calls @all -kernel-msg-key printer:attrs" STDOPT: +"-inline-calls @inline" STDOPT: +"-inline-calls @inline -remove-inlined @inline" */ - int f() { return 2; } diff --git a/tests/syntax/local-init-const.i b/tests/syntax/local-init-const.i index 1d79724df761cbe3b412972bc0fb43c3fd156ea1..09793138d4693239a17072a39327874320e9e4ff 100644 --- a/tests/syntax/local-init-const.i +++ b/tests/syntax/local-init-const.i @@ -1,6 +1,8 @@ /*run.config - OPT: -no-autoload-plugins -load-module eva,scope -eva -eva-verbose 0 +PLUGIN: eva,scope + OPT: -eva -eva-verbose 0 */ + unsigned id(unsigned x) { return x; } void main() { diff --git a/tests/syntax/loop-case-switch-for-unroll.c b/tests/syntax/loop-case-switch-for-unroll.c index 7785be51b6a9e2495750bee02becb6c8fd846b61..3052cb9f5529fa6a77d6763f81aaee4673598cbd 100644 --- a/tests/syntax/loop-case-switch-for-unroll.c +++ b/tests/syntax/loop-case-switch-for-unroll.c @@ -1,4 +1,5 @@ /* run.config +PLUGIN: eva,scope STDOPT: +"-eva-slevel 100 -eva" STDOPT: +"-ulevel 1 -eva-slevel 100 -eva" STDOPT: +"-ulevel 2 -eva-slevel 100 -eva" @@ -6,7 +7,6 @@ the result of Frama-C piped to: "| grep Frama_C_show_each | sed 's/^.*Frama_C_show_each_//'" */ - #ifdef __FRAMAC__ #define print(line, s, a) Frama_C_show_each_ ## s ## _(a) #else diff --git a/tests/syntax/merge_variadic.i b/tests/syntax/merge_variadic.i index dab33541e614a5c024f194ca824c8de30c0ffea6..b296224e959149e92dd12a8136ea5ed89d60076d 100644 --- a/tests/syntax/merge_variadic.i +++ b/tests/syntax/merge_variadic.i @@ -1,9 +1,9 @@ /* run.config -OPT: @PTEST_DIR@/@PTEST_NAME@_aux.i -print +PLUGIN: variadic + OPT: @PTEST_DIR@/@PTEST_NAME@_aux.i -print */ int open (const char* file, int flags, int mode) { return -1; } - /*@ assigns \result \from x; */ int foo (int x, int y); diff --git a/tests/syntax/oracle/bts1553_2.res.oracle b/tests/syntax/oracle/bts1553_2.res.oracle index 93dacee514969b19d8bc20ff47fcaffdd2a4c526..9293259fe565811c4e9f7f6dedc355b38faa4288 100644 --- a/tests/syntax/oracle/bts1553_2.res.oracle +++ b/tests/syntax/oracle/bts1553_2.res.oracle @@ -5,8 +5,6 @@ struct a { int b ; }; - /* compiler builtin: - void Frama_C_show_aorai_state(...); */ /* compiler builtin: __builtin_va_list __builtin_next_arg(void); */ /* compiler builtin: @@ -42,8 +40,6 @@ struct a { int b ; }; - /* compiler builtin: - void Frama_C_show_aorai_state(...); */ /* compiler builtin: __builtin_va_list __builtin_next_arg(void); */ /* compiler builtin: diff --git a/tests/syntax/oracle/check_builtin_bts1440.res.oracle b/tests/syntax/oracle/check_builtin_bts1440.res.oracle index f81e5813ccc1c324160bc8600bf6e042c3e3fbbd..510a8f2b3ab41a3c39cd5c26cc41c8703528b9e1 100644 --- a/tests/syntax/oracle/check_builtin_bts1440.res.oracle +++ b/tests/syntax/oracle/check_builtin_bts1440.res.oracle @@ -2,8 +2,6 @@ [kernel:file:print-one] result of parsing tests/syntax/check_builtin_bts1440.i: /* Generated by Frama-C */ - void Frama_C_show_aorai_state(...); - void __builtin__Exit(int); int __builtin___fprintf_chk(void *, int, char const * , ...); diff --git a/tests/syntax/oracle/function-types-compatible.res.oracle b/tests/syntax/oracle/function-types-compatible.res.oracle index 121d63a24e7721aba55611f25c673bf25953f32f..b25ea3698a6a3dd2d6995d583b96a878368f2cda 100644 --- a/tests/syntax/oracle/function-types-compatible.res.oracle +++ b/tests/syntax/oracle/function-types-compatible.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/syntax/function-types-compatible.i (no preprocessing) -[kernel:typing:incompatible-types-call] tests/syntax/function-types-compatible.i:4: Warning: +[kernel:typing:incompatible-types-call] tests/syntax/function-types-compatible.i:11: Warning: implicit conversion between incompatible function types: void (*)() and diff --git a/tests/syntax/oracle/merge_variadic.res.oracle b/tests/syntax/oracle/merge_variadic.res.oracle index 88885da35e2f84e1f548dd833903435f798a8958..a0c39aecf62846a1e8877d3a78f32647a8704355 100644 --- a/tests/syntax/oracle/merge_variadic.res.oracle +++ b/tests/syntax/oracle/merge_variadic.res.oracle @@ -3,7 +3,7 @@ [kernel:linker:drop-conflicting-unused] Warning: Incompatible declaration for open: different vararg specifiers - First declaration was at tests/syntax/merge_variadic.i:4 + First declaration was at tests/syntax/merge_variadic.i:5 Current declaration is at tests/syntax/merge_variadic_aux.i:5 Current declaration is unused, silently removing it [kernel:linker:drop-conflicting-unused] Warning: diff --git a/tests/syntax/oracle/static_formals_1.res.oracle b/tests/syntax/oracle/static_formals_1.res.oracle index f3dc98b3d3003fb066ecc0db86d86140b90ce85c..6261380034edbdbaf53954bee958450e2f36d238 100644 --- a/tests/syntax/oracle/static_formals_1.res.oracle +++ b/tests/syntax/oracle/static_formals_1.res.oracle @@ -1,24 +1,24 @@ [kernel] Parsing tests/syntax/static_formals_1.c (with preprocessing) [kernel] Parsing tests/syntax/static_formals_2.c (with preprocessing) /* Generated by Frama-C */ -/*@ requires /* vid:26, lvid:26 */x < 10; */ -static int /* vid:60 */f(int /* vid:26, lvid:26 */x); +/*@ requires /* vid:23, lvid:23 */x < 10; */ +static int /* vid:56 */f(int /* vid:23, lvid:23 */x); -int /* vid:31 */g(void) +int /* vid:28 */g(void) { - int /* vid:32 */tmp; - /* vid:32 */tmp = /* vid:60 */f(4); - return /* vid:32 */tmp; + int /* vid:29 */tmp; + /* vid:29 */tmp = /* vid:56 */f(4); + return /* vid:29 */tmp; } -/*@ requires /* vid:55, lvid:55 */x < 10; */ -static int /* vid:61 */f_0(int /* vid:55, lvid:55 */x); +/*@ requires /* vid:51, lvid:51 */x < 10; */ +static int /* vid:57 */f_0(int /* vid:51, lvid:51 */x); -int /* vid:58 */h(void) +int /* vid:54 */h(void) { - int /* vid:59 */tmp; - /* vid:59 */tmp = /* vid:61 */f_0(6); - return /* vid:59 */tmp; + int /* vid:55 */tmp; + /* vid:55 */tmp = /* vid:57 */f_0(6); + return /* vid:55 */tmp; } diff --git a/tests/syntax/oracle/unroll_visit.res.oracle b/tests/syntax/oracle/unroll_visit.res.oracle index 271518ba4c2d9a67a2fd616ca5818cbe5d4818b3..1679a9dc5d55a5b96376f47c9800d9501192aa9e 100644 --- a/tests/syntax/oracle/unroll_visit.res.oracle +++ b/tests/syntax/oracle/unroll_visit.res.oracle @@ -4,8 +4,8 @@ [eva] Initial state computed [eva:initial-state] Values of globals at initialization -[eva] tests/syntax/unroll_visit.i:9: assertion got status valid. -[eva] tests/syntax/unroll_visit.i:7: starting to merge loop iterations +[eva] tests/syntax/unroll_visit.i:12: assertion got status valid. +[eva] tests/syntax/unroll_visit.i:10: starting to merge loop iterations [eva] Recording results for main [eva] done for function main [eva] ====== VALUES COMPUTED ====== diff --git a/tests/syntax/oracle/variadic.res.oracle b/tests/syntax/oracle/variadic.res.oracle index 9e0223986f0000922185c919e1881cb0f45c1bca..1052103bac84ae187ec185f26ae494a81c58d95d 100644 --- a/tests/syntax/oracle/variadic.res.oracle +++ b/tests/syntax/oracle/variadic.res.oracle @@ -1,7 +1,7 @@ [kernel] Parsing tests/syntax/variadic.i (no preprocessing) -[kernel:typing:implicit-function-declaration] tests/syntax/variadic.i:20: Warning: +[kernel:typing:implicit-function-declaration] tests/syntax/variadic.i:26: Warning: Calling undeclared function f. Old style K&R code? -[kernel:typing:no-proto] tests/syntax/variadic.i:21: Warning: +[kernel:typing:no-proto] tests/syntax/variadic.i:27: Warning: Calling function h that is declared without prototype. Its formals will be inferred from actual arguments /* Generated by Frama-C */ diff --git a/tests/syntax/static_formals_1.c b/tests/syntax/static_formals_1.c index 6cd8687eba15553886326158692c69839fd4e061..97cfbca9a65701a0dfebf4cab8f8550af431ebbf 100644 --- a/tests/syntax/static_formals_1.c +++ b/tests/syntax/static_formals_1.c @@ -1,7 +1,6 @@ /* run.config STDOPT: +"@PTEST_DIR@/static_formals_2.c" +"-cpp-extra-args=\"-I @PTEST_DIR@\"" +"-kernel-msg-key printer:vid" */ - #include "static_formals.h" int g() { return f(4); } diff --git a/tests/syntax/string_concat.c b/tests/syntax/string_concat.c index 924e8b423c7f30720939ddfb15b23b5c78ddc01b..b78a7d85590f3c5981b36737e9d20ec207dc0aad 100644 --- a/tests/syntax/string_concat.c +++ b/tests/syntax/string_concat.c @@ -1,4 +1,5 @@ /* run.config* +PLUGIN: eva,scope variadic TIMEOUT: 600 OPT: -eva */ diff --git a/tests/syntax/test_config b/tests/syntax/test_config index df749c62084f1dff34265d08aa76546e4a89949e..3d75cb1ea823f0885cd7c5d9e4be187df1b0b67d 100644 --- a/tests/syntax/test_config +++ b/tests/syntax/test_config @@ -1,4 +1,5 @@ COMMENT: this directory is meant to test exclusively the front-end COMMENT: (parser, type-checker, linker, syntactic transformations) -OPT: -print -journal-disable -check -machdep x86_32 +PLUGIN: +OPT: -print -machdep x86_32 FILEREG:.*\.\(c\|i\|ci\)$ diff --git a/tests/syntax/unroll_labels.i b/tests/syntax/unroll_labels.i index 66da8b7cf4882b0214a9cc46294e20ff7f81668b..4fcef3f5d46dfd9784cf49c16fa8fbe38b7c99f4 100644 --- a/tests/syntax/unroll_labels.i +++ b/tests/syntax/unroll_labels.i @@ -1,10 +1,10 @@ /* run.config +PLUGIN: eva,scope STDOPT: +"-eva @EVA_CONFIG@" STDOPT: +"-eva @EVA_CONFIG@ -main main2 -eva-slevel 3" */ enum { SIX = 6 } ; volatile foo; - void main () { int j = 0; /*@ loop pragma UNROLL "completely", 4; */ diff --git a/tests/syntax/unroll_property_status_bts1442.i b/tests/syntax/unroll_property_status_bts1442.i index 70ac3a9bbafb983c076f2aa1f3b6960753d24444..0a8970b5b8990d77268c0b7a7e2b8d8f54512e28 100644 --- a/tests/syntax/unroll_property_status_bts1442.i +++ b/tests/syntax/unroll_property_status_bts1442.i @@ -1,8 +1,8 @@ /* run.config -OPT: -report -OPT: -ulevel -1 -report +PLUGIN: report + OPT: -report + OPT: -ulevel -1 -report */ - int u(void); char *strcpy(char*dst, char*src) { diff --git a/tests/syntax/unroll_visit.i b/tests/syntax/unroll_visit.i index 495b3bd0c50ce064137350a98b95406b6d5ed3ff..f4d949c53ef9a94e93a366b61bbb2a14caf8356c 100644 --- a/tests/syntax/unroll_visit.i +++ b/tests/syntax/unroll_visit.i @@ -1,7 +1,10 @@ /* run.config +PLUGIN: eva,scope,from,inout STDOPT: +"-eva @EVA_CONFIG@ -deps -out -input -deps" */ + typedef char i8; // ideally, pretty-printing should keep 'i8' for some casts + void main() { /*@ loop pragma UNROLL 2; */ for(i8 i=0; i<100; i++) { diff --git a/tests/syntax/variadic.i b/tests/syntax/variadic.i index b07b22acab044134cb870e6860a21a96783784ab..fc23e732c0c17b9d7407c4a07236490a6a0dc62d 100644 --- a/tests/syntax/variadic.i +++ b/tests/syntax/variadic.i @@ -1,8 +1,14 @@ +/* run.config + PLUGIN: variadic + STDOPT: +*/ int normal(int n); int vf(int x, ...); + typedef char tt; struct T {int a;} st; + tt abstract; unsigned char uchar; signed char chr; @@ -14,7 +20,7 @@ double d; void h(); void g() { - vf(1,1u,uchar,3.0f, ushort, ll, abstract, st, ld,d); + vf(1,1u,uchar,3.0f, ushort, ll, abstract, st, ld,d); // vf() is variadic: the default argument promotions apply after the initial // arguments. C99 6.5.2.2:7 f(1,uchar); // f undeclared, default argument promotions apply C99 6.5.2.2:6 diff --git a/tests/syntax/wstring_concat.c b/tests/syntax/wstring_concat.c index 76f68ddd1b187f24f22591786cda9f13ce1a8209..9bd6571dd63b901380598f6dc29c9b769f8f6f24 100644 --- a/tests/syntax/wstring_concat.c +++ b/tests/syntax/wstring_concat.c @@ -1,8 +1,8 @@ /* run.config* +PLUGIN: eva,scope,variadic TIMEOUT: 600 OPT: -eva */ - #include <wchar.h> #include <stdio.h> diff --git a/tests/test_config b/tests/test_config index 11d75bf850c7c2f65ff98bf5fd486ec47200f499..f188ff4072509a1f23ce78441acaac71a8d02cf9 100644 --- a/tests/test_config +++ b/tests/test_config @@ -1,3 +1,6 @@ +MACRO: EVA_PLUGINS from,inout,eva,scope,variadic MACRO: EVA_OPTIONS -eva-show-progress -eva-msg-key=-summary -eva-auto-loop-unroll 0 -MACRO: EVA_CONFIG @EVA_OPTIONS@ -no-autoload-plugins -load-module from,inout,eva,scope,variadic -machdep x86_32 -OPT: -eva @EVA_CONFIG@ -journal-disable -out -input -deps +MACRO: EVA_CONFIG @EVA_OPTIONS@ -machdep x86_32 + +PLUGIN: @EVA_PLUGINS@ +OPT: -eva @EVA_CONFIG@ -out -input -deps diff --git a/tests/test_config_apron b/tests/test_config_apron index ff3a028903375e622d271ae85a070bdad02df8cb..411673ceafcafde7b9e20b8a40abe841a1cbd1a5 100644 --- a/tests/test_config_apron +++ b/tests/test_config_apron @@ -1,7 +1,9 @@ +MACRO: EVA_PLUGINS from,inout,eva,scope,variadic MACRO: EVA_OPTIONS -eva-show-progress -eva-msg-key=-summary -eva-auto-loop-unroll 0 -eva-domains apron-octagon -eva-warn-key experimental=inactive -MACRO: EVA_CONFIG @EVA_OPTIONS@ -no-autoload-plugins -load-module from,inout,eva,scope,variadic -machdep x86_32 +MACRO: EVA_CONFIG @EVA_OPTIONS@ -machdep x86_32 # Compare the result with the oracle of the default config. FILTER: diff --new-file @PTEST_DIR@/oracle/@PTEST_ORACLE@ - -OPT: -eva @EVA_CONFIG@ -journal-disable -out -input -deps +PLUGIN: @EVA_PLUGINS@ +OPT: -eva @EVA_CONFIG@ -out -input -deps diff --git a/tests/test_config_bitwise b/tests/test_config_bitwise index 103334223c75fc4d7ef5faadd2187fd3913defbf..19dd5d40c9f00151a44d21a20b5cb797d1c1fe6c 100644 --- a/tests/test_config_bitwise +++ b/tests/test_config_bitwise @@ -1,3 +1,4 @@ +MACRO: EVA_PLUGINS from,inout,eva,scope,variadic MACRO: EVA_OPTIONS -eva-show-progress -eva-msg-key=-summary -eva-auto-loop-unroll 0 -eva-domains bitwise MACRO: EVA_CONFIG @EVA_OPTIONS@ -no-autoload-plugins -load-module from,inout,eva,scope,variadic -machdep x86_32 diff --git a/tests/test_config_equality b/tests/test_config_equality index ffa23c9d32dac550f13db32f54185a48c1b3772e..fff8c6fb43f010c4d22835dbf0a4e5c43f2a249f 100644 --- a/tests/test_config_equality +++ b/tests/test_config_equality @@ -1,7 +1,9 @@ +MACRO: EVA_PLUGINS from,inout,eva,scope,variadic MACRO: EVA_OPTIONS -eva-show-progress -eva-msg-key=-summary -eva-auto-loop-unroll 0 -eva-domains equality -MACRO: EVA_CONFIG @EVA_OPTIONS@ -no-autoload-plugins -load-module from,inout,eva,scope,variadic -machdep x86_32 +MACRO: EVA_CONFIG @EVA_OPTIONS@ -machdep x86_32 # Compare the result with the oracle of the default config. FILTER: diff --new-file @PTEST_DIR@/oracle/@PTEST_ORACLE@ - -OPT: -eva @EVA_CONFIG@ -journal-disable -out -input -deps +PLUGIN: @EVA_PLUGINS@ +OPT: -eva @EVA_CONFIG@ -out -input -deps diff --git a/tests/test_config_gauges b/tests/test_config_gauges index 2c04eba2c74acdaa705e8dc6437b577266183d32..37ea7dfeb18c677bbb3d58d199a4d7030cd5dcac 100644 --- a/tests/test_config_gauges +++ b/tests/test_config_gauges @@ -1,7 +1,9 @@ +MACRO: EVA_PLUGINS from,inout,eva,scope,variadic MACRO: EVA_OPTIONS -eva-show-progress -eva-msg-key=-summary -eva-auto-loop-unroll 0 -eva-domains gauges -MACRO: EVA_CONFIG @EVA_OPTIONS@ -no-autoload-plugins -load-module from,inout,eva,scope,variadic -machdep x86_32 +MACRO: EVA_CONFIG @EVA_OPTIONS@ -machdep x86_32 # Compare the result with the oracle of the default config. FILTER: diff --new-file @PTEST_DIR@/oracle/@PTEST_ORACLE@ - -OPT: -eva @EVA_CONFIG@ -journal-disable -out -input -deps +PLUGIN: @EVA_PLUGINS@ +OPT: -eva @EVA_CONFIG@ -out -input -deps diff --git a/tests/test_config_octagon b/tests/test_config_octagon index c3f170e9652940aae572fa469a014cb5da8baf23..a63c091418a391a00eee6a9f0bb681358a49d7c5 100644 --- a/tests/test_config_octagon +++ b/tests/test_config_octagon @@ -1,7 +1,9 @@ +MACRO: EVA_PLUGINS from,inout,eva,scope,variadic MACRO: EVA_OPTIONS -eva-show-progress -eva-msg-key=-summary -eva-domains octagon -MACRO: EVA_CONFIG @EVA_OPTIONS@ -no-autoload-plugins -load-module from,inout,eva,scope,variadic -machdep x86_32 +MACRO: EVA_CONFIG @EVA_OPTIONS@ -machdep x86_32 # Compare the result with the oracle of the default config. FILTER: diff --new-file @PTEST_DIR@/oracle/@PTEST_ORACLE@ - -OPT: -eva @EVA_CONFIG@ -journal-disable -out -input -deps +PLUGIN: @EVA_PLUGINS@ +OPT: -eva @EVA_CONFIG@ -out -input -deps diff --git a/tests/test_config_symblocs b/tests/test_config_symblocs index d25a43c5eb7a0aeff3b6cddcdda469a1433ba638..3b082f3869cd61f8bb7baf1944ea34ca3eb2e66f 100644 --- a/tests/test_config_symblocs +++ b/tests/test_config_symblocs @@ -1,7 +1,9 @@ +MACRO: EVA_PLUGINS from,inout,eva,scope,variadic MACRO: EVA_OPTIONS -eva-show-progress -eva-msg-key=-summary -eva-auto-loop-unroll 0 -eva-domains symbolic-locations -MACRO: EVA_CONFIG @EVA_OPTIONS@ -no-autoload-plugins -load-module from,inout,eva,scope,variadic -machdep x86_32 +MACRO: EVA_CONFIG @EVA_OPTIONS@ -machdep x86_32 # Compare the result with the oracle of the default config. FILTER: diff --new-file @PTEST_DIR@/oracle/@PTEST_ORACLE@ - -OPT: -eva @EVA_CONFIG@ -journal-disable -out -input -deps +PLUGIN: @EVA_PLUGINS@ +OPT: -eva @EVA_CONFIG@ -out -input -deps