@@ -680,6 +680,8 @@ class GraalPythonTags(object):
680
680
unittest_hpy_sandboxed = 'python-unittest-hpy-sandboxed'
681
681
unittest_posix = 'python-unittest-posix'
682
682
unittest_standalone = 'python-unittest-standalone'
683
+ unittest_gradle_plugin = 'python-unittest-gradle-plugin'
684
+ unittest_maven_plugin = 'python-unittest-maven-plugin'
683
685
ginstall = 'python-ginstall'
684
686
tagged = 'python-tagged-unittest'
685
687
svmunit = 'python-svm-unittest'
@@ -764,7 +766,7 @@ def graalpy_standalone_home(standalone_type, enterprise=False, dev=False, build=
764
766
python_home = os .path .abspath (glob .glob (python_home )[0 ])
765
767
mx .log ("Using GraalPy standalone from GRAALPY_HOME: " + python_home )
766
768
# Try to verify that we're getting what we expect:
767
- has_java = os .path .exists (os .path .join (python_home , 'jvm' , 'bin' , 'java' ))
769
+ has_java = os .path .exists (os .path .join (python_home , 'jvm' , 'bin' , 'java.exe' if WIN32 else 'java ' ))
768
770
if has_java != (standalone_type == 'jvm' ):
769
771
mx .abort (f"GRAALPY_HOME is not compatible with the requested distribution type.\n "
770
772
f"jvm/bin/java exists?: { has_java } , requested type={ standalone_type } ." )
@@ -855,6 +857,48 @@ def graalpy_standalone_native_enterprise():
855
857
856
858
857
859
def graalvm_jdk ():
860
+ jdk_version = mx .get_jdk ().version
861
+
862
+ # Check if GRAAL_JDK_HOME points to some compatible pre-built gvm
863
+ graal_jdk_home = os .environ .get ("GRAAL_JDK_HOME" , None )
864
+ if graal_jdk_home and "*" in graal_jdk_home :
865
+ graal_jdk_home = os .path .abspath (glob .glob (graal_jdk_home )[0 ])
866
+ if sys .platform == "darwin" :
867
+ graal_jdk_home = os .path .join (graal_jdk_home , 'Contents' , 'Home' )
868
+ mx .log ("Using GraalPy standalone from GRAAL_JDK_HOME: " + graal_jdk_home )
869
+
870
+ # Try to verify that we're getting what we expect:
871
+ has_java = os .path .exists (os .path .join (graal_jdk_home , 'bin' , 'java.exe' if WIN32 else 'java' ))
872
+ if not has_java :
873
+ mx .abort (f"GRAAL_JDK_HOME does not contain java executable." )
874
+
875
+ release = os .path .join (graal_jdk_home , 'release' )
876
+ if not os .path .exists (release ):
877
+ mx .abort (f"No 'release' file in GRAAL_JDK_HOME." )
878
+
879
+ java_version = None
880
+ implementor = None
881
+ with open (release , 'r' ) as f :
882
+ while not (java_version and implementor ):
883
+ line = f .readline ()
884
+ if 'JAVA_VERSION=' in line :
885
+ java_version = line
886
+ if 'IMPLEMENTOR=' in line :
887
+ implementor = line
888
+
889
+ if not java_version :
890
+ mx .abort (f"Could not check Java version in GRAAL_JDK_HOME 'release' file." )
891
+ actual_jdk_version = mx .VersionSpec (java_version .strip ('JAVA_VERSION=' ).strip (' "\n \r ' ))
892
+ if actual_jdk_version != jdk_version :
893
+ mx .abort (f"GRAAL_JDK_HOME is not compatible with the requested JDK version.\n "
894
+ f"actual version: '{ actual_jdk_version } ', version string: { java_version } , requested version: { jdk_version } ." )
895
+
896
+ if not implementor :
897
+ mx .abort (f"Could not check implementor in GRAAL_JDK_HOME 'release' file." )
898
+ if 'GraalVM' not in implementor :
899
+ mx .abort (f"GRAAL_JDK_HOME 'releases' has an unexpected implementor: '{ implementor } '." )
900
+ return graal_jdk_home
901
+
858
902
jdk_major_version = mx .get_jdk ().version .parts [0 ]
859
903
mx_args = ['-p' , os .path .join (mx .suite ('truffle' ).dir , '..' , 'vm' ), '--env' , 'ce' ]
860
904
if not DISABLE_REBUILD :
@@ -1379,12 +1423,7 @@ def graalpython_gate_runner(args, tasks):
1379
1423
standalone_home = graalpy_standalone_home ('jvm' )
1380
1424
mvn_repo_path , version , env = deploy_local_maven_repo ()
1381
1425
1382
- # in order to run gradle we need a jdk <= 22
1383
- env ['GRADLE_JAVA_HOME' ] = env .get ('JAVA_HOME' )
1384
-
1385
1426
env ['ENABLE_STANDALONE_UNITTESTS' ] = 'true'
1386
- env ['ENABLE_GRADLE_PLUGIN_UNITTESTS' ] = 'true'
1387
- env ['ENABLE_MAVEN_PLUGIN_UNITTESTS' ] = 'true'
1388
1427
env ['ENABLE_JBANG_INTEGRATION_UNITTESTS' ] = 'true'
1389
1428
env ['JAVA_HOME' ] = gvm_jdk
1390
1429
env ['PYTHON_STANDALONE_HOME' ] = standalone_home
@@ -1395,14 +1434,6 @@ def graalpython_gate_runner(args, tasks):
1395
1434
mx_urlrewrites .rewriteurl ('https://repo1.maven.org/maven2/' ),
1396
1435
])
1397
1436
1398
- urls = get_wrapper_urls ("graalpython/com.oracle.graal.python.test/src/tests/standalone/mvnw/.mvn/wrapper/maven-wrapper.properties" , ["distributionUrl" ])
1399
- if "distributionUrl" in urls :
1400
- env ["MAVEN_DISTRIBUTION_URL_OVERRIDE" ] = mx_urlrewrites .rewriteurl (urls ["distributionUrl" ])
1401
-
1402
- urls = get_wrapper_urls ("graalpython/com.oracle.graal.python.test/src/tests/standalone/gradle/gradle-test-project/gradle/wrapper/gradle-wrapper.properties" , ["distributionUrl" ])
1403
- if "distributionUrl" in urls :
1404
- env ["GRADLE_DISTRIBUTION_URL_OVERRIDE" ] = mx_urlrewrites .rewriteurl (urls ["distributionUrl" ])
1405
-
1406
1437
env ["org.graalvm.maven.downloader.version" ] = version
1407
1438
env ["org.graalvm.maven.downloader.repository" ] = f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /"
1408
1439
@@ -1416,7 +1447,74 @@ def graalpython_gate_runner(args, tasks):
1416
1447
mx .logv (f"running with os.environ extended with: { env = } " )
1417
1448
run_python_unittests (
1418
1449
os .path .join (standalone_home , 'bin' , _graalpy_launcher ()),
1419
- paths = ["graalpython/com.oracle.graal.python.test/src/tests/standalone" ],
1450
+ paths = ["graalpython/com.oracle.graal.python.test/src/tests/standalone/test_jbang_integration.py" ,
1451
+ "graalpython/com.oracle.graal.python.test/src/tests/standalone/test_standalone.py" ],
1452
+ env = env ,
1453
+ parallel = 3 ,
1454
+ )
1455
+
1456
+ with Task ('GraalPython gradle plugin tests' , tasks , tags = [GraalPythonTags .unittest_gradle_plugin ]) as task :
1457
+ if task :
1458
+ gvm_jdk = graalvm_jdk ()
1459
+ standalone_home = graalpy_standalone_home ('jvm' )
1460
+ mvn_repo_path , version , env = deploy_local_maven_repo ()
1461
+
1462
+ env ['ENABLE_GRADLE_PLUGIN_UNITTESTS' ] = 'true'
1463
+ env ['JAVA_HOME' ] = gvm_jdk
1464
+ env ['PYTHON_STANDALONE_HOME' ] = standalone_home
1465
+
1466
+ # setup maven downloader overrides
1467
+ env ['MAVEN_REPO_OVERRIDE' ] = "," .join ([
1468
+ f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /" ,
1469
+ mx_urlrewrites .rewriteurl ('https://repo1.maven.org/maven2/' ),
1470
+ ])
1471
+
1472
+ urls = get_wrapper_urls ("graalpython/com.oracle.graal.python.test/src/tests/standalone/gradle/gradle-test-project/gradle/wrapper/gradle-wrapper.properties" , ["distributionUrl" ])
1473
+ if "distributionUrl" in urls :
1474
+ env ["GRADLE_DISTRIBUTION_URL_OVERRIDE" ] = mx_urlrewrites .rewriteurl (urls ["distributionUrl" ])
1475
+
1476
+ env ["org.graalvm.maven.downloader.version" ] = version
1477
+ env ["org.graalvm.maven.downloader.repository" ] = f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /"
1478
+
1479
+ # run the test
1480
+ mx .logv (f"running with os.environ extended with: { env = } " )
1481
+
1482
+ run_python_unittests (
1483
+ os .path .join (standalone_home , 'bin' , _graalpy_launcher ()),
1484
+ paths = ["graalpython/com.oracle.graal.python.test/src/tests/standalone/test_gradle_plugin.py" ],
1485
+ env = env ,
1486
+ parallel = 3 ,
1487
+ )
1488
+
1489
+ with Task ('GraalPython maven plugin tests' , tasks , tags = [GraalPythonTags .unittest_maven_plugin ]) as task :
1490
+ if task :
1491
+ gvm_jdk = graalvm_jdk ()
1492
+ standalone_home = graalpy_standalone_home ('jvm' )
1493
+ mvn_repo_path , version , env = deploy_local_maven_repo ()
1494
+
1495
+ env ['ENABLE_MAVEN_PLUGIN_UNITTESTS' ] = 'true'
1496
+ env ['JAVA_HOME' ] = gvm_jdk
1497
+ env ['PYTHON_STANDALONE_HOME' ] = standalone_home
1498
+
1499
+ # setup maven downloader overrides
1500
+ env ['MAVEN_REPO_OVERRIDE' ] = "," .join ([
1501
+ f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /" ,
1502
+ mx_urlrewrites .rewriteurl ('https://repo1.maven.org/maven2/' ),
1503
+ ])
1504
+
1505
+ urls = get_wrapper_urls ("graalpython/com.oracle.graal.python.test/src/tests/standalone/mvnw/.mvn/wrapper/maven-wrapper.properties" , ["distributionUrl" ])
1506
+ if "distributionUrl" in urls :
1507
+ env ["MAVEN_DISTRIBUTION_URL_OVERRIDE" ] = mx_urlrewrites .rewriteurl (urls ["distributionUrl" ])
1508
+
1509
+ env ["org.graalvm.maven.downloader.version" ] = version
1510
+ env ["org.graalvm.maven.downloader.repository" ] = f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /"
1511
+
1512
+ # run the test
1513
+ mx .logv (f"running with os.environ extended with: { env = } " )
1514
+
1515
+ run_python_unittests (
1516
+ os .path .join (standalone_home , 'bin' , _graalpy_launcher ()),
1517
+ paths = ["graalpython/com.oracle.graal.python.test/src/tests/standalone/test_maven_plugin.py" ],
1420
1518
env = env ,
1421
1519
parallel = 3 ,
1422
1520
)
0 commit comments