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 v2 2/3] tests: build: enhance compiler tests
Date: Sun, 22 Sep 2024 17:15:55 +0200	[thread overview]
Message-ID: <20240922152119.1214443-3-johnny@johnnyrichard.com> (raw)
In-Reply-To: <20240922152119.1214443-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                                      | 10 +++----
 tests/integration/Makefile                    |  9 -------
 .../tests => olc}/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
 .../tests => olc}/0007_binary_operator_eq.ol  |  0
 .../tests => olc}/0008_binary_operator_lt.ol  |  0
 .../tests => olc}/0009_binary_operator_gt.ol  |  0
 .../tests => olc}/0010_binary_operator_neq.ol |  0
 .../tests => olc}/0011_binary_operator_leq.ol |  0
 .../tests => olc}/0012_binary_operator_geq.ol |  0
 .../0013_binary_operator_lshift.ol            |  0
 .../0014_binary_operator_rshift.ol            |  0
 .../tests => olc}/0015_binary_operator_xor.ol |  2 +-
 .../tests => olc}/0016_binary_operator_and.ol |  0
 .../tests => olc}/0017_binary_operator_or.ol  |  0
 .../0018_binary_operator_logical_and.ol       |  0
 .../0019_binary_operator_logical_or.ol        |  0
 .../tests => olc}/0020_if_statement.ol        |  2 +-
 .../tests => olc}/0021_if_statement_failed.ol |  0
 .../0022_if_statement_literal.ol              |  0
 .../tests => olc}/0023_else_statement.ol      |  2 +-
 .../tests => olc}/0024_var_definition.ol      |  2 +-
 .../0025_var_definition_nested.ol             |  0
 .../tests => olc}/0026_primitive_unsigneds.ol |  0
 tests/olc/0026_primitive_unsigneds.ol.orig    | 27 +++++++++++++++++++
 tests/olc/Makefile                            | 15 +++++++++++
 tests/{integration/test.sh => olc/run.sh}     |  0
 31 files changed, 62 insertions(+), 31 deletions(-)
 delete mode 100644 tests/integration/Makefile
 rename tests/{integration/tests => olc}/0001_main_exit.ol (66%)
 rename tests/{integration/tests => olc}/0002_binary_operator_addition.ol (100%)
 rename tests/{integration/tests => olc}/0003_binary_operator_multiplication.ol (100%)
 rename tests/{integration/tests => olc}/0004_binary_operator_division.ol (100%)
 rename tests/{integration/tests => olc}/0005_binary_operator_reminder.ol (100%)
 rename tests/{integration/tests => olc}/0006_binary_operator_subtraction.ol (100%)
 rename tests/{integration/tests => olc}/0007_binary_operator_eq.ol (100%)
 rename tests/{integration/tests => olc}/0008_binary_operator_lt.ol (100%)
 rename tests/{integration/tests => olc}/0009_binary_operator_gt.ol (100%)
 rename tests/{integration/tests => olc}/0010_binary_operator_neq.ol (100%)
 rename tests/{integration/tests => olc}/0011_binary_operator_leq.ol (100%)
 rename tests/{integration/tests => olc}/0012_binary_operator_geq.ol (100%)
 rename tests/{integration/tests => olc}/0013_binary_operator_lshift.ol (100%)
 rename tests/{integration/tests => olc}/0014_binary_operator_rshift.ol (100%)
 rename tests/{integration/tests => olc}/0015_binary_operator_xor.ol (96%)
 rename tests/{integration/tests => olc}/0016_binary_operator_and.ol (100%)
 rename tests/{integration/tests => olc}/0017_binary_operator_or.ol (100%)
 rename tests/{integration/tests => olc}/0018_binary_operator_logical_and.ol (100%)
 rename tests/{integration/tests => olc}/0019_binary_operator_logical_or.ol (100%)
 rename tests/{integration/tests => olc}/0020_if_statement.ol (96%)
 rename tests/{integration/tests => olc}/0021_if_statement_failed.ol (100%)
 rename tests/{integration/tests => olc}/0022_if_statement_literal.ol (100%)
 rename tests/{integration/tests => olc}/0023_else_statement.ol (96%)
 rename tests/{integration/tests => olc}/0024_var_definition.ol (96%)
 rename tests/{integration/tests => olc}/0025_var_definition_nested.ol (100%)
 rename tests/{integration/tests => olc}/0026_primitive_unsigneds.ol (100%)
 create mode 100644 tests/olc/0026_primitive_unsigneds.ol.orig
 create mode 100644 tests/olc/Makefile
 rename tests/{integration/test.sh => olc/run.sh} (100%)

diff --git a/Makefile b/Makefile
index 0603526..7dbde3e 100644
--- a/Makefile
+++ b/Makefile
@@ -89,10 +89,9 @@ format-fix: $(SRCS) $(HEADERS)
 	clang-format -i $?
 	$(MAKE) -C tests/unit/ format-fix
 
-.PHONY: integration-test
-integration-test:
-	$(MAKE)
-	$(MAKE) -C tests/integration/
+.PHONY: check-olc
+check-olc: $(TARGET)
+	$(MAKE) -C tests/olc/
 
 .PHONY: unit-test
 unit-test:
@@ -106,9 +105,8 @@ clean:
 	@rm -rf build/ $(TARGET)
 
 .PHONY: check
-check:
+check: check-olc
 	$(MAKE)
-	$(MAKE) -C tests/integration/
 	$(MAKE) -C tests/unit/
 
 .PHONY: docs
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
diff --git a/tests/integration/tests/0001_main_exit.ol b/tests/olc/0001_main_exit.ol
similarity index 66%
rename from tests/integration/tests/0001_main_exit.ol
rename to tests/olc/0001_main_exit.ol
index 9068434..b8abf45 100644
--- a/tests/integration/tests/0001_main_exit.ol
+++ b/tests/olc/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/olc/0002_binary_operator_addition.ol
similarity index 100%
rename from tests/integration/tests/0002_binary_operator_addition.ol
rename to tests/olc/0002_binary_operator_addition.ol
diff --git a/tests/integration/tests/0003_binary_operator_multiplication.ol b/tests/olc/0003_binary_operator_multiplication.ol
similarity index 100%
rename from tests/integration/tests/0003_binary_operator_multiplication.ol
rename to tests/olc/0003_binary_operator_multiplication.ol
diff --git a/tests/integration/tests/0004_binary_operator_division.ol b/tests/olc/0004_binary_operator_division.ol
similarity index 100%
rename from tests/integration/tests/0004_binary_operator_division.ol
rename to tests/olc/0004_binary_operator_division.ol
diff --git a/tests/integration/tests/0005_binary_operator_reminder.ol b/tests/olc/0005_binary_operator_reminder.ol
similarity index 100%
rename from tests/integration/tests/0005_binary_operator_reminder.ol
rename to tests/olc/0005_binary_operator_reminder.ol
diff --git a/tests/integration/tests/0006_binary_operator_subtraction.ol b/tests/olc/0006_binary_operator_subtraction.ol
similarity index 100%
rename from tests/integration/tests/0006_binary_operator_subtraction.ol
rename to tests/olc/0006_binary_operator_subtraction.ol
diff --git a/tests/integration/tests/0007_binary_operator_eq.ol b/tests/olc/0007_binary_operator_eq.ol
similarity index 100%
rename from tests/integration/tests/0007_binary_operator_eq.ol
rename to tests/olc/0007_binary_operator_eq.ol
diff --git a/tests/integration/tests/0008_binary_operator_lt.ol b/tests/olc/0008_binary_operator_lt.ol
similarity index 100%
rename from tests/integration/tests/0008_binary_operator_lt.ol
rename to tests/olc/0008_binary_operator_lt.ol
diff --git a/tests/integration/tests/0009_binary_operator_gt.ol b/tests/olc/0009_binary_operator_gt.ol
similarity index 100%
rename from tests/integration/tests/0009_binary_operator_gt.ol
rename to tests/olc/0009_binary_operator_gt.ol
diff --git a/tests/integration/tests/0010_binary_operator_neq.ol b/tests/olc/0010_binary_operator_neq.ol
similarity index 100%
rename from tests/integration/tests/0010_binary_operator_neq.ol
rename to tests/olc/0010_binary_operator_neq.ol
diff --git a/tests/integration/tests/0011_binary_operator_leq.ol b/tests/olc/0011_binary_operator_leq.ol
similarity index 100%
rename from tests/integration/tests/0011_binary_operator_leq.ol
rename to tests/olc/0011_binary_operator_leq.ol
diff --git a/tests/integration/tests/0012_binary_operator_geq.ol b/tests/olc/0012_binary_operator_geq.ol
similarity index 100%
rename from tests/integration/tests/0012_binary_operator_geq.ol
rename to tests/olc/0012_binary_operator_geq.ol
diff --git a/tests/integration/tests/0013_binary_operator_lshift.ol b/tests/olc/0013_binary_operator_lshift.ol
similarity index 100%
rename from tests/integration/tests/0013_binary_operator_lshift.ol
rename to tests/olc/0013_binary_operator_lshift.ol
diff --git a/tests/integration/tests/0014_binary_operator_rshift.ol b/tests/olc/0014_binary_operator_rshift.ol
similarity index 100%
rename from tests/integration/tests/0014_binary_operator_rshift.ol
rename to tests/olc/0014_binary_operator_rshift.ol
diff --git a/tests/integration/tests/0015_binary_operator_xor.ol b/tests/olc/0015_binary_operator_xor.ol
similarity index 96%
rename from tests/integration/tests/0015_binary_operator_xor.ol
rename to tests/olc/0015_binary_operator_xor.ol
index c5c0568..07b6b4a 100644
--- a/tests/integration/tests/0015_binary_operator_xor.ol
+++ b/tests/olc/0015_binary_operator_xor.ol
@@ -13,7 +13,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-# spec: Binary operator ^ 
+# spec: Binary operator ^
 fn main(): u32 {
   return 10 ^ 11
 }
diff --git a/tests/integration/tests/0016_binary_operator_and.ol b/tests/olc/0016_binary_operator_and.ol
similarity index 100%
rename from tests/integration/tests/0016_binary_operator_and.ol
rename to tests/olc/0016_binary_operator_and.ol
diff --git a/tests/integration/tests/0017_binary_operator_or.ol b/tests/olc/0017_binary_operator_or.ol
similarity index 100%
rename from tests/integration/tests/0017_binary_operator_or.ol
rename to tests/olc/0017_binary_operator_or.ol
diff --git a/tests/integration/tests/0018_binary_operator_logical_and.ol b/tests/olc/0018_binary_operator_logical_and.ol
similarity index 100%
rename from tests/integration/tests/0018_binary_operator_logical_and.ol
rename to tests/olc/0018_binary_operator_logical_and.ol
diff --git a/tests/integration/tests/0019_binary_operator_logical_or.ol b/tests/olc/0019_binary_operator_logical_or.ol
similarity index 100%
rename from tests/integration/tests/0019_binary_operator_logical_or.ol
rename to tests/olc/0019_binary_operator_logical_or.ol
diff --git a/tests/integration/tests/0020_if_statement.ol b/tests/olc/0020_if_statement.ol
similarity index 96%
rename from tests/integration/tests/0020_if_statement.ol
rename to tests/olc/0020_if_statement.ol
index 460a05e..9756bb1 100644
--- a/tests/integration/tests/0020_if_statement.ol
+++ b/tests/olc/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/olc/0021_if_statement_failed.ol
similarity index 100%
rename from tests/integration/tests/0021_if_statement_failed.ol
rename to tests/olc/0021_if_statement_failed.ol
diff --git a/tests/integration/tests/0022_if_statement_literal.ol b/tests/olc/0022_if_statement_literal.ol
similarity index 100%
rename from tests/integration/tests/0022_if_statement_literal.ol
rename to tests/olc/0022_if_statement_literal.ol
diff --git a/tests/integration/tests/0023_else_statement.ol b/tests/olc/0023_else_statement.ol
similarity index 96%
rename from tests/integration/tests/0023_else_statement.ol
rename to tests/olc/0023_else_statement.ol
index f3ddc64..389e0d4 100644
--- a/tests/integration/tests/0023_else_statement.ol
+++ b/tests/olc/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/olc/0024_var_definition.ol
similarity index 96%
rename from tests/integration/tests/0024_var_definition.ol
rename to tests/olc/0024_var_definition.ol
index ebbcda4..65deffc 100644
--- a/tests/integration/tests/0024_var_definition.ol
+++ b/tests/olc/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/olc/0025_var_definition_nested.ol
similarity index 100%
rename from tests/integration/tests/0025_var_definition_nested.ol
rename to tests/olc/0025_var_definition_nested.ol
diff --git a/tests/integration/tests/0026_primitive_unsigneds.ol b/tests/olc/0026_primitive_unsigneds.ol
similarity index 100%
rename from tests/integration/tests/0026_primitive_unsigneds.ol
rename to tests/olc/0026_primitive_unsigneds.ol
diff --git a/tests/olc/0026_primitive_unsigneds.ol.orig b/tests/olc/0026_primitive_unsigneds.ol.orig
new file mode 100644
index 0000000..25f0f7e
--- /dev/null
+++ b/tests/olc/0026_primitive_unsigneds.ol.orig
@@ -0,0 +1,27 @@
+# Copyright (C) 2024 olang mantainers
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+fn main(): u64 {
+  var a: u8 = 255
+  var b: u16 = 65535
+  var c: u32 = 4294967295
+  var d: u64 = 4294967296
+
+  return a + b + c + d - a - b - c - d
+}
+
+# TEST test_compile(exit_code=0)
+
+# TEST test_run_binary(exit_code=0)
diff --git a/tests/olc/Makefile b/tests/olc/Makefile
new file mode 100644
index 0000000..c736a78
--- /dev/null
+++ b/tests/olc/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/olc/run.sh
similarity index 100%
rename from tests/integration/test.sh
rename to tests/olc/run.sh
-- 
2.46.0


  parent reply	other threads:[~2024-09-22 15:21 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-22 15:15 [PATCH olang v2 0/3] improve test's makes and compiler binary Johnny Richard
2024-09-22 15:15 ` [PATCH olang v2 1/3] olc: rename 'olang' binary to 'olc' Johnny Richard
2024-09-22 15:15 ` Johnny Richard [this message]
2024-09-22 15:15 ` [PATCH olang v2 3/3] tests: build: add parallelization support for unit tests Johnny Richard
2024-09-23  9:09 ` [PATCH olang v2 0/3] improve test's makes and compiler binary Carlos Maniero
2024-09-23 10:57   ` 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=20240922152119.1214443-3-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