Skip to content

πŸ› failing open source license check [follow-up ticket]Β #3650

Description

@willi84

πŸ› Issue description or question

It's still a problem that it's not clear why Wallaby is not starting after failed Open Source License Check.

As @smcenlly suggested here, I created a new ticket for this issue.

πŸ”„ Reproduction / Discoveries

  • πŸ“… Yesterday, I continued working on a project where the last commit was from July 19th.

    • βœ… The branch was up to date.
    • βœ… The repository used an MIT license.
    • βœ… The repository was public.
    • πŸ› οΈ I stopped working yesterday at some point without writing tests.
      • ℹ️ Note: I can't remember whether Wallaby was running in this particular project yesterday, but it was definitely running in another project.
  • πŸ“… Today, I wanted to write tests for the project, so I tried to start Wallaby to see which tests were still failing.

    • ❌ However: Wallaby Open Source license check failed and wallaby did not started

πŸ” Things I tried

  • βœ… restart computer
  • βœ… Internet connection was working
  • βœ… GitHub was reachable
  • ⚠️ The first diagnostics report was unusually small (see below)
  • βœ… Updated the editor
  • βœ… Updated the Wallaby plugin locally and in WSL (which didn't really change anything)
  • βœ… Forced an update of the Wallaby core
  • βœ… Reset the Wallaby cache
  • βœ… Reloaded the editor window

❌ None of these steps helped.

🟒 What finally made it work

I then:

  1. πŸ“¦ Stashed my local changes.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   PROJECT.json
        modified:   package-lock.json
        modified:   package.json
        modified:   src/apps/api/index.ts
        modified:   src/index.ts
  1. πŸ“ Made a minor commit.
  2. ⬆️ Pushed the commit.
  3. πŸ”„ Restarted Wallaby.

After that, the license check worked again and Wallaby started. πŸŽ‰

πŸ’­ Possible cause

My assumption is that Wallaby locally calculates or checks the date of the last remote change, detects that there are local changes, and then considers the large difference in days when performing the open-source license check.

However, I had already started working on these changes yesterday. Therefore, I would expect a previous successful license check to still be cached and valid.

πŸ’‘ Suggestion

It would be really helpful if the open-source license check provided some information about why the open source license check failed

It might also make sense to consider whether:

  • πŸ“„ the license has not changed locally,
  • 🌍 the license has not changed remotely, and
  • βœ… the repository still meets the open-source license requirements.

In that case, a previously successful open-source license check could potentially remain valid.

πŸ“‹ Wallaby diagnostics report

πŸ“… Diagnostics report from when the issue occurred. (⚠️ It looks way too small)

{
  "editorVersion": "1.131.0",
  "pluginVersion": "1.0.500"
}

πŸ“… after solving with a minimal commit (and tried updating everything)

{
  editorVersion: '1.134.0',
  pluginVersion: '1.0.500',
  editorType: 'VSCode',
  osVersion: 'linux 4.4.0-19041-Microsoft',
  nodeVersion: 'v22.14.0',
  coreVersion: { version: '1.0.2067', pinned: undefined },
  pnp: '<not set>',
  pnpEsm: '<not set>',
  checksum: 'MDc0ZjljMGNkMTEwNThiYTM5Y2FiNzY3YWE1YmQ1YjksMTc4NzYxNjAwMDAwMCww',
  config: {
    diagnostics: {
      jest: {
        config: {
          configs: [
            {
              automock: false,
              cache: true,
              cacheDirectory: '/tmp/jest_rs',
              clearMocks: false,
              collectCoverageFrom: [ 'src/**/*.{ts,tsx}', '!**/node_modules/**', '!**/dist/**', '!**/coverage/**', '!**/vendor/**' ],
              coverageDirectory: '<rootDir>/coverage',
              coveragePathIgnorePatterns: [ '/node_modules/', '/dist/', '/coverage/', '/vendor/', '\\.d\\.ts$' ],
              cwd: '<rootDir>',
              dependencyExtractor: undefined,
              detectLeaks: false,
              detectOpenHandles: false,
              displayName: undefined,
              errorOnDeprecated: false,
              extensionsToTreatAsEsm: [],
              fakeTimers: { enableGlobally: false },
              filter: undefined,
              forceCoverageMatch: [],
              globalSetup: undefined,
              globalTeardown: undefined,
              globals: {},
              haste: { computeSha1: false, enableSymlinks: false, forceNodeFilesystemAPI: true, throwOnModuleCollision: false },
              id: 'abc2714e2ac69c2f2f27f6d4e6c8944c',
              injectGlobals: true,
              moduleDirectories: [ 'node_modules' ],
              moduleFileExtensions: [
                'js',   'mjs',
                'cjs',  'jsx',
                'ts',   'tsx',
                'json', 'node'
              ],
              moduleNameMapper: [
                [ '^image![a-zA-Z0-9$_-]+$', 'GlobalImageStub' ],
                [ '^[./a-zA-Z0-9$_-]+\\.png$', '<rootDir>/RelativeImageStub.js' ],
                [ 'module_name_(.*)', '<rootDir>/substituted_module_$1.js' ],
                [ 'assets/(.*)', [ '<rootDir>/images/$1', '<rootDir>/photos/$1', '<rootDir>/recipes/$1' ] ]
              ],
              modulePathIgnorePatterns: [],
              modulePaths: undefined,
              openHandlesTimeout: 1000,
              prettierPath: 'prettier',
              resetMocks: false,
              resetModules: false,
              resolver: undefined,
              restoreMocks: false,
              rootDir: '<rootDir>',
              roots: [ '<rootDir>' ],
              runner: '<rootDir>/node_modules/jest-runner/build/index.js',
              runtime: undefined,
              sandboxInjectedGlobals: [],
              setupFiles: [],
              setupFilesAfterEnv: [],
              skipFilter: false,
              skipNodeResolution: undefined,
              slowTestThreshold: 5,
              snapshotFormat: { escapeString: false, printBasicPrototype: false },
              snapshotResolver: undefined,
              snapshotSerializers: [],
              testEnvironment: '<rootDir>/node_modules/jest-environment-jsdom/build/index.js',
              testEnvironmentOptions: {},
              testLocationInResults: false,
              testMatch: [ '**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)' ],
              testPathIgnorePatterns: [ '/node_modules/' ],
              testRegex: [],
              testRunner: '<rootDir>/node_modules/jest-circus/runner.js',
              transform: [ [ '^.+\\.tsx?$', '<rootDir>/node_modules/ts-jest/dist/index.js', { tsconfig: 'tsconfig.json', esModuleInterop: true } ] ],
              transformIgnorePatterns: [ '/node_modules/', '\\.pnp\\.[^\\/]+$' ],
              unmockedModulePathPatterns: undefined,
              watchPathIgnorePatterns: []
            }
          ],
          globalConfig: {
            bail: 0,
            changedFilesWithAncestor: false,
            changedSince: undefined,
            ci: false,
            collectCoverage: true,
            collectCoverageFrom: [ 'src/**/*.{ts,tsx}', '!**/node_modules/**', '!**/dist/**', '!**/coverage/**', '!**/vendor/**' ],
            coverageDirectory: '<rootDir>/coverage',
            coverageProvider: 'babel',
            coverageReporters: [ 'json', 'json-summary', 'lcov', 'text' ],
            coverageThreshold: undefined,
            detectLeaks: false,
            detectOpenHandles: false,
            errorOnDeprecated: false,
            expand: false,
            filter: undefined,
            findRelatedTests: false,
            forceExit: false,
            globalSetup: undefined,
            globalTeardown: undefined,
            json: false,
            lastCommit: false,
            listTests: false,
            logHeapUsage: false,
            maxConcurrency: 5,
            maxWorkers: 7,
            noSCM: undefined,
            noStackTrace: false,
            nonFlagArgs: undefined,
            notify: false,
            notifyMode: 'failure-change',
            onlyChanged: false,
            onlyFailures: false,
            openHandlesTimeout: 1000,
            outputFile: undefined,
            passWithNoTests: false,
            projects: [],
            randomize: undefined,
            replname: undefined,
            reporters: undefined,
            rootDir: '<rootDir>',
            runInBand: undefined,
            runTestsByPath: false,
            seed: -162092994,
            shard: undefined,
            showSeed: undefined,
            silent: undefined,
            skipFilter: false,
            snapshotFormat: { escapeString: false, printBasicPrototype: false },
            testFailureExitCode: 1,
            testNamePattern: undefined,
            testPathPattern: '',
            testResultsProcessor: undefined,
            testSequencer: '<rootDir>/node_modules/@jest/test-sequencer/build/index.js',
            testTimeout: undefined,
            updateSnapshot: 'new',
            useStderr: false,
            verbose: undefined,
            watch: false,
            watchAll: false,
            watchPlugins: undefined,
            watchman: true,
            workerIdleMemoryLimit: undefined,
            workerThreads: false
          },
          hasDeprecationWarnings: false,
          wallaby: {
            roots: [],
            watchPathIgnorePatterns: [ '/node_modules/', '\\./dist/|\\./build/|\\./coverage/|\\./git/|\\./worktrees/|/\\..+/', '\\.watchman-cookie', '/tmp/jest_rs', '\\./coverage' ],
            testPathIgnorePatterns: [ '/node_modules/', '\\./dist/|\\./build/|\\./coverage/|\\./git/|\\./worktrees/|/\\..+/', '\\.watchman-cookie', '/tmp/jest_rs', '\\./coverage' ],
            testMatch: [ '**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)' ],
            testRegex: []
          }
        }
      }
    },
    testFramework: 'jest',
    filesWithCoverageCalculated: [ 'src/**/*.{ts,tsx}', '!**/node_modules/**', '!**/dist/**', '!**/coverage/**', '!**/vendor/**' ],
    filesWithNoCoverageCalculated: [ /\/dist\//, /\/coverage\//, /\/vendor\//, /\.d\.ts$/ ],
    globalSetup: false,
    dot: true,
    files: [
      { pattern: '/node_modules/', regexp: /\/node_modules\//, ignore: true, trigger: true, load: true, file: true, test: true },
      {
        pattern: '\\./dist/|\\./build/|\\./coverage/|\\./git/|\\./worktrees/|/\\..+/',
        regexp: /\.\/dist\/|\.\/build\/|\.\/coverage\/|\.\/git\/|\.\/worktrees\/|\/\..+\//,
        ignore: true,
        trigger: true,
        load: true,
        file: true,
        test: true
      },
      { pattern: '\\.watchman-cookie', regexp: /\.watchman-cookie/, ignore: true, trigger: true, load: true, file: true, test: true },
      { pattern: '/tmp/jest_rs', regexp: /\/tmp\/jest_rs/, ignore: true, trigger: true, load: true, file: true, test: true },
      { pattern: '\\./coverage', regexp: /\.\/coverage/, ignore: true, trigger: true, load: true, file: true, test: true },
      { pattern: '**/**', ignore: false, trigger: true, load: true, order: 1 },
      { pattern: '**/__tests__/**/*.[jt]s?(x)', ignore: true, trigger: true, load: true, file: true },
      { pattern: '**/?(*.)+(spec|test).[tj]s?(x)', ignore: true, trigger: true, load: true, file: true }
    ],
    captureConsoleLog: true,
    tests: [
      { pattern: '/node_modules/', regexp: /\/node_modules\//, ignore: true, trigger: true, load: true, test: true, file: false },
      {
        pattern: '\\./dist/|\\./build/|\\./coverage/|\\./git/|\\./worktrees/|/\\..+/',
        regexp: /\.\/dist\/|\.\/build\/|\.\/coverage\/|\.\/git\/|\.\/worktrees\/|\/\..+\//,
        ignore: true,
        trigger: true,
        load: true,
        test: true,
        file: false
      },
      { pattern: '\\.watchman-cookie', regexp: /\.watchman-cookie/, ignore: true, trigger: true, load: true, test: true, file: false },
      { pattern: '/tmp/jest_rs', regexp: /\/tmp\/jest_rs/, ignore: true, trigger: true, load: true, test: true, file: false },
      { pattern: '\\./coverage', regexp: /\.\/coverage/, ignore: true, trigger: true, load: true, test: true, file: false },
      { pattern: '**/__tests__/**/*.[jt]s?(x)', ignore: false, trigger: true, load: true, test: true, order: 2 },
      { pattern: '**/?(*.)+(spec|test).[tj]s?(x)', ignore: false, trigger: true, load: true, test: true, order: 3 }
    ],
    runAllTestsInAffectedTestFile: false,
    updateNoMoreThanOneSnapshotPerTestFileRun: false,
    compilers: {},
    logLimits: { inline: { depth: 5, elements: 5000 }, values: { default: { stringLength: 8192 }, autoExpand: { elements: 5000, stringLength: 8192, depth: 10 } } },
    preprocessors: {},
    maxConsoleMessagesPerTest: 500,
    maxTraceSteps: 999999,
    maxTraceStepsForWatchExpressionPrefetch: 10,
    autoConsoleLog: true,
    delays: { run: 0, edit: 100, update: 0 },
    workers: { initial: 0, regular: 0, recycle: false },
    teardown: undefined,
    hints: {
      ignoreCoverage: '__REGEXP /ignore coverage|istanbul ignore|c8 ignore/',
      ignoreCoverageForFile: '__REGEXP /ignore file coverage/',
      commentAutoLog: '?',
      testFileSelection: { include: '__REGEXP /file\\.only/', exclude: '__REGEXP /file\\.skip/' }
    },
    automaticTestFileSelection: true,
    runSelectedTestsOnly: false,
    mapConsoleMessagesStackTrace: false,
    extensions: {},
    env: {
      type: 'node',
      kind: undefined,
      params: {},
      runner: '<homeDir>/.nvm/versions/node/v22.14.0/bin/node',
      runnerReason: 'ambient',
      runnerReasonSource: '',
      viewportSize: { width: 800, height: 600 },
      options: { width: 800, height: 600 },
      bundle: true
    },
    reportUnhandledPromises: true,
    slowTestThreshold: 75,
    lowCoverageThreshold: 80,
    runAllTestsWhenNoAffectedTests: false,
    allowedToStreamResults: true,
    allowedToCacheResults: true,
    configCode: 'auto.detect#-775868654',
    _internalIntegrationVersion: '24.8.0'
  },
  packageJSON: {
    dependencies: { '@robert.tools/fs': '^1.0.0', '@robert.tools/log': '^1.0.0' },
    devDependencies: {
      '@eslint/js': '^10.0.1',
      '@types/jest': '^29.5.3',
      '@types/mock-fs': '^4.13.4',
      '@types/node': '^24.10.0',
      '@typescript-eslint/eslint-plugin': '^8.62.0',
      eslint: '^10.4.1',
      'eslint-config-prettier': '^10.1.8',
      'eslint-plugin-prettier': '^5.5.6',
      globals: '^17.6.0',
      jest: '^29.6.2',
      'jest-environment-jsdom': '^29.6.2',
      'mock-fs': '^5.5.0',
      'node-html-parser': '^7.0.1',
      'ts-jest': '^29.4.11',
      tsx: '^4.22.3',
      typescript: '^5.9.3'
    }
  },
  fs: { numberOfFiles: 16 },
  debug: [
    "2026-08-21T08:57:35.492Z host WebSocket server is listening on { address: '127.0.0.1', family: 'IPv4', port: 58283 }\n",
    '2026-08-21T08:57:35.537Z project waiting for initial run signal\n',
    '2026-08-21T08:57:35.542Z model Initialization Completed: 256ms\n',
    '2026-08-21T08:57:35.622Z extended-core Validating Open Source License\n',
    "2026-08-21T08:57:35.624Z extended-core Remotes:  [ 'https://github.com/willi84/backend/' ]\n",
    '2026-08-21T08:57:35.624Z extended-core License refresh required: true undefined\n',
    '2026-08-21T08:57:35.624Z extended-core Wallaby.js is validating the open-source status of your project.\n',
    '2026-08-21T08:57:35.655Z ui.service Starting UI service on port: 55000\n',
    '2026-08-21T08:57:35.657Z ui.service UI service started on port: 55000\n',
    '2026-08-21T08:57:36.237Z config Attempting automatic configuration for angular\n',
    '2026-08-21T08:57:36.239Z angular/cli config Angular CLI not found.\n',
    '2026-08-21T08:57:36.239Z config Finished attempting automatic configuration for angular (3ms)\n',
    '2026-08-21T08:57:36.239Z config Attempting automatic configuration for jest\n',
    '2026-08-21T08:57:36.493Z jest/config Detected Jest.\n',
    '2026-08-21T08:57:36.494Z jest/config Configured Jest.\n',
    '2026-08-21T08:57:36.494Z config Finished attempting automatic configuration for jest (255ms)\n',
    '2026-08-21T08:57:36.495Z config Using node.js runner from ambient environment: <homeDir>/.nvm/versions/node/v22.14.0/bin/node\n',
    '2026-08-21T08:57:36.495Z project Wallaby Node version: v22.14.0\n',
    '2026-08-21T08:57:36.495Z project Wallaby config: <rootDir>/auto.detect\n',
    '2026-08-21T08:57:36.509Z fs File system starting\n',
    '2026-08-21T08:57:36.562Z fs File system scan completed\n',
    '2026-08-21T08:57:36.571Z project File cache: <homeDir>/.wallaby/cache/projects/40579ba14577b375\n',
    '2026-08-21T08:57:36.573Z project package.json file change detected, invalidating local cache\n',
    '2026-08-21T08:57:36.609Z workers Parallelism for initial run: 6, for regular run: 3\n',
    '2026-08-21T08:57:36.610Z workers Web server is listening at 58294\n',
    '2026-08-21T08:57:36.610Z project File cache requires some updates, waiting required files\n',
    '2026-08-21T08:57:36.622Z project Stopping process pool\n',
    '2026-08-21T08:57:36.624Z runManager Test run started; run priority: 3\n',
    '2026-08-21T08:57:36.626Z runManager Running all tests\n',
    '2026-08-21T08:57:36.629Z workers Planning to run 1 queued test file(s) (full run)\n',
    '2026-08-21T08:57:36.630Z workers [worker #0] New run (tier 2, regular, no group): 1 test files, time estimate 0 ms\n',
    '2026-08-21T08:57:36.631Z workers Starting run worker instance #0\n',
    '2026-08-21T08:57:36.631Z nodeRunner Starting sandbox [worker #0, session #enj6u]\n',
    '2026-08-21T08:57:36.632Z nodeRunner Preparing sandbox [worker #0, session #enj6u]\n',
    '2026-08-21T08:57:36.811Z workers Started run worker instance (delayed) #0\n',
    '2026-08-21T08:57:36.811Z nodeRunner Prepared sandbox [worker #0, session #enj6u]\n',
    '2026-08-21T08:57:36.811Z workers [worker #0, session #enj6u] Running tests in sandbox\n',
    '2026-08-21T08:57:36.813Z nodeRunner Sending worker task [worker #0, session #enj6u]\n',
    "2026-08-21T08:57:36.818Z workers 'Configuring Jest (enj6u)'\n",
    "2026-08-21T08:57:36.964Z workers 'Getting Jest test data (enj6u)'\n",
    "2026-08-21T08:58:24.467Z workers 'Scheduling Jest Test Run (enj6u): 2026-08-21T08:58:24.461Z'\n",
    '2026-08-21T08:58:33.373Z workers [enj6u] Loaded unknown number of test(s)\n',
    '2026-08-21T08:58:33.415Z workers [enj6u] Test executed: should generated the index file\n',
    '2026-08-21T08:58:33.427Z workers [enj6u] Test executed: should overwrite the index file\n',
    '2026-08-21T08:58:33.461Z workers [enj6u] Run 2 test(s), skipped 0 test(s)\n',
    "2026-08-21T08:58:33.469Z workers 'Jest Test Run Complete (enj6u): 2026-08-21T08:58:33.467Z'\n",
    '2026-08-21T08:58:33.469Z workers [enj6u] Sandbox is responsive, closing it\n',
    '2026-08-21T08:58:33.472Z workers No queued test files to run\n',
    '2026-08-21T08:58:33.475Z workers Processing buffered results (idle), buffer size: 1, buffer time: 0ms\n',
    '2026-08-21T08:58:33.479Z workers Handling first result of full run\n',
    '2026-08-21T08:58:33.479Z runManager Test run finished\n',
    '2026-08-21T08:58:33.482Z project Processed console.log entries\n',
    '2026-08-21T08:58:33.483Z project Processed loading sequences\n',
    '2026-08-21T08:58:33.484Z project Processed executed tests\n',
    '2026-08-21T08:58:33.487Z project Processed code coverage\n',
    '2026-08-21T08:58:33.562Z runManager Test run result processed and sent to IDE\n'
  ]
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions