aboutsummaryrefslogblamecommitdiffhomepage
path: root/shared/extra-utils/miscs/tests.ts
blob: 658fe5fd35d1d702fa0446128124baeca9ae3a25 (plain) (tree)
1
2
3
4
5
6
7

                                                          
                      

                                                                                              



                                                                      

                                                          

                       
     
                                                            
                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                    

                                                               

                                                                      
 









                                                                   







                                                                                                                        




































                                                                        
               




                             
                                

       
import { stat } from 'fs-extra'
import { basename, isAbsolute, join, resolve } from 'path'

const FIXTURE_URLS = {
  peertube_long: 'https://peertube2.cpy.re/videos/watch/122d093a-1ede-43bd-bd34-59d2931ffc5e',
  peertube_short: 'https://peertube2.cpy.re/w/3fbif9S3WmtTP8gGsC5HBd',

  youtube: 'https://www.youtube.com/watch?v=msX3jv1XdvM',

  /**
   * The video is used to check format-selection correctness wrt. HDR,
   * which brings its own set of oddities outside of a MediaSource.
   *
   * The video needs to have the following format_ids:
   * (which you can check by using `youtube-dl <url> -F`):
   * - (webm vp9)
   * - (mp4 avc1)
   * - (webm vp9.2 HDR)
   */
  youtubeHDR: 'https://www.youtube.com/watch?v=RQgnBB9z_N4',

  // eslint-disable-next-line max-len
  magnet: 'magnet:?xs=https%3A%2F%2Fpeertube2.cpy.re%2Flazy-static%2Ftorrents%2Fb209ca00-c8bb-4b2b-b421-1ede169f3dbc-720.torrent&xt=urn:btih:0f498834733e8057ed5c6f2ee2b4efd8d84a76ee&dn=super+peertube2+video&tr=https%3A%2F%2Fpeertube2.cpy.re%2Ftracker%2Fannounce&tr=wss%3A%2F%2Fpeertube2.cpy.re%3A443%2Ftracker%2Fsocket&ws=https%3A%2F%2Fpeertube2.cpy.re%2Fstatic%2Fwebseed%2Fb209ca00-c8bb-4b2b-b421-1ede169f3dbc-720.mp4',

  badVideo: 'https://download.cpy.re/peertube/bad_video.mp4',
  goodVideo: 'https://download.cpy.re/peertube/good_video.mp4',
  goodVideo720: 'https://download.cpy.re/peertube/good_video_720.mp4',

  file4K: 'https://download.cpy.re/peertube/4k_file.txt'
}

function parallelTests () {
  return process.env.MOCHA_PARALLEL === 'true'
}

function isGithubCI () {
  return !!process.env.GITHUB_WORKSPACE
}

function areHttpImportTestsDisabled () {
  const disabled = process.env.DISABLE_HTTP_IMPORT_TESTS === 'true'

  if (disabled) console.log('DISABLE_HTTP_IMPORT_TESTS env set to "true" so import tests are disabled')

  return disabled
}

function areObjectStorageTestsDisabled () {
  const disabled = process.env.ENABLE_OBJECT_STORAGE_TESTS !== 'true'

  if (disabled) console.log('ENABLE_OBJECT_STORAGE_TESTS env is not set to "true" so object storage tests are disabled')

  return disabled
}

function buildAbsoluteFixturePath (path: string, customCIPath = false) {
  if (isAbsolute(path)) return path

  if (customCIPath && process.env.GITHUB_WORKSPACE) {
    return join(process.env.GITHUB_WORKSPACE, 'fixtures', path)
  }

  return join(root(), 'server', 'tests', 'fixtures', path)
}

function root () {
  // We are in /miscs
  let root = join(__dirname, '..', '..', '..')

  if (basename(root) === 'dist') root = resolve(root, '..')

  return root
}

function wait (milliseconds: number) {
  return new Promise(resolve => setTimeout(resolve, milliseconds))
}

async function getFileSize (path: string) {
  const stats = await stat(path)

  return stats.size
}

function buildRequestStub (): any {
  return { }
}

export {
  FIXTURE_URLS,

  parallelTests,
  isGithubCI,
  areHttpImportTestsDisabled,
  buildAbsoluteFixturePath,
  getFileSize,
  buildRequestStub,
  areObjectStorageTestsDisabled,
  wait,
  root
}