@@ -87,31 +87,30 @@ public VirtualFileSystemIntegrationTest() {
87
87
}
88
88
89
89
@ Test
90
- public void defaultValues () {
91
- VirtualFileSystem fs = VirtualFileSystem .create ();
92
- VirtualFileSystem fs2 = VirtualFileSystem .create ();
93
-
94
- assertEquals (fs .getMountPoint (), fs2 .getMountPoint ());
95
-
96
- assertEquals (IS_WINDOWS ? "X:\\ graalpy_vfs" : "/graalpy_vfs" , fs .getMountPoint ());
90
+ public void defaultValues () throws IOException {
91
+ try (VirtualFileSystem fs = VirtualFileSystem .create (); VirtualFileSystem fs2 = VirtualFileSystem .create ()) {
92
+ assertEquals (fs .getMountPoint (), fs2 .getMountPoint ());
93
+ assertEquals (IS_WINDOWS ? "X:\\ graalpy_vfs" : "/graalpy_vfs" , fs .getMountPoint ());
94
+ }
97
95
}
98
96
99
97
@ Test
100
- public void mountPoints () {
101
- VirtualFileSystem fs = VirtualFileSystem .newBuilder ().//
98
+ public void mountPoints () throws IOException {
99
+ try ( VirtualFileSystem vfs = VirtualFileSystem .newBuilder ().//
102
100
unixMountPoint (VFS_UNIX_MOUNT_POINT ).//
103
- windowsMountPoint (VFS_WIN_MOUNT_POINT ).build ();
104
-
105
- assertEquals ( VFS_MOUNT_POINT , fs . getMountPoint ());
101
+ windowsMountPoint (VFS_WIN_MOUNT_POINT ).build ()) {
102
+ assertEquals ( VFS_MOUNT_POINT , vfs . getMountPoint ());
103
+ }
106
104
107
105
String multiPathUnixMountPoint = "/test/mount/point" ;
108
106
String multiPathWinMountPoint = "X:\\ test\\ win\\ mount\\ point" ;
109
107
VirtualFileSystem vfs = VirtualFileSystem .newBuilder ().//
110
108
unixMountPoint (multiPathUnixMountPoint ).//
111
109
windowsMountPoint (multiPathWinMountPoint ).//
112
110
resourceLoadingClass (VirtualFileSystemIntegrationTest .class ).build ();
113
- Context ctx = addTestOptions (GraalPyResources .contextBuilder (vfs )).build ();
114
- ctx .eval (PYTHON , "from os import listdir; listdir('" + (IS_WINDOWS ? multiPathWinMountPoint .replace ("\\ " , "\\ \\ " ) : multiPathUnixMountPoint ) + "')" );
111
+ try (Context ctx = addTestOptions (GraalPyResources .contextBuilder (vfs )).build ()) {
112
+ ctx .eval (PYTHON , "from os import listdir; listdir('" + (IS_WINDOWS ? multiPathWinMountPoint .replace ("\\ " , "\\ \\ " ) : multiPathUnixMountPoint ) + "')" );
113
+ }
115
114
}
116
115
117
116
private static void checkExtractedFile (Path extractedFile , String [] expectedContens ) throws IOException {
@@ -144,10 +143,12 @@ private static void checkException(Class<?> exType, Callable<Object> c, String m
144
143
145
144
@ Test
146
145
public void fsOperations () {
147
- Context ctx = createContext (null , null );
148
- fsOperations (ctx , "/test_mount_point/" );
149
- ctx = createContext (null , b -> b .currentWorkingDirectory (Path .of (VFS_MOUNT_POINT )));
150
- fsOperations (ctx , "" );
146
+ try (Context ctx = createContext (null , null )) {
147
+ fsOperations (ctx , "/test_mount_point/" );
148
+ }
149
+ try (Context ctx = createContext (null , b -> b .currentWorkingDirectory (Path .of (VFS_MOUNT_POINT )))) {
150
+ fsOperations (ctx , "" );
151
+ }
151
152
}
152
153
153
154
public void fsOperations (Context ctx , String pathPrefix ) {
@@ -392,26 +393,28 @@ assert len(l) == 0, 'expect 0 lines from empty file, got ' + str(len(l))
392
393
393
394
@ Test
394
395
public void osChdir () {
395
- Context ctx = createContext (null , null );
396
- // os.path.exists
397
- eval (ctx , """
398
- import os
399
- assert not os.path.exists('file1')
400
- os.chdir('/test_mount_point')
401
- assert os.path.exists('file1')
402
- """ );
396
+ try (Context ctx = createContext (null , null )) {
397
+ // os.path.exists
398
+ eval (ctx , """
399
+ import os
400
+ assert not os.path.exists('file1')
401
+ os.chdir('/test_mount_point')
402
+ assert os.path.exists('file1')
403
+ """ );
404
+ }
403
405
}
404
406
405
407
@ Test
406
408
public void fsOperationsCaseInsensitive () {
407
- Context ctx = createContext (b -> b .caseInsensitive (true ), null );
408
- eval (ctx , """
409
- import os
410
- assert os.path.exists('/test_mount_point/SomeFile')
411
- assert os.path.exists('/test_mount_point/someFile')
412
- assert os.path.exists('/test_mount_point/somefile')
413
- assert not os.path.exists('/test_mount_point/somefile1')
414
- """ );
409
+ try (Context ctx = createContext (b -> b .caseInsensitive (true ), null )) {
410
+ eval (ctx , """
411
+ import os
412
+ assert os.path.exists('/test_mount_point/SomeFile')
413
+ assert os.path.exists('/test_mount_point/someFile')
414
+ assert os.path.exists('/test_mount_point/somefile')
415
+ assert not os.path.exists('/test_mount_point/somefile1')
416
+ """ );
417
+ }
415
418
}
416
419
417
420
private static void eval (Context ctx , String s , String pathPrefix ) {
@@ -449,48 +452,50 @@ public Context createContext(Function<VirtualFileSystem.Builder, VirtualFileSyst
449
452
450
453
@ Test
451
454
public void vfsBuilderTest () {
452
- Context context = addTestOptions (GraalPyResources .contextBuilder ()).allowAllAccess (true ).allowHostAccess (HostAccess .ALL ).build ();
453
- context .eval (PYTHON , "import java; java.type('java.lang.String')" );
454
-
455
- context = addTestOptions (GraalPyResources .contextBuilder ()).allowAllAccess (false ).allowHostAccess (HostAccess .NONE ).build ();
456
- context .eval (PYTHON , """
457
- import java
458
- try:
459
- java.type('java.lang.String');
460
- except NotImplementedError:
461
- pass
462
- else:
463
- assert False, 'expected NotImplementedError'
464
- """ );
455
+ try (Context context = addTestOptions (GraalPyResources .contextBuilder ()).allowAllAccess (true ).allowHostAccess (HostAccess .ALL ).build ()) {
456
+ context .eval (PYTHON , "import java; java.type('java.lang.String')" );
457
+ }
465
458
459
+ try (Context context = addTestOptions (GraalPyResources .contextBuilder ()).allowAllAccess (false ).allowHostAccess (HostAccess .NONE ).build ()) {
460
+ context .eval (PYTHON , """
461
+ import java
462
+ try:
463
+ java.type('java.lang.String');
464
+ except NotImplementedError:
465
+ pass
466
+ else:
467
+ assert False, 'expected NotImplementedError'
468
+ """ );
469
+ }
466
470
VirtualFileSystem fs = VirtualFileSystem .newBuilder ().//
467
471
unixMountPoint (VFS_MOUNT_POINT ).//
468
472
windowsMountPoint (VFS_WIN_MOUNT_POINT ).//
469
473
resourceLoadingClass (VirtualFileSystemIntegrationTest .class ).build ();
470
- context = addTestOptions (GraalPyResources .contextBuilder (fs )).build ();
471
- context .eval (PYTHON , patchMountPoint ("from os import listdir; listdir('/test_mount_point')" ));
472
-
473
- context = GraalPyResources .createContext ();
474
- context .eval (PYTHON , "from os import listdir; listdir('.')" );
474
+ try (Context context = addTestOptions (GraalPyResources .contextBuilder (fs )).build ()) {
475
+ context .eval (PYTHON , patchMountPoint ("from os import listdir; listdir('/test_mount_point')" ));
476
+ }
475
477
476
- context = addTestOptions (GraalPyResources .contextBuilder ()).allowIO (IOAccess .NONE ).build ();
477
- boolean gotPE = false ;
478
- try {
478
+ try (Context context = GraalPyResources .createContext ()) {
479
479
context .eval (PYTHON , "from os import listdir; listdir('.')" );
480
- } catch (PolyglotException pe ) {
481
- gotPE = true ;
482
480
}
483
- assert gotPE : "expected PolyglotException" ;
481
+ try (Context context = addTestOptions (GraalPyResources .contextBuilder ()).allowIO (IOAccess .NONE ).build ()) {
482
+ boolean gotPE = false ;
483
+ try {
484
+ context .eval (PYTHON , "from os import listdir; listdir('.')" );
485
+ } catch (PolyglotException pe ) {
486
+ gotPE = true ;
487
+ }
488
+ assert gotPE : "expected PolyglotException" ;
489
+ }
484
490
}
485
491
486
492
@ Test
487
493
public void externalResourcesBuilderTest () throws IOException {
488
- VirtualFileSystem fs = VirtualFileSystem .newBuilder ().resourceLoadingClass (VirtualFileSystemIntegrationTest .class ).build ();
489
494
Path resourcesDir = Files .createTempDirectory ("vfs-test-resources" );
490
-
491
- // extract VFS
492
- GraalPyResources .extractVirtualFileSystemResources (fs , resourcesDir );
493
-
495
+ try ( VirtualFileSystem fs = VirtualFileSystem . newBuilder (). resourceLoadingClass ( VirtualFileSystemIntegrationTest . class ). build ()) {
496
+ // extract VFS
497
+ GraalPyResources .extractVirtualFileSystemResources (fs , resourcesDir );
498
+ }
494
499
// check extracted contents
495
500
InputStream stream = VirtualFileSystemIntegrationTest .class .getResourceAsStream ("/org.graalvm.python.vfs/fileslist.txt" );
496
501
BufferedReader br = new BufferedReader (new InputStreamReader (stream ));
@@ -535,30 +540,37 @@ public void vfsMountPointTest() {
535
540
@ SuppressWarnings ("unchecked" )
536
541
@ Test
537
542
public void pythonPathsTest () throws IOException {
538
- Context ctx = GraalPyResources .createContext ();
539
- String getPathsSource = "import sys; [__graalpython__.get_python_home_paths(), sys.path, sys.executable]" ;
543
+ String defaultMountPoint ;
544
+ try (VirtualFileSystem vfs = VirtualFileSystem .newBuilder ().build ()) {
545
+ defaultMountPoint = vfs .getMountPoint ();
546
+ }
540
547
541
- Value paths = ctx .eval ("python" , getPathsSource );
542
- String defaultMountPoint = VirtualFileSystem .newBuilder ().build ().getMountPoint ();
543
- assertEquals (IS_WINDOWS ? "X:\\ graalpy_vfs" : "/graalpy_vfs" , defaultMountPoint );
544
- checkPaths (paths .as (List .class ), defaultMountPoint );
548
+ String getPathsSource = "import sys; [__graalpython__.get_python_home_paths(), sys.path, sys.executable]" ;
549
+ try (Context ctx = GraalPyResources .createContext ()) {
550
+ Value paths = ctx .eval ("python" , getPathsSource );
545
551
546
- ctx = GraalPyResources . contextBuilder (). build ( );
547
- paths = ctx . eval ( "python" , getPathsSource );
548
- checkPaths ( paths . as ( List . class ), defaultMountPoint );
552
+ assertEquals ( IS_WINDOWS ? "X: \\ graalpy_vfs" : "/graalpy_vfs" , defaultMountPoint );
553
+ checkPaths ( paths . as ( List . class ), defaultMountPoint );
554
+ }
549
555
556
+ try (Context ctx = GraalPyResources .contextBuilder ().build ()) {
557
+ Value paths = ctx .eval ("python" , getPathsSource );
558
+ checkPaths (paths .as (List .class ), defaultMountPoint );
559
+ }
550
560
VirtualFileSystem vfs = VirtualFileSystem .newBuilder ().//
551
561
unixMountPoint (VFS_UNIX_MOUNT_POINT ).//
552
562
windowsMountPoint (VFS_WIN_MOUNT_POINT ).build ();
553
563
assertEquals (VFS_MOUNT_POINT , vfs .getMountPoint ());
554
- ctx = GraalPyResources .contextBuilder (vfs ).build ();
555
- paths = ctx .eval ("python" , getPathsSource );
556
- checkPaths (paths .as (List .class ), vfs .getMountPoint (), true );
557
-
564
+ try ( Context ctx = GraalPyResources .contextBuilder (vfs ).build ()) {
565
+ Value paths = ctx .eval ("python" , getPathsSource );
566
+ checkPaths (paths .as (List .class ), vfs .getMountPoint (), true );
567
+ }
558
568
Path resourcesDir = Files .createTempDirectory ("python-resources" );
559
- ctx = GraalPyResources .contextBuilder (resourcesDir ).build ();
560
- paths = ctx .eval ("python" , getPathsSource );
561
- checkPaths (paths .as (List .class ), resourcesDir .toString ());
569
+
570
+ try (Context ctx = GraalPyResources .contextBuilder (resourcesDir ).build ()) {
571
+ Value paths = ctx .eval ("python" , getPathsSource );
572
+ checkPaths (paths .as (List .class ), resourcesDir .toString ());
573
+ }
562
574
}
563
575
564
576
private static void checkPaths (List <Object > l , String pathPrefix ) {
0 commit comments