@@ -757,6 +757,7 @@ async def test_credentials(gptscript):
757
757
res = await gptscript .delete_credential (name = name )
758
758
assert not res .startswith ("an error occurred" ), "Unexpected error deleting credential: " + res
759
759
760
+
760
761
@pytest .mark .asyncio
761
762
async def test_datasets (gptscript ):
762
763
with tempfile .TemporaryDirectory (prefix = "py-gptscript_" ) as tempdir :
@@ -770,7 +771,8 @@ async def test_datasets(gptscript):
770
771
assert len (dataset .elements ) == 0 , "Expected dataset elements to be empty"
771
772
772
773
# Add an element
773
- element_meta = await gptscript .add_dataset_element (tempdir , dataset .id , "element1" , "element1 contents" , "element1 description" )
774
+ element_meta = await gptscript .add_dataset_element (tempdir , dataset .id , "element1" , "element1 contents" ,
775
+ "element1 description" )
774
776
assert element_meta .name == "element1" , "Expected element name to match"
775
777
assert element_meta .description == "element1 description" , "Expected element description to match"
776
778
@@ -792,3 +794,93 @@ async def test_datasets(gptscript):
792
794
assert datasets [0 ].id == dataset .id , "Expected dataset id to match"
793
795
assert datasets [0 ].name == dataset_name , "Expected dataset name to match"
794
796
assert datasets [0 ].description == "this is a test dataset" , "Expected dataset description to match"
797
+
798
+
799
+ @pytest .mark .asyncio
800
+ async def test_create_and_delete_workspace (gptscript ):
801
+ workspace_id = await gptscript .create_workspace ("directory" )
802
+ assert workspace_id != "" and workspace_id .startswith ("directory://" ), "Expected workspace id to be set"
803
+ await gptscript .delete_workspace (workspace_id )
804
+
805
+
806
+ @pytest .mark .asyncio
807
+ async def test_create_read_and_delete_file_in_workspace (gptscript ):
808
+ workspace_id = await gptscript .create_workspace ("directory" )
809
+ await gptscript .write_file_in_workspace ("test.txt" , b"test" , workspace_id )
810
+ contents = await gptscript .read_file_in_workspace ("test.txt" , workspace_id )
811
+ assert contents == b"test"
812
+ await gptscript .delete_file_in_workspace ("test.txt" , workspace_id )
813
+ await gptscript .delete_workspace (workspace_id )
814
+
815
+
816
+ @pytest .mark .asyncio
817
+ async def test_ls_complex_workspace (gptscript ):
818
+ workspace_id = await gptscript .create_workspace ("directory" )
819
+ await gptscript .write_file_in_workspace ("test/test1.txt" , b"hello1" , workspace_id )
820
+ await gptscript .write_file_in_workspace ("test1/test2.txt" , b"hello2" , workspace_id )
821
+ await gptscript .write_file_in_workspace ("test1/test3.txt" , b"hello3" , workspace_id )
822
+ await gptscript .write_file_in_workspace (".hidden.txt" , b"hidden" , workspace_id )
823
+
824
+ files = await gptscript .list_files_in_workspace (workspace_id )
825
+ assert len (files ) == 4
826
+
827
+ files = await gptscript .list_files_in_workspace (workspace_id , prefix = "test1" )
828
+ assert len (files ) == 2
829
+
830
+ await gptscript .remove_all (workspace_id , with_prefix = "test1" )
831
+
832
+ files = await gptscript .list_files_in_workspace (workspace_id )
833
+ assert len (files ) == 2
834
+
835
+ await gptscript .delete_workspace (workspace_id )
836
+
837
+
838
+ @pytest .mark .skipif (
839
+ os .environ .get ("AWS_ACCESS_KEY_ID" ) is None or os .environ .get ("AWS_SECRET_ACCESS_KEY" ) is None ,
840
+ reason = "AWS credentials not set" ,
841
+ )
842
+ @pytest .mark .asyncio
843
+ async def test_create_and_delete_workspace_s3 (gptscript ):
844
+ workspace_id = await gptscript .create_workspace ("s3" )
845
+ assert workspace_id != "" and workspace_id .startswith ("s3://" ), "Expected workspace id to be set"
846
+ await gptscript .delete_workspace (workspace_id )
847
+
848
+
849
+ @pytest .mark .skipif (
850
+ os .environ .get ("AWS_ACCESS_KEY_ID" ) is None or os .environ .get ("AWS_SECRET_ACCESS_KEY" ) is None ,
851
+ reason = "AWS credentials not set" ,
852
+ )
853
+ @pytest .mark .asyncio
854
+ async def test_create_read_and_delete_file_in_workspaces3 (gptscript ):
855
+ workspace_id = await gptscript .create_workspace ("s3" )
856
+ await gptscript .write_file_in_workspace ("test.txt" , b"test" , workspace_id )
857
+ contents = await gptscript .read_file_in_workspace ("test.txt" , workspace_id )
858
+ assert contents == b"test"
859
+ await gptscript .delete_file_in_workspace ("test.txt" , workspace_id )
860
+ await gptscript .delete_workspace (workspace_id )
861
+
862
+
863
+ @pytest .mark .skipif (
864
+ os .environ .get ("AWS_ACCESS_KEY_ID" ) is None or os .environ .get ("AWS_SECRET_ACCESS_KEY" ) is None ,
865
+ reason = "AWS credentials not set" ,
866
+ )
867
+ @pytest .mark .asyncio
868
+ async def test_ls_complex_workspace_s3 (gptscript ):
869
+ workspace_id = await gptscript .create_workspace ("s3" )
870
+ await gptscript .write_file_in_workspace ("test/test1.txt" , b"hello1" , workspace_id )
871
+ await gptscript .write_file_in_workspace ("test1/test2.txt" , b"hello2" , workspace_id )
872
+ await gptscript .write_file_in_workspace ("test1/test3.txt" , b"hello3" , workspace_id )
873
+ await gptscript .write_file_in_workspace (".hidden.txt" , b"hidden" , workspace_id )
874
+
875
+ files = await gptscript .list_files_in_workspace (workspace_id )
876
+ assert len (files ) == 4
877
+
878
+ files = await gptscript .list_files_in_workspace (workspace_id , prefix = "test1" )
879
+ assert len (files ) == 2
880
+
881
+ await gptscript .remove_all (workspace_id , with_prefix = "test1" )
882
+
883
+ files = await gptscript .list_files_in_workspace (workspace_id )
884
+ assert len (files ) == 2
885
+
886
+ await gptscript .delete_workspace (workspace_id )
0 commit comments