Commits on Oct 12, 2012
  1. Fix _socketWrite crash after end(). Fix #102.

    reid committed Oct 12, 2012
    Make sure `this.output` is not falsey before writing.
    Calling a requestCompleter after end() will cause a
    _socketWrite, but this late data should not be buffered.
  2. Work on 0.2.13pre.

    reid committed Oct 12, 2012
  3. Version 0.2.12.

    reid committed Oct 12, 2012
  4. Introduce JUnit output option. Fix #11.

    reid committed Oct 11, 2012
     - Introduce JUnitReporter.
     - Introduce `--junit` and `--output junit` CLI options.
Commits on Oct 9, 2012
  1. Print results from FeedbackLineReporter. Ref #11.

    reid committed Oct 9, 2012
    Move rendering of test results away from lib/cli.js
    into a FeedbackLineReporter in lib/reporter/feedback-line.js.
    The idea is to create a other reporters, e.g. JUnitReporter,
    with the same interface.
  2. Request event fixed-length args. Fix #100.

    reid committed Oct 9, 2012
    - Change Blizzard `request.*` event handlers to be 2-arity.
      The remote argument list as an array is the first argument.
      The reply function is the second argument.
    - Update Yeti usage of these events to use the new signature.
    - Use the request argument list for incomingBridge events
      as their actual arguments, but without a reply function.
    `request.*` events for Blizzard handle remote RPC requests.
    Sometimes the event will reply to the caller's side using
    a reply function provided as the last argument.
    A malformed RPC request with too many or too few arguments
    caused the event handler to expect the reply function in
    the wrong place in the argument list, yielding a crash.
    To maintain compatibility with the majority of Yeti events
    which use the incomingBridge API to bridge an EventEmitter event
    to a Blizzard `request` event handler, the remote argument list
    (first argument) is unpacked and the bridged event is fired
    with that argument list. The reply function is not included.
    The incomingBridge API is only intended for make a remote event
    appear local -- not to handle RPC-specific behavior like a reply.
    Yeti already follows this rule, so no further changes are needed.
Commits on Oct 5, 2012
  1. Add test for failing command-line UI. Ref #95.

    reid committed Oct 5, 2012
    Add YETI_MOCK_DEBUG for debugging the MockWritableStream.
    When set, MockWritableStream#expect prints out what it's
    expecting and collecting.
    This is useful for creating new tests.
  2. First test of the CLI with a browser. Ref #95.

    reid committed Oct 5, 2012
    The CLI test uses hub.phantomContext() to create a browser.
    Other changes:
     - Mock streams set isTTY = false to prevent weird handling.
     - Because mock streams are not a TTY, writing keys to them
       using readline.write(null, keyObject) triggers a Node.js crash.
       Wrap the Ctrl+U write in lib/cli with a check to see if the
       readline object is hooked into a terminal.
     - Add pause() and resume() noop methods to mock streams.
       This lets them work in readline.
     - Change a couple process.exit() calls to use self.exit()
       in lib/cli.
Commits on Oct 4, 2012
  1. New phantomContext() API for generic Phantom use.

    reid committed Oct 4, 2012
    Ref #95. This API will make sure all uses of Phantom
    will properly check for errors and have teardowns.
    We will soon use this in test/cli.js.
  2. CLI stdin/out/err streams; evented mocks. Ref #95.

    reid committed Oct 4, 2012
    The CLI now expects to be provided with streams for:
     - stdin
     - stdout
     - stderr
    This replaces the old options:
     - readableStream
     - writableStream
     - putsFn
     - errorFn
    Removing putsFn and errorFn discourages usage of Node.js
    stdio (e.g., console.*), which is one less thing to mock.
    The CLI.prototype's puts() and error() methods still allow
    for `printf`-like formatting by using util.format().
    Create new mock Readable and Writable Streams for testing.
    The MockWritableStream supports expect(), which will fire
    a callback when the expected string is provided. This lets
    us do async testing of the CLI.
  3. Wait for brower & Yeti to end, then cb. Fix #98.

    reid committed Oct 4, 2012
    The "session end event fired once" test sometimes fails.
    It recently failed in CI and it's happening because
    sometimes Phantom completes faster than Yeti, especially
    since we switched to a lighter Phantom in ref #97.
    Wait for both to complete before making assertions.
  4. Switch from phantom to node-phantom. Fix #97.

    reid committed Oct 4, 2012
    Includes these commits:
     - Use node-phantom APIs. onLoadStarted is broken.
     - Fix onLoadStarted by using on* events, not set.
     - Add teardowns, kill phantomjs as we complete.
  5. Add basic CLI tests. Ref #95.

    reid committed Oct 4, 2012
    Test the CLI given these conditions:
     - Creating a hub.
     - Creating a hub with files.
     - Without arguments.
    Caveats: Requires ports 9010 & 9011 to be available.
    MockWritableStream was not being used anywhere.
    It has been modified to export the constructor
    instead of a Vows topic function.
  6. --hub option accepts urls and Booleans. Fix #96.

    reid committed Oct 4, 2012
    A bug in nopt incorrectly coerces values to Booleans
    when a type array that contains the Boolean type is
    used, even if other types are higher priority than
    Workaround by making a second nopt pass.
    Add a new test for the CLI to cover the bug.
Commits on Oct 3, 2012
  1. lib/cli exports CLI class, expose hooks for UI.

    reid committed Oct 2, 2012
    The CLI class accepts functions and streams in its constructor
    for the implementation to define their own interfaces.
    We are doing this so that we can unit test the CLI with
    mock handlers and streams.
Commits on Oct 1, 2012
  1. Work on 0.2.12pre.

    reid committed Oct 1, 2012
Commits on Sep 28, 2012
  1. Version 0.2.11.

    reid committed Sep 28, 2012
Commits on Sep 25, 2012
Commits on Sep 24, 2012
  1. Windows-friendly CLI icons.

    reid committed Sep 24, 2012
Commits on Sep 22, 2012
  1. Use only Istanbul for the code coverage report.

    reid committed Sep 22, 2012
    Istanbul was developed at Yahoo! and is now open source.
    It was used for a while by internal devs if available,
    otherwise the former JSCoverage system would be used.
    The JSCoverage fallback is no longer needed.
    Istanbul provides many more features than JSCoverage,
    including branch coverage. For more about Istanbul,
  2. Work on 0.2.11pre.

    reid committed Sep 22, 2012
  3. Version 0.2.10.

    reid committed Sep 22, 2012
  4. Reorganize

    reid committed Sep 22, 2012
Commits on Sep 21, 2012
  1. Override .yeti.json hub option with `--no-hub`.

    reid committed Sep 21, 2012
    Change nopt hub option type to [url, Boolean].
    If the CLI provided hub value is not a valid URL,
    the value will be `true`. If that happens, print
    a stderr message and discard the bad value.
    If the CLI provided hub value is `false`, that
    means `--no-hub` or `--hub false` was provided.
    Let that value be imported into the configuration
    so the CLI will know to start a new Hub.
Commits on Sep 20, 2012
  1. Support glob option for locating test files.

    reid committed Sep 20, 2012
    If the glob option is set, and no files are specified,
    the glob option's value is used to locate files for testing.
    The pattern matching is performed by node-glob.
  2. Configurable CLI basedir.

    reid committed Sep 20, 2012
    Let a .yeti.json define the basedir with a relative path
    to be resolved from the path where the .yeti.json is located.
    For example, a .yeti.json inside /foo/bar setting basedir to `.`
    would cause the CLI running inside /foo/bar/baz/quux to use
    /foo/bar as the basedir, because `.` resolves to the directory
    where the configuration was stored.
    Files submitted to Yeti's Batch API need to have paths relative
    to the basedir, so resolve files to the basedir before sending.
    For example, the CLI running in /foo/bar/baz/quux for test.html
    would need to specify baz/quux/test.html as the file to the Yeti
    Batch API, relative to the given basedir /foo/bar.
  3. Fix CLI compatibility for Node.js v0.6.x.

    reid committed Sep 20, 2012
    fs.existsSync does not exist in v0.6.x.
    Use path.existsSync when fs.existsSync is not available.
  4. Use configuration from .yeti.json & more.

    reid committed Sep 20, 2012
    Yeti will draw on configuration from these sources,
    in order of precedence:
     - Command line options, as before.
     - Environment variables beginning with `YETI_`.
     - A .yeti.json found while scanning parent directories
       recursively starting from the current directory.
     - A .yeti.json found in the user's home directory.
    Introduce printLogEventsForLevel() API for Yeti EventEmitter2s.
    This allows for easy printing of debug() messages.
  5. Add `make lint` to Travis.

    reid committed Sep 20, 2012
    Determines contributed code passes lint.
  6. Add missing semicolon.

    reid committed Sep 20, 2012