@testream/dotnet-reporter 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2164,79 +2164,131 @@ module.exports = toNumber;
2164
2164
 
2165
2165
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2166
2166
  exports.detectCIContext = detectCIContext;
2167
- /**
2168
- * Detect CI context from environment variables
2169
- * Supports: GitHub Actions, GitLab CI, Azure Pipelines, CircleCI, Jenkins, Bitbucket Pipelines
2170
- */
2171
- function detectCIContext() {
2172
- const env = process.env;
2173
- // GitHub Actions
2174
- if (env.GITHUB_ACTIONS === 'true') {
2175
- return {
2176
- branch: env.GITHUB_HEAD_REF || env.GITHUB_REF_NAME || env.GITHUB_REF?.replace('refs/heads/', ''),
2177
- commitSha: env.GITHUB_SHA,
2178
- repositoryUrl: env.GITHUB_SERVER_URL && env.GITHUB_REPOSITORY
2179
- ? `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}`
2180
- : undefined,
2181
- buildNumber: env.GITHUB_RUN_NUMBER,
2182
- buildUrl: env.GITHUB_SERVER_URL && env.GITHUB_REPOSITORY && env.GITHUB_RUN_ID
2183
- ? `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`
2184
- : undefined,
2185
- };
2167
+ function removePrefix(value, prefix) {
2168
+ if (!value) {
2169
+ return undefined;
2186
2170
  }
2187
- // GitLab CI
2188
- if (env.GITLAB_CI === 'true') {
2189
- return {
2190
- branch: env.CI_COMMIT_BRANCH || env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,
2191
- commitSha: env.CI_COMMIT_SHA,
2192
- repositoryUrl: env.CI_PROJECT_URL,
2193
- buildNumber: env.CI_PIPELINE_IID,
2194
- buildUrl: env.CI_PIPELINE_URL,
2195
- };
2171
+ return value.startsWith(prefix) ? value.slice(prefix.length) : value;
2172
+ }
2173
+ function readEnvironment() {
2174
+ const runtime = globalThis;
2175
+ return runtime.process?.env ?? {};
2176
+ }
2177
+ function buildGithubRepositoryUrl(env) {
2178
+ if (!env.GITHUB_SERVER_URL || !env.GITHUB_REPOSITORY) {
2179
+ return undefined;
2196
2180
  }
2197
- // Azure Pipelines
2198
- if (env.TF_BUILD === 'True') {
2199
- return {
2200
- branch: env.BUILD_SOURCEBRANCH?.replace('refs/heads/', ''),
2201
- commitSha: env.BUILD_SOURCEVERSION,
2202
- repositoryUrl: env.BUILD_REPOSITORY_URI,
2203
- buildNumber: env.BUILD_BUILDNUMBER,
2204
- buildUrl: env.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI && env.SYSTEM_TEAMPROJECT && env.BUILD_BUILDID
2205
- ? `${env.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${env.SYSTEM_TEAMPROJECT}/_build/results?buildId=${env.BUILD_BUILDID}`
2206
- : undefined,
2207
- };
2181
+ return `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}`;
2182
+ }
2183
+ function buildGithubBuildUrl(env) {
2184
+ if (!env.GITHUB_SERVER_URL || !env.GITHUB_REPOSITORY || !env.GITHUB_RUN_ID) {
2185
+ return undefined;
2208
2186
  }
2209
- // CircleCI
2210
- if (env.CIRCLECI === 'true') {
2211
- return {
2212
- branch: env.CIRCLE_BRANCH,
2213
- commitSha: env.CIRCLE_SHA1,
2214
- repositoryUrl: env.CIRCLE_REPOSITORY_URL,
2215
- buildNumber: env.CIRCLE_BUILD_NUM,
2216
- buildUrl: env.CIRCLE_BUILD_URL,
2217
- };
2187
+ return `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`;
2188
+ }
2189
+ function detectGitHubBranch(env) {
2190
+ if (env.GITHUB_HEAD_REF) {
2191
+ return env.GITHUB_HEAD_REF;
2218
2192
  }
2219
- // Jenkins
2220
- if (env.JENKINS_URL) {
2221
- return {
2222
- branch: env.GIT_BRANCH?.replace('origin/', ''),
2223
- commitSha: env.GIT_COMMIT,
2224
- repositoryUrl: env.GIT_URL,
2225
- buildNumber: env.BUILD_NUMBER,
2226
- buildUrl: env.BUILD_URL,
2227
- };
2193
+ if (env.GITHUB_REF?.startsWith('refs/heads/')) {
2194
+ return env.GITHUB_REF_NAME ?? removePrefix(env.GITHUB_REF, 'refs/heads/');
2228
2195
  }
2229
- // Bitbucket Pipelines
2230
- if (env.BITBUCKET_BUILD_NUMBER) {
2231
- return {
2232
- branch: env.BITBUCKET_BRANCH,
2233
- commitSha: env.BITBUCKET_COMMIT,
2234
- repositoryUrl: env.BITBUCKET_GIT_HTTP_ORIGIN,
2235
- buildNumber: env.BITBUCKET_BUILD_NUMBER,
2236
- buildUrl: env.BITBUCKET_REPO_FULL_NAME && env.BITBUCKET_BUILD_NUMBER
2237
- ? `https://bitbucket.org/${env.BITBUCKET_REPO_FULL_NAME}/pipelines/results/${env.BITBUCKET_BUILD_NUMBER}`
2238
- : undefined,
2239
- };
2196
+ return undefined;
2197
+ }
2198
+ function detectGitHubActionsContext(env) {
2199
+ return {
2200
+ branch: detectGitHubBranch(env),
2201
+ commitSha: env.GITHUB_SHA,
2202
+ repositoryUrl: buildGithubRepositoryUrl(env),
2203
+ buildNumber: env.GITHUB_RUN_NUMBER,
2204
+ buildUrl: buildGithubBuildUrl(env),
2205
+ };
2206
+ }
2207
+ function detectGitLabContext(env) {
2208
+ return {
2209
+ branch: env.CI_COMMIT_BRANCH || env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,
2210
+ commitSha: env.CI_COMMIT_SHA,
2211
+ repositoryUrl: env.CI_PROJECT_URL,
2212
+ buildNumber: env.CI_PIPELINE_IID,
2213
+ buildUrl: env.CI_PIPELINE_URL,
2214
+ };
2215
+ }
2216
+ function detectAzurePipelinesContext(env) {
2217
+ return {
2218
+ branch: removePrefix(env.BUILD_SOURCEBRANCH, 'refs/heads/'),
2219
+ commitSha: env.BUILD_SOURCEVERSION,
2220
+ repositoryUrl: env.BUILD_REPOSITORY_URI,
2221
+ buildNumber: env.BUILD_BUILDNUMBER,
2222
+ buildUrl: env.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI && env.SYSTEM_TEAMPROJECT && env.BUILD_BUILDID
2223
+ ? `${env.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${env.SYSTEM_TEAMPROJECT}/_build/results?buildId=${env.BUILD_BUILDID}`
2224
+ : undefined,
2225
+ };
2226
+ }
2227
+ function detectCircleCIContext(env) {
2228
+ return {
2229
+ branch: env.CIRCLE_BRANCH,
2230
+ commitSha: env.CIRCLE_SHA1,
2231
+ repositoryUrl: env.CIRCLE_REPOSITORY_URL,
2232
+ buildNumber: env.CIRCLE_BUILD_NUM,
2233
+ buildUrl: env.CIRCLE_BUILD_URL,
2234
+ };
2235
+ }
2236
+ function detectJenkinsContext(env) {
2237
+ return {
2238
+ branch: removePrefix(env.GIT_BRANCH, 'origin/'),
2239
+ commitSha: env.GIT_COMMIT,
2240
+ repositoryUrl: env.GIT_URL,
2241
+ buildNumber: env.BUILD_NUMBER,
2242
+ buildUrl: env.BUILD_URL,
2243
+ };
2244
+ }
2245
+ function detectBitbucketContext(env) {
2246
+ return {
2247
+ branch: env.BITBUCKET_BRANCH,
2248
+ commitSha: env.BITBUCKET_COMMIT,
2249
+ repositoryUrl: env.BITBUCKET_GIT_HTTP_ORIGIN,
2250
+ buildNumber: env.BITBUCKET_BUILD_NUMBER,
2251
+ buildUrl: env.BITBUCKET_REPO_FULL_NAME && env.BITBUCKET_BUILD_NUMBER
2252
+ ? `https://bitbucket.org/${env.BITBUCKET_REPO_FULL_NAME}/pipelines/results/${env.BITBUCKET_BUILD_NUMBER}`
2253
+ : undefined,
2254
+ };
2255
+ }
2256
+ const CI_PROVIDER_DETECTORS = [
2257
+ {
2258
+ isMatch: (env) => env.GITHUB_ACTIONS === 'true',
2259
+ detect: detectGitHubActionsContext,
2260
+ },
2261
+ {
2262
+ isMatch: (env) => env.GITLAB_CI === 'true',
2263
+ detect: detectGitLabContext,
2264
+ },
2265
+ {
2266
+ isMatch: (env) => env.TF_BUILD === 'True',
2267
+ detect: detectAzurePipelinesContext,
2268
+ },
2269
+ {
2270
+ isMatch: (env) => env.CIRCLECI === 'true',
2271
+ detect: detectCircleCIContext,
2272
+ },
2273
+ {
2274
+ isMatch: (env) => Boolean(env.JENKINS_URL),
2275
+ detect: detectJenkinsContext,
2276
+ },
2277
+ {
2278
+ isMatch: (env) => Boolean(env.BITBUCKET_BUILD_NUMBER),
2279
+ detect: detectBitbucketContext,
2280
+ },
2281
+ ];
2282
+ /**
2283
+ * Detect CI context from environment variables
2284
+ * Supports: GitHub Actions, GitLab CI, Azure Pipelines, CircleCI, Jenkins, Bitbucket Pipelines
2285
+ */
2286
+ function detectCIContext() {
2287
+ const env = readEnvironment();
2288
+ for (const provider of CI_PROVIDER_DETECTORS) {
2289
+ if (provider.isMatch(env)) {
2290
+ return provider.detect(env);
2291
+ }
2240
2292
  }
2241
2293
  return {};
2242
2294
  }