Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,6 @@ updates:
# Thus, we ignore them and update them manually.
- dependency-name: "@opentelemetry/api"
- dependency-name: "@opentelemetry/api-logs"
- dependency-name: "tap"
# Contain breaking changes that are incompatible with our test usage
update-types: ["version-update:semver-major"]
groups:
dev-minor-and-patch-dependencies:
dependency-type: "development"
Expand Down
5 changes: 0 additions & 5 deletions .taprc

This file was deleted.

11 changes: 2 additions & 9 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

- Install dependencies: `yarn install`

**Note:** This project uses yarn, not npm. Always use `yarn` commands instead of `npm` commands.
**This project uses yarn, not npm. Always use `yarn` commands instead of `npm` commands.**

## Project Overview

Expand Down Expand Up @@ -44,18 +44,13 @@ When developing a feature or fixing a bug:

### Running Individual Tests

**IMPORTANT**: Never run `yarn test` directly. Use `mocha` or `tap` directly on test files.
**IMPORTANT**: Never run `yarn test` directly. Use `mocha` directly on test files.

**Mocha unit tests:**
```bash
./node_modules/.bin/mocha -r "packages/dd-trace/test/setup/mocha.js" path/to/test.spec.js
```

**Tap unit tests:**
```bash
./node_modules/.bin/tap path/to/test.spec.js
```

**Integration tests:**
```bash
./node_modules/.bin/mocha --timeout 60000 -r "packages/dd-trace/test/setup/core.js" path/to/test.spec.js
Expand All @@ -67,8 +62,6 @@ When developing a feature or fixing a bug:
**Enable debug logging:**
- Prefix with `DD_TRACE_DEBUG=true`

**Note**: New tests should be written using mocha, not tap. Existing tap tests use mocha-style `describe` and `it` blocks.

### Plugin Tests

**Use `PLUGINS` env var:**
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,14 +290,14 @@ Please refer to [the "Install" section](https://github.com/brianc/node-postgres/

When developing, it's often faster to run individual test files rather than entire test suites. **Never run `yarn test` directly** as it requires too much setup and takes too long.

To target specific tests, use the `--grep` flag with mocha or tap to match test names:
To target specific tests, use the `--grep` flag with mocha to match test names:

```sh
yarn test:debugger --grep "test name pattern"
yarn test:appsec --grep "specific test"
```

**Note:** This project uses a mix of tap and mocha for testing. However, new tests should be written using mocha, not tap.
**This project uses mocha for testing.**

### Test Assertions

Expand Down
1 change: 0 additions & 1 deletion benchmark/sirun/startup/startup-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ if (Number(process.env.EVERYTHING)) {
'shell-quote',
'sinon',
'source-map',
'tap',
'tiktoken',
'tlhunter-sorted-set',
'ttl-set',
Expand Down
16 changes: 12 additions & 4 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -406,24 +406,32 @@ export default [
'n/no-restricted-require': ['error', [
{
name: 'diagnostics_channel',
message: 'Please use dc-polyfill instead.'
message: 'Please use `dc-polyfill` instead.'
},
{
name: 'semver',
message: 'Please use semifies instead.'
message: 'Please use `semifies` instead.'
},
{
name: 'get-port',
message: 'Please listen on port 0 instead.'
},
{
name: 'rimraf',
message: 'Please use fs.rm(path, { recursive: true, force: true }) instead.'
message: 'Please use `fs.rm(path, { recursive: true, force: true })` instead.'
},
{
name: 'koalas',
message: 'Please use nullish coalescing operator (??) instead.'
}
},
{
name: 'chai',
message: 'Please use `node:assert/strict` instead.'
},
{
name: 'tap',
message: 'Please use `mocha` instead.'
},
]],

'no-await-in-loop': 'error',
Expand Down
14 changes: 6 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
"test:debugger": "mocha -r 'packages/dd-trace/test/setup/mocha.js' 'packages/dd-trace/test/debugger/**/*.spec.js'",
"test:debugger:ci": "nyc --no-clean --include 'packages/dd-trace/src/debugger/**/*.js' -- npm run test:debugger",
"test:eslint-rules": "node eslint-rules/*.test.mjs",
"test:trace:core": "tap packages/dd-trace/test/*.spec.js \"packages/dd-trace/test/{ci-visibility,datastreams,encode,exporters,opentelemetry,opentracing,plugins,remote_config,service-naming,standalone,telemetry,external-logger}/**/*.spec.js\"",
"test:trace:core:ci": "npm run test:trace:core -- --coverage --nyc-arg=--include=\"packages/dd-trace/src/**/*.js\"",
"test:trace:core": "node scripts/mocha-parallel-files.js --expose-gc --timeout 30000 --require packages/dd-trace/test/setup/mocha.js -- \"packages/dd-trace/test/*.spec.js\" \"packages/dd-trace/test/{ci-visibility,datastreams,encode,exporters,opentelemetry,opentracing,plugins,remote_config,service-naming,standalone,telemetry,external-logger}/**/*.spec.js\"",
"test:trace:core:ci": "nyc --no-clean --include \"packages/dd-trace/src/**/*.js\" -- npm run test:trace:core",
"test:trace:guardrails": "mocha -r \"packages/dd-trace/test/setup/mocha.js\" \"packages/dd-trace/test/guardrails/**/*.spec.js\"",
"test:trace:guardrails:ci": "nyc --no-clean --include \"packages/dd-trace/src/guardrails/**/*.js\" -- npm run test:trace:guardrails",
"test:esbuild": "mocha -r \"packages/dd-trace/test/setup/mocha.js\" \"packages/datadog-esbuild/test/**/*.spec.js\"",
Expand All @@ -38,8 +38,8 @@
"test:instrumentations:ci": "yarn services && nyc --no-clean --include \"packages/datadog-instrumentations/src/@($(echo $PLUGINS)).js\" --include \"packages/datadog-instrumentations/src/@($(echo $PLUGINS))/**/*.js\" -- npm run test:instrumentations",
"test:instrumentations:misc": "mocha -r 'packages/dd-trace/test/setup/mocha.js' 'packages/datadog-instrumentations/test/*/**/*.spec.js'",
"test:instrumentations:misc:ci": "nyc --no-clean --include 'packages/datadog-instrumentations/src/**/*.js' -- npm run test:instrumentations:misc",
"test:core": "tap \"packages/datadog-core/test/**/*.spec.js\"",
"test:core:ci": "npm run test:core -- --coverage --nyc-arg=--include=\"packages/datadog-core/src/**/*.js\"",
"test:core": "node scripts/mocha-parallel-files.js --expose-gc --timeout 30000 -- \"packages/datadog-core/test/**/*.spec.js\"",
"test:core:ci": "nyc --no-clean --include \"packages/datadog-core/src/**/*.js\" -- npm run test:core",
"test:lambda": "mocha -r \"packages/dd-trace/test/setup/mocha.js\" \"packages/dd-trace/test/lambda/**/*.spec.js\"",
"test:lambda:ci": "nyc --no-clean --include \"packages/dd-trace/src/lambda/**/*.js\" -- npm run test:lambda",
"test:llmobs:sdk": "mocha -r \"packages/dd-trace/test/setup/mocha.js\" --exclude \"packages/dd-trace/test/llmobs/plugins/**/*.spec.js\" \"packages/dd-trace/test/llmobs/**/*.spec.js\" ",
Expand All @@ -52,8 +52,8 @@
"test:plugins:ci": "yarn services && nyc --no-clean --include \"packages/datadog-plugin-@($(echo $PLUGINS))/src/**/*.js\" -- npm run test:plugins",
"test:plugins:ci:flaky": "yarn services && nyc --no-clean --include \"packages/datadog-plugin-@($(echo $PLUGINS))/src/**/*.js\" -- npm run test:plugins -- --bail --retries 2",
"test:plugins:upstream": "node ./packages/dd-trace/test/plugins/suite.js",
"test:profiler": "tap \"packages/dd-trace/test/profiling/**/*.spec.js\"",
"test:profiler:ci": "npm run test:profiler -- --coverage --nyc-arg=--include=\"packages/dd-trace/src/profiling/**/*.js\"",
"test:profiler": "node scripts/mocha-parallel-files.js --expose-gc --timeout 30000 --require packages/dd-trace/test/setup/mocha.js -- \"packages/dd-trace/test/profiling/**/*.spec.js\"",
"test:profiler:ci": "nyc --no-clean --include \"packages/dd-trace/src/profiling/**/*.js\" -- npm run test:profiler",
"test:integration": "mocha --timeout 60000 -r \"packages/dd-trace/test/setup/core.js\" \"integration-tests/*.spec.js\"",
"test:integration:aiguard": "mocha --timeout 60000 -r \"packages/dd-trace/test/setup/core.js\" \"integration-tests/aiguard/*.spec.js\"",
"test:integration:appsec": "mocha --timeout 60000 -r \"packages/dd-trace/test/setup/core.js\" \"integration-tests/appsec/*.spec.js\"",
Expand Down Expand Up @@ -151,7 +151,6 @@
"@types/mocha": "^10.0.10",
"@types/node": "^18.19.106",
"@types/sinon": "^21.0.0",
"@types/tap": "^15.0.12",
"axios": "^1.12.2",
"benchmark": "^2.1.4",
"body-parser": "^2.2.0",
Expand Down Expand Up @@ -182,7 +181,6 @@
"semifies": "^1.0.0",
"semver": "^7.7.2",
"sinon": "^21.0.0",
"tap": "^16.3.10",
"tiktoken": "^1.0.21",
"typescript": "^5.9.2",
"workerpool": "^10.0.0",
Expand Down
4 changes: 2 additions & 2 deletions packages/datadog-code-origin/test/index.spec.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
'use strict'

const { describe, it, afterEach } = require('tap').mocha
const { resolve } = require('node:path')
const assert = require('node:assert')

require('../../dd-trace/test/setup/core')
const { describe, it, afterEach } = require('mocha')

require('../../dd-trace/test/setup/core')
const { entryTags, exitTags } = require('../index')
const { getNextLineNumber } = require('../../dd-trace/test/plugins/helpers')

Expand Down
4 changes: 2 additions & 2 deletions packages/datadog-core/test/storage.spec.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
'use strict'

const assert = require('node:assert/strict')
const { describe, it, beforeEach, afterEach } = require('tap').mocha
const { executionAsyncResource } = require('async_hooks')

require('../../dd-trace/test/setup/core')
const { describe, it, beforeEach, afterEach } = require('mocha')

require('../../dd-trace/test/setup/core')
const { storage } = require('../src/storage')

describe('storage', () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/datadog-core/test/utils/src/parse-tags.spec.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
'use strict'

const assert = require('node:assert/strict')
const { describe, it } = require('tap').mocha

require('../../../../dd-trace/test/setup/core')
const { describe, it } = require('mocha')

require('../../../../dd-trace/test/setup/core')
const parseTags = require('../../../src/utils/src/parse-tags')

describe('parseTags', () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/datadog-core/test/utils/src/set.spec.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
'use strict'

const assert = require('node:assert/strict')
const { describe, it } = require('tap').mocha

require('../../../../dd-trace/test/setup/core')
const { describe, it } = require('mocha')

require('../../../../dd-trace/test/setup/core')
const set = require('../../../src/utils/src/set')

describe('set', () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/dd-trace/test/analytics_sampler.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const { describe, it, beforeEach } = require('tap').mocha
const { describe, it, beforeEach } = require('mocha')
const sinon = require('sinon')

require('./setup/core')
Expand Down
46 changes: 31 additions & 15 deletions packages/dd-trace/test/azure_metadata.spec.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,42 @@
'use strict'

const assert = require('node:assert/strict')
const { describe, it } = require('tap').mocha
const os = require('node:os')

require('./setup/core')
const { describe, it, afterEach } = require('mocha')

require('./setup/core')
const { getAzureAppMetadata, getAzureTagsFromMetadata, getAzureFunctionMetadata } = require('../src/azure_metadata')

describe('Azure metadata', () => {
const AZURE_ENV_KEYS = [
'COMPUTERNAME',
'DD_AAS_DOTNET_EXTENSION_VERSION',
'DD_AZURE_RESOURCE_GROUP',
'FUNCTIONS_EXTENSION_VERSION',
'FUNCTIONS_WORKER_RUNTIME',
'FUNCTIONS_WORKER_RUNTIME_VERSION',
'WEBSITE_INSTANCE_ID',
'WEBSITE_OWNER_NAME',
'WEBSITE_OS',
'WEBSITE_RESOURCE_GROUP',
'WEBSITE_SITE_NAME',
'WEBSITE_SKU'
]

const initialAzureEnv = Object.fromEntries(AZURE_ENV_KEYS.map(key => [key, process.env[key]]))

afterEach(() => {
for (const key of AZURE_ENV_KEYS) {
const value = initialAzureEnv[key]
if (value === undefined) {
delete process.env[key]
} else {
process.env[key] = value
}
}
})

Comment thread
watson marked this conversation as resolved.
describe('for apps is', () => {
it('not provided without WEBSITE_SITE_NAME', () => {
delete process.env.WEBSITE_SITE_NAME
Expand All @@ -25,11 +53,6 @@ describe('Azure metadata', () => {
})

it('provided completely with minimum vars', () => {
delete process.env.WEBSITE_RESOURCE_GROUP
delete process.env.WEBSITE_OS
delete process.env.FUNCTIONS_EXTENSION_VERSION
delete process.env.FUNCTIONS_WORKER_RUNTIME
delete process.env.FUNCTIONS_WORKER_RUNTIME_VERSION
process.env.COMPUTERNAME = 'boaty_mcboatface'
process.env.WEBSITE_SITE_NAME = 'website_name'
process.env.WEBSITE_OWNER_NAME = 'subscription_id+resource_group-regionwebspace'
Expand Down Expand Up @@ -82,11 +105,6 @@ describe('Azure metadata', () => {
})

it('tags are correctly generated from vars', () => {
delete process.env.WEBSITE_RESOURCE_GROUP
delete process.env.WEBSITE_OS
delete process.env.FUNCTIONS_EXTENSION_VERSION
delete process.env.FUNCTIONS_WORKER_RUNTIME
delete process.env.FUNCTIONS_WORKER_RUNTIME_VERSION
process.env.COMPUTERNAME = 'boaty_mcboatface'
process.env.WEBSITE_SITE_NAME = 'website_name'
process.env.WEBSITE_OWNER_NAME = 'subscription_id+resource_group-regionwebspace'
Expand All @@ -109,9 +127,6 @@ describe('Azure metadata', () => {
})

it('uses DD_AZURE_RESOURCE_GROUP for Flex Consumption Azure Functions', () => {
delete process.env.WEBSITE_RESOURCE_GROUP
delete process.env.WEBSITE_OS
delete process.env.DD_AAS_DOTNET_EXTENSION_VERSION
process.env.COMPUTERNAME = 'flex_function'
process.env.WEBSITE_SITE_NAME = 'flex_function_app'
process.env.WEBSITE_OWNER_NAME = 'subscription_id+flex-regionwebspace'
Expand Down Expand Up @@ -144,6 +159,7 @@ describe('Azure metadata', () => {
process.env.WEBSITE_OWNER_NAME = 'subscription_id+extracted_group-regionwebspace'
process.env.WEBSITE_SKU = 'Consumption'
process.env.FUNCTIONS_EXTENSION_VERSION = '4'
process.env.FUNCTIONS_WORKER_RUNTIME = 'node'
process.env.DD_AZURE_RESOURCE_GROUP = 'should_not_use_this'
const metadata = getAzureFunctionMetadata()
assert.strictEqual(metadata.resourceGroup, 'regular_resource_group')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
'use strict'

const assert = require('node:assert/strict')
const { describe, it, afterEach } = require('tap').mocha
const { fork } = require('node:child_process')
const path = require('node:path')

const { describe, it, afterEach } = require('mocha')

require('../../../../dd-trace/test/setup/core')

describe('test visibility with dynamic instrumentation', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
'use strict'

const assert = require('node:assert/strict')
const { assertObjectContains } = require('../../../../../integration-tests/helpers')

const { describe, it, beforeEach, afterEach } = require('tap').mocha
const { describe, it, beforeEach, afterEach } = require('mocha')
const sinon = require('sinon')

const { assertObjectContains } = require('../../../../../integration-tests/helpers')
require('../../../../dd-trace/test/setup/core')

const { JSONEncoder } = require('../../../src/ci-visibility/encode/json-encoder')

describe('CI Visibility JSON encoder', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@

const assert = require('node:assert/strict')

const { assertObjectContains } = require('../../../../../../integration-tests/helpers')

const { describe, it, beforeEach, context } = require('tap').mocha
const { describe, it, beforeEach } = require('mocha')
const context = describe
const sinon = require('sinon')
const nock = require('nock')

const { assertObjectContains } = require('../../../../../../integration-tests/helpers')
require('../../../../../dd-trace/test/setup/core')

const AgentProxyCiVisibilityExporter = require('../../../../src/ci-visibility/exporters/agent-proxy')
const AgentlessWriter = require('../../../../src/ci-visibility/exporters/agentless/writer')
const DynamicInstrumentationLogsWriter = require('../../../../src/ci-visibility/exporters/agentless/di-logs-writer')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
'use strict'

const { describe, it, beforeEach } = require('tap').mocha
const { describe, it, beforeEach } = require('mocha')
const sinon = require('sinon')
const proxyquire = require('proxyquire')

require('../../../../../dd-trace/test/setup/core')

const id = require('../../../../src/id')

let CoverageWriter
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
'use strict'

const assert = require('node:assert/strict')
const { describe, it, beforeEach, afterEach, context } = require('tap').mocha

const { describe, it, beforeEach, afterEach } = require('mocha')
const context = describe
const sinon = require('sinon')
const nock = require('nock')

require('../../../../../dd-trace/test/setup/core')

const DynamicInstrumentationLogsWriter = require('../../../../src/ci-visibility/exporters/agentless/di-logs-writer')
const log = require('../../../../src/log')

Expand Down
Loading