Close the remaining capability gaps where the skill's custom-module install was narrower than the canonical installer (tools/installer/modules/custom-module-manager.js + channel-resolver.js). The new-spec install path was already shared code and the legacy resolver a faithful port, so this targets only the independently-implemented source/channel/cache plumbing. - source.mjs parseSource: accept `owner/repo@ref`, and browser-style deep-path git URLs (tree/blob, GitLab `-/tree`, Gitea `src/branch`, `?path=`), extracting the embedded ref + repo subdirectory — so a module in a monorepo subfolder installs directly. URL-based parsing handles Azure DevOps `_git`, nested groups, and dotted repo names. - lib/cache.mjs: shared clone cache at ~/.bmad/cache/custom-modules/<host>/<owner>/<repo>/ with .bmad-source.json/.bmad-channel.json metadata, matching the installer (reuse on matching ref, fetch/refresh otherwise, keep stale copy on fetch failure). materializeSource copies the module root out of the cache into a throwaway temp tree so the cache is never mutated. - lib/channel-resolver.mjs: node:-only port of resolveChannel (stable/next/pinned); `stable` resolves the latest non-prerelease GitHub tag, falling back to next. semver-lite gains prerelease/compare/rcompare so it stays registry-free. - install.mjs/update.mjs: resolve channel+ref before clone; update re-resolves the channel the module was installed with. Tests + CI: - test/test-bmad-module-source.mjs: unit coverage for parseSource, semver-lite, and channel-resolver, at parity with the installer's test-parse-source-urls.js / test-installer-channels.js. - Wire the skill's unit test (test:skill-source) and its end-to-end integration test (test:skill) into npm test, npm run quality, and the quality.yaml CI job — the integration test was previously committed but only ever run by hand. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| adversarial-review-tests | ||
| fixtures/file-refs-csv | ||
| README.md | ||
| test-bmad-module-source.mjs | ||
| test-file-refs-csv.js | ||
| test-ide-sync.js | ||
| test-installation-components.js | ||
| test-installer-channels.js | ||
| test-parse-source-urls.js | ||
| test-rehype-plugins.mjs | ||
| test-workflow-path-regex.js | ||
README.md
Test Suite
Tests for the BMAD-METHOD tooling infrastructure.
Quick Start
# Run all quality checks
npm run quality
# Run individual test suites
npm run test:install # Installation component tests
npm run test:refs # File reference CSV tests
npm run validate:refs # File reference validation (strict)
Test Scripts
Installation Component Tests
File: test/test-installation-components.js
Validates that the installer compiles and assembles agents correctly.
File Reference Tests
File: test/test-file-refs-csv.js
Tests the CSV-based file reference validation logic.
Test Fixtures
Located in test/fixtures/:
test/fixtures/
└── file-refs-csv/ # Fixtures for file reference CSV tests