public inbox for ~johnnyrichard/olang-devel@lists.sr.ht
 help / color / mirror / code / Atom feed
From: Johnny Richard <johnny@johnnyrichard.com>
To: ~johnnyrichard/olang-devel@lists.sr.ht
Cc: Johnny Richard <johnny@johnnyrichard.com>
Subject: [PATCH olang v1 1/2] tests: build: enhance compiler functional tests
Date: Sat, 21 Sep 2024 23:02:48 +0200	[thread overview]
Message-ID: <20240921210512.1100242-2-johnny@johnnyrichard.com> (raw)
In-Reply-To: <20240921210512.1100242-1-johnny@johnnyrichard.com>

There was two problem with the current state of our integration tests:

1) The folder structure is very annoying and long to navigate, the last
   tests folder mess with the shell autocomplete because it has almost
   the same name as the tests.sh script.

2) When we run the make all for integration tests, we are not using the
   make how it was intended to be used.  We have inline shell script
   that loop over all tests and we cannot run tests in parallel.

This change will enable the parallelization and reduce the folder
structure so we can have a better development experience.

Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
---
 Makefile                                      |  8 +++----
 .../tests => execute}/0001_main_exit.ol       | 24 +++++++++----------
 .../0002_binary_operator_addition.ol          |  0
 .../0003_binary_operator_multiplication.ol    |  0
 .../0004_binary_operator_division.ol          |  0
 .../0005_binary_operator_reminder.ol          |  0
 .../0006_binary_operator_subtraction.ol       |  0
 .../0007_binary_operator_eq.ol                |  0
 .../0008_binary_operator_lt.ol                |  0
 .../0009_binary_operator_gt.ol                |  0
 .../0010_binary_operator_neq.ol               |  0
 .../0011_binary_operator_leq.ol               |  0
 .../0012_binary_operator_geq.ol               |  0
 .../0013_binary_operator_lshift.ol            |  0
 .../0014_binary_operator_rshift.ol            |  0
 .../0015_binary_operator_xor.ol               |  0
 .../0016_binary_operator_and.ol               |  0
 .../0017_binary_operator_or.ol                |  0
 .../0018_binary_operator_logical_and.ol       |  0
 .../0019_binary_operator_logical_or.ol        |  0
 .../tests => execute}/0020_if_statement.ol    |  2 +-
 .../0021_if_statement_failed.ol               |  0
 .../0022_if_statement_literal.ol              |  0
 .../tests => execute}/0023_else_statement.ol  |  2 +-
 .../tests => execute}/0024_var_definition.ol  |  2 +-
 .../0025_var_definition_nested.ol             |  0
 tests/execute/Makefile                        | 15 ++++++++++++
 tests/{integration/test.sh => execute/run.sh} |  0
 tests/integration/Makefile                    |  9 -------
 29 files changed, 34 insertions(+), 28 deletions(-)
 rename tests/{integration/tests => execute}/0001_main_exit.ol (66%)
 rename tests/{integration/tests => execute}/0002_binary_operator_addition.ol (100%)
 rename tests/{integration/tests => execute}/0003_binary_operator_multiplication.ol (100%)
 rename tests/{integration/tests => execute}/0004_binary_operator_division.ol (100%)
 rename tests/{integration/tests => execute}/0005_binary_operator_reminder.ol (100%)
 rename tests/{integration/tests => execute}/0006_binary_operator_subtraction.ol (100%)
 rename tests/{integration/tests => execute}/0007_binary_operator_eq.ol (100%)
 rename tests/{integration/tests => execute}/0008_binary_operator_lt.ol (100%)
 rename tests/{integration/tests => execute}/0009_binary_operator_gt.ol (100%)
 rename tests/{integration/tests => execute}/0010_binary_operator_neq.ol (100%)
 rename tests/{integration/tests => execute}/0011_binary_operator_leq.ol (100%)
 rename tests/{integration/tests => execute}/0012_binary_operator_geq.ol (100%)
 rename tests/{integration/tests => execute}/0013_binary_operator_lshift.ol (100%)
 rename tests/{integration/tests => execute}/0014_binary_operator_rshift.ol (100%)
 rename tests/{integration/tests => execute}/0015_binary_operator_xor.ol (100%)
 rename tests/{integration/tests => execute}/0016_binary_operator_and.ol (100%)
 rename tests/{integration/tests => execute}/0017_binary_operator_or.ol (100%)
 rename tests/{integration/tests => execute}/0018_binary_operator_logical_and.ol (100%)
 rename tests/{integration/tests => execute}/0019_binary_operator_logical_or.ol (100%)
 rename tests/{integration/tests => execute}/0020_if_statement.ol (96%)
 rename tests/{integration/tests => execute}/0021_if_statement_failed.ol (100%)
 rename tests/{integration/tests => execute}/0022_if_statement_literal.ol (100%)
 rename tests/{integration/tests => execute}/0023_else_statement.ol (96%)
 rename tests/{integration/tests => execute}/0024_var_definition.ol (96%)
 rename tests/{integration/tests => execute}/0025_var_definition_nested.ol (100%)
 create mode 100644 tests/execute/Makefile
 rename tests/{integration/test.sh => execute/run.sh} (100%)
 delete mode 100644 tests/integration/Makefile

diff --git a/Makefile b/Makefile
index 12b09a4..2b65f96 100644
--- a/Makefile
+++ b/Makefile
@@ -89,10 +89,10 @@ format-fix: $(SRCS) $(HEADERS)
 	clang-format -i $?
 	$(MAKE) -C tests/unit/ format-fix
 
-.PHONY: integration-test
-integration-test:
+.PHONY: check-execute
+check-execute:
 	$(MAKE)
-	$(MAKE) -C tests/integration/
+	$(MAKE) -C tests/execute/
 
 .PHONY: unit-test
 unit-test:
@@ -108,7 +108,7 @@ clean:
 .PHONY: check
 check:
 	$(MAKE)
-	$(MAKE) -C tests/integration/
+	$(MAKE) -C tests/execute/
 	$(MAKE) -C tests/unit/
 
 .PHONY: docs
diff --git a/tests/integration/tests/0001_main_exit.ol b/tests/execute/0001_main_exit.ol
similarity index 66%
rename from tests/integration/tests/0001_main_exit.ol
rename to tests/execute/0001_main_exit.ol
index f446eb9..69e5ed1 100644
--- a/tests/integration/tests/0001_main_exit.ol
+++ b/tests/execute/0001_main_exit.ol
@@ -31,16 +31,16 @@ fn main(): u32 {
 # END
 #
 # TEST test_contains_tokens WITH
-# ./tests/0001_main_exit.ol:17:1: <fn>
-# ./tests/0001_main_exit.ol:17:4: <identifier>
-# ./tests/0001_main_exit.ol:17:8: <(>
-# ./tests/0001_main_exit.ol:17:9: <)>
-# ./tests/0001_main_exit.ol:17:10: <:>
-# ./tests/0001_main_exit.ol:17:12: <identifier>
-# ./tests/0001_main_exit.ol:17:16: <{>
-# ./tests/0001_main_exit.ol:17:17: <line_feed>
-# ./tests/0001_main_exit.ol:18:3: <return>
-# ./tests/0001_main_exit.ol:18:10: <number>
-# ./tests/0001_main_exit.ol:18:11: <line_feed>
-# ./tests/0001_main_exit.ol:19:1: <}>
+# ./0001_main_exit.ol:17:1: <fn>
+# ./0001_main_exit.ol:17:4: <identifier>
+# ./0001_main_exit.ol:17:8: <(>
+# ./0001_main_exit.ol:17:9: <)>
+# ./0001_main_exit.ol:17:10: <:>
+# ./0001_main_exit.ol:17:12: <identifier>
+# ./0001_main_exit.ol:17:16: <{>
+# ./0001_main_exit.ol:17:17: <line_feed>
+# ./0001_main_exit.ol:18:3: <return>
+# ./0001_main_exit.ol:18:10: <number>
+# ./0001_main_exit.ol:18:11: <line_feed>
+# ./0001_main_exit.ol:19:1: <}>
 # END
diff --git a/tests/integration/tests/0002_binary_operator_addition.ol b/tests/execute/0002_binary_operator_addition.ol
similarity index 100%
rename from tests/integration/tests/0002_binary_operator_addition.ol
rename to tests/execute/0002_binary_operator_addition.ol
diff --git a/tests/integration/tests/0003_binary_operator_multiplication.ol b/tests/execute/0003_binary_operator_multiplication.ol
similarity index 100%
rename from tests/integration/tests/0003_binary_operator_multiplication.ol
rename to tests/execute/0003_binary_operator_multiplication.ol
diff --git a/tests/integration/tests/0004_binary_operator_division.ol b/tests/execute/0004_binary_operator_division.ol
similarity index 100%
rename from tests/integration/tests/0004_binary_operator_division.ol
rename to tests/execute/0004_binary_operator_division.ol
diff --git a/tests/integration/tests/0005_binary_operator_reminder.ol b/tests/execute/0005_binary_operator_reminder.ol
similarity index 100%
rename from tests/integration/tests/0005_binary_operator_reminder.ol
rename to tests/execute/0005_binary_operator_reminder.ol
diff --git a/tests/integration/tests/0006_binary_operator_subtraction.ol b/tests/execute/0006_binary_operator_subtraction.ol
similarity index 100%
rename from tests/integration/tests/0006_binary_operator_subtraction.ol
rename to tests/execute/0006_binary_operator_subtraction.ol
diff --git a/tests/integration/tests/0007_binary_operator_eq.ol b/tests/execute/0007_binary_operator_eq.ol
similarity index 100%
rename from tests/integration/tests/0007_binary_operator_eq.ol
rename to tests/execute/0007_binary_operator_eq.ol
diff --git a/tests/integration/tests/0008_binary_operator_lt.ol b/tests/execute/0008_binary_operator_lt.ol
similarity index 100%
rename from tests/integration/tests/0008_binary_operator_lt.ol
rename to tests/execute/0008_binary_operator_lt.ol
diff --git a/tests/integration/tests/0009_binary_operator_gt.ol b/tests/execute/0009_binary_operator_gt.ol
similarity index 100%
rename from tests/integration/tests/0009_binary_operator_gt.ol
rename to tests/execute/0009_binary_operator_gt.ol
diff --git a/tests/integration/tests/0010_binary_operator_neq.ol b/tests/execute/0010_binary_operator_neq.ol
similarity index 100%
rename from tests/integration/tests/0010_binary_operator_neq.ol
rename to tests/execute/0010_binary_operator_neq.ol
diff --git a/tests/integration/tests/0011_binary_operator_leq.ol b/tests/execute/0011_binary_operator_leq.ol
similarity index 100%
rename from tests/integration/tests/0011_binary_operator_leq.ol
rename to tests/execute/0011_binary_operator_leq.ol
diff --git a/tests/integration/tests/0012_binary_operator_geq.ol b/tests/execute/0012_binary_operator_geq.ol
similarity index 100%
rename from tests/integration/tests/0012_binary_operator_geq.ol
rename to tests/execute/0012_binary_operator_geq.ol
diff --git a/tests/integration/tests/0013_binary_operator_lshift.ol b/tests/execute/0013_binary_operator_lshift.ol
similarity index 100%
rename from tests/integration/tests/0013_binary_operator_lshift.ol
rename to tests/execute/0013_binary_operator_lshift.ol
diff --git a/tests/integration/tests/0014_binary_operator_rshift.ol b/tests/execute/0014_binary_operator_rshift.ol
similarity index 100%
rename from tests/integration/tests/0014_binary_operator_rshift.ol
rename to tests/execute/0014_binary_operator_rshift.ol
diff --git a/tests/integration/tests/0015_binary_operator_xor.ol b/tests/execute/0015_binary_operator_xor.ol
similarity index 100%
rename from tests/integration/tests/0015_binary_operator_xor.ol
rename to tests/execute/0015_binary_operator_xor.ol
diff --git a/tests/integration/tests/0016_binary_operator_and.ol b/tests/execute/0016_binary_operator_and.ol
similarity index 100%
rename from tests/integration/tests/0016_binary_operator_and.ol
rename to tests/execute/0016_binary_operator_and.ol
diff --git a/tests/integration/tests/0017_binary_operator_or.ol b/tests/execute/0017_binary_operator_or.ol
similarity index 100%
rename from tests/integration/tests/0017_binary_operator_or.ol
rename to tests/execute/0017_binary_operator_or.ol
diff --git a/tests/integration/tests/0018_binary_operator_logical_and.ol b/tests/execute/0018_binary_operator_logical_and.ol
similarity index 100%
rename from tests/integration/tests/0018_binary_operator_logical_and.ol
rename to tests/execute/0018_binary_operator_logical_and.ol
diff --git a/tests/integration/tests/0019_binary_operator_logical_or.ol b/tests/execute/0019_binary_operator_logical_or.ol
similarity index 100%
rename from tests/integration/tests/0019_binary_operator_logical_or.ol
rename to tests/execute/0019_binary_operator_logical_or.ol
diff --git a/tests/integration/tests/0020_if_statement.ol b/tests/execute/0020_if_statement.ol
similarity index 96%
rename from tests/integration/tests/0020_if_statement.ol
rename to tests/execute/0020_if_statement.ol
index d48122f..ece9450 100644
--- a/tests/integration/tests/0020_if_statement.ol
+++ b/tests/execute/0020_if_statement.ol
@@ -24,7 +24,7 @@ fn main(): u32 {
 # TEST test_run_binary(exit_code=0)
 #
 # TEST test_contains_tokens WITH
-# ./tests/0020_if_statement.ol:17:3: <if>
+# ./0020_if_statement.ol:17:3: <if>
 # END
 
 # TEST test_ast WITH
diff --git a/tests/integration/tests/0021_if_statement_failed.ol b/tests/execute/0021_if_statement_failed.ol
similarity index 100%
rename from tests/integration/tests/0021_if_statement_failed.ol
rename to tests/execute/0021_if_statement_failed.ol
diff --git a/tests/integration/tests/0022_if_statement_literal.ol b/tests/execute/0022_if_statement_literal.ol
similarity index 100%
rename from tests/integration/tests/0022_if_statement_literal.ol
rename to tests/execute/0022_if_statement_literal.ol
diff --git a/tests/integration/tests/0023_else_statement.ol b/tests/execute/0023_else_statement.ol
similarity index 96%
rename from tests/integration/tests/0023_else_statement.ol
rename to tests/execute/0023_else_statement.ol
index fafb22e..539ff95 100644
--- a/tests/integration/tests/0023_else_statement.ol
+++ b/tests/execute/0023_else_statement.ol
@@ -26,7 +26,7 @@ fn main(): u32 {
 # TEST test_run_binary(exit_code=0)
 
 # TEST test_contains_tokens WITH
-# ./tests/0023_else_statement.ol:19:5: <else>
+# ./0023_else_statement.ol:19:5: <else>
 # END
 
 # TEST test_ast WITH
diff --git a/tests/integration/tests/0024_var_definition.ol b/tests/execute/0024_var_definition.ol
similarity index 96%
rename from tests/integration/tests/0024_var_definition.ol
rename to tests/execute/0024_var_definition.ol
index 5c23449..3f09fa5 100644
--- a/tests/integration/tests/0024_var_definition.ol
+++ b/tests/execute/0024_var_definition.ol
@@ -23,7 +23,7 @@ fn main(): u32 {
 # TEST test_run_binary(exit_code=0)
 
 # TEST test_contains_tokens WITH
-# ./tests/0024_var_definition.ol:17:3: <var>
+# ./0024_var_definition.ol:17:3: <var>
 # END
 
 # TEST test_ast WITH
diff --git a/tests/integration/tests/0025_var_definition_nested.ol b/tests/execute/0025_var_definition_nested.ol
similarity index 100%
rename from tests/integration/tests/0025_var_definition_nested.ol
rename to tests/execute/0025_var_definition_nested.ol
diff --git a/tests/execute/Makefile b/tests/execute/Makefile
new file mode 100644
index 0000000..c736a78
--- /dev/null
+++ b/tests/execute/Makefile
@@ -0,0 +1,15 @@
+.POSIX:
+
+RUNNER := ./run.sh
+SRCS := $(wildcard *.ol)
+TESTS := $(patsubst %.ol, %.run, $(SRCS))
+
+.SUFFIXES:
+.SUFFIXES: .ol .run
+
+.PHONY: all
+all: $(TESTS)
+
+.ol.run:
+	@$(RUNNER) ./$<
+
diff --git a/tests/integration/test.sh b/tests/execute/run.sh
similarity index 100%
rename from tests/integration/test.sh
rename to tests/execute/run.sh
diff --git a/tests/integration/Makefile b/tests/integration/Makefile
deleted file mode 100644
index bda51af..0000000
--- a/tests/integration/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-TESTER_SRC := ./test.sh
-TESTS := $(wildcard ./tests/*.ol)
-
-.PHONY: all
-all:
-	@set -e; \
-	for file in $(TESTS); do \
-                $(TESTER_SRC) "$$file"; \
-        done
-- 
2.46.0


  reply	other threads:[~2024-09-21 21:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-21 21:02 [PATCH olang v1 0/2] tests: build: improve makefile for tests Johnny Richard
2024-09-21 21:02 ` Johnny Richard [this message]
2024-09-21 22:11   ` [PATCH olang v1 1/2] tests: build: enhance compiler functional test Carlos Maniero
2024-09-21 21:02 ` [PATCH olang v1 2/2] tests: build: add parallelization support for unit tests Johnny Richard
2024-09-21 21:05   ` [olang/patches/.build.yml] build success builds.sr.ht
2024-09-21 22:30   ` [PATCH olang v1 2/2] tests: build: add parallelization support for unit tests Carlos Maniero
2024-09-22 15:23 ` [PATCH olang v1 0/2] tests: build: improve makefile for tests Johnny Richard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240921210512.1100242-2-johnny@johnnyrichard.com \
    --to=johnny@johnnyrichard.com \
    --cc=~johnnyrichard/olang-devel@lists.sr.ht \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.johnnyrichard.com/olang.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox