import os

fn test_find_abs_path_of_executable() {
	tfolder := os.join_path(os.vtmp_dir(), 'v', 'tests', 'filepath_test')
	os.rmdir_all(tfolder) or {}
	assert !os.is_dir(tfolder)
	os.mkdir_all(tfolder)!
	defer {
		os.rmdir_all(tfolder) or {}
	}
	//
	original_path := os.getenv('PATH')
	original_wdir := os.getwd()
	defer {
		os.chdir(original_wdir) or {}
	}
	//
	new_path := tfolder + os.path_delimiter + original_path
	os.setenv('PATH', new_path, true)
	//
	mut myclang_file := 'myclang'
	$if windows {
		myclang_file += '.bat'
	}
	//
	os.chdir(tfolder)!
	os.write_file(myclang_file, 'echo hello')!
	os.chmod(myclang_file, 0o0777)!
	dump(os.real_path(myclang_file))
	dump(os.is_executable(myclang_file))
	defer {
		os.rm(myclang_file) or {}
	}
	//
	fpath := os.find_abs_path_of_executable('myclang') or {
		assert false
		return
	}
	dump(fpath)
	//
	os.setenv('PATH', original_path, true)
	os.chdir(os.home_dir())! // change to a *completely* different folder, to avoid the original PATH containing `.`
	if x := os.find_abs_path_of_executable('myclang') {
		eprintln('> find_abs_path_of_executable should have failed, but instead it found: ${x}')
		assert false
	}
}