2929class TestCondaParser (TestCase ):
3030
3131 def test_conda_list_json (self ) -> None :
32- conda_list_ouptut_file = os .path .join (os .path .dirname (__file__ ),
32+ conda_list_output_file = os .path .join (os .path .dirname (__file__ ),
3333 'fixtures/conda-list-output.json' )
3434
35- with (open (conda_list_ouptut_file , 'r' )) as conda_list_output_fh :
35+ with (open (conda_list_output_file , 'r' )) as conda_list_output_fh :
3636 parser = CondaListJsonParser (conda_data = conda_list_output_fh .read ())
3737
3838 self .assertEqual (34 , parser .component_count ())
@@ -42,15 +42,17 @@ def test_conda_list_json(self) -> None:
4242 self .assertIsNotNone (c_idna )
4343 self .assertEqual ('idna' , c_idna .name )
4444 self .assertEqual ('2.10' , c_idna .version )
45+ self .assertEqual ('pkg:conda/idna@2.10?build=pyhd3eb1b0_0&channel=pkgs/main&subdir=noarch' ,
46+ c_idna .purl .to_string ())
4547 self .assertEqual (1 , len (c_idna .external_references ), f'{ c_idna .external_references } ' )
4648 self .assertEqual (0 , len (c_idna .external_references .pop ().hashes ))
4749 self .assertEqual (0 , len (c_idna .hashes ), f'{ c_idna .hashes } ' )
4850
4951 def test_conda_list_explicit_md5 (self ) -> None :
50- conda_list_ouptut_file = os .path .join (os .path .dirname (__file__ ),
52+ conda_list_output_file = os .path .join (os .path .dirname (__file__ ),
5153 'fixtures/conda-list-explicit-md5.txt' )
5254
53- with (open (conda_list_ouptut_file , 'r' )) as conda_list_output_fh :
55+ with (open (conda_list_output_file , 'r' )) as conda_list_output_fh :
5456 parser = CondaListExplicitParser (conda_data = conda_list_output_fh .read ())
5557
5658 self .assertEqual (34 , parser .component_count ())
@@ -60,6 +62,8 @@ def test_conda_list_explicit_md5(self) -> None:
6062 self .assertIsNotNone (c_idna )
6163 self .assertEqual ('idna' , c_idna .name )
6264 self .assertEqual ('2.10' , c_idna .version )
65+ self .assertEqual ('pkg:conda/idna@2.10?build=pyhd3eb1b0_0&channel=pkgs/main&subdir=noarch&type=tar.bz2' ,
66+ c_idna .purl .to_string ())
6367 self .assertEqual (1 , len (c_idna .external_references ), f'{ c_idna .external_references } ' )
6468 self .assertEqual (0 , len (c_idna .external_references .pop ().hashes ))
6569 self .assertEqual (1 , len (c_idna .hashes ), f'{ c_idna .hashes } ' )
@@ -70,8 +74,8 @@ def test_conda_list_explicit_md5(self) -> None:
7074 def test_conda_list_build_number_text (self ) -> None :
7175 conda_list_output_file = os .path .join (os .path .dirname (__file__ ), 'fixtures/conda-list-build-number-text.txt' )
7276
73- with (open (conda_list_output_file , 'r' )) as conda_list_ouptut_fh :
74- parser = CondaListExplicitParser (conda_data = conda_list_ouptut_fh .read ())
77+ with (open (conda_list_output_file , 'r' )) as conda_list_output_fh :
78+ parser = CondaListExplicitParser (conda_data = conda_list_output_fh .read ())
7579
7680 self .assertEqual (39 , parser .component_count ())
7781 components = parser .get_components ()
@@ -80,21 +84,29 @@ def test_conda_list_build_number_text(self) -> None:
8084 self .assertIsNotNone (c_libgcc_mutex )
8185 self .assertEqual ('_libgcc_mutex' , c_libgcc_mutex .name )
8286 self .assertEqual ('0.1' , c_libgcc_mutex .version )
87+ self .assertEqual ('pkg:conda/_libgcc_mutex@0.1?build=main&channel=pkgs/main&subdir=linux-64&type=conda' ,
88+ c_libgcc_mutex .purl .to_string ())
8389 self .assertEqual (0 , len (c_libgcc_mutex .hashes ), f'{ c_libgcc_mutex .hashes } ' )
90+
8491 c_pycparser = next (filter (lambda c : c .name == 'pycparser' , components ), None )
8592 self .assertIsNotNone (c_pycparser )
8693 self .assertEqual ('pycparser' , c_pycparser .name )
8794 self .assertEqual ('2.21' , c_pycparser .version )
95+ self .assertEqual ('pkg:conda/pycparser@2.21?build=pyhd3eb1b0_0&channel=pkgs/main&subdir=noarch&type=conda' ,
96+ c_pycparser .purl .to_string ())
8897 self .assertEqual (0 , len (c_pycparser .hashes ), f'{ c_pycparser .hashes } ' )
98+
8999 c_openmp_mutex = next (filter (lambda c : c .name == '_openmp_mutex' , components ), None )
90100 self .assertIsNotNone (c_openmp_mutex )
91101 self .assertEqual ('_openmp_mutex' , c_openmp_mutex .name )
92102 self .assertEqual ('4.5' , c_openmp_mutex .version )
103+ self .assertEqual ('pkg:conda/_openmp_mutex@4.5?build=1_gnu&channel=pkgs/main&subdir=linux-64&type=tar.bz2' ,
104+ c_openmp_mutex .purl .to_string ())
93105 self .assertEqual (0 , len (c_openmp_mutex .hashes ), f'{ c_openmp_mutex .hashes } ' )
94106
95107 def test_conda_list_malformed (self ) -> None :
96108 conda_list_output_file = os .path .join (os .path .dirname (__file__ ), 'fixtures/conda-list-broken.txt' )
97109
98- with (open (conda_list_output_file , 'r' )) as conda_list_ouptut_fh :
110+ with (open (conda_list_output_file , 'r' )) as conda_list_output_fh :
99111 with self .assertRaisesRegex (ValueError , re .compile (r'^unexpected format' , re .IGNORECASE )):
100- CondaListExplicitParser (conda_data = conda_list_ouptut_fh .read ())
112+ CondaListExplicitParser (conda_data = conda_list_output_fh .read ())
0 commit comments