diff mbox series

[nft,1/1] tests/shell: accept name of dump files in place of test names

Message ID 20231122182227.759051-1-thaller@redhat.com
State Deferred, archived
Delegated to: Pablo Neira
Headers show
Series [nft,1/1] tests/shell: accept name of dump files in place of test names | expand

Commit Message

Thomas Haller Nov. 22, 2023, 6:22 p.m. UTC
Imagine you have the filename of a dump file at hand. For example, because
it shows up in `git status` and you can copy it from the terminal.

If you want to run the corresponding test, that was cumbersome. It
involved editing the command line (removing the /dumps/ directory and
the file suffix).

Instead, let "run-tests.sh" do that automatically. There is little value
in bothering the user with a failure:

Before:

  $ ./tests/shell/run-tests.sh tests/shell/testcases/optionals/dumps/comments_table_0.json-nft -L
  E: Unknown test "tests/shell/testcases/optionals/dumps/comments_table_0.json-nft"

After:
  $ ./tests/shell/run-tests.sh tests/shell/testcases/optionals/dumps/comments_table_0.json-nft -L
  tests/shell/testcases/optionals/comments_table_0

Signed-off-by: Thomas Haller <thaller@redhat.com>
---
 tests/shell/run-tests.sh | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Pablo Neira Ayuso Nov. 23, 2023, 10:48 a.m. UTC | #1
On Wed, Nov 22, 2023 at 07:22:25PM +0100, Thomas Haller wrote:
> diff --git a/tests/shell/run-tests.sh b/tests/shell/run-tests.sh
> index 3cde97b7ea17..c26142b7ff17 100755
> --- a/tests/shell/run-tests.sh
> +++ b/tests/shell/run-tests.sh
> @@ -431,6 +431,19 @@ for t in "${TESTSOLD[@]}" ; do
>  	elif [ -d "$t" ] ; then
>  		TESTS+=( $(find_tests "$t") )
>  	else
> +		if [ -f "$t" ] ; then
> +			# If the test name looks like a dumps file, autodetect
> +			# the correct test name. It's not useful to bother the
> +			# user with a failure in this case.
> +			rx="^(.*/)?dumps/([^/]+)\\.(nodump|nft|json-nft)$"
> +			if [[ "$t" =~ $rx ]] ; then
> +				t2="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
> +				if [ -f "$t2" -a -x "$t2" ] ; then
> +					TESTS+=( "$t2" )
> +					continue
> +				fi
> +			fi
> +		fi

I think it is not worth, users of this infrastructure is very small.

So let's keep back this usability feature for tests/shell.
Thomas Haller Nov. 23, 2023, 1:07 p.m. UTC | #2
On Thu, 2023-11-23 at 11:48 +0100, Pablo Neira Ayuso wrote:
> On Wed, Nov 22, 2023 at 07:22:25PM +0100, Thomas Haller wrote:
> > diff --git a/tests/shell/run-tests.sh b/tests/shell/run-tests.sh
> > index 3cde97b7ea17..c26142b7ff17 100755
> > --- a/tests/shell/run-tests.sh
> > +++ b/tests/shell/run-tests.sh
> > @@ -431,6 +431,19 @@ for t in "${TESTSOLD[@]}" ; do
> >  	elif [ -d "$t" ] ; then
> >  		TESTS+=( $(find_tests "$t") )
> >  	else
> > +		if [ -f "$t" ] ; then
> > +			# If the test name looks like a dumps
> > file, autodetect
> > +			# the correct test name. It's not useful
> > to bother the
> > +			# user with a failure in this case.
> > +			rx="^(.*/)?dumps/([^/]+)\\.(nodump|nft|jso
> > n-nft)$"
> > +			if [[ "$t" =~ $rx ]] ; then
> > +				t2="${BASH_REMATCH[1]}${BASH_REMAT
> > CH[2]}"
> > +				if [ -f "$t2" -a -x "$t2" ] ; then
> > +					TESTS+=( "$t2" )
> > +					continue
> > +				fi
> > +			fi
> > +		fi
> 
> I think it is not worth, users of this infrastructure is very small.
> 
> So let's keep back this usability feature for tests/shell.

OK. Fine.

But while closing and dropping it, let me still make the use case
clear.


When I look at a patch in `git-log` and see for example the diff-stat:

 src/json.c                                                       |  25 +++++++++++++------------
 src/parser_json.c                                                |  91 +++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------
 tests/shell/testcases/chains/dumps/0021prio_0.json-nft           | Bin 61509 -> 61639 bytes
 tests/shell/testcases/chains/dumps/0042chain_variable_0.json-nft | Bin 952 -> 1046 bytes
 tests/shell/testcases/chains/dumps/0043chain_ingress_0.json-nft  | Bin 619 -> 632 bytes

I'd like to re-run those tests. I'd like to do that by copy-pasting the
file names at hand into the terminal.



Thomas
diff mbox series

Patch

diff --git a/tests/shell/run-tests.sh b/tests/shell/run-tests.sh
index 3cde97b7ea17..c26142b7ff17 100755
--- a/tests/shell/run-tests.sh
+++ b/tests/shell/run-tests.sh
@@ -431,6 +431,19 @@  for t in "${TESTSOLD[@]}" ; do
 	elif [ -d "$t" ] ; then
 		TESTS+=( $(find_tests "$t") )
 	else
+		if [ -f "$t" ] ; then
+			# If the test name looks like a dumps file, autodetect
+			# the correct test name. It's not useful to bother the
+			# user with a failure in this case.
+			rx="^(.*/)?dumps/([^/]+)\\.(nodump|nft|json-nft)$"
+			if [[ "$t" =~ $rx ]] ; then
+				t2="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
+				if [ -f "$t2" -a -x "$t2" ] ; then
+					TESTS+=( "$t2" )
+					continue
+				fi
+			fi
+		fi
 		msg_error "Unknown test \"$t\""
 	fi
 done