@@ -192,6 +192,64 @@ static void test_php_package_without_version(void) {
192
192
nr_php_packages_destroy (& hm );
193
193
}
194
194
195
+ static void test_php_package_priority (void ) {
196
+ #define PACKAGE_NAME "vendor/package"
197
+ #define NO_VERSION NULL
198
+ #define PACKAGE_VERSION "1.0.0"
199
+ #define COMPOSER_VERSION "1.0.1"
200
+ nr_php_package_t * legacy_package ;
201
+ nr_php_package_t * composer_package ;
202
+ nr_php_package_t * p ;
203
+ nr_php_packages_t * hm = NULL ;
204
+ int count ;
205
+ char * legacy_versions [] = {
206
+ NO_VERSION , PACKAGE_VERSION };
207
+
208
+ // Package added with legacy priority first - version from composer should win
209
+ for (size_t i = 0 ; i < sizeof (legacy_versions )/sizeof (legacy_versions [0 ]); i ++ ) {
210
+ legacy_package = nr_php_package_create (PACKAGE_NAME , legacy_versions [i ]); // legacy priority
211
+ tlib_pass_if_int_equal ("create package by uses legacy priority" , NR_PHP_PACKAGE_SOURCE_LEGACY , legacy_package -> source_priority );
212
+ composer_package = nr_php_package_create_with_source (PACKAGE_NAME , COMPOSER_VERSION , NR_PHP_PACKAGE_SOURCE_COMPOSER ); // composer priority
213
+ tlib_pass_if_int_equal ("create package by uses composer priority" , NR_PHP_PACKAGE_SOURCE_COMPOSER , composer_package -> source_priority );
214
+
215
+ hm = nr_php_packages_create ();
216
+ // order of adding packages: legacy first, composer second
217
+ nr_php_packages_add_package (hm , legacy_package );
218
+ nr_php_packages_add_package (hm , composer_package );
219
+
220
+ count = nr_php_packages_count (hm );
221
+ tlib_pass_if_int_equal ("add same package" , 1 , count );
222
+
223
+ p = (nr_php_package_t * )nr_hashmap_get (hm -> data , PACKAGE_NAME , nr_strlen (PACKAGE_NAME ));
224
+ tlib_pass_if_not_null ("package exists" , p );
225
+ tlib_pass_if_str_equal ("package version from composer wins" , COMPOSER_VERSION , p -> package_version );
226
+
227
+ nr_php_packages_destroy (& hm );
228
+ }
229
+
230
+ // Package added with composer priority first - version from composer should win
231
+ for (size_t i = 0 ; i < sizeof (legacy_versions )/sizeof (legacy_versions [0 ]); i ++ ) {
232
+ legacy_package = nr_php_package_create (PACKAGE_NAME , legacy_versions [i ]); // legacy priority
233
+ tlib_pass_if_int_equal ("create package by uses legacy priority" , NR_PHP_PACKAGE_SOURCE_LEGACY , legacy_package -> source_priority );
234
+ composer_package = nr_php_package_create_with_source (PACKAGE_NAME , COMPOSER_VERSION , NR_PHP_PACKAGE_SOURCE_COMPOSER ); // composer priority
235
+ tlib_pass_if_int_equal ("create package by uses composer priority" , NR_PHP_PACKAGE_SOURCE_COMPOSER , composer_package -> source_priority );
236
+
237
+ hm = nr_php_packages_create ();
238
+ // order of adding packages: legacy first, composer second
239
+ nr_php_packages_add_package (hm , composer_package );
240
+ nr_php_packages_add_package (hm , legacy_package );
241
+
242
+ count = nr_php_packages_count (hm );
243
+ tlib_pass_if_int_equal ("add same package" , 1 , count );
244
+
245
+ p = (nr_php_package_t * )nr_hashmap_get (hm -> data , PACKAGE_NAME , nr_strlen (PACKAGE_NAME ));
246
+ tlib_pass_if_not_null ("package exists" , p );
247
+ tlib_pass_if_str_equal ("package version from composer wins" , COMPOSER_VERSION , p -> package_version );
248
+
249
+ nr_php_packages_destroy (& hm );
250
+ }
251
+ }
252
+
195
253
tlib_parallel_info_t parallel_info
196
254
= {.suggested_nthreads = -1 , .state_size = 0 };
197
255
@@ -203,4 +261,5 @@ void test_main(void* p NRUNUSED) {
203
261
test_php_packages_to_json ();
204
262
test_php_package_exists_in_hashmap ();
205
263
test_php_package_without_version ();
206
- }
264
+ test_php_package_priority ();
265
+ }
0 commit comments