mirror of
https://github.com/hanzoai/firebase-js-sdk.git
synced 2026-09-24 16:59:10 +00:00
117 lines
3.6 KiB
JavaScript
117 lines
3.6 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
const del = require('del');
|
|
const gulp = require('gulp');
|
|
const replace = require('gulp-replace');
|
|
const { resolve } = require('path');
|
|
const webpackStream = require('webpack-stream');
|
|
const webpack = require('webpack');
|
|
const filter = require('gulp-filter');
|
|
|
|
function clean() {
|
|
return del(['temp/**/*', 'dist/**/*']);
|
|
}
|
|
|
|
function isPersistenceEnabled() {
|
|
return process.env.INCLUDE_FIRESTORE_PERSISTENCE !== 'false';
|
|
}
|
|
|
|
function copyTests() {
|
|
/**
|
|
* NOTE: We intentionally don't copy src/ files (to make sure we are only
|
|
* testing the minified client and don't mix in classes loaded from src/).
|
|
* Therefore these tests and helpers cannot have any src/ dependencies.
|
|
*/
|
|
const testBase = resolve(__dirname, '../../packages/firestore/test');
|
|
return gulp
|
|
.src(
|
|
[
|
|
testBase + '/integration/api/*.ts',
|
|
testBase + '/integration/util/composite_index_test_helper.ts',
|
|
testBase + '/integration/util/events_accumulator.ts',
|
|
testBase + '/integration/util/helpers.ts',
|
|
testBase + '/integration/util/settings.ts',
|
|
testBase + '/integration/util/testing_hooks_util.ts',
|
|
testBase + '/util/equality_matcher.ts',
|
|
testBase + '/util/promise.ts',
|
|
testBase + '/util/mocha_extensions.ts',
|
|
'!' + testBase + '/integration/api/pipeline.listen.test.ts',
|
|
'!' + testBase + '/integration/api/snapshot_listener_source.test.ts',
|
|
'!' + testBase + '/integration/api/pipeline.query.test.ts'
|
|
],
|
|
{ base: '../../packages/firestore' }
|
|
)
|
|
.pipe(
|
|
replace(
|
|
/**
|
|
* This regex is designed to match the Firebase import in our
|
|
* integration tests.
|
|
*/
|
|
/\s+from '\.(\.\/util)?\/firebase_export';/,
|
|
` from '${resolve(__dirname, './firebase_export')}';
|
|
|
|
if (typeof process === 'undefined') {
|
|
process = { env: { INCLUDE_FIRESTORE_PERSISTENCE: '${isPersistenceEnabled()}' } } as any;
|
|
} else {
|
|
process.env.INCLUDE_FIRESTORE_PERSISTENCE = '${isPersistenceEnabled()}';
|
|
}
|
|
`
|
|
)
|
|
)
|
|
.pipe(
|
|
replace(
|
|
/**
|
|
* This regex is designed to match the Firebase import in our
|
|
* integration tests.
|
|
*/
|
|
/\s+from '\.(\.\/util)?\/pipeline_export';/,
|
|
` from '${resolve(__dirname, './pipeline_export')}';`
|
|
)
|
|
)
|
|
.pipe(
|
|
/**
|
|
* Fixing the project.json require to properly reference the file
|
|
*/
|
|
replace(
|
|
'../../../../../config/project.json',
|
|
'../../../../../../config/project.json'
|
|
)
|
|
)
|
|
.pipe(gulp.dest('temp'));
|
|
}
|
|
|
|
function compileWebpack() {
|
|
const config = require('../../config/webpack.test');
|
|
return gulp
|
|
.src('./temp/test/integration/**/*.ts')
|
|
.pipe(
|
|
webpackStream(
|
|
Object.assign({}, config, {
|
|
output: {
|
|
filename: 'test-harness.js'
|
|
}
|
|
}),
|
|
webpack
|
|
)
|
|
)
|
|
.pipe(filter(['**', '!**/*.d.ts']))
|
|
.pipe(gulp.dest('dist'));
|
|
}
|
|
|
|
gulp.task('compile-tests', gulp.series(clean, copyTests, compileWebpack));
|