Skip to content

Commit 7d4f190

Browse files
committed
dependency update: add unit test
1 parent 9d45cd1 commit 7d4f190

File tree

1 file changed

+79
-1
lines changed

1 file changed

+79
-1
lines changed

test/fpm_test/test_package_dependencies.f90

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ subroutine collect_package_dependencies(testsuite)
3030
& new_unittest("cache-load-dump", test_cache_load_dump), &
3131
& new_unittest("cache-dump-load", test_cache_dump_load), &
3232
& new_unittest("status-after-load", test_status), &
33-
& new_unittest("add-dependencies", test_add_dependencies)]
33+
& new_unittest("add-dependencies", test_add_dependencies), &
34+
& new_unittest("update-dependencies",test_update_dependencies)]
3435

3536
end subroutine collect_package_dependencies
3637

@@ -213,6 +214,83 @@ subroutine test_add_dependencies(error)
213214

214215
end subroutine test_add_dependencies
215216

217+
subroutine test_update_dependencies(error)
218+
219+
!> Error handling
220+
type(error_t), allocatable, intent(out) :: error
221+
222+
type(toml_table) :: cache,manifest
223+
type(toml_table), pointer :: ptr
224+
type(toml_key), allocatable :: list(:)
225+
type(dependency_tree_t) :: deps,cached_deps
226+
integer :: ii
227+
228+
! Create a dummy cache
229+
cache = toml_table()
230+
call add_table(cache, "dep1", ptr)
231+
call set_value(ptr, "version", "1.1.0")
232+
call set_value(ptr, "proj-dir", "fpm-tmp1-dir")
233+
call add_table(cache, "dep2", ptr)
234+
call set_value(ptr, "git", "https://gitlab.com/fortran-lang/lin2")
235+
call set_value(ptr, "rev", "c0ffee")
236+
call set_value(ptr, "proj-dir", "fpm-tmp1-dir")
237+
call add_table(cache, "dep3", ptr)
238+
call set_value(ptr, "git", "https://gitlab.com/fortran-lang/pkg3")
239+
call set_value(ptr, "rev", "t4a")
240+
call set_value(ptr, "proj-dir", "fpm-tmp1-dir")
241+
call add_table(cache, "dep4", ptr)
242+
call set_value(ptr, "version", "1.0.0")
243+
call set_value(ptr, "proj-dir", "fpm-tmp1-dir")
244+
245+
! Load into a dependency tree
246+
call new_dependency_tree(cached_deps)
247+
call cached_deps%load(cache, error)
248+
call cache%destroy()
249+
if (allocated(error)) return
250+
251+
! Create a dummy manifest, with different version
252+
manifest = toml_table()
253+
call add_table(manifest, "dep1", ptr)
254+
call set_value(ptr, "version", "1.1.1")
255+
call set_value(ptr, "proj-dir", "fpm-tmp1-dir")
256+
call add_table(manifest, "dep2", ptr)
257+
call set_value(ptr, "git", "https://gitlab.com/fortran-lang/lin4")
258+
call set_value(ptr, "rev", "c0ffee")
259+
call set_value(ptr, "proj-dir", "fpm-tmp1-dir")
260+
call add_table(manifest, "dep3", ptr)
261+
call set_value(ptr, "git", "https://gitlab.com/fortran-lang/pkg3")
262+
call set_value(ptr, "rev", "l4tte")
263+
call set_value(ptr, "proj-dir", "fpm-tmp1-dir")
264+
265+
! Load dependencies from manifest
266+
call new_dependency_tree(deps)
267+
call deps%load(manifest, error)
268+
call manifest%destroy()
269+
if (allocated(error)) return
270+
271+
! Add manifest dependencies
272+
do ii=1,cached_deps%ndep
273+
call deps%add(cached_deps%dep(ii),error)
274+
if (allocated(error)) return
275+
end do
276+
277+
! Test that all dependencies are flagged as "update"
278+
if (.not.deps%dep(1)%update) then
279+
call test_failed(error, "Updated dependency (different version) not detected")
280+
return
281+
end if
282+
if (.not.deps%dep(2)%update) then
283+
call test_failed(error, "Updated dependency (git address) not detected")
284+
return
285+
end if
286+
if (.not.deps%dep(3)%update) then
287+
call test_failed(error, "Updated dependency (git rev) not detected")
288+
return
289+
end if
290+
291+
292+
end subroutine test_update_dependencies
293+
216294

217295
!> Resolve a single dependency node
218296
subroutine resolve_dependency_once(self, dependency, root, error)

0 commit comments

Comments
 (0)