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.
		
		
		
		
		
			
		
			
				
					51 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					51 lines
				
				1.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const test = require('tap').test
							 | 
						||
| 
								 | 
							
								const webpack = require('webpack')
							 | 
						||
| 
								 | 
							
								const path = require('path')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('the library should work with webpack', async (t) => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								  const targetdir = path.resolve(__dirname, '..', '.cache')
							 | 
						||
| 
								 | 
							
								  const targetname = path.join(targetdir, 'webpacktest.js')
							 | 
						||
| 
								 | 
							
								  const wopts = {
							 | 
						||
| 
								 | 
							
								    entry: path.resolve(__dirname, '..', 'index.js'),
							 | 
						||
| 
								 | 
							
								    mode: 'production',
							 | 
						||
| 
								 | 
							
								    target: 'node',
							 | 
						||
| 
								 | 
							
								    output: {
							 | 
						||
| 
								 | 
							
								      path: targetdir,
							 | 
						||
| 
								 | 
							
								      filename: 'webpacktest.js',
							 | 
						||
| 
								 | 
							
								      library: {
							 | 
						||
| 
								 | 
							
								        name: 'fastJsonStringify',
							 | 
						||
| 
								 | 
							
								        type: 'umd'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  await new Promise((resolve, reject) => {
							 | 
						||
| 
								 | 
							
								    webpack(wopts, (err, stats) => {
							 | 
						||
| 
								 | 
							
								      if (err) { reject(err) } else { resolve(stats) };
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  const build = require(targetname)
							 | 
						||
| 
								 | 
							
								  const stringify = build({
							 | 
						||
| 
								 | 
							
								    title: 'webpack should not rename code to be executed',
							 | 
						||
| 
								 | 
							
								    type: 'object',
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								      foo: {
							 | 
						||
| 
								 | 
							
								        type: 'string'
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      bar: {
							 | 
						||
| 
								 | 
							
								        type: 'boolean'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    patternProperties: {
							 | 
						||
| 
								 | 
							
								      foo: {
							 | 
						||
| 
								 | 
							
								        type: 'number'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const obj = { foo: '42', bar: true }
							 | 
						||
| 
								 | 
							
								  t.equal(stringify(obj), '{"foo":"42","bar":true}')
							 | 
						||
| 
								 | 
							
								})
							 |