gemini-cli / packages /core /src /utils /buildFileUtils.test.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
7a1ad33 verified
Raw
History Blame Contribute Delete
3.59 kB
/**
* @license
* Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { describe, it, expect } from 'vitest';
import { isBuildFile } from './buildFileUtils.js';
describe('buildFileUtils', () => {
describe('isBuildFile', () => {
it('should identify Bazel and Blaze build files', () => {
expect(isBuildFile('BUILD')).toBe(true);
expect(isBuildFile('foo/bar/BUILD')).toBe(true);
expect(isBuildFile('BUILD.bazel')).toBe(true);
expect(isBuildFile('path/to/BUILD.bazel')).toBe(true);
expect(isBuildFile('WORKSPACE')).toBe(true);
expect(isBuildFile('WORKSPACE.bazel')).toBe(true);
expect(isBuildFile('MODULE.bazel')).toBe(true);
expect(isBuildFile('.bazelrc')).toBe(true);
expect(isBuildFile('.blazerc')).toBe(true);
expect(isBuildFile('defs.bzl')).toBe(true);
expect(isBuildFile('rules/custom.bzl')).toBe(true);
expect(isBuildFile('deps.bazel')).toBe(true);
expect(isBuildFile('ext.bzlmod')).toBe(true);
});
it('should identify Make and CMake files', () => {
expect(isBuildFile('Makefile')).toBe(true);
expect(isBuildFile('makefile')).toBe(true);
expect(isBuildFile('GNUmakefile')).toBe(true);
expect(isBuildFile('rules.mk')).toBe(true);
expect(isBuildFile('CMakeLists.txt')).toBe(true);
expect(isBuildFile('cmake/FindFoo.cmake')).toBe(true);
});
it('should identify Node.js build and manifest files', () => {
expect(isBuildFile('package.json')).toBe(true);
expect(isBuildFile('packages/core/package.json')).toBe(true);
expect(isBuildFile('package-lock.json')).toBe(true);
expect(isBuildFile('pnpm-lock.yaml')).toBe(true);
expect(isBuildFile('yarn.lock')).toBe(true);
expect(isBuildFile('bun.lockb')).toBe(true);
});
it('should identify Python, Go, Rust, and Java/Kotlin build files', () => {
expect(isBuildFile('setup.py')).toBe(true);
expect(isBuildFile('setup.cfg')).toBe(true);
expect(isBuildFile('pyproject.toml')).toBe(true);
expect(isBuildFile('go.mod')).toBe(true);
expect(isBuildFile('go.sum')).toBe(true);
expect(isBuildFile('Cargo.toml')).toBe(true);
expect(isBuildFile('Cargo.lock')).toBe(true);
expect(isBuildFile('pom.xml')).toBe(true);
expect(isBuildFile('build.gradle')).toBe(true);
expect(isBuildFile('build.gradle.kts')).toBe(true);
expect(isBuildFile('settings.gradle')).toBe(true);
expect(isBuildFile('settings.gradle.kts')).toBe(true);
});
it('should identify container build files', () => {
expect(isBuildFile('Dockerfile')).toBe(true);
expect(isBuildFile('Dockerfile.dev')).toBe(true);
expect(isBuildFile('Containerfile')).toBe(true);
expect(isBuildFile('Containerfile.prod')).toBe(true);
});
it('should return false for regular source code and non-build files', () => {
expect(isBuildFile('')).toBe(false);
expect(isBuildFile('main.ts')).toBe(false);
expect(isBuildFile('src/index.js')).toBe(false);
expect(isBuildFile('README.md')).toBe(false);
expect(isBuildFile('service.cc')).toBe(false);
expect(isBuildFile('foo/bar/model.py')).toBe(false);
expect(isBuildFile('config.json')).toBe(false);
expect(isBuildFile('settings.toml')).toBe(false);
});
it('should correctly identify build files using Windows backslashes on POSIX environments', () => {
expect(isBuildFile('foo\\bar\\BUILD')).toBe(true);
expect(isBuildFile('path\\to\\package.json')).toBe(true);
});
});
});