Warn about running npm in the repl
authorisaacs <i@izs.me>
Tue, 5 Jun 2012 19:02:37 +0000 (12:02 -0700)
committerisaacs <i@izs.me>
Tue, 5 Jun 2012 19:35:49 +0000 (12:35 -0700)
lib/repl.js
test/simple/test-repl.js

index 26f081ce2fba0105179c34ab2bbf448a18e4d7da..a78a467e657895df7086ffec728970f299efbc85 100644 (file)
@@ -280,6 +280,15 @@ function REPLServer(prompt, stream, eval, useGlobal, ignoreUndefined) {
 
       // If error was SyntaxError and not JSON.parse error
       if (isSyntaxError(e)) {
+        if (cmd.trim().match(/^npm /) && !self.bufferedCommand) {
+          self.outputStream.write('npm should be run outside of the ' +
+                                  'node repl, in your normal shell.\n' +
+                                  '(Press Control-D to exit.)\n');
+          self.bufferedCmd = '';
+          self.displayPrompt();
+          return;
+        }
+
         // Start buffering data like that:
         // {
         // ...  x: 1
index d61a8231dc024d939a04a98fa9a72b9b36694ccb..ae20a19f09eaabb96656a1bafe8a4725b1bb2c48 100644 (file)
@@ -30,6 +30,10 @@ var net = require('net'),
     prompt_unix = 'node via Unix socket> ',
     prompt_tcp = 'node via TCP socket> ',
     prompt_multiline = '... ',
+    prompt_npm = 'npm should be run outside of the ' +
+                 'node repl, in your normal shell.\n' +
+                 '(Press Control-D to exit.)\n',
+    expect_npm = prompt_npm + prompt_unix,
     server_tcp, server_unix, client_tcp, client_unix, timer;
 
 
@@ -76,8 +80,11 @@ function error_test() {
                   JSON.stringify(client_unix.expect)));
 
     if (read_buffer.indexOf(prompt_unix) !== -1) {
-      assert.ok(read_buffer.match(client_unix.expect));
-      common.error('match');
+      // if it's an exact match, then don't do the regexp
+      if (read_buffer !== client_unix.expect) {
+        assert.ok(read_buffer.match(client_unix.expect));
+        common.error('match');
+      }
       read_buffer = '';
       if (client_unix.list && client_unix.list.length > 0) {
         send_expect(client_unix.list);
@@ -140,7 +147,10 @@ function error_test() {
     { client: client_unix, send: 'return 1;',
       expect: prompt_multiline },
     { client: client_unix, send: '})()',
-      expect: '1' }
+      expect: '1' },
+    // npm prompt error message
+    { client: client_unix, send: 'npm install foobar',
+      expect: expect_npm }
   ]);
 }