[DTrace-devel] [PATCH] Provide additional tests for the exit() action
Eugene Loh
eugene.loh at oracle.com
Wed May 20 15:41:14 PDT 2020
Looks good.
On 05/18/2020 10:44 AM, Kris Van Hees wrote:
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
> .../actions/exit/err.D_PROTO_ARG.str.d | 19 +++++++++++++++++
> .../actions/exit/err.D_PROTO_ARG.str.r | 4 ++++
> .../actions/exit/err.D_PROTO_ARG.void.d | 19 +++++++++++++++++
> .../actions/exit/err.D_PROTO_ARG.void.r | 4 ++++
> ....noarg.d => err.D_PROTO_LEN.missing_arg.d} | 0
> .../exit/err.D_PROTO_LEN.missing_arg.r | 2 ++
> .../actions/exit/err.D_PROTO_LEN.noarg.r | 2 --
> .../exit/err.D_PROTO_LEN.too_many_args.d | 19 +++++++++++++++++
> .../exit/err.D_PROTO_LEN.too_many_args.r | 2 ++
> test/unittest/actions/exit/err.fail.d | 2 +-
> test/unittest/actions/exit/tst.expr.d | 21 +++++++++++++++++++
> test/unittest/actions/exit/tst.expr.r | 1 +
> 12 files changed, 92 insertions(+), 3 deletions(-)
> create mode 100644 test/unittest/actions/exit/err.D_PROTO_ARG.str.d
> create mode 100644 test/unittest/actions/exit/err.D_PROTO_ARG.str.r
> create mode 100644 test/unittest/actions/exit/err.D_PROTO_ARG.void.d
> create mode 100644 test/unittest/actions/exit/err.D_PROTO_ARG.void.r
> rename test/unittest/actions/exit/{err.D_PROTO_LEN.noarg.d => err.D_PROTO_LEN.missing_arg.d} (100%)
> create mode 100644 test/unittest/actions/exit/err.D_PROTO_LEN.missing_arg.r
> delete mode 100644 test/unittest/actions/exit/err.D_PROTO_LEN.noarg.r
> create mode 100644 test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.d
> create mode 100644 test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.r
> create mode 100644 test/unittest/actions/exit/tst.expr.d
> create mode 100644 test/unittest/actions/exit/tst.expr.r
>
> diff --git a/test/unittest/actions/exit/err.D_PROTO_ARG.str.d b/test/unittest/actions/exit/err.D_PROTO_ARG.str.d
> new file mode 100644
> index 00000000..e3ef0158
> --- /dev/null
> +++ b/test/unittest/actions/exit/err.D_PROTO_ARG.str.d
> @@ -0,0 +1,19 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
> + * Licensed under the Universal Permissive License v 1.0 as shown at
> + * http://oss.oracle.com/licenses/upl.
> + */
> +
> +/*
> + * ASSERTION: The exit() action cannot be passed a string argument.
> + *
> + * SECTION: Actions and Subroutines/exit()
> + */
> +
> +#pragma D option quiet
> +
> +BEGIN
> +{
> + exit("");
> +}
> diff --git a/test/unittest/actions/exit/err.D_PROTO_ARG.str.r b/test/unittest/actions/exit/err.D_PROTO_ARG.str.r
> new file mode 100644
> index 00000000..6d259e68
> --- /dev/null
> +++ b/test/unittest/actions/exit/err.D_PROTO_ARG.str.r
> @@ -0,0 +1,4 @@
> +-- @@stderr --
> +dtrace: failed to compile script test/unittest/actions/exit/err.D_PROTO_ARG.str.d: [D_PROTO_ARG] line 18: exit( ) argument #1 is incompatible with prototype:
> + prototype: int
> + argument: string
> diff --git a/test/unittest/actions/exit/err.D_PROTO_ARG.void.d b/test/unittest/actions/exit/err.D_PROTO_ARG.void.d
> new file mode 100644
> index 00000000..7a635372
> --- /dev/null
> +++ b/test/unittest/actions/exit/err.D_PROTO_ARG.void.d
> @@ -0,0 +1,19 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
> + * Licensed under the Universal Permissive License v 1.0 as shown at
> + * http://oss.oracle.com/licenses/upl.
> + */
> +
> +/*
> + * ASSERTION: The exit() action cannot be passed a void argument.
> + *
> + * SECTION: Actions and Subroutines/exit()
> + */
> +
> +#pragma D option quiet
> +
> +BEGIN
> +{
> + exit(exit(0));
> +}
> diff --git a/test/unittest/actions/exit/err.D_PROTO_ARG.void.r b/test/unittest/actions/exit/err.D_PROTO_ARG.void.r
> new file mode 100644
> index 00000000..6d357eab
> --- /dev/null
> +++ b/test/unittest/actions/exit/err.D_PROTO_ARG.void.r
> @@ -0,0 +1,4 @@
> +-- @@stderr --
> +dtrace: failed to compile script test/unittest/actions/exit/err.D_PROTO_ARG.void.d: [D_PROTO_ARG] line 18: exit( ) argument #1 is incompatible with prototype:
> + prototype: int
> + argument: void
> diff --git a/test/unittest/actions/exit/err.D_PROTO_LEN.noarg.d b/test/unittest/actions/exit/err.D_PROTO_LEN.missing_arg.d
> similarity index 100%
> rename from test/unittest/actions/exit/err.D_PROTO_LEN.noarg.d
> rename to test/unittest/actions/exit/err.D_PROTO_LEN.missing_arg.d
> diff --git a/test/unittest/actions/exit/err.D_PROTO_LEN.missing_arg.r b/test/unittest/actions/exit/err.D_PROTO_LEN.missing_arg.r
> new file mode 100644
> index 00000000..d8a95f6c
> --- /dev/null
> +++ b/test/unittest/actions/exit/err.D_PROTO_LEN.missing_arg.r
> @@ -0,0 +1,2 @@
> +-- @@stderr --
> +dtrace: failed to compile script test/unittest/actions/exit/err.D_PROTO_LEN.missing_arg.d: [D_PROTO_LEN] line 18: exit( ) prototype mismatch: 0 args passed, 1 expected
> diff --git a/test/unittest/actions/exit/err.D_PROTO_LEN.noarg.r b/test/unittest/actions/exit/err.D_PROTO_LEN.noarg.r
> deleted file mode 100644
> index db1e1510..00000000
> --- a/test/unittest/actions/exit/err.D_PROTO_LEN.noarg.r
> +++ /dev/null
> @@ -1,2 +0,0 @@
> --- @@stderr --
> -dtrace: failed to compile script test/unittest/actions/exit/err.D_PROTO_LEN.noarg.d: [D_PROTO_LEN] line 18: exit( ) prototype mismatch: 0 args passed, 1 expected
> diff --git a/test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.d b/test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.d
> new file mode 100644
> index 00000000..007e9342
> --- /dev/null
> +++ b/test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.d
> @@ -0,0 +1,19 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
> + * Licensed under the Universal Permissive License v 1.0 as shown at
> + * http://oss.oracle.com/licenses/upl.
> + */
> +
> +/*
> + * ASSERTION: The exit() action requires exactly one argument.
> + *
> + * SECTION: Actions and Subroutines/exit()
> + */
> +
> +#pragma D option quiet
> +
> +BEGIN
> +{
> + exit(0, 1);
> +}
> diff --git a/test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.r b/test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.r
> new file mode 100644
> index 00000000..d21002d2
> --- /dev/null
> +++ b/test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.r
> @@ -0,0 +1,2 @@
> +-- @@stderr --
> +dtrace: failed to compile script test/unittest/actions/exit/err.D_PROTO_LEN.too_many_args.d: [D_PROTO_LEN] line 18: exit( ) prototype mismatch: 2 args passed, 1 expected
> diff --git a/test/unittest/actions/exit/err.fail.d b/test/unittest/actions/exit/err.fail.d
> index 046d1637..c08f96ec 100644
> --- a/test/unittest/actions/exit/err.fail.d
> +++ b/test/unittest/actions/exit/err.fail.d
> @@ -6,7 +6,7 @@
> */
>
> /*
> - * ASSERTION: Calling exit(n) indicates failures if n is not 0.
> + * ASSERTION: Calling exit(n) indicates failure if n is not 0.
> *
> * SECTION: Actions and Subroutines/exit()
> */
> diff --git a/test/unittest/actions/exit/tst.expr.d b/test/unittest/actions/exit/tst.expr.d
> new file mode 100644
> index 00000000..83c8f778
> --- /dev/null
> +++ b/test/unittest/actions/exit/tst.expr.d
> @@ -0,0 +1,21 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
> + * Licensed under the Universal Permissive License v 1.0 as shown at
> + * http://oss.oracle.com/licenses/upl.
> + */
> +
> +/*
> + * ASSERTION: Calling exit(n) with an expression that evaluates to 0 indicates
> + * success.
> + *
> + * SECTION: Actions and Subroutines/exit()
> + */
> +
> +#pragma D option quiet
> +
> +BEGIN
> +{
> + x = 1;
> + exit(x - 1);
> +}
> diff --git a/test/unittest/actions/exit/tst.expr.r b/test/unittest/actions/exit/tst.expr.r
> new file mode 100644
> index 00000000..8b137891
> --- /dev/null
> +++ b/test/unittest/actions/exit/tst.expr.r
> @@ -0,0 +1 @@
> +
More information about the DTrace-devel
mailing list