@@ -11,18 +11,18 @@ class TestMetadataCommands:
1111
1212 @pytest .fixture
1313 def create_conan_pkg (self ):
14- client = TestClient (default_server_user = True )
14+ client = TestClient (default_server_user = True , light = True )
1515 client .save ({"conanfile.py" : GenConanfile ("pkg" , "0.1" )})
1616 client .run ("create ." )
1717 pid = client .created_package_id ("pkg/0.1" )
1818 return client , pid
1919
2020 @staticmethod
21- def save_metadata_file (client , pkg_ref , filename = "somefile.log" ):
21+ def save_metadata_file (client , pkg_ref , filename = "somefile.log" , content = None ):
2222 client .run (f"cache path { pkg_ref } --folder=metadata" )
2323 metadata_path = str (client .stdout ).strip ()
2424 myfile = os .path .join (metadata_path , "logs" , filename )
25- save (myfile , f"{ pkg_ref } !!!!" )
25+ save (myfile , f"{ content or str ( pkg_ref ) } !!!!" )
2626 return metadata_path , myfile
2727
2828 def test_upload (self , create_conan_pkg ):
@@ -47,10 +47,12 @@ def test_upload(self, create_conan_pkg):
4747
4848 c .run ("remove * -c" )
4949 c .run ("install --requires=pkg/0.1" ) # wont install metadata by default
50- c .run ("cache path pkg/0.1 --folder=metadata" , assert_error = True )
51- assert "'metadata' folder does not exist for the reference pkg/0.1" in c .out
52- c .run (f"cache path pkg/0.1:{ pid } --folder=metadata" , assert_error = True )
53- assert f"'metadata' folder does not exist for the reference pkg/0.1:{ pid } " in c .out
50+ c .run ("cache path pkg/0.1 --folder=metadata" )
51+ metadata_path = str (c .stdout ).strip ()
52+ assert os .listdir (metadata_path ) == []
53+ c .run (f"cache path pkg/0.1:{ pid } --folder=metadata" )
54+ metadata_path = str (c .stdout ).strip ()
55+ assert os .listdir (metadata_path ) == []
5456
5557 # Forcing the download of the metadata of cache-existing things with the "download" command
5658 c .run ("download pkg/0.1 -r=default --metadata=*" )
@@ -64,7 +66,7 @@ def test_upload(self, create_conan_pkg):
6466 assert os .path .isfile (os .path .join (pkg_metadata_path , f ))
6567
6668 def test_update_contents (self ):
67- c = TestClient (default_server_user = True )
69+ c = TestClient (default_server_user = True , light = True )
6870 c .save ({"conanfile.py" : GenConanfile ("pkg" , "0.1" )})
6971 c .run ("export ." )
7072
@@ -90,6 +92,72 @@ def test_update_contents(self):
9092 content = load (os .path .join (metadata_path , "logs" , "mylogs.txt" ))
9193 assert "mylogs2!!!!" in content
9294
95+ def test_append_contents (self ):
96+ # I can add extra files to metadata without necessarily downloading it first
97+ c = TestClient (default_server_user = True , light = True )
98+ c .save ({"conanfile.py" : GenConanfile ("pkg" , "0.1" )})
99+ c .run ("create ." )
100+ pkgid = "da39a3ee5e6b4b0d3255bfef95601890afd80709"
101+ # Add some metadata
102+ self .save_metadata_file (c , "pkg/0.1" , "mylogs.txt" , content = "mylogs" )
103+ self .save_metadata_file (c , f"pkg/0.1:{ pkgid } " , "mybin.txt" , content = "mybin" )
104+
105+ # Now upload everything
106+ c .run ("upload * -c -r=default" )
107+ assert "pkg/0.1: Recipe metadata: 1 files" in c .out
108+
109+ c2 = TestClient (servers = c .servers , light = True , inputs = ["admin" , "password" ])
110+ c2 .run ("install --requires=pkg/0.1" )
111+ self .save_metadata_file (c2 , "pkg/0.1" , "mylogs2.txt" , content = "mylogs2" )
112+ self .save_metadata_file (c2 , f"pkg/0.1:{ pkgid } " , "mybin2.txt" , content = "mybin2" )
113+ c2 .run ("upload * -c -r=default --metadata=*" )
114+ assert "pkg/0.1: Recipe metadata: 1 files" in c2 .out
115+
116+ c .run ("remove * -c" )
117+ c .run ("download pkg/0.1 -r=default --metadata=*" )
118+
119+ c .run ("cache path pkg/0.1 --folder=metadata" )
120+ metadata_path = str (c .stdout ).strip ()
121+ assert "mylogs!!!!" in load (os .path .join (metadata_path , "logs" , "mylogs.txt" ))
122+ assert "mylogs2!!!!" in load (os .path .join (metadata_path , "logs" , "mylogs2.txt" ))
123+
124+ c .run (f"cache path pkg/0.1:{ pkgid } --folder=metadata" )
125+ metadata_path = str (c .stdout ).strip ()
126+ assert "mybin!!!!" in load (os .path .join (metadata_path , "logs" , "mybin.txt" ))
127+ assert "mybin2!!!!" in load (os .path .join (metadata_path , "logs" , "mybin2.txt" ))
128+
129+ def test_overwrite_server_contents (self ):
130+ # I can overwrite server contents
131+ c = TestClient (default_server_user = True , light = True )
132+ c .save ({"conanfile.py" : GenConanfile ("pkg" , "0.1" )})
133+ c .run ("create ." )
134+ pkgid = "da39a3ee5e6b4b0d3255bfef95601890afd80709"
135+ # Add some metadata
136+ self .save_metadata_file (c , "pkg/0.1" , "mylogs.txt" , content = "mylogs" )
137+ self .save_metadata_file (c , f"pkg/0.1:{ pkgid } " , "mybin.txt" , content = "mybin" )
138+
139+ # Now upload everything
140+ c .run ("upload * -c -r=default" )
141+ assert "pkg/0.1: Recipe metadata: 1 files" in c .out
142+
143+ c2 = TestClient (servers = c .servers , light = True , inputs = ["admin" , "password" ])
144+ c2 .run ("install --requires=pkg/0.1" )
145+ self .save_metadata_file (c2 , "pkg/0.1" , "mylogs.txt" , content = "mylogs2" )
146+ self .save_metadata_file (c2 , f"pkg/0.1:{ pkgid } " , "mybin.txt" , content = "mybin2" )
147+ c2 .run ("upload * -c -r=default --metadata=*" )
148+ assert "pkg/0.1: Recipe metadata: 1 files" in c2 .out
149+
150+ c .run ("remove * -c" )
151+ c .run ("download pkg/0.1 -r=default --metadata=*" )
152+
153+ c .run ("cache path pkg/0.1 --folder=metadata" )
154+ metadata_path = str (c .stdout ).strip ()
155+ assert "mylogs2!!!!" in load (os .path .join (metadata_path , "logs" , "mylogs.txt" ))
156+
157+ c .run (f"cache path pkg/0.1:{ pkgid } --folder=metadata" )
158+ metadata_path = str (c .stdout ).strip ()
159+ assert "mybin2!!!!" in load (os .path .join (metadata_path , "logs" , "mybin.txt" ))
160+
93161 def test_folder_exist (self , create_conan_pkg ):
94162 """ so we can cp -R to the metadata folder, having to create the folder in the cache
95163 is weird
@@ -149,7 +217,7 @@ def test_no_download_cached(self, create_conan_pkg):
149217 assert "pkg/0.1: Recipe metadata: 1 files" in c .out
150218 assert "pkg/0.1:da39a3ee5e6b4b0d3255bfef95601890afd80709: Package metadata: 1 files" in c .out
151219
152- c2 = TestClient (servers = c .servers )
220+ c2 = TestClient (servers = c .servers , light = True )
153221 tmp_folder = temp_folder ()
154222 # MOST important part: activate cache
155223 c2 .save_home ({"global.conf" : f"core.download:download_cache={ tmp_folder } \n " })
@@ -197,7 +265,7 @@ def test_upload_ignored_metadata_with_pattern(self, create_conan_pkg):
197265 """
198266 Upload command should fail when passing --metadata="" and a pattern
199267 """
200- client = TestClient (default_server_user = True )
268+ client = TestClient (default_server_user = True , light = True )
201269 client .save ({"conanfile.py" : GenConanfile ("pkg" , "0.1" )})
202270 client .run ("export ." )
203271
0 commit comments