From 194f1f084fc42c7a635322a39118ed2c360f4189 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Fri, 30 Nov 2018 17:57:39 -0800 Subject: [PATCH] test(service-worker): run the remaining service-worker tests under bazel (#27386) PR Close #27386 --- .../service-worker/config/test/BUILD.bazel | 23 ++ .../config/test/generator_spec.ts | 282 +++++++++--------- .../service-worker/config/testing/BUILD.bazel | 16 + 3 files changed, 179 insertions(+), 142 deletions(-) create mode 100644 packages/service-worker/config/test/BUILD.bazel create mode 100644 packages/service-worker/config/testing/BUILD.bazel diff --git a/packages/service-worker/config/test/BUILD.bazel b/packages/service-worker/config/test/BUILD.bazel new file mode 100644 index 0000000000..7de207f086 --- /dev/null +++ b/packages/service-worker/config/test/BUILD.bazel @@ -0,0 +1,23 @@ +load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") + +ts_library( + name = "test_lib", + testonly = True, + srcs = glob( + ["**/*.ts"], + ), + deps = [ + "//packages/service-worker/config", + ], +) + +jasmine_node_test( + name = "test", + bootstrap = ["angular/tools/testing/init_node_spec.js"], + deps = [ + ":test_lib", + "//packages/service-worker/config", + "//packages/service-worker/config/testing", + "//tools/testing:node", + ], +) diff --git a/packages/service-worker/config/test/generator_spec.ts b/packages/service-worker/config/test/generator_spec.ts index 9932524654..1f3ebad858 100644 --- a/packages/service-worker/config/test/generator_spec.ts +++ b/packages/service-worker/config/test/generator_spec.ts @@ -9,150 +9,148 @@ import {Generator} from '../src/generator'; import {MockFilesystem} from '../testing/mock'; -{ - describe('Generator', () => { - it('generates a correct config', done => { - const fs = new MockFilesystem({ - '/index.html': 'This is a test', - '/main.css': 'This is a CSS file', - '/main.js': 'This is a JS file', - '/main.ts': 'This is a TS file', - '/test.txt': 'Another test', - '/foo/test.html': 'Another test', - '/ignored/x.html': 'should be ignored', - }); - const gen = new Generator(fs, '/test'); - const res = gen.process({ - appData: { - test: true, - }, - index: '/index.html', - assetGroups: [{ - name: 'test', - resources: { - files: [ - '/**/*.html', - '/**/*.?s', - '!/ignored/**', - ], - versionedFiles: [ - '/**/*.txt', - ], - urls: [ - '/absolute/**', - '/some/url?with+escaped+chars', - 'relative/*.txt', - ] - } - }], - dataGroups: [{ - name: 'other', - urls: [ - '/api/**', - 'relapi/**', - 'https://example.com/**/*?with+escaped+chars', +describe('Generator', () => { + it('generates a correct config', done => { + const fs = new MockFilesystem({ + '/index.html': 'This is a test', + '/main.css': 'This is a CSS file', + '/main.js': 'This is a JS file', + '/main.ts': 'This is a TS file', + '/test.txt': 'Another test', + '/foo/test.html': 'Another test', + '/ignored/x.html': 'should be ignored', + }); + const gen = new Generator(fs, '/test'); + const res = gen.process({ + appData: { + test: true, + }, + index: '/index.html', + assetGroups: [{ + name: 'test', + resources: { + files: [ + '/**/*.html', + '/**/*.?s', + '!/ignored/**', ], - cacheConfig: { - maxSize: 100, - maxAge: '3d', - timeout: '1m', - } - }], - navigationUrls: [ - '/included/absolute/**', - '!/excluded/absolute/**', - '/included/some/url/with+escaped+chars', - '!excluded/relative/*.txt', - '!/api/?*', - 'http://example.com/included', - '!http://example.com/excluded', + versionedFiles: [ + '/**/*.txt', + ], + urls: [ + '/absolute/**', + '/some/url?with+escaped+chars', + 'relative/*.txt', + ] + } + }], + dataGroups: [{ + name: 'other', + urls: [ + '/api/**', + 'relapi/**', + 'https://example.com/**/*?with+escaped+chars', ], - }); - res.then(config => { - expect(config).toEqual({ - configVersion: 1, - appData: { - test: true, - }, - index: '/test/index.html', - assetGroups: [{ - name: 'test', - installMode: 'prefetch', - updateMode: 'prefetch', - urls: [ - '/test/foo/test.html', - '/test/index.html', - '/test/main.js', - '/test/main.ts', - '/test/test.txt', - ], - patterns: [ - '\\/absolute\\/.*', - '\\/some\\/url\\?with\\+escaped\\+chars', - '\\/test\\/relative\\/[^/]*\\.txt', - ] - }], - dataGroups: [{ - name: 'other', - patterns: [ - '\\/api\\/.*', - '\\/test\\/relapi\\/.*', - 'https:\\/\\/example\\.com\\/(?:.+\\/)?[^/]*\\?with\\+escaped\\+chars', - ], - strategy: 'performance', - maxSize: 100, - maxAge: 259200000, - timeoutMs: 60000, - version: 1, - }], - navigationUrls: [ - {positive: true, regex: '^\\/included\\/absolute\\/.*$'}, - {positive: false, regex: '^\\/excluded\\/absolute\\/.*$'}, - {positive: true, regex: '^\\/included\\/some\\/url\\/with\\+escaped\\+chars$'}, - {positive: false, regex: '^\\/test\\/excluded\\/relative\\/[^/]*\\.txt$'}, - {positive: false, regex: '^\\/api\\/[^/][^/]*$'}, - {positive: true, regex: '^http:\\/\\/example\\.com\\/included$'}, - {positive: false, regex: '^http:\\/\\/example\\.com\\/excluded$'}, - ], - hashTable: { - '/test/foo/test.html': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643', - '/test/index.html': 'a54d88e06612d820bc3be72877c74f257b561b19', - '/test/main.js': '41347a66676cdc0516934c76d9d13010df420f2c', - '/test/main.ts': '7d333e31f0bfc4f8152732bb211a93629484c035', - '/test/test.txt': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643' - } - }); - done(); - }) - .catch(err => done.fail(err)); + cacheConfig: { + maxSize: 100, + maxAge: '3d', + timeout: '1m', + } + }], + navigationUrls: [ + '/included/absolute/**', + '!/excluded/absolute/**', + '/included/some/url/with+escaped+chars', + '!excluded/relative/*.txt', + '!/api/?*', + 'http://example.com/included', + '!http://example.com/excluded', + ], }); - - it('uses default `navigationUrls` if not provided', done => { - const fs = new MockFilesystem({ - '/index.html': 'This is a test', - }); - const gen = new Generator(fs, '/test'); - const res = gen.process({ - index: '/index.html', - }); - res.then(config => { - expect(config).toEqual({ - configVersion: 1, - appData: undefined, - index: '/test/index.html', - assetGroups: [], - dataGroups: [], - navigationUrls: [ - {positive: true, regex: '^\\/.*$'}, - {positive: false, regex: '^\\/(?:.+\\/)?[^/]*\\.[^/]*$'}, - {positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*$'}, - {positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$'}, + res.then(config => { + expect(config).toEqual({ + configVersion: 1, + appData: { + test: true, + }, + index: '/test/index.html', + assetGroups: [{ + name: 'test', + installMode: 'prefetch', + updateMode: 'prefetch', + urls: [ + '/test/foo/test.html', + '/test/index.html', + '/test/main.js', + '/test/main.ts', + '/test/test.txt', ], - hashTable: {} - }); - done(); - }) - .catch(err => done.fail(err)); - }); + patterns: [ + '\\/absolute\\/.*', + '\\/some\\/url\\?with\\+escaped\\+chars', + '\\/test\\/relative\\/[^/]*\\.txt', + ] + }], + dataGroups: [{ + name: 'other', + patterns: [ + '\\/api\\/.*', + '\\/test\\/relapi\\/.*', + 'https:\\/\\/example\\.com\\/(?:.+\\/)?[^/]*\\?with\\+escaped\\+chars', + ], + strategy: 'performance', + maxSize: 100, + maxAge: 259200000, + timeoutMs: 60000, + version: 1, + }], + navigationUrls: [ + {positive: true, regex: '^\\/included\\/absolute\\/.*$'}, + {positive: false, regex: '^\\/excluded\\/absolute\\/.*$'}, + {positive: true, regex: '^\\/included\\/some\\/url\\/with\\+escaped\\+chars$'}, + {positive: false, regex: '^\\/test\\/excluded\\/relative\\/[^/]*\\.txt$'}, + {positive: false, regex: '^\\/api\\/[^/][^/]*$'}, + {positive: true, regex: '^http:\\/\\/example\\.com\\/included$'}, + {positive: false, regex: '^http:\\/\\/example\\.com\\/excluded$'}, + ], + hashTable: { + '/test/foo/test.html': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643', + '/test/index.html': 'a54d88e06612d820bc3be72877c74f257b561b19', + '/test/main.js': '41347a66676cdc0516934c76d9d13010df420f2c', + '/test/main.ts': '7d333e31f0bfc4f8152732bb211a93629484c035', + '/test/test.txt': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643' + } + }); + done(); + }) + .catch(err => done.fail(err)); }); -} + + it('uses default `navigationUrls` if not provided', done => { + const fs = new MockFilesystem({ + '/index.html': 'This is a test', + }); + const gen = new Generator(fs, '/test'); + const res = gen.process({ + index: '/index.html', + }); + res.then(config => { + expect(config).toEqual({ + configVersion: 1, + appData: undefined, + index: '/test/index.html', + assetGroups: [], + dataGroups: [], + navigationUrls: [ + {positive: true, regex: '^\\/.*$'}, + {positive: false, regex: '^\\/(?:.+\\/)?[^/]*\\.[^/]*$'}, + {positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*$'}, + {positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$'}, + ], + hashTable: {} + }); + done(); + }) + .catch(err => done.fail(err)); + }); +}); diff --git a/packages/service-worker/config/testing/BUILD.bazel b/packages/service-worker/config/testing/BUILD.bazel new file mode 100644 index 0000000000..e1498fd1e4 --- /dev/null +++ b/packages/service-worker/config/testing/BUILD.bazel @@ -0,0 +1,16 @@ +package(default_visibility = ["//visibility:public"]) + +exports_files(["package.json"]) + +load("//tools:defaults.bzl", "ts_library") + +ts_library( + name = "testing", + srcs = glob([ + "*.ts", + ]), + deps = [ + "//packages/service-worker/cli", + "//packages/service-worker/config", + ], +)