Git Product home page Git Product logo

firefly's Introduction

Firefly

Build Status

Firefly is the backend for Montage Studio.

Firefly provides multiple services related to editing a Montage application in the cloud, including Filament, the Montage Studio editor web application. Filament is served for use inside a browser and is given access to services through an Environment Bridge.

Architecture overview

                                            Request
                                               v
                                    +-----------------------+
            .com/app/*   +----------+Load balancer (Traefik)+-------+  .com/api/*
            .com/assets/*|          +----------+------------+       | *.net/*
                         |                     |                    |  websocket
                         v                     v                    v
            +-------------------------+ +------------+ +-----------------------+      +--------------+  
            |Web Server               | |montage-auth| |Project daemon         | <--> |Project server| ...
            |static files (Nginx)     | +------------+ | Creates new project   |      +--------------+
            |filament                 |                | containers            |      +--------------+
            +-------------------------+                |                       | <--> |Project server| ...
                                                       +-----------------------+      +--------------+

            .com is short for the main app domain
                    local.montage.studio
                    staging.montage.studio
                    montage.studio
            .net is short for the project/preview domain
                    project.local.montage.studio
                    project.staging.montage.studio
                    project.montage.studio

            Created with http://www.asciiflow.com/

Firefly consists of four Docker services: Load Balancer (frontend entrypoint), Web Server (the filament application itself), auth, and the Project Daemon.

The Project Daemon is responsible for spawning and managing user project containers. These containers are where we perform git checkouts and npm installs of the user's project and serve the app for live preview. Each of these containers hold exactly one user project. Requests to interact with these containers are made through the Project Daemon (indirectly, through the Load Balancer).

Getting Started

Getting Started

Developing

Developing

Publishing

On every commit to the develop branch, Travis builds and pushes all service images (with the latest tag) and deploys the application to the staging environment. Likewise for the master branch and production.

Posting status updates

Email [email protected] with the update in the subject and a body of #minor or #major to indicate the severity, or #good if everything is okay again. Minor or major statuses will appear in the tool (good ones won't) and all posts appear on http://status.montagestudio.com/

Remember: always resolve #major or #minor problems with a #good post, so that the warning will disappear in the tool.

If you want to include more information in the body put it before the #tag, but this won't be shown in the tool. Example:

To: [email protected]
Subject: Issues opening projects

There are problems opening projects at the moment.

#major

More information at https://www.tumblr.com/docs/en/email_publishing

firefly's People

Contributors

stuk avatar cdebost avatar aadsm avatar mczepiel avatar ducarroz avatar spearway avatar 3on avatar thibaultzanini avatar pchaussalet avatar hthetiot avatar simurai avatar francoisfrisch avatar nv avatar pierrefrisch avatar fabrobinet avatar marchant avatar kriskowal avatar

Stargazers

Alexey Dubovskoy avatar

Watchers

 avatar  avatar  avatar James Cloos avatar Johnny Miller avatar David Witherspoon avatar John Fallows avatar  avatar  avatar sliumontage avatar  avatar RD avatar

firefly's Issues

Cannot read property 'id' of undefined when container is building...

15 Aug 02:55:53 - [1.project-chain] - 10.0.0.2:34363 !!!     GET /api/hthetiot/test-app/workspace HTTP/1.1 Cannot read property 'id' of undefined
15 Aug 02:55:53 - [1.project-chain] - *TypeError: Cannot read property 'id' of undefined
                at ContainerManager.delete (/srv/firefly/project/container-manager.js:75:70)
                at /srv/firefly/project/container-manager.js:47:20
                at _rejected (/srv/firefly/node_modules/q/q.js:808:24)
                at /srv/firefly/node_modules/q/q.js:834:30
            From previous event:
                at Object.app (/srv/firefly/project/project-chain.js:205:39)
                at /srv/firefly/node_modules/joey/lib/route.js:117:31
                at /srv/firefly/node_modules/joey/lib/route.js:119:24
                at /srv/firefly/node_modules/joey/lib/route.js:119:24
                at /srv/firefly/node_modules/joey/lib/route.js:119:24
                at /srv/firefly/check-session.js:13:28
            From previous event:
                at /srv/firefly/node_modules/q-io/http-apps/decorators.js:71:18
                at /srv/firefly/project/project-chain.js:151:24
                at /srv/firefly/node_modules/joey/lib/route.js:119:24
                at /srv/firefly/node_modules/joey/lib/route.js:119:24
                at /srv/firefly/session.js:81:31
                at _fulfilled (/srv/firefly/node_modules/q/q.js:798:54)
                at self.promiseDispatch.done (/srv/firefly/node_modules/q/q.js:827:30)
                at Promise.promise.promiseDispatch (/srv/firefly/node_modules/q/q.js:760:13)
                at /srv/firefly/node_modules/q/q.js:574:44
                at flush (/srv/firefly/node_modules/q/q.js:108:17)
            From previous event:
                at /srv/firefly/node_modules/q-io/http-apps/route.js:38:18
                at /srv/firefly/log-stack-traces.js:7:27
                at /srv/firefly/track.js:73:23
                at /srv/firefly/node_modules/joey/lib/route.js:119:24
                at /srv/firefly/node_modules/q-io/http-apps/decorators.js:133:23
                at /srv/firefly/node_modules/q-io/http-apps/decorators.js:133:23
                at /srv/firefly/node_modules/q-io/http-apps/decorators.js:34:23
                at /srv/firefly/node_modules/q-io/http.js:41:27*

container file-service error when saving file

15 Aug 03:10:08 - [file-service] - watchr change error *TypeError: Object function () {
                                return Q.fapply(remote, Array.prototype.slice.call(arguments));
                            } 15 Aug 03:10:08 - [file-service] - watchr change error *TypeError: Object function () {
                                return Q.fapply(remote, Array.prototype.slice.call(arguments));
                            } has no method 'fcall'
                at _Class.Q.invoke.listeners.change (/srv/firefly/container/services/file-service.js:260:47)
                at _Class.emit (events.js:106:17)
                at _Class.bubble (/srv/firefly/node_modules/watchr/out/lib/watchr.js:177:19)
                at _Class.bubble (/srv/firefly/node_modules/watchr/out/lib/watchr.js:4:61)
                at _Class.watchr.children.(anonymous function).watch.listeners.change (/srv/firefly/node_modules/watchr/out/lib/watchr.js:490:36)
                at _Class.emit (events.js:106:17)
                at TaskGroup.<anonymous> (/srv/firefly/node_modules/watchr/out/lib/watchr.js:337:18)
                at ambi (/srv/firefly/node_modules/watchr/node_modules/ambi/out/lib/ambi.js:23:18)
                at fire (/srv/firefly/node_modules/watchr/node_modules/taskgroup/out/lib/taskgroup.js:163:25)
                at b (domain.js:183:18)
                at Domain.run (domain.js:123:23)
                at Task.fire (/srv/firefly/node_modules/watchr/node_modules/taskgroup/out/lib/taskgroup.js:173:25)
                at processImmediate [as _immediateCallback] (timers.js:354:15)*
Unhandled rejection Error: Cannot GET "https://api.github.com/repos/hthetiot/popcorn/events"
    at null.<anonymous> (/srv/firefly/inject/adaptor/client/core/github-api.js:465:29)
    at dispatchEvent (/srv/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:574:29)
    at setState (/srv/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:593:14)
    at IncomingMessage.<anonymous> (/srv/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:427:13)
    at IncomingMessage.emit (events.js:117:20)
    at _stream_readable.js:944:16
    at process._tickDomainCallback (node.js:492:13)
From previous event:
    at GithubApi._request (/srv/firefly/inject/adaptor/client/core/github-api.js:417:12)
    at GithubApi.getRepositoryEvents (/srv/firefly/inject/adaptor/client/core/github-api.js:271:17)
    at _pollGithub [as _onTimeout] (/srv/firefly/container/services/repository-service.js:1431:28)
    at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)

                at _Class.Q.invoke.listeners.change (/srv/firefly/container/services/file-service.js:260:47)
                at _Class.emit (events.js:106:17)
                at _Class.bubble (/srv/firefly/node_modules/watchr/out/lib/watchr.js:177:19)
                at _Class.bubble (/srv/firefly/node_modules/watchr/out/lib/watchr.js:4:61)
                at _Class.watchr.children.(anonymous function).watch.listeners.change (/srv/firefly/node_modules/watchr/out/lib/watchr.js:490:36)
                at _Class.emit (events.js:106:17)
                at TaskGroup.<anonymous> (/srv/firefly/node_modules/watchr/out/lib/watchr.js:337:18)
                at ambi (/srv/firefly/node_modules/watchr/node_modules/ambi/out/lib/ambi.js:23:18)
                at fire (/srv/firefly/node_modules/watchr/node_modules/taskgroup/out/lib/taskgroup.js:163:25)
                at b (domain.js:183:18)
                at Domain.run (domain.js:123:23)
                at Task.fire (/srv/firefly/node_modules/watchr/node_modules/taskgroup/out/lib/taskgroup.js:173:25)
                at processImmediate [as _immediateCallback] (timers.js:354:15)*
Unhandled rejection Error: Cannot GET "https://api.github.com/repos/hthetiot/popcorn/events"
    at null.<anonymous> (/srv/firefly/inject/adaptor/client/core/github-api.js:465:29)
    at dispatchEvent (/srv/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:574:29)
    at setState (/srv/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:593:14)
    at IncomingMessage.<anonymous> (/srv/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:427:13)
    at IncomingMessage.emit (events.js:117:20)
    at _stream_readable.js:944:16
    at process._tickDomainCallback (node.js:492:13)
From previous event:
    at GithubApi._request (/srv/firefly/inject/adaptor/client/core/github-api.js:417:12)
    at GithubApi.getRepositoryEvents (/srv/firefly/inject/adaptor/client/core/github-api.js:271:17)
    at _pollGithub [as _onTimeout] (/srv/firefly/container/services/repository-service.js:1431:28)
    at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)

Source:

Possible fix

diff --git i/container/services/file-service.js w/container/services/file-service.js
index b6d82c99..9aa18169 100644
--- i/container/services/file-service.js
+++ w/container/services/file-service.js
@@ -257,7 +257,7 @@ function FileService(config, fs, environment, pathname, fsPath) {
                         // is the only used client side, to check if the file is
                         // a directory. See inject/adaptor/client/core/file-descriptor.js
                         fileStat = {mode: fileStat.mode};
-                        handlers.handleChange.fcall(changeType, url, fileStat)
+                        handlers.handleChange(changeType, url, fileStat)
                         .catch(function (error) {
                             log("handleChange", "*" + error.stack + "*");
                         });
@@ -266,7 +266,7 @@ function FileService(config, fs, environment, pathname, fsPath) {
                     }
                 },
                 error: function(err) {
-                    handlers.handleChange.fcall(err)
+                    handlers.handleChange(err)
                     .catch(function (error) {
                         log("handleError", "*" + error.stack + "*");
                     });

Fix spec

The command "npm run lint" exited with 0.
11.57s$ runSlowSpecs=true npm test
> [email protected] test /home/travis/build/montagestudio/firefly
> if [ "`uname`" = "Linux" ]; then npm_config_coverage=$npm_config_coverage runSlowSpecs=$runSlowSpecs npm run tests; else echo Running tests in VM; vagrant ssh login -c "cd /srv/firefly; npm_config_coverage=$npm_config_coverage runSlowSpecs=$runSlowSpecs npm run tests"; fi
> [email protected] tests /home/travis/build/montagestudio/firefly
> jasmine-node spec --forceexit
........................................F............................F.F.FFFF.FFFF................................................Unhandled rejection Error: Cannot GET "https://api.github.com/repos/owner/sample/events" because Bad credentials
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/inject/adaptor/client/core/github-api.js:459:33)
    at dispatchEvent (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:574:29)
    at setState (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:593:14)
    at IncomingMessage.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:427:13)
    at emitNone (events.js:72:20)
    at IncomingMessage.emit (events.js:166:7)
    at endReadableNT (_stream_readable.js:923:12)
    at nextTickCallbackWith2Args (node.js:511:9)
    at process._tickDomainCallback (node.js:466:17)
.Unhandled rejection Error: Cannot GET "https://api.github.com/repos/owner/sample/events" because Bad credentials
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/inject/adaptor/client/core/github-api.js:459:33)
    at dispatchEvent (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:574:29)
    at setState (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:593:14)
    at IncomingMessage.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:427:13)
    at emitNone (events.js:72:20)
    at IncomingMessage.emit (events.js:166:7)
    at endReadableNT (_stream_readable.js:923:12)
    at nextTickCallbackWith2Args (node.js:511:9)
    at process._tickDomainCallback (node.js:466:17)
Unhandled rejection Error: Cannot GET "https://api.github.com/repos/owner/sample/events" because Bad credentials
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/inject/adaptor/client/core/github-api.js:459:33)
    at dispatchEvent (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:574:29)
    at setState (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:593:14)
    at IncomingMessage.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:427:13)
    at emitNone (events.js:72:20)
    at IncomingMessage.emit (events.js:166:7)
    at endReadableNT (_stream_readable.js:923:12)
    at nextTickCallbackWith2Args (node.js:511:9)
    at process._tickDomainCallback (node.js:466:17)
.............................................................................................
Failures:
  1) preview-server should inject the preview scripts into the html file
   Message:
     Expected false to be true.
   Stacktrace:
     Error: Expected false to be true.
    at /home/travis/build/montagestudio/firefly/spec/container/preview-server-spec.js:45:34
    at _fulfilled (/home/travis/build/montagestudio/firefly/node_modules/q/q.js:798:54)
    at self.promiseDispatch.done (/home/travis/build/montagestudio/firefly/node_modules/q/q.js:827:30)
    at Promise.promise.promiseDispatch (/home/travis/build/montagestudio/firefly/node_modules/q/q.js:760:13)
    at /home/travis/build/montagestudio/firefly/node_modules/q/q.js:574:44
    at flush (/home/travis/build/montagestudio/firefly/node_modules/q/q.js:108:17)
    at nextTickCallbackWith0Args (node.js:489:9)
    at process._tickDomainCallback (node.js:459:13)
  2) preview-server should inject the preview scripts into the html file
   Message:
     Expected false to be true.
   Stacktrace:
     Error: Expected false to be true.
    at /home/travis/build/montagestudio/firefly/spec/container/preview-server-spec.js:46:35
    at _fulfilled (/home/travis/build/montagestudio/firefly/node_modules/q/q.js:798:54)
    at self.promiseDispatch.done (/home/travis/build/montagestudio/firefly/node_modules/q/q.js:827:30)
    at Promise.promise.promiseDispatch (/home/travis/build/montagestudio/firefly/node_modules/q/q.js:760:13)
    at /home/travis/build/montagestudio/firefly/node_modules/q/q.js:574:44
    at flush (/home/travis/build/montagestudio/firefly/node_modules/q/q.js:108:17)
    at nextTickCallbackWith0Args (node.js:489:9)
    at process._tickDomainCallback (node.js:459:13)
  3) file-service makeTree with no part of the desired tree existing should create a directory and all parents up to the existing parent root
   Message:
     Expected false to be true.
   Stacktrace:
     Error: Expected false to be true.
    at /home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:188:42
    at /home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:1249:26
    at _fulfilled (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:816:13)
    at /home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:624:44
    at runSingle (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:137:13)
    at flush (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:125:13)
    at nextTickCallbackWith0Args (node.js:489:9)
    at process._tickDomainCallback (node.js:459:13)
  4) file-service makeTree with no part of the desired tree existing should create a directory and all parents up to the existing parent root
   Message:
     Expected false to be true.
   Stacktrace:
     Error: Expected false to be true.
    at /home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:189:42
    at /home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:1249:26
    at _fulfilled (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:816:13)
    at /home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:624:44
    at runSingle (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:137:13)
    at flush (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:125:13)
    at nextTickCallbackWith0Args (node.js:489:9)
    at process._tickDomainCallback (node.js:459:13)
  5) file-service makeTree with no part of the desired tree existing should create a directory and all parents up to the existing parent root
   Message:
     Expected false to be true.
   Stacktrace:
     Error: Expected false to be true.
    at /home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:190:42
    at /home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:1249:26
    at _fulfilled (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:816:13)
    at /home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:624:44
    at runSingle (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:137:13)
    at flush (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:125:13)
    at nextTickCallbackWith0Args (node.js:489:9)
    at process._tickDomainCallback (node.js:459:13)
  6) file-service makeTree with parts of the expected tree existing should create directories along the specified path where they do not exist already
   Message:
     Expected false to be true.
   Stacktrace:
     Error: Expected false to be true.
    at /home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:232:42
    at _fulfilled (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:816:13)
    at /home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:624:44
    at runSingle (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:137:13)
    at flush (/home/travis/build/montagestudio/firefly/node_modules/q-io/node_modules/q/q.js:125:13)
    at nextTickCallbackWith0Args (node.js:489:9)
    at process._tickDomainCallback (node.js:459:13)
  7) file-service remove should remove the specified file that exists
   Message:
     Error: Can't remove non-existant file: http://localhost:2441/foo/bar
   Stacktrace:
     Error: Can't remove non-existant file: http://localhost:2441/foo/bar
    at /home/travis/build/montagestudio/firefly/container/services/file-service.js:188:19
From previous event:
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:269:18)
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/jasmine-node/lib/jasmine-node/async-callback.js:45:37)
  8) file-service remove should resolve to undefined
   Message:
     Error: Can't remove non-existant file: http://localhost:2441/foo/bar
   Stacktrace:
     Error: Can't remove non-existant file: http://localhost:2441/foo/bar
    at /home/travis/build/montagestudio/firefly/container/services/file-service.js:188:19
From previous event:
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:277:18)
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/jasmine-node/lib/jasmine-node/async-callback.js:45:37)
  9) file-service remove must not remove the parent directory of the specified file
   Message:
     Error: Can't remove non-existant file: http://localhost:2441/foo/bar
   Stacktrace:
     Error: Can't remove non-existant file: http://localhost:2441/foo/bar
    at /home/travis/build/montagestudio/firefly/container/services/file-service.js:188:19
From previous event:
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:288:18)
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/jasmine-node/lib/jasmine-node/async-callback.js:45:37)
  10) file-service remove must not remove siblings of the specified file
   Message:
     Error: Can't remove non-existant file: http://localhost:2441/foo/bar
   Stacktrace:
     Error: Can't remove non-existant file: http://localhost:2441/foo/bar
    at /home/travis/build/montagestudio/firefly/container/services/file-service.js:188:19
From previous event:
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:299:18)
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/jasmine-node/lib/jasmine-node/async-callback.js:45:37)
  11) file-service removeTree should remove the specified directory that exists
   Message:
     Error: Can't find tree to remove given "http://localhost:2441/foo/bar"
   Stacktrace:
     Error: Can't find tree to remove given "http://localhost:2441/foo/bar"
    at /home/travis/build/montagestudio/firefly/container/services/file-service.js:196:19
From previous event:
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:341:18)
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/jasmine-node/lib/jasmine-node/async-callback.js:45:37)
  12) file-service removeTree should resolve to undefined
   Message:
     Error: Can't find tree to remove given "http://localhost:2441/foo/bar"
   Stacktrace:
     Error: Can't find tree to remove given "http://localhost:2441/foo/bar"
    at /home/travis/build/montagestudio/firefly/container/services/file-service.js:196:19
From previous event:
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:350:18)
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/jasmine-node/lib/jasmine-node/async-callback.js:45:37)
  13) file-service removeTree must not remove the parent directory of the specified directory
   Message:
     Error: Can't find tree to remove given "http://localhost:2441/foo/bar"
   Stacktrace:
     Error: Can't find tree to remove given "http://localhost:2441/foo/bar"
    at /home/travis/build/montagestudio/firefly/container/services/file-service.js:196:19
From previous event:
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:360:18)
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/jasmine-node/lib/jasmine-node/async-callback.js:45:37)
  14) file-service removeTree must not remove siblings of the specified file
   Message:
     Error: Can't find tree to remove given "http://localhost:2441/foo/bar"
   Stacktrace:
     Error: Can't find tree to remove given "http://localhost:2441/foo/bar"
    at /home/travis/build/montagestudio/firefly/container/services/file-service.js:196:19
From previous event:
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/spec/container/services/file-service-spec.js:371:18)
    at null.<anonymous> (/home/travis/build/montagestudio/firefly/node_modules/jasmine-node/lib/jasmine-node/async-callback.js:45:37)
Finished in 10.275 seconds
224 tests, 512 assertions, 14 failures, 0 skipped

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.