From 3b0802deb40de7202c57f19478fe6c9e30b171ca Mon Sep 17 00:00:00 2001 From: Turiiya <34311583+ttytm@users.noreply.github.com> Date: Tue, 19 Dec 2023 13:18:26 +0100 Subject: [PATCH] tools.vpm: refine is_outdated, add `v outdated` test (#20215) --- cmd/tools/vpm/outdated.v | 8 ++++++-- cmd/tools/vpm/outdated_test.v | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/cmd/tools/vpm/outdated.v b/cmd/tools/vpm/outdated.v index 6a198cad9a3d3f..428f9bf00f91fe 100644 --- a/cmd/tools/vpm/outdated.v +++ b/cmd/tools/vpm/outdated.v @@ -56,11 +56,15 @@ fn is_outdated(path string) bool { vpm_log(@FILE_LINE, @FN, 'cmd: ${cmd}') res := os.execute(cmd) vpm_log(@FILE_LINE, @FN, 'output: ${res.output}') + if res.exit_code != 0 { + return false + } if vcs == .hg { - return res.exit_code == 0 + // HG uses only one outdated step. If it has not failed, the module is outdated. + return true } outputs << res.output } // Compare the current and latest origin commit sha. - return vcs == .git && outputs[1] != outputs[2] + return outputs[1] != outputs[2] } diff --git a/cmd/tools/vpm/outdated_test.v b/cmd/tools/vpm/outdated_test.v index 99691f98e47653..0412f952a2e327 100644 --- a/cmd/tools/vpm/outdated_test.v +++ b/cmd/tools/vpm/outdated_test.v @@ -24,7 +24,7 @@ fn testsuite_end() { fn test_is_outdated_git_module() { os.execute_or_exit('git clone https://github.com/vlang/libsodium.git') assert !is_outdated('libsodium') - os.execute_or_exit('git -C libsodium reset --hard HEAD~1') + os.execute_or_exit('git -C libsodium reset --hard HEAD~') assert is_outdated('libsodium') os.execute_or_exit('git -C libsodium pull') assert !is_outdated('libsodium') @@ -42,3 +42,22 @@ fn test_is_outdated_hg_module() { os.execute_or_exit('hg -R hello pull') assert !is_outdated('hello') } + +fn test_outdated() { + for m in ['pcre', 'libsodium', 'https://github.com/spytheman/vtray', 'nedpals.args'] { + os.execute_or_exit('${vexe} install ${m}') + } + // "Outdate" previously installed. Leave out `libsodium`. + for m in ['pcre', 'vtray', os.join_path('nedpals', 'args')] { + os.execute_or_exit('git -C ${m} fetch --unshallow') + os.execute_or_exit('git -C ${m} reset --hard HEAD~') + assert is_outdated(m) + } + res := os.execute('${vexe} outdated') + assert res.exit_code == 0, res.str() + assert res.output.contains('Outdated modules:'), res.output + assert res.output.contains('pcre'), res.output + assert res.output.contains('vtray'), res.output + assert res.output.contains('nedpals.args'), res.output + assert !res.output.contains('libsodium'), res.output +}