From 5d764a335013f3bd78e910c7e6ed9f4c73f6c35a Mon Sep 17 00:00:00 2001 From: Turiiya Date: Mon, 18 Dec 2023 21:49:59 +0100 Subject: [PATCH] extend tests --- cmd/tools/vpm/update_test.v | 74 ++++++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/cmd/tools/vpm/update_test.v b/cmd/tools/vpm/update_test.v index 528c83debabfcf..94a4e11c77952f 100644 --- a/cmd/tools/vpm/update_test.v +++ b/cmd/tools/vpm/update_test.v @@ -1,4 +1,6 @@ // vtest retry: 3 +module main + import os import rand import test_utils @@ -18,39 +20,75 @@ fn testsuite_end() { os.rmdir_all(test_path) or {} } -// Tests if `v update` detects installed modules and runs successfully. fn test_update() { - os.execute_or_exit('${v} install pcre') - os.execute_or_exit('${v} install nedpals.args') - os.execute_or_exit('${v} install https://github.com/spytheman/vtray') + for m in ['pcre', 'https://github.com/spytheman/vtray', 'nedpals.args', 'ttytm.webview'] { + os.execute_or_exit('${v} install ${m}') + } + // "outdate" some modules, by removing their last commit. + for m in ['pcre', 'vtray', os.join_path('nedpals', 'args')] { + path := os.join_path(test_path, m) + os.execute_or_exit('git -C ${path} fetch --unshallow') + os.execute_or_exit('git -C ${path} reset --hard HEAD~') + assert is_outdated(path) + } + // Case: Run `v update` (without args). res := os.execute('${v} update') assert res.exit_code == 0, res.str() assert res.output.contains('Updating module `pcre`'), res.output - assert res.output.contains('Updating module `nedpals.args`'), res.output assert res.output.contains('Updating module `vtray`'), res.output - assert res.output.contains('Skipping download count increment for `nedpals.args`.'), res.output + assert res.output.contains('Updating module `nedpals.args`'), res.output assert res.output.contains('Skipping download count increment for `pcre`.'), res.output + assert res.output.contains('Skipping download count increment for `nedpals.args`.'), res.output + assert !res.output.contains('Updating module `ttytm.webview`'), res.output + assert !res.output.contains('Skipping download count increment for `ttytm.webview`.'), res.output + for m in ['pcre', 'vtray', os.join_path('nedpals', 'args')] { + assert !is_outdated(os.join_path(test_path, m)) + } } -fn test_update_idents() { - mut res := os.execute('${v} update pcre') +fn test_update_short_ident() { + os.execute_or_exit('git -C ${os.join_path(test_path, 'pcre')} reset --hard HEAD~') + res := os.execute('${v} update pcre') assert res.exit_code == 0, res.str() assert res.output.contains('Updating module `pcre`'), res.output - res = os.execute('${v} update nedpals.args vtray') +} + +fn test_update_ident() { + os.execute_or_exit('git -C ${os.join_path(test_path, 'nedpals', 'args')} reset --hard HEAD~') + res := os.execute('${v} update nedpals.args') assert res.exit_code == 0, res.str() - assert res.output.contains('Updating module `vtray`'), res.output assert res.output.contains('Updating module `nedpals.args`'), res.output - // Update installed module using its url. - res = os.execute('${v} update https://github.com/spytheman/vtray') +} + +fn test_update_url() { + os.execute_or_exit('git -C ${os.join_path(test_path, 'vtray')} reset --hard HEAD~') + res := os.execute('${v} update https://github.com/spytheman/vtray') + assert res.exit_code == 0, res.str() + assert res.output.contains('Updating module `vtray`'), res.output +} + +fn test_update_multi_ident() { + os.execute_or_exit('git -C ${os.join_path(test_path, 'nedpals', 'args')} reset --hard HEAD~') + os.execute_or_exit('git -C ${os.join_path(test_path, 'vtray')} reset --hard HEAD~') + res := os.execute('${v} update nedpals.args vtray') assert res.exit_code == 0, res.str() + assert res.output.contains('Updating module `nedpals.args`'), res.output assert res.output.contains('Updating module `vtray`'), res.output - // Try update not installed. - res = os.execute('${v} update vsl') +} + +fn test_update_not_installed() { + res := os.execute('${v} update vsl') assert res.exit_code == 1, res.str() - assert res.output.contains('failed to find `vsl`'), res.output - // Try update mixed. - res = os.execute('${v} update pcre vsl') + assert res.output.contains('failed to update `vsl`. Not installed.'), res.output +} + +fn test_update_mixed_installed_not_installed() { + os.execute_or_exit('git -C ${os.join_path(test_path, 'pcre')} reset --hard HEAD~') + res := os.execute('${v} update pcre vsl') assert res.exit_code == 1, res.str() assert res.output.contains('Updating module `pcre`'), res.output - assert res.output.contains('failed to find `vsl`'), res.output + assert res.output.contains('failed to update `vsl`. Not installed.'), res.output } + +// TODO: hg tests +// TODO: recursive test