본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

bazel-test-migration

IntelliJ JPS 테스트 모듈을 Bazel로 옮기고 Bazel에서만 발생하는 실패를 조사하는 안내서입니다. 의존성, 플러그인, 테스트 데이터와 runfiles 문제를 확인하고 생성된 대상과 이전된 테스트를 검증합니다.

원문원문 설명 보기

Migrate IntelliJ JPS module tests to Bazel; debug Bazel-only failures.

JetBrains/intellij-community스타 20,684(GitHub 20,684 + cccskills 0)

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • 기존 JPS 테스트 모듈을 Bazel로 이전할 때
  • Bazel에서만 실패하는 테스트를 조사할 때
  • 테스트 의존성과 데이터 설정을 확인할 때

한국어 소개

할 수 있는 일

이 안내서는 IntelliJ JPS 테스트 모듈을 Bazel로 이전하고 Bazel 환경에서만 나타나는 실패를 조사하는 방법을 설명합니다. 실제 테스트 모듈과 Bazel 라벨을 확인하고, .iml을 의존성의 기준으로 삼아 BUILD.bazel을 다시 생성한 다음 실행할 대상을 검증하는 흐름을 다룹니다. 컴파일 단계의 의존성 누락, 실행 중 찾을 수 없는 클래스나 리소스, 플러그인 등록, 테스트 데이터, runfiles처럼 자주 나타나는 증상별로 확인할 지점도 안내합니다. TeamCity에서 테스트가 느려지거나 시간 초과되는 경우에는 처음으로 비용이 커지는 작업을 추적하는 방법을 설명합니다. 범위를 좁힌 테스트 실행에서 시작해 이전 대상 전체를 검증할 수 있습니다.

이럴 때 유용합니다

기존 JPS 테스트 모듈을 Bazel로 옮길 때, Bazel에서만 테스트가 실패할 때, 또는 이전이 완료되었는지 확인할 때 활용할 수 있습니다. 의존성, 플러그인, 테스트 데이터 설정을 검토할 때도 유용합니다.

사용 예시

  • “이 JPS 테스트 모듈을 Bazel로 이전하는 절차를 정리해 주세요.”
  • “Bazel에서만 실패하는 테스트의 의존성 문제를 찾아 주세요.”
  • “이전한 대상이 완료 기준을 충족하는지 확인해 주세요.”

주의 사항

이전과 검증 절차에는 Bazel 명령과 저장소의 빌드 스크립트가 필요합니다. 실패를 숨기기 위해 테스트를 제외하거나 단언을 변경하지 않도록 안내합니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

문서 점검

AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.

안전성전송·삭제·명령 실행 등을 명시하고 있는가
A양호실패를 숨기는 제외를 피하고 집중 실행 후 전체 대상을 검증합니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
B일부 부족Bazel 명령과 저장소 빌드 스크립트가 필요하다고 적습니다.

점수에는 넣지 않았습니다. 2026년 10월 28일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

포함된 파일(1)

  • SKILL.md7.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

<!-- Generated by community/.ai/render-guides.mjs; edit community/.agents/skills/bazel-test-migration/SKILL.md -->

Bazel Test Migration

Use this skill when switching an IntelliJ JPS test module to Bazel, fixing a Bazel-only test failure, or reviewing migration wiring.

Core Workflow

  1. Identify the real test module and Bazel label.

    • From the Ultimate root, community packages usually need @community//....
    • From a standalone community checkout, use //....
    • Do not assume the unqualified label is equivalent in both repositories.
  2. Treat .iml as the source of truth.

    • Add module dependencies to the test module .iml first.
    • Prefer scope="TEST" for new test-only dependencies.
    • Use RUNTIME only when the dependency must be present as a runtime plugin/resource/classpath entry and TEST is not enough.
    • Do not hand-maintain generated BUILD.bazel sections except for intentionally custom jps_test sections protected by ### skip generation section.
  3. Regenerate after every .iml or BUILD.bazel metadata change.

community/tools/bun.cmd build/jps-module.mjs register path/to/module.iml --fix-iml-eof
./build/jpsModelToBazel.cmd
  1. Verify with the Bazel target the user will run.
./bazel.cmd test --cache_test_results=no @community//path/to/package:target_test

For a community-only module in a standalone community checkout, run the same package as //path/to/package:target_test.

BUILD.bazel Rules

  • Keep custom jps_test sections at the top when a module already needs custom test options.
  • Protect a custom test section with:
### skip generation section `test module.name`
  • Preserve required test attributes such as tags, timeout, env, jvm_flags, and data.
  • Add a module to community/build/bazel-migrated-test-modules.txt only after the target is fully migrated and verified. The community JPS aggregator then skips the module, and tests.cmd refuses it. The file documents its format.
  • Do not use copy_file to patch missing jars or descriptors into runfiles. Prefer normal .iml dependencies, target runtime/data dependencies, or the existing shared mechanism for that class of test.

Dependency Decisions

Use the smallest dependency that matches what failed:

  • Compile error: add a normal module dependency to .iml.
  • Test code compiles but class/resource is absent at runtime: add a TEST-scope dependency if generated Bazel runtime wiring is enough; otherwise use runtime/data wiring in the custom jps_test.
  • Plugin descriptor extension/action/inspection is missing: load the owning plugin or content module, not the implementation class by hand.
  • Product plugin wrapper is required: add the wrapper plugin/module dependency to the test module rather than depending only on its internal content module.
  • Testdata is missing: add the testdata as data or ensure the existing generator includes it; do not rely on source-tree paths under Bazel.

Before changing tests, verify whether the failure is really a test assertion issue or just missing runtime/plugin/testdata wiring.

Common Bazel-Only Failures

No tests found

Check that test classes are in the generated *_test_lib, the Bazel target points to that test library, and the class names match the runner convention. If the module truly has no tests, there may be nothing to migrate.

Missing extension, inspection, action, keymap action, or file type

Search for the extension/action/inspection id and identify the descriptor that registers it. Add the owning plugin/module dependency. Do not manually register production extensions in test setup unless the test is explicitly about a local fake extension.

Example: an action registered into EditorGutterVcsPopupMenu needs the VCS implementation descriptor that owns that group, not just VCS API classes.

Plugin action group is not registered

If plugin A registers an action into a group contributed by plugin/module B, plugin A must depend on B or move the action registration into a B-aware optional/content descriptor. Fix the descriptor dependency when production loading is also inconsistent; fix the test dependency only when the test product intentionally omits an otherwise valid product plugin.

JPS compile-server classpath failure

When integration tests invoke JPS compilation, failures like missing JPS jars or compile-server plugin classpaths usually mean Bazel runfiles cannot resolve a plugin/module path the same way JPS does.

  • Prefer the common Bazel target mapping/runfiles mechanism.
  • Ensure Bazel repo mapping from the parent process is propagated when nested Bazel/JPS logic needs to resolve labels.
  • Do not compare file contents to guess class roots.
  • Do not copy individual plugin jars into runfiles as one-off fixes.

Missing required Bazel properties

If code expects Bazel-only properties such as target mappings or runfiles metadata, pass them through the jps_test target using the established option (jvm_flags, env, or data) and add the backing file to runfiles.

Standalone community differs from Ultimate

Re-check labels, repo mappings, and generated runfiles. A target can pass as @community//... from Ultimate and fail as //... in standalone community if the test relies on parent-repo runfiles or missing repo mapping.

TeamCity-only slowdown or timeout

Look for the first expensive operation under Bazel: indexing, plugin loading, coroutine dispatch, first service initialization, or filesystem/runfiles traversal. Prefer moving one-time initialization to setup or making the test wait for the actual condition. Avoid raising timeouts as the first fix.

Test Changes

Keep test edits minimal.

  • Prefer dependency/plugin/testdata wiring over changing assertions.
  • Do not add filters or exclusions to hide failures during migration.
  • Use assumptions only for genuine environment-gated tests, and pass required environment variables through Bazel so developers can still run the tests without editing BUILD.bazel.
  • Avoid moving test classes between modules to satisfy Bazel discovery; fix dependencies or target roots instead.
  • Avoid broad helper abstractions unless the same migration problem repeats across modules and there is already an established local pattern.

Debugging Checklist

  1. Read the failing idea.log, test.log, and JUnit XML if present.
  2. Search for the missing id/class/resource in descriptors and .iml files.
  3. Inspect the test target's generated runtime_deps, deps, data, env, and jvm_flags.
  4. Compare JPS and Bazel classpaths only to identify missing ownership; fix ownership in .iml or plugin descriptors.
  5. Run the smallest failing class or method with --cache_test_results=no.
  6. Run the whole migrated target after the focused failure passes.
  7. Run git diff --check before finishing.

Migration Completion

A module is migrated only when:

  • the correct Bazel target runs with --cache_test_results=no;
  • required plugin/runtime/testdata dependencies are declared normally;
  • generated BUILD.bazel matches .iml;
  • no migration-only test exclusions were added;
  • aggregator lists are updated when required;
  • known unrelated broken tests are documented explicitly in the final report.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

actions

무료요약 있음

IntelliJ `AnAction` 클래스를 구현하거나 수정하고 `plugin.xml`에 등록하도록 안내합니다. 표시 이름과 설명은 메시지 번들에 두고, 필요하면 아이콘을 설정하며, 이벤트 코루틴 범위에서 중단 함수를 실행해 동기식 처리로 IDE가 멈추는 일을 방지합니다.

  • IDE 메뉴에 새 동작 추가
  • 동작 등록이나 아이콘 변경
  • 동작 이름과 설명 정리
JetBrains/intellij-community2.1만2026년 10월 29일 업데이트

code-style

무료요약 있음

IntelliJ 프로젝트 규칙에 맞춰 Kotlin과 Java 코드를 작성하거나 검토합니다. 언어 선택, 서식, 봉인 타입, 스레드 주석, 제어 흐름 예외 처리를 확인합니다.

  • IntelliJ 규칙에 맞는 Kotlin 작성
  • Java 코드 검토
  • 예외 처리와 봉인 타입 분기 확인
JetBrains/intellij-community2.1만2026년 10월 29일 업데이트

commits

무료요약 있음

이 가이드는 IntelliJ 프로젝트의 변경 사항을 목적별로 나누고 프로젝트 형식에 맞는 커밋 메시지를 작성하도록 돕습니다. 티켓이 있으면 번호와 변경 설명을, 없으면 레이블과 하위 시스템명을 사용하며 필요에 따라 이유와 판단을 본문에 담습니다.

  • 티켓이 있는 변경의 프로젝트 형식 메시지 작성
  • 테스트나 문서 커밋에 적절한 레이블 적용
  • 기존 커밋 메시지를 규칙에 맞게 수정
JetBrains/intellij-community2.1만2026년 10월 29일 업데이트

compare-python-typecheckers

무료요약 있음

여러 Python 타입 검사기로 코드 조각이나 파일의 타입 추론과 오류 판정을 비교합니다. 도구별 결과, 실행 시간, 진단 내용을 Markdown 보고서로 모아 저장할 수 있습니다.

  • 검사기별 타입 추론 비교
  • 코드가 타입 오류로 판정되는지 확인
  • 여러 도구의 진단 결과 비교
JetBrains/intellij-community2.1만2026년 10월 29일 업데이트

compose-ui-architecture

무료요약 있음

Compose Desktop 화면을 구성할 때 컴포저블은 렌더링을 맡고 프레젠터나 코디네이터는 앱 결정을 맡도록 구조를 정리합니다. 상태 소유권, Effect, 재사용 컴포넌트 API, 지연 목록 키, 애니메이션과 성능을 개별 UI 변경에 맞춰 살펴봅니다.

  • 화면 렌더링과 프레젠터 판단 분리
  • UI 상태를 둘 위치 정리
  • Effect 키와 코루틴 사용 검토
JetBrains/intellij-community2.1만2026년 10월 29일 업데이트

compose-ui-audit

무료요약 있음

Compose Desktop UI 코드의 구조와 런타임 문제를 감사합니다. 상태 소유권, 부수 효과, 코루틴, 지연 목록, 애니메이션, 재구성을 살펴보고 우선순위별 결과를 제시합니다.

  • Compose 화면의 상태 소유권 감사
  • 부수 효과와 코루틴 사용 점검
  • 지연 목록이나 재구성 성능 조사
JetBrains/intellij-community2.1만2026년 10월 29일 업데이트

JetBrains의 스킬 모두 보기

이 스킬의 문제 신고