From d38da874cf7e2ce23945236269d9755b2fc3dd44 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 22 Oct 2019 21:42:16 -0500 Subject: [PATCH] Record src directory usage with version (#9023) * Add tracking src dir usage to telemetry * Move isSrcDir back to eventVersion * Move spinner back * Add test for isSrcDir telemetry * Add test for dev mode --- packages/next/build/index.ts | 7 +- packages/next/export/index.ts | 2 +- packages/next/server/next-dev-server.ts | 7 +- packages/next/telemetry/events/version.ts | 2 + test/integration/telemetry/test/index.test.js | 68 ++++++++++++++++++- 5 files changed, 82 insertions(+), 4 deletions(-) diff --git a/packages/next/build/index.ts b/packages/next/build/index.ts index 7ceed1ec1f..693fc4803d 100644 --- a/packages/next/build/index.ts +++ b/packages/next/build/index.ts @@ -122,7 +122,12 @@ export default async function build(dir: string, conf = null): Promise { let backgroundWork: (Promise | undefined)[] = [] backgroundWork.push( - telemetry.record(eventVersion({ cliCommand: 'build' })), + telemetry.record( + eventVersion({ + cliCommand: 'build', + isSrcDir: path.relative(dir, pagesDir!).startsWith('src'), + }) + ), eventNextPlugins(path.resolve(dir)).then(events => telemetry.record(events)) ) diff --git a/packages/next/export/index.ts b/packages/next/export/index.ts index 6205d11d07..dba1116a3f 100644 --- a/packages/next/export/index.ts +++ b/packages/next/export/index.ts @@ -95,7 +95,7 @@ export default async function( const distDir = join(dir, nextConfig.distDir) if (!options.buildExport) { const telemetry = new Telemetry({ distDir }) - telemetry.record(eventVersion({ cliCommand: 'export' })) + telemetry.record(eventVersion({ cliCommand: 'export', isSrcDir: null })) } const subFolders = nextConfig.exportTrailingSlash diff --git a/packages/next/server/next-dev-server.ts b/packages/next/server/next-dev-server.ts index fd0c142b25..5e715d19c2 100644 --- a/packages/next/server/next-dev-server.ts +++ b/packages/next/server/next-dev-server.ts @@ -207,7 +207,12 @@ export default class DevServer extends Server { this.setDevReady!() const telemetry = new Telemetry({ distDir: this.distDir }) - telemetry.record(eventVersion({ cliCommand: 'dev' })) + telemetry.record( + eventVersion({ + cliCommand: 'dev', + isSrcDir: relative(this.dir, this.pagesDir!).startsWith('src'), + }) + ) } protected async close() { diff --git a/packages/next/telemetry/events/version.ts b/packages/next/telemetry/events/version.ts index e8490af391..843de93c04 100644 --- a/packages/next/telemetry/events/version.ts +++ b/packages/next/telemetry/events/version.ts @@ -4,6 +4,7 @@ type EventCliSessionStarted = { nextVersion: string nodeVersion: string cliCommand: string + isSrcDir: boolean | null } export function eventVersion( @@ -21,6 +22,7 @@ export function eventVersion( nextVersion: process.env.__NEXT_VERSION, nodeVersion: process.version, cliCommand: event.cliCommand, + isSrcDir: event.isSrcDir, } as EventCliSessionStarted, }, ] diff --git a/test/integration/telemetry/test/index.test.js b/test/integration/telemetry/test/index.test.js index 55f5fb97bb..97aef449a3 100644 --- a/test/integration/telemetry/test/index.test.js +++ b/test/integration/telemetry/test/index.test.js @@ -1,9 +1,19 @@ /* eslint-env jest */ /* global jasmine */ -import { runNextCommand } from 'next-test-utils' +import path from 'path' +import fs from 'fs-extra' +import { + runNextCommand, + launchApp, + findPort, + killApp, + waitFor +} from 'next-test-utils' jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 2 +const appDir = path.join(__dirname, '..') + describe('Telemetry CLI', () => { it('can print telemetry status', async () => { const { stdout } = await runNextCommand(['telemetry'], { @@ -59,4 +69,60 @@ describe('Telemetry CLI', () => { expect(stdout).toMatch(/already disabled/) expect(stdout).toMatch(/Status: Disabled/) }) + + it('detects isSrcDir dir correctly for `next build`', async () => { + const { stderr } = await runNextCommand(['build', appDir], { + stderr: true, + env: { + NEXT_TELEMETRY_DEBUG: 1 + } + }) + + expect(stderr).toMatch(/isSrcDir.*?false/) + + await fs.move(path.join(appDir, 'pages'), path.join(appDir, 'src/pages')) + const { stderr: stderr2 } = await runNextCommand(['build', appDir], { + stderr: true, + env: { + NEXT_TELEMETRY_DEBUG: 1 + } + }) + await fs.move(path.join(appDir, 'src/pages'), path.join(appDir, 'pages')) + + expect(stderr2).toMatch(/isSrcDir.*?true/) + }) + + it('detects isSrcDir dir correctly for `next dev`', async () => { + let port = await findPort() + let stderr = '' + + const handleStderr = msg => { + stderr += msg + } + let app = await launchApp(appDir, port, { + onStderr: handleStderr, + env: { + NEXT_TELEMETRY_DEBUG: 1 + } + }) + await waitFor(1000) + await killApp(app) + expect(stderr).toMatch(/isSrcDir.*?false/) + + await fs.move(path.join(appDir, 'pages'), path.join(appDir, 'src/pages')) + stderr = '' + + port = await findPort() + app = await launchApp(appDir, port, { + onStderr: handleStderr, + env: { + NEXT_TELEMETRY_DEBUG: 1 + } + }) + await waitFor(1000) + await killApp(app) + await fs.move(path.join(appDir, 'src/pages'), path.join(appDir, 'pages')) + + expect(stderr).toMatch(/isSrcDir.*?true/) + }) }) -- GitLab