UNPKG

webrcli

Version:

cli tools for building node project with webr inside

236 lines (189 loc) 4.31 kB
// tests for install.js const { installIt, installFromDesc } = require('../src/install'); const path = require('path'); const os = require('os'); const fs = require('fs'); test('installIt works', async () => { let temp_dir = path.join(os.tmpdir(), 'install'); process.cwd = jest.fn().mockReturnValue(temp_dir); if ( fs.existsSync(temp_dir) ) { fs.rmdirSync( temp_dir, { recursive: true, force: true } ) }; const pkg_not_installed = await installIt("pouetpouet", temp_dir); expect(pkg_not_installed).toBe(false); await installIt("attempt", temp_dir); expect( fs.existsSync( path.join(temp_dir, 'attempt') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'attempt', 'DESCRIPTION') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'attempt', 'R') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'rlang') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'rlang', 'DESCRIPTION') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'rlang', 'R') ) ).toBe(true); fs.rmdirSync( temp_dir, { recursive: true, force: true } ); }, 1000000); test('installFromDesc works', async () => { let temp_dir = path.join(os.tmpdir(), 'install'); if ( fs.existsSync(temp_dir) ) { fs.rmdirSync( temp_dir, { recursive: true, force: true } ) }; const DESCRIPTION = path.join(__dirname, "./", "DESCRIPTION"); const package_not_installed = await installFromDesc(DESCRIPTION, temp_dir, with_exit = false); expect( package_not_installed ).toBe(false); fs.mkdirSync(temp_dir); await installFromDesc(DESCRIPTION, temp_dir, with_exit = false); expect( fs.existsSync( path.join(temp_dir, 'attempt') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'attempt', 'DESCRIPTION') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'attempt', 'R') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'rlang') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'rlang', 'DESCRIPTION') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir, 'rlang', 'R') ) ).toBe(true); fs.rmdirSync( temp_dir, { recursive: true, force: true } ); }, 1000000); // test installFromPackageJson const { installFromPackageJson } = require('../src/installFromPackagejson.js'); const { execSync } = require('child_process'); test('installFromPackageJson works', async () => { let temp_dir = path.join(os.tmpdir(), 'installFromPackageJson'); let temp_dir_dest = path.join(os.tmpdir(), 'installFromPackageJson_dest'); if ( fs.existsSync(temp_dir) ) { fs.rmdirSync( temp_dir, { recursive: true, force: true } ) }; if ( fs.existsSync(temp_dir_dest) ) { fs.rmdirSync( temp_dir_dest, { recursive: true, force: true } ) }; fs.mkdirSync(temp_dir); const package_json = path.join(temp_dir, "package.json"); const package_not_installed = await installFromPackageJson( package_json, temp_dir_dest ); expect( package_not_installed ).toBe(false); fs.writeFileSync( package_json, JSON.stringify({ rdependencies: ["attempt", "rlang"] }) ); await installFromPackageJson( package_json, temp_dir_dest ); expect( package_not_installed ).toBe(false); fs.mkdirSync(temp_dir_dest); await installFromPackageJson( package_json, temp_dir_dest ); expect( fs.existsSync( path.join(temp_dir_dest, 'attempt', 'DESCRIPTION') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir_dest, 'attempt', 'R') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir_dest, 'rlang') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir_dest, 'rlang', 'DESCRIPTION') ) ).toBe(true); expect( fs.existsSync( path.join(temp_dir_dest, 'rlang', 'R') ) ).toBe(true); fs.rmdirSync( temp_dir, { recursive: true, force: true } ); fs.rmdirSync( temp_dir_dest, { recursive: true, force: true } ); })