Skip to content

Unit tests fail with Module Unavailable errors #188

@tlvince

Description

@tlvince

As per #162, gulp test is failing given a directory structure like:

src
├── 404.html
├── app
│   ├── definitions
│   │   ├── definitions.controller.js
│   │   ├── definitions.html
│   │   ├── definitions.module.js
│   │   ├── definitions.service.js
│   │   └── definitions.states.js
│   ├── index.css
│   ├── index.html
│   ├── index.js
│   └── index.states.js
├── components
│   └── navbar
│       ├── navbar.controller.js
│       └── navbar.html
├── favicon.ico
└── index.html

With karma logLevel: 'debug':

[11:27:16] Starting 'test'...
[11:27:17] Starting Karma server...
�[36mDEBUG [plugin]: �[39mLoading plugin karma-phantomjs-launcher.
�[36mDEBUG [plugin]: �[39mLoading plugin karma-jasmine.
�[32mINFO [karma]: �[39mKarma v0.12.28 server started at http://localhost:9876/
�[32mINFO [launcher]: �[39mStarting browser PhantomJS
�[36mDEBUG [temp-dir]: �[39mCreating temp dir at /var/folders/_n/vc1rw4250cbb96q5pfkflndw0000gn/T/karma-47907728
�[36mDEBUG [launcher]: �[39m/usr/local/bin/phantomjs /var/folders/_n/vc1rw4250cbb96q5pfkflndw0000gn/T/karma-47907728/capture.js
�[36mDEBUG [watcher]: �[39mResolved files:
    app/node_modules/jasmine-core/lib/jasmine-core/jasmine.js
    app/node_modules/karma-jasmine/lib/boot.js
    app/node_modules/karma-jasmine/lib/adapter.js
    app/bower_components/angular/angular.js
    app/bower_components/angular-ui-router/release/angular-ui-router.js
    app/bower_components/angular-bootstrap/ui-bootstrap-tpls.js
    app/bower_components/angular-toastr/dist/angular-toastr.js
    app/bower_components/angular-resource/angular-resource.js
    app/bower_components/angular-mocks/angular-mocks.js
    app/src/components/navbar/navbar.controller.js
    app/src/components/navbar/navbar.module.js
    app/src/components/navbar/navbar.service.js
�[36mDEBUG [web-server]: �[39mserving: app/node_modules/karma/static/client.html
�[36mDEBUG [web-server]: �[39mserving: app/node_modules/karma/static/karma.js
�[36mDEBUG [web-server]: �[39mupgrade /socket.io/1/websocket/kK9zm-CogAweHsMyAIoJ
�[36mDEBUG [karma]: �[39mA browser has connected on socket kK9zm-CogAweHsMyAIoJ
�[32mINFO [PhantomJS 1.9.8 (Mac OS X)]: �[39mConnected on socket kK9zm-CogAweHsMyAIoJ with id 47907728
�[36mDEBUG [launcher]: �[39mPhantomJS (id 47907728) captured in 7.882 secs
�[36mDEBUG [web-server]: �[39mserving: app/node_modules/karma/static/context.html
�[36mDEBUG [web-server]: �[39mserving (cached): app/node_modules/jasmine-core/lib/jasmine-core/jasmine.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/node_modules/karma-jasmine/lib/boot.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/bower_components/angular-toastr/dist/angular-toastr.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/bower_components/angular-resource/angular-resource.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/bower_components/angular-bootstrap/ui-bootstrap-tpls.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/bower_components/angular-mocks/angular-mocks.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/src/components/navbar/navbar.controller.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/src/components/navbar/navbar.module.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/bower_components/angular-ui-router/release/angular-ui-router.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/bower_components/angular/angular.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/node_modules/karma-jasmine/lib/adapter.js
�[36mDEBUG [web-server]: �[39mserving (cached): app/src/components/navbar/navbar.service.js
�[31mPhantomJS 1.9.8 (Mac OS X) ERROR�[39m
  Error: [$injector:nomod] Module 'navbar' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
  http://errors.angularjs.org/1.3.6/$injector/nomod?p0=navbar
  at app/bower_components/angular/angular.js:1753

Note navbar.controller.js is being loaded before navbar.module.js.

[web-server]: �[serving (cached): app/src/components/navbar/navbar.controller.js
�[web-server]: �[serving (cached): app/src/components/navbar/navbar.module.js

In this case, simply adding .pipe($.angularFilesort()) after gulp.src won't work because it includes Bower deps, which it seems to get confused by.

Can we split the src stream and only apply angular-filesort to everything under /src?

v0.7.3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions