You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							94 lines
						
					
					
						
							2.0 KiB
						
					
					
				| #!/usr/bin/env node | |
| 'use strict' | |
| var loadFromDir = require('tacks/load-from-dir.js') | |
| 
 | |
| process.exit(main(process.argv.slice(2))) | |
| 
 | |
| function main (argv) { | |
|   if (argv.length !== 1) { | |
|     console.error('Usage: maketest <fixturedir>') | |
|     return 1 | |
|   } | |
|   var fixturedir = process.argv[2] | |
| 
 | |
|   console.log(generateFromDir(fixturedir)) | |
|   return 0 | |
| } | |
| 
 | |
| function indent (ind, str) { | |
|   return str.replace(/\n/g, '\n' + ind) | |
| } | |
| 
 | |
| function generateFromDir (dir) { | |
|   var tacks = loadFromDir(dir) | |
|   return `'use strict' | |
| var path = require('path') | |
| var test = require('tap').test | |
| var mr = require('npm-registry-mock') | |
| var Tacks = require('tacks') | |
| var File = Tacks.File | |
| var Symlink = Tacks.Symlink | |
| var Dir = Tacks.Dir | |
| var extend = Object.assign || require('util')._extend | |
| var common = require('../common-tap.js') | |
|  | |
| var basedir = path.join(__dirname, path.basename(__filename, '.js')) | |
| var testdir = path.join(basedir, 'testdir') | |
| var cachedir = path.join(basedir, 'cache') | |
| var globaldir = path.join(basedir, 'global') | |
| var tmpdir = path.join(basedir, 'tmp') | |
|  | |
| var conf = { | |
|   cwd: testdir, | |
|   env: extend(extend({}, process.env), { | |
|     npm_config_cache: cachedir, | |
|     npm_config_tmp: tmpdir, | |
|     npm_config_prefix: globaldir, | |
|     npm_config_registry: common.registry, | |
|     npm_config_loglevel: 'warn' | |
|   }) | |
| } | |
|  | |
| var server | |
| var fixture = new Tacks(Dir({ | |
|   cache: Dir(), | |
|   global: Dir(), | |
|   tmp: Dir(), | |
|   testdir: ${indent('  ', tacks.fixture.toSource())} | |
| })) | |
|  | |
| function setup () { | |
|   cleanup() | |
|   fixture.create(basedir) | |
| } | |
|  | |
| function cleanup () { | |
|   fixture.remove(basedir) | |
| } | |
|  | |
| test('setup', function (t) { | |
|   setup() | |
|   mr({port: common.port, throwOnUnmatched: true}, function (err, s) { | |
|     if (err) throw err | |
|     server = s | |
|     t.done() | |
|   }) | |
| }) | |
|  | |
| test('example', function (t) { | |
|   common.npm(['install'], conf, function (err, code, stdout, stderr) { | |
|     if (err) throw err | |
|     t.is(code, 0, 'command ran ok') | |
|     t.comment(stdout.trim()) | |
|     t.comment(stderr.trim()) | |
|     // your assertions here | |
|     t.done() | |
|   }) | |
| }) | |
|  | |
| test('cleanup', function (t) { | |
|   server.close() | |
|   cleanup() | |
|   t.done() | |
| })\n` | |
| }
 |