mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
42 lines
1.5 KiB
V
42 lines
1.5 KiB
V
import v.util.version
|
|
import os
|
|
|
|
fn test_githash() {
|
|
if os.getenv('GITHUB_JOB') == '' {
|
|
eprintln('> skipping test, since it needs GITHUB_JOB to be defined (it is flaky on development machines, with changing repos and v compiled with `./v self` from uncommitted changes).')
|
|
return
|
|
}
|
|
if !os.exists(os.join_path(@VMODROOT, '.git')) {
|
|
eprintln('> skipping test due to missing V .git directory')
|
|
return
|
|
}
|
|
sha := version.githash(@VMODROOT)!
|
|
assert sha == @VCURRENTHASH
|
|
|
|
git_proj_path := os.join_path(os.vtmp_dir(), 'test_githash')
|
|
defer {
|
|
os.rmdir_all(git_proj_path) or {}
|
|
}
|
|
os.execute_opt('git init ${git_proj_path}')!
|
|
os.chdir(git_proj_path)!
|
|
if sha_ := version.githash(git_proj_path) {
|
|
assert false, 'Should not have found an unknown revision'
|
|
} else {
|
|
assert err.msg().contains('failed to find revision file'), err.msg()
|
|
}
|
|
os.execute_opt('git config user.name') or {
|
|
os.execute_opt('git config user.email "ci@vlang.io"')!
|
|
os.execute_opt('git config user.name "V CI"')!
|
|
}
|
|
os.write_file('v.mod', '')!
|
|
os.execute_opt('git add .')!
|
|
os.execute_opt('git commit -m "test1"')!
|
|
test_rev := os.execute_opt('git rev-parse --short=7 HEAD')!.output.trim_space()
|
|
assert test_rev == version.githash(git_proj_path)!
|
|
os.write_file('README.md', '')!
|
|
os.execute_opt('git add .')!
|
|
os.execute_opt('git commit -m "test2"')!
|
|
test_rev2 := os.execute_opt('git rev-parse --short=7 HEAD')!.output.trim_space()
|
|
assert test_rev2 != test_rev
|
|
assert test_rev2 == version.githash(git_proj_path)!
|
|
}
|