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
next prev 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