Index: node_modules/rc/test/ini.js
===================================================================
--- node_modules/rc/test/ini.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
+++ node_modules/rc/test/ini.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
@@ -0,0 +1,16 @@
+var cc =require('../lib/utils')
+var INI = require('ini')
+var assert = require('assert')
+
+function test(obj) {
+
+  var _json, _ini
+  var json = cc.parse (_json = JSON.stringify(obj))
+  var ini = cc.parse (_ini = INI.stringify(obj))
+  console.log(_ini, _json)
+  assert.deepEqual(json, ini)
+}
+
+
+test({hello: true})
+
Index: node_modules/rc/test/nested-env-vars.js
===================================================================
--- node_modules/rc/test/nested-env-vars.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
+++ node_modules/rc/test/nested-env-vars.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
@@ -0,0 +1,50 @@
+
+var seed = Math.random();
+var n = 'rc'+ seed;
+var N = 'RC'+ seed;
+var assert = require('assert')
+
+
+// Basic usage
+process.env[n+'_someOpt__a'] = 42
+process.env[n+'_someOpt__x__'] = 99
+process.env[n+'_someOpt__a__b'] = 186
+process.env[n+'_someOpt__a__b__c'] = 243
+process.env[n+'_someOpt__x__y'] = 1862
+process.env[n+'_someOpt__z'] = 186577
+
+// Should ignore empty strings from orphaned '__'
+process.env[n+'_someOpt__z__x__'] = 18629
+process.env[n+'_someOpt__w__w__'] = 18629
+
+// Leading '__' should ignore everything up to 'z'
+process.env[n+'___z__i__'] = 9999
+
+// should ignore case for config name section.
+process.env[N+'_test_upperCase'] = 187
+
+function testPrefix(prefix) {
+	var config = require('../')(prefix, {
+	  option: true
+	})
+
+	console.log('\n\n------ nested-env-vars ------\n',{prefix: prefix}, '\n', config);
+
+	assert.equal(config.option, true)
+	assert.equal(config.someOpt.a, 42)
+	assert.equal(config.someOpt.x, 99)
+	// Should not override `a` once it's been set
+	assert.equal(config.someOpt.a/*.b*/, 42)
+	// Should not override `x` once it's been set
+	assert.equal(config.someOpt.x/*.y*/, 99)
+	assert.equal(config.someOpt.z, 186577)
+	// Should not override `z` once it's been set
+	assert.equal(config.someOpt.z/*.x*/, 186577)
+	assert.equal(config.someOpt.w.w, 18629)
+	assert.equal(config.z.i, 9999)
+
+	assert.equal(config.test_upperCase, 187)
+}
+
+testPrefix(n);
+testPrefix(N);
Index: node_modules/rc/test/test.js
===================================================================
--- node_modules/rc/test/test.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
+++ node_modules/rc/test/test.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
@@ -0,0 +1,59 @@
+
+var n = 'rc'+Math.random()
+var assert = require('assert')
+
+process.env[n+'_envOption'] = 42
+
+var config = require('../')(n, {
+  option: true
+})
+
+console.log(config)
+
+assert.equal(config.option, true)
+assert.equal(config.envOption, 42)
+
+var customArgv = require('../')(n, {
+  option: true
+}, { // nopt-like argv
+  option: false,
+  envOption: 24,
+  argv: {
+    remain: [],
+    cooked: ['--no-option', '--envOption', '24'],
+    original: ['--no-option', '--envOption=24']
+  }
+})
+
+console.log(customArgv)
+
+assert.equal(customArgv.option, false)
+assert.equal(customArgv.envOption, 24)
+
+var fs = require('fs')
+var path = require('path')
+var jsonrc = path.resolve('.' + n + 'rc');
+
+fs.writeFileSync(jsonrc, [
+  '{',
+    '// json overrides default',
+    '"option": false,',
+    '/* env overrides json */',
+    '"envOption": 24',
+  '}'
+].join('\n'));
+
+var commentedJSON = require('../')(n, {
+  option: true
+})
+
+fs.unlinkSync(jsonrc);
+
+console.log(commentedJSON)
+
+assert.equal(commentedJSON.option, false)
+assert.equal(commentedJSON.envOption, 42)
+
+assert.equal(commentedJSON.config, jsonrc)
+assert.equal(commentedJSON.configs.length, 1)
+assert.equal(commentedJSON.configs[0], jsonrc)
