Browse files

[api] Started working on binary and step definitions

  • Loading branch information...
1 parent 0402e99 commit 908103dc47e2f4174d252c5a5b38b1daf571ed75 @indexzero indexzero committed Sep 9, 2010
Showing with 155 additions and 0 deletions.
  1. +155 −0 bin/kyuri.js
  2. 0 examples/vows-steps.js
@@ -0,0 +1,155 @@
+#!/usr/bin/env node
+var path = require('path'),
+ sys = require('sys'),
+ fs = require('fs'),
+ events = require('events');
+// Attempt to load Coffee-Script. If it's not available, continue on our
+// merry way, if it is available, set it up so we can include `*.coffee`
+// scripts and start searching for them.
+var fileExt, specFileExt;
+try {
+ var coffee = require('coffee-script');
+ require.registerExtension('.coffee', function (content) { return coffee.compile(content) });
+ stepExt = /\.(js|coffee)$/;
+} catch (_) {
+ fileExt = /\.js$/;
+featureFileExt = /\.(feature)$/;
+var inspect = require('eyes').inspector({
+ stream: null,
+ styles: { string: 'grey', regexp: 'grey' }
+require.paths.unshift(path.join(__dirname, '..', 'lib'));
+var kyuri = require('kyuri');
+var help = [
+ "usage: kyuri [FILE, ...] [options]",
+ "",
+ "options:",
+ // Options compliant from 'cucumber --help'
+ " --i18n LANG List keywords for in a particular language",
+ " Run with \"--i18n help\" to see all languages",
+ " -h, --help You're staring at it",
+ // Options specific to Kyuri
+ " --server Run the Kyuri web service. Default to port 9000",
+ " --port Port to run server on",
+/* Lets be compliant with Cucumber since this is essentially a pure javascript runner + some javascript options foo?
+ (i.e. lets generate .coffee vs. .js step definitions :])
+ -r, --require LIBRARY|DIR Require files before executing the features. If this
+ option is not specified, all *.rb files that are
+ siblings or below the features will be loaded auto-
+ matically. Automatic loading is disabled when this
+ option is specified, and all loading becomes explicit.
+ Files under directories named "support" are always
+ loaded first.
+ This option can be specified multiple times.
+ --i18n LANG List keywords for in a particular language
+ Run with "--i18n help" to see all languages
+ -f, --format FORMAT How to format features (Default: pretty). Available formats:
+ debug : For developing formatters - prints the calls made to the listeners.
+ html : Generates a nice looking HTML report.
+ json : Prints the feature as JSON
+ json_pretty : Prints the feature as pretty JSON
+ junit : Generates a report similar to Ant+JUnit.
+ pdf : Generates a PDF report. You need to have the
+ prawn gem installed. Will pick up logo from
+ features/support/logo.png or
+ features/support/logo.jpg if present.
+ pretty : Prints the feature as is - in colours.
+ progress : Prints one character per scenario.
+ rerun : Prints failing files with line numbers.
+ stepdefs : Prints All step definitions with their locations. Same as
+ the usage formatter, except that steps are not printed.
+ tag_cloud : Prints a tag cloud of tag usage.
+ usage : Prints where step definitions are used.
+ The slowest step definitions (with duration) are
+ listed first. If --dry-run is used the duration
+ is not shown, and step definitions are sorted by
+ filename instead.
+ Use --format rerun --out features.txt to write out failing
+ features. You can rerun them with cucumber @rerun.txt.
+ FORMAT can also be the fully qualified class name of
+ your own custom formatter. If the class isn't loaded,
+ Cucumber will attempt to require a file with a relative
+ file name that is the underscore name of the class name.
+ Example: --format Foo::BarZap -> Cucumber will look for
+ foo/bar_zap.rb. You can place the file with this relative
+ path underneath your features/support directory or anywhere
+ on Ruby's LOAD_PATH, for example in a Ruby gem.
+ -o, --out [FILE|DIR] Write output to a file/directory instead of STDOUT. This option
+ applies to the previously specified --format, or the
+ default format if no format is specified. Check the specific
+ formatter's docs to see whether to pass a file or a dir.
+ -t, --tags TAG_EXPRESSION Only execute the features or scenarios with tags matching TAG_EXPRESSION.
+ Scenarios inherit tags declared on the Feature level. The simplest
+ TAG_EXPRESSION is simply a tag. Example: --tags @dev. When a tag in a tag
+ expression starts with a ~, this represents boolean NOT. Example: --tags ~@dev.
+ A tag expression can have several tags separated by a comma, which represents
+ logical OR. Example: --tags @dev,@wip. The --tags option can be specified
+ several times, and this represents logical AND. Example: --tags @foo,~@bar --tags @zap.
+ This represents the boolean expression (@foo || !@bar) && @zap.
+ Beware that if you want to use several negative tags to exclude several tags
+ you have to use logical AND: --tags ~@fixme --tags @buggy.
+ Positive tags can be given a threshold to limit the number of occurrences.
+ Example: --tags @qa:3 will fail if there are more than 3 occurrences of the @qa tag.
+ This can be practical if you are practicing Kanban or CONWIP.
+ -n, --name NAME Only execute the feature elements which match part of the given name.
+ If this option is given more than once, it will match against all the
+ given names.
+ -e, --exclude PATTERN Don't run feature files or require ruby files matching PATTERN
+ -p, --profile PROFILE Pull commandline arguments from cucumber.yml which can be defined as
+ strings or arrays. When a 'default' profile is defined and no profile
+ is specified it is always used. (Unless disabled, see -P below.)
+ When feature files are defined in a profile and on the command line
+ then only the ones from the command line are used.
+ -P, --no-profile Disables all profile loading to avoid using the 'default' profile.
+ -c, --[no-]color Whether or not to use ANSI color in the output. Cucumber decides
+ based on your platform and the output destination if not specified.
+ -d, --dry-run Invokes formatters without executing the steps.
+ This also omits the loading of your support/env.rb file if it exists.
+ Implies --no-snippets.
+ -a, --autoformat DIR Reformats (pretty prints) feature files and write them to DIRECTORY.
+ Be careful if you choose to overwrite the originals.
+ Implies --dry-run --formatter pretty.
+ -m, --no-multiline Don't print multiline strings and tables under steps.
+ -s, --no-source Don't print the file and line of the step definition with the steps.
+ -i, --no-snippets Don't print snippets for pending steps.
+ -q, --quiet Alias for --no-snippets --no-source.
+ -b, --backtrace Show full backtrace for all errors.
+ -S, --strict Fail if there are any undefined steps.
+ -w, --wip Fail if there are any passing scenarios.
+ -v, --verbose Show the files and features loaded.
+ -g, --guess Guess best match for Ambiguous steps.
+ -x, --expand Expand Scenario Outline Tables in output.
+ --drb Run features against a DRb server. (i.e. with the spork gem)
+ --port PORT Specify DRb port. Ignored without --drb
+ --version Show version.
+ -h, --help You're looking at it.
+// Get rid of process runner
+// ('node' in most cases)
+var arg, args = [], argv = process.argv.slice(2);
+// Current directory index,
+// and path of test folder.
+var root, testFolder;
No changes.

0 comments on commit 908103d

Please sign in to comment.