export async function getProjectType()

in src/controller/utils.ts [47:77]


export async function getProjectType(item: IJavaTestItem): Promise<ProjectType> {
    if (item.testLevel !== TestLevel.Project) {
        throw new Error('The test item is not a project');
    }

    if (!item.natureIds) {
        return ProjectType.Other;
    }

    const hasClasspathFile: boolean = await fse.pathExists(path.join(Uri.parse(item.uri!).fsPath, '.classpath'));
    let hasJavaNature: boolean = false;
    for (const id of item.natureIds) {
        if (id.includes('maven2Nature')) {
            return ProjectType.Maven;
        }

        if (id.includes('gradleprojectnature')) {
            return ProjectType.Gradle;
        }

        if (id.includes('javanature')) {
            hasJavaNature = true;
        }
    }

    if (hasJavaNature && !hasClasspathFile) {
        return ProjectType.UnmanagedFolder;
    }

    return ProjectType.Other;
}