Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2017-11-06 17:10:33 +0300
committerPhil Hughes <me@iamphill.com>2017-11-06 17:10:33 +0300
commit1e94172e38aebae8804fda9831261da1081a6422 (patch)
tree8ff92e587304a6423706018a52bfc5644d568ec6 /spec
parentcfc932cad10b1d6c494222e9d91aa75583b56145 (diff)
parent51f73b86adbde0fc041abd57f7fc469eb32a1d90 (diff)
Merge branch 'winh-use-vue-warnhandler' into 'master'
Use Vue warnhandler Closes #33849 See merge request gitlab-org/gitlab-ce!15152
Diffstat (limited to 'spec')
-rw-r--r--spec/javascripts/test_bundle.js40
1 files changed, 22 insertions, 18 deletions
diff --git a/spec/javascripts/test_bundle.js b/spec/javascripts/test_bundle.js
index d4e134583c7..fd7aa332d17 100644
--- a/spec/javascripts/test_bundle.js
+++ b/spec/javascripts/test_bundle.js
@@ -11,6 +11,12 @@ const isHeadlessChrome = /\bHeadlessChrome\//.test(navigator.userAgent);
Vue.config.devtools = !isHeadlessChrome;
Vue.config.productionTip = false;
+let hasVueWarnings = false;
+Vue.config.warnHandler = (msg, vm, trace) => {
+ hasVueWarnings = true;
+ fail(`${msg}${trace}`);
+};
+
Vue.use(VueResource);
// enable test fixtures
@@ -34,11 +40,6 @@ window.addEventListener('unhandledrejection', (event) => {
console.error(event.reason.stack || event.reason);
});
-const checkUnhandledPromiseRejections = (done) => {
- expect(hasUnhandledPromiseRejections).toBe(false);
- done();
-};
-
// HACK: Chrome 59 disconnects if there are too many synchronous tests in a row
// because it appears to lock up the thread that communicates to Karma's socket
// This async beforeEach gets called on every spec and releases the JS thread long
@@ -47,17 +48,6 @@ const checkUnhandledPromiseRejections = (done) => {
// to run our unit tests.
beforeEach(done => done());
-beforeAll(() => {
- const origError = console.error;
- spyOn(console, 'error').and.callFake((message) => {
- if (/^\[Vue warn\]/.test(message)) {
- fail(message);
- } else {
- origError(message);
- }
- });
-});
-
const builtinVueHttpInterceptors = Vue.http.interceptors.slice();
beforeEach(() => {
@@ -80,8 +70,22 @@ testsContext.keys().forEach(function (path) {
}
});
-it('has no unhandled Promise rejections', (done) => {
- setTimeout(checkUnhandledPromiseRejections(done), 1000);
+describe('test errors', () => {
+ beforeAll((done) => {
+ if (hasUnhandledPromiseRejections || hasVueWarnings) {
+ setTimeout(done, 1000);
+ } else {
+ done();
+ }
+ });
+
+ it('has no unhandled Promise rejections', () => {
+ expect(hasUnhandledPromiseRejections).toBe(false);
+ });
+
+ it('has no Vue warnings', () => {
+ expect(hasVueWarnings).toBe(false);
+ });
});
// if we're generating coverage reports, make sure to include all files so