Skip to content

Commit e00f2b8

Browse files
committed
fix: package info from composer wins [UNIT TESTS]
Add unit tests that verify the functionality of ensuring that package information obtained from composer has higher precedence over package information obtained from the package itself (legacy method).
1 parent b9abda8 commit e00f2b8

File tree

1 file changed

+60
-1
lines changed

1 file changed

+60
-1
lines changed

axiom/tests/test_php_packages.c

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,64 @@ static void test_php_package_without_version(void) {
192192
nr_php_packages_destroy(&hm);
193193
}
194194

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+
195253
tlib_parallel_info_t parallel_info
196254
= {.suggested_nthreads = -1, .state_size = 0};
197255

@@ -203,4 +261,5 @@ void test_main(void* p NRUNUSED) {
203261
test_php_packages_to_json();
204262
test_php_package_exists_in_hashmap();
205263
test_php_package_without_version();
206-
}
264+
test_php_package_priority();
265+
}

0 commit comments

Comments
 (0)