HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/ubuntu/.nvm/versions/node/v22.3.0/lib/node_modules/chromium/node_modules/cachedir/test.js
/* eslint-env mocha */

const assert = require('assert')
const os = require('os')
const proxyquire = require('proxyquire')

const platforms = [
  ['aix', `${os.homedir()}/.cache/linusu`],
  ['darwin', `${os.homedir()}/Library/Caches/linusu`],
  ['freebsd', `${os.homedir()}/.cache/linusu`],
  ['linux', `${os.homedir()}/.cache/linusu`],
  ['netbsd', `${os.homedir()}/.cache/linusu`],
  ['openbsd', `${os.homedir()}/.cache/linusu`],
  ['sunos', `${os.homedir()}/.cache/linusu`],
  ['win32', `${os.homedir()}/AppData/Local/linusu/Cache`]
]

platforms.forEach((platform) => {
  describe(platform[0], () => {
    let cachedir

    before(() => {
      const os = {
        platform () { return platform[0] }
      }

      cachedir = proxyquire('./', { os })
    })

    it('should give the correct path', () => {
      const actual = cachedir('linusu')
      const expected = platform[1]

      assert.strictEqual(actual, expected)
    })

    if (platform[0] === 'win32') {
      describe('when LOCALAPPDATA is set', () => {
        it('should give the correct path', () => {
          const oldLocalAppData = process.env.LOCALAPPDATA
          process.env.LOCALAPPDATA = 'X:/LocalAppData'
          const actual = cachedir('linusu')
          process.env.LOCALAPPDATA = oldLocalAppData
          const expected = 'X:/LocalAppData/linusu/Cache'

          assert.strictEqual(actual, expected)
        })
      })
    }

    it('should throw on bad input', () => {
      assert.throws(() => cachedir())
      assert.throws(() => cachedir(''))
      assert.throws(() => cachedir({}))
      assert.throws(() => cachedir([]))
      assert.throws(() => cachedir(null))
      assert.throws(() => cachedir(1337))
      assert.throws(() => cachedir('test!!'))
      assert.throws(() => cachedir(undefined))
    })
  })
})

describe('fallback', () => {
  it('should fallback to posix with warning', () => {
    const originalError = console.error

    try {
      const logs = []
      console.error = (msg) => logs.push(msg)

      const os = { platform: () => 'test' }
      const cachedir = proxyquire('./', { os })

      const actual = cachedir('linusu')
      const expected = `${os.homedir()}/.cache/linusu`
      assert.strictEqual(actual, expected)

      assert.deepStrictEqual(logs, [
        `(node:${process.pid}) [cachedir] Warning: the platform "test" is not currently supported by node-cachedir, falling back to "posix". Please file an issue with your platform here: https://github.com/LinusU/node-cachedir/issues/new`
      ])
    } finally {
      console.error = originalError
    }
  })
})