Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix spurious test failure with "creates new identifiers" [OSF-6970] #6655

Closed
wants to merge 9 commits into from
Closed

Fix spurious test failure with "creates new identifiers" [OSF-6970] #6655

wants to merge 9 commits into from

Conversation

chadwhitacre
Copy link
Contributor

@chadwhitacre chadwhitacre commented Dec 12, 2016

Purpose

Debug and fix a spurious test case failure with 37ae2bb under TEST_BUILD="varnish", where nodeControl > ViewModels > ProjectViewModel > create new identifiers dies with a TypeError inside contribAdder:

TypeError: Fake XHR onreadystatechange handler threw exception:
'undefined' is not an object (evaluating 'response.data.map')
(/home/travis/build/CenterForOpenScience/osf.io/website/static/js/tests/tests.webpack.js:131102:0
<- webpack:///website/static/js/contribAdder.js:257:0)

screen shot 2016-12-12 at 5 34 33 am

Changes

n/a

Side effects

n/a

Ticket

https://openscience.atlassian.net/browse/OSF-6970

@chadwhitacre chadwhitacre changed the title Fix spurious test in contribAdder Fix spurious test failure with "creates new identifiers" Dec 12, 2016
@chadwhitacre
Copy link
Contributor Author

From @brianjgeiger in Jira:

I briefly looked at skipping the failing test in OSF-7002, but it looks to be a race condition related to the sinon fake xhr functionality. In practice, if you were to skip the one failing test, then two other completely unrelated tests will fail. As mentioned in the comment on 7002, I'm good with skipping all the viewmodel tests since we'll be moving over to Ember which will have proper testing. There will be at least a few tests left over that will just test js functions and not knockout viewmodels.

@chadwhitacre
Copy link
Contributor Author

I find http://stackoverflow.com/questions/38525336/typeerror-fake-xhr-onreadystatechange-undefined-is-not-a-constructor and note that this is a fake XHR onreadystatechange handler. Is response undefined or is it response.data?

@chadwhitacre
Copy link
Contributor Author

OSF-7002 was closed by turning relevant tests off in #6463. Here's @brianjgeiger's notes from 7002:


The test nodeContro=>ViewModels=>ProjectViewModel=>it('creates new identifiers') fails frequently with the failure described below. The problem seems to be some kind of timing issue, because skipping this test will cause others to fail in similar ways. Things that are definitely worth looking into:

  • Old versions of all of our JS test running software
  • Occasionally tests report that they force a full page reload
  • The test 'should not crash initials function when name contains two spaces' does not call done() and so times out
  • Several of the new logTextParser tests fail in Chrome
 nodeControl
   ViewModels
     ProjectViewModel
       ✓ has no identifiers when identifiers are null
       ✓ has identifiers when identifiers are not null
       ✓ can have identifiers when public, registered, and admin
       ✓ cannot have identifiers when private, not registered, or not admin
       ✓ builds the correct absolute urls
       ✗ creates new identifiers
  TypeError: Fake XHR onreadystatechange handler threw exception: 'undefined' is not an object (evaluating 'response.data.map') (/home/travis/build/CenterForOpenScience/osf.io/website/static/js/tests/tests.webpack.js:131102:0 <- webpack:///website/static/js/contribAdder.js:257:0)

After having done a brief glance at the tests, either this task will need to be "Fix race condition with sinon fake xhr on viewmodel tests" or it will be "Remove viewmodel tests from JS tests to leave only pure unit tests". I'm good with either solution. As we convert over to Ember, we'll have proper testing done within the Ember framework.


Or can be replaced by OSF-6970, but the comment above still stands.

@chadwhitacre
Copy link
Contributor Author

First step here is to revert #6463 so we can see the spurious test failures again: done in 351a387. Next I'm going to whittle down to just those test cases, to see if we can still see the spurious failures without churning CPUs for half an hour ... ;-)

@chadwhitacre
Copy link
Contributor Author

I don't understand why this shows up under the Varnish tests. What does Varnish have to do with this?

@chadwhitacre
Copy link
Contributor Author

The call appears to be:

/home/travis/build/CenterForOpenScience/osf.io/node_modules/karma/bin/karma start --single-run --browsers PhantomJS

But why?

@chadwhitacre
Copy link
Contributor Author

That's an old test run, from three months ago. But the first test run on this PR just completed, and it still runs karma under TEST_BUILD="varnish". Is that a mistake?

@chadwhitacre
Copy link
Contributor Author

test_travis_varnish definitely includes test_js. The docstring makes it seem like not an accident, and test_js isn't run under either of the other two Travis test chunkings. Okay! So TEST_BUILD="varnish" is a bit misleading, but for our purposes here we're on the right track.

@chadwhitacre
Copy link
Contributor Author

Constrained build succeeded in under five minutes. Probably even quicker now that the Travis cache is primed.

@chadwhitacre
Copy link
Contributor Author

Bah. But I can't restart Travis builds without closing and reopening the PR. :-/

@chadwhitacre
Copy link
Contributor Author

Hmm ... did they close that loophole? 😞

@chadwhitacre
Copy link
Contributor Author

Build restarted. 👍

@chadwhitacre
Copy link
Contributor Author

The full run does fail still, under "create new identifiers" as well as three others. 👍

@chadwhitacre
Copy link
Contributor Author

chadwhitacre commented Dec 12, 2016

The full js test suite takes only 30 seconds (11%) longer and so far has failed consistently whereas the constrained suite hasn't. Let's test with the full js suite.

screen shot 2016-12-12 at 6 49 20 am

screen shot 2016-12-12 at 6 49 12 am

@chadwhitacre
Copy link
Contributor Author

The test suite creates a stub server using sinon. When calling createIdentifiers ... I guess somewhere under there we land in getContributors, where $.ajax hits the sinon mock?

@brianjgeiger
Copy link
Collaborator

I moved the JS tests to the varnish branch because that was the fastest to run. If it had to be restarted, I wanted it to be a five minute wait, not a 35 minute wait.

@chadwhitacre
Copy link
Contributor Author

Yeah, I figured. It was just confusing since the test suite was still called just "varnish". PR to clean that up a bit in #6656.

@chadwhitacre
Copy link
Contributor Author

Alright, so what's this about a sinon race condition?

@chadwhitacre
Copy link
Contributor Author

The Sinon docs state that autoRespond is not suitable for tests as it will execute asynchronously. This defaults to 10ms later, which is just enough to bump to the next frame of execution, potentially causing some race conditions with the tests. I discovered this because I had similar failing test cases related to AJAX.

I ended up implementing a respondImmediately property on the fakeServer that will synchronously respond to any request. This just got merged into the project a few weeks ago (v1.14.0), but if you update to the newest version you should be able to get it. Check out the docs here.

http://stackoverflow.com/questions/11304225/sinon-js-fake-server-autorespond-usage

@chadwhitacre
Copy link
Contributor Author

Looking at those docs, both autoRespond and respondImmediately appear to default to true. Is that true? If so, which wins? What's our configuration? Are we using a version of Sinon to which these docs apply?

@chadwhitacre
Copy link
Contributor Author

We specify "karma-sinon": "^1.0.5", but not sinon.

$ npm ls karma-sinon
OSF@0.102.0 /Users/whit537/workbench/cos/osf.io
└── karma-sinon@1.0.5 

$ npm ls sinon
OSF@0.102.0 /Users/whit537/workbench/cos/osf.io
└── sinon@1.17.4  extraneous

npm ERR! extraneous: sinon@1.17.4 /Users/whit537/workbench/cos/osf.io/node_modules/sinon
$

@chadwhitacre
Copy link
Contributor Author

chadwhitacre commented Dec 16, 2016

1

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

2

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

3

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

4

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

5

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

6

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

7

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

8

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'm
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

9

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefinedm

10

LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/vendor/bower_components/stacktrace-js/dist/stacktrace-with-promises-and-json-polyfills.js', 2, 'generatedPositionFor'
LOG LOG: 'webpack:///website/static/js/contribAdder.js', 261, 'getContributors'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3232, 'fire'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 3362, 'fireWith'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 9840, 'done'
LOG LOG: '/website/static/vendor/bower_components/jquery/dist/jquery.js', 10311, 'callback'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5204, 'readyStateChange'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5386, 'setResponseBody'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5393, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5703, 'processRequest'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5679, 'respond'
LOG LOG: '/node_modules/sinon/pkg/sinon.js', 5604, undefined

@chadwhitacre
Copy link
Contributor Author

There are ten stack traces, but only seven failures. All the stack traces are the same.

@chadwhitacre
Copy link
Contributor Author

chadwhitacre commented Dec 16, 2016

Since this bug is intermittent, I'm going to restart the build. If we don't get the "create new identifiers" fail it will be interesting to compare the result.

@chadwhitacre
Copy link
Contributor Author

1.17.6

@chadwhitacre
Copy link
Contributor Author

New plan: try to turn on Sentry reporting.

@chadwhitacre
Copy link
Contributor Author

I've created a personal project in Sentry and have set SENTRY_DSN and SENTRY_DSN_JS in local.py. I'm rerunning the test suite to see if my five failures appear.

@chadwhitacre
Copy link
Contributor Author

The reason to use Sentry is because I'm basically rebuilding Sentry with the stacktrace thing. Really, I want to inspect frame context, not just see the stacktrace.

@chadwhitacre
Copy link
Contributor Author

👍

screen shot 2016-12-16 at 7 02 19 am

@chadwhitacre
Copy link
Contributor Author

I'm getting messages logged, but I want stack traces from exceptions.

@chadwhitacre
Copy link
Contributor Author

Boom!

screen shot 2016-12-16 at 7 21 17 am

@chadwhitacre
Copy link
Contributor Author

Let's see if this dog can hunt ...

@chadwhitacre
Copy link
Contributor Author

Blech. Looks like it's still a static trace, though. 😕 Is frame context available with Sentry under JavaScript?

@chadwhitacre
Copy link
Contributor Author

Maybe with a newer JavaScript client? If it's not available at all then I guess Sentry is a bit of a dead-end.

@chadwhitacre
Copy link
Contributor Author

I read through the Raven docs, upgraded the client, switched to using Raven.context ... and now I'm trying to trigger an event again from localhost.

@chadwhitacre
Copy link
Contributor Author

chadwhitacre commented Dec 17, 2016

Alright, it's a little confusing because there's separate installs for front-end and server-side. We install both. From the Karma tests we are using the client-side version.

context managed with package latest version
server npm (package.json) raven 1.1.1
client bower (bower.json) raven-js 3.9.1

@chadwhitacre
Copy link
Contributor Author

I've reported "Frame context not included."

@chadwhitacre
Copy link
Contributor Author

Okay! So what can we learn from what we know so far? And can we log at least a variable or two of extra context easily with Raven?

@chadwhitacre chadwhitacre changed the title [OSF-6970] Fix spurious test failure with "creates new identifiers" Fix spurious test failure with "creates new identifiers" [OSF-6970] Dec 22, 2016
@chadwhitacre
Copy link
Contributor Author

Gosh this feels dense. I can't get an interactive debugger where I need it?

@chadwhitacre
Copy link
Contributor Author

How do I run exactly two tests?
I've found it.only to run exactly one test.
I'm trying to narrow down an interaction between tests, so I'd like to run a subset of the test suite that is more than one test but less than the whole thing.

https://gitter.im/karma-runner/karma?at=585bc657058ca967377b74c4

@chadwhitacre
Copy link
Contributor Author

Back to karma-runner/karma#553 (comment).

@chadwhitacre
Copy link
Contributor Author

For the record, my contract with COS is up and we didn't renew for 2017, so this is ready for someone else to pick up! :-)

@sloria
Copy link
Contributor

sloria commented Aug 3, 2017

Closing, as this has become stale.

@sloria sloria closed this Aug 3, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants