From cff43417c19c72935b3b11610c309ec7a971467c Mon Sep 17 00:00:00 2001 From: "Garcia Orozco, David" Date: Thu, 23 Jan 2025 09:04:37 -0800 Subject: [PATCH] Move E2EExpr unit tests back into E2EExpr.py --- sycl/test-e2e/E2EExpr.py | 39 +++++++++++++++++++ .../e2e_test_requirements/E2EExpr_tests.py | 39 ------------------- .../check_e2eexpr_logic.cpp | 4 +- 3 files changed, 41 insertions(+), 41 deletions(-) delete mode 100644 sycl/test/e2e_test_requirements/E2EExpr_tests.py diff --git a/sycl/test-e2e/E2EExpr.py b/sycl/test-e2e/E2EExpr.py index ff02aebbf3d60..82ae7ccdc2a73 100644 --- a/sycl/test-e2e/E2EExpr.py +++ b/sycl/test-e2e/E2EExpr.py @@ -86,3 +86,42 @@ def parseAll(self): self.parseOR() self.expect(BooleanExpression.END) return self.findal_unknown_value if self.unknown else self.value + + +import unittest + + +class TestE2EExpr(unittest.TestCase): + def test_basic(self): + # Non build-only expressions should work the same + self.assertTrue(E2EExpr.evaluate("linux", {"linux", "rt_feature"}, False)) + self.assertTrue(E2EExpr.evaluate("rt_feature", {"linux", "rt_feature"}, False)) + self.assertFalse(E2EExpr.evaluate( "another_aspect && rt_feature", {"linux", "rt_feature"}, False)) + # build-only expressions with no unknowns should work the same + self.assertTrue(E2EExpr.evaluate("linux", {"linux"}, True, final_unknown_value=False)) + self.assertFalse(E2EExpr.evaluate( "linux && windows", {"linux"}, True, final_unknown_value=True)) + self.assertTrue(E2EExpr.evaluate( "!(windows || zstd)", {"linux"}, True, final_unknown_value=False)) + # build-only expressions where unknown affects the resulting value + self.assertTrue(E2EExpr.evaluate("rt_feature", {}, True, final_unknown_value=True)) + self.assertFalse(E2EExpr.evaluate("rt_feature", {}, True, final_unknown_value=False)) + self.assertTrue(E2EExpr.evaluate("rt_feature", {"rt_feature"}, True, final_unknown_value=True)) + self.assertFalse(E2EExpr.evaluate("rt_feature", {"rt_feature"}, True, final_unknown_value=False)) + self.assertFalse(E2EExpr.evaluate("!rt_feature", {}, True, final_unknown_value=False)) + self.assertFalse(E2EExpr.evaluate("!!rt_feature", {}, True, final_unknown_value=False)) + self.assertTrue(E2EExpr.evaluate("windows || rt_feature", {"linux"}, True, final_unknown_value=True)) + self.assertFalse(E2EExpr.evaluate("windows || rt_feature", {"linux"}, True, final_unknown_value=False)) + self.assertTrue(E2EExpr.evaluate("linux && rt_feature", {"linux"}, True, final_unknown_value=True)) + self.assertFalse(E2EExpr.evaluate("linux && rt_feature", {"linux"}, True, final_unknown_value=False)) + self.assertTrue(E2EExpr.evaluate( "linux && !(windows || rt_feature)", {"linux"}, True, final_unknown_value=True)) + self.assertFalse(E2EExpr.evaluate( "linux && !(windows || rt_feature)", {"linux"}, True, final_unknown_value=False)) + # build-only expressions where unknown does not affect the resulting value + self.assertTrue(E2EExpr.evaluate("linux || rt_feature", {"linux"}, True, final_unknown_value=True)) + self.assertTrue(E2EExpr.evaluate("linux || rt_feature", {"linux"}, True, final_unknown_value=False)) + self.assertFalse(E2EExpr.evaluate("windows && rt_feature", {"linux"}, True, final_unknown_value=True)) + self.assertFalse(E2EExpr.evaluate("windows && rt_feature", {"linux"}, True, final_unknown_value=False)) + self.assertFalse(E2EExpr.evaluate( "linux && (windows && rt_feature)", {"linux"}, True, final_unknown_value=True)) + self.assertFalse(E2EExpr.evaluate( "linux && (windows && rt_feature)", {"linux"}, True, final_unknown_value=False)) + + +if __name__ == "__main__": + unittest.main() diff --git a/sycl/test/e2e_test_requirements/E2EExpr_tests.py b/sycl/test/e2e_test_requirements/E2EExpr_tests.py deleted file mode 100644 index f4ef5b4cd9efa..0000000000000 --- a/sycl/test/e2e_test_requirements/E2EExpr_tests.py +++ /dev/null @@ -1,39 +0,0 @@ -from E2EExpr import E2EExpr - -import unittest - - -class TestE2EExpr(unittest.TestCase): - def test_basic(self): - # Non build-only expressions should work the same - self.assertTrue(E2EExpr.evaluate("linux", {"linux", "rt_feature"}, False)) - self.assertTrue(E2EExpr.evaluate("rt_feature", {"linux", "rt_feature"}, False)) - self.assertFalse(E2EExpr.evaluate( "another_aspect && rt_feature", {"linux", "rt_feature"}, False)) - # build-only expressions with no unknowns should work the same - self.assertTrue(E2EExpr.evaluate("linux", {"linux"}, True, final_unknown_value=False)) - self.assertFalse(E2EExpr.evaluate( "linux && windows", {"linux"}, True, final_unknown_value=True)) - self.assertTrue(E2EExpr.evaluate( "!(windows || zstd)", {"linux"}, True, final_unknown_value=False)) - # build-only expressions where unknown affects the resulting value - self.assertTrue(E2EExpr.evaluate("rt_feature", {}, True, final_unknown_value=True)) - self.assertFalse(E2EExpr.evaluate("rt_feature", {}, True, final_unknown_value=False)) - self.assertTrue(E2EExpr.evaluate("rt_feature", {"rt_feature"}, True, final_unknown_value=True)) - self.assertFalse(E2EExpr.evaluate("rt_feature", {"rt_feature"}, True, final_unknown_value=False)) - self.assertFalse(E2EExpr.evaluate("!rt_feature", {}, True, final_unknown_value=False)) - self.assertFalse(E2EExpr.evaluate("!!rt_feature", {}, True, final_unknown_value=False)) - self.assertTrue(E2EExpr.evaluate("windows || rt_feature", {"linux"}, True, final_unknown_value=True)) - self.assertFalse(E2EExpr.evaluate("windows || rt_feature", {"linux"}, True, final_unknown_value=False)) - self.assertTrue(E2EExpr.evaluate("linux && rt_feature", {"linux"}, True, final_unknown_value=True)) - self.assertFalse(E2EExpr.evaluate("linux && rt_feature", {"linux"}, True, final_unknown_value=False)) - self.assertTrue(E2EExpr.evaluate( "linux && !(windows || rt_feature)", {"linux"}, True, final_unknown_value=True)) - self.assertFalse(E2EExpr.evaluate( "linux && !(windows || rt_feature)", {"linux"}, True, final_unknown_value=False)) - # build-only expressions where unknown does not affect the resulting value - self.assertTrue(E2EExpr.evaluate("linux || rt_feature", {"linux"}, True, final_unknown_value=True)) - self.assertTrue(E2EExpr.evaluate("linux || rt_feature", {"linux"}, True, final_unknown_value=False)) - self.assertFalse(E2EExpr.evaluate("windows && rt_feature", {"linux"}, True, final_unknown_value=True)) - self.assertFalse(E2EExpr.evaluate("windows && rt_feature", {"linux"}, True, final_unknown_value=False)) - self.assertFalse(E2EExpr.evaluate( "linux && (windows && rt_feature)", {"linux"}, True, final_unknown_value=True)) - self.assertFalse(E2EExpr.evaluate( "linux && (windows && rt_feature)", {"linux"}, True, final_unknown_value=False)) - - -if __name__ == "__main__": - unittest.main() diff --git a/sycl/test/e2e_test_requirements/check_e2eexpr_logic.cpp b/sycl/test/e2e_test_requirements/check_e2eexpr_logic.cpp index d8d5c8ecacfeb..baf6412294a6d 100644 --- a/sycl/test/e2e_test_requirements/check_e2eexpr_logic.cpp +++ b/sycl/test/e2e_test_requirements/check_e2eexpr_logic.cpp @@ -3,6 +3,6 @@ // statements. This test runs the unit tests related to these expressions. // // REQUIRES: linux -// DEFINE: %{e2e_folder}=%S/../../test-e2e +// DEFINE: %{E2EExpr}=%S/../../test-e2e/E2EExpr.py // DEFINE: %{lit_source}=%S/../../../llvm/utils/lit -// RUN: env PYTHONPATH=%{lit_source}:%{e2e_folder} python %S/E2EExpr_tests.py +// RUN: env PYTHONPATH=%{lit_source} python %{E2EExpr}