11import pytest
22import vetiver
3+ import pins
4+ from pathlib import Path
5+ from tempfile import TemporaryDirectory
36import pandas as pd
47import numpy as np
58
69DOCKER_URL = "http://0.0.0.0:8080/predict"
710
8- pytestmark = pytest .mark .docker # noqa
11+ # uses GitHub Actions to deploy model into Docker
12+ # see vetiver-python/script/setup-docker for files
913
1014
11- def test_predict_sklearn_df_check_ptype ():
15+ @pytest .mark .docker
16+ def test_deployed_dockerfile ():
1217 np .random .seed (500 )
1318
1419 X , y = vetiver .mock .get_mock_data ()
@@ -17,3 +22,40 @@ def test_predict_sklearn_df_check_ptype():
1722 assert isinstance (response , pd .DataFrame ), response
1823 assert response .iloc [0 , 0 ] == 44.47
1924 assert len (response ) == 100
25+
26+
27+ @pytest .fixture ()
28+ def create_vetiver_model ():
29+ X , y = vetiver .get_mock_data ()
30+ model = vetiver .get_mock_model ()
31+
32+ return vetiver .VetiverModel (model .fit (X , y ), "model" , prototype_data = X )
33+
34+
35+ @pytest .mark .parametrize (
36+ "prot,output" ,
37+ [
38+ (["s3" , "s3a" ], "s3fs" ),
39+ ("abfs" , "adlfs" ),
40+ (("gcs" , "gs" ), "gcsfs" ),
41+ ],
42+ )
43+ def test_get_board_pkgs (prot , output , create_vetiver_model ):
44+ board = pins .board_temp (allow_pickle_read = True )
45+ board .fs .protocol = prot
46+
47+ vetiver .vetiver_pin_write (board , create_vetiver_model )
48+
49+ with TemporaryDirectory () as tempdir :
50+ vetiver .prepare_docker (board , "model" , path = tempdir )
51+ file = Path (tempdir , "vetiver_requirements.txt" )
52+ contents = open (file ).read ()
53+ assert f"{ output } ==" in contents
54+
55+
56+ def test_warning_if_no_protocol (create_vetiver_model ):
57+ with pytest .warns (UserWarning ):
58+ board = pins .board_temp (allow_pickle_read = True )
59+ board .fs .protocol = "abc"
60+
61+ vetiver .get_board_pkgs (board )
0 commit comments