13
13
import tempfile
14
14
15
15
from contextlib import contextmanager
16
- from itertools import product
17
16
18
17
import pretend
19
18
import pytest
24
23
import warehouse .packaging .tasks
25
24
26
25
from warehouse .accounts .models import WebAuthn
27
- from warehouse .packaging .models import Description
26
+ from warehouse .packaging .models import Description , MissingDatasetFile
28
27
from warehouse .packaging .tasks import (
29
28
check_file_cache_tasks_outstanding ,
30
29
compute_2fa_metrics ,
@@ -734,19 +733,18 @@ def test_sync_rows(
734
733
DependencyFactory .create (release = release , kind = 2 )
735
734
DependencyFactory .create (release = release , kind = 3 )
736
735
DependencyFactory .create (release = release , kind = 4 )
737
- load_config = pretend . call_recorder ( lambda * a , ** kw : None )
738
- monkeypatch . setattr ( "warehouse.packaging.tasks.LoadJobConfig" , load_config )
736
+ missing = MissingDatasetFile ( file_id = release_file . id )
737
+ db_request . db . add ( missing )
739
738
740
739
query = pretend .stub (
741
740
result = pretend .call_recorder (
742
741
lambda * a , ** kw : [{"md5_digest" : release_file2 .md5_digest }]
743
742
)
744
743
)
745
744
get_table = pretend .stub (schema = bq_schema )
746
- get_result = pretend .stub (result = lambda : None )
747
745
bigquery = pretend .stub (
748
746
get_table = pretend .call_recorder (lambda t : get_table ),
749
- load_table_from_json = pretend .call_recorder (lambda * a , ** kw : get_result ),
747
+ insert_rows_json = pretend .call_recorder (lambda * a , ** kw : None ),
750
748
query = pretend .call_recorder (lambda q : query ),
751
749
)
752
750
@@ -765,17 +763,11 @@ def find_service(name=None):
765
763
766
764
assert db_request .find_service .calls == [pretend .call (name = "gcloud.bigquery" )]
767
765
assert bigquery .get_table .calls == expected_get_table_calls
768
- assert bigquery .query .calls == [
769
- pretend .call (query .format (table ))
770
- for table in release_files_table .split ()
771
- for query in [
772
- "SELECT md5_digest FROM {} WHERE md5_digest LIKE 'ff%'" ,
773
- "SELECT md5_digest FROM {} WHERE md5_digest LIKE 'fe%'" ,
774
- ]
775
- ]
776
- assert bigquery .load_table_from_json .calls == [
766
+ assert bigquery .query .calls == []
767
+ assert bigquery .insert_rows_json .calls == [
777
768
pretend .call (
778
- [
769
+ table = table ,
770
+ json_rows = [
779
771
{
780
772
"metadata_version" : None ,
781
773
"name" : project .name ,
@@ -818,54 +810,11 @@ def find_service(name=None):
818
810
"blake2_256_digest" : release_file .blake2_256_digest ,
819
811
},
820
812
],
821
- table ,
822
- job_config = None ,
823
813
)
824
814
for table in release_files_table .split ()
825
815
]
826
816
827
- @pytest .mark .parametrize ("bq_schema" , [bq_schema ])
828
- def test_no_diff (self , db_request , monkeypatch , bq_schema ):
829
- project = ProjectFactory .create ()
830
- release = ReleaseFactory .create (project = project )
831
- release_file = FileFactory .create (
832
- release = release , filename = f"foobar-{ release .version } .tar.gz"
833
- )
834
-
835
- query = pretend .stub (
836
- result = pretend .call_recorder (
837
- lambda * a , ** kw : [{"md5_digest" : release_file .md5_digest }]
838
- )
839
- )
840
- get_table = pretend .stub (schema = bq_schema )
841
- bigquery = pretend .stub (
842
- get_table = pretend .call_recorder (lambda t : get_table ),
843
- query = pretend .call_recorder (lambda q : query ),
844
- )
845
-
846
- @pretend .call_recorder
847
- def find_service (name = None ):
848
- if name == "gcloud.bigquery" :
849
- return bigquery
850
- raise LookupError
851
-
852
- db_request .find_service = find_service
853
- db_request .registry .settings = {
854
- "warehouse.release_files_table" : "example.pypi.distributions"
855
- }
856
-
857
- sync_bigquery_release_files (db_request )
858
-
859
- assert db_request .find_service .calls == [pretend .call (name = "gcloud.bigquery" )]
860
- assert bigquery .get_table .calls == [pretend .call ("example.pypi.distributions" )]
861
- assert bigquery .query .calls == [
862
- pretend .call (
863
- "SELECT md5_digest "
864
- "FROM example.pypi.distributions "
865
- f"WHERE md5_digest LIKE '{ first } { second } %'" ,
866
- )
867
- for first , second in product ("fedcba9876543210" , repeat = 2 )
868
- ]
817
+ assert missing .processed
869
818
870
819
def test_var_is_none (self ):
871
820
request = pretend .stub (
0 commit comments