fix quoting issues in the comman-building chain
[tests.git] / system / TestSsh.py
index 81b7fe8..e07d97e 100644 (file)
@@ -77,7 +77,7 @@ class TestSsh:
             return "%s@%s"%(self.username,self.hostname)
     
     # command gets run on the right box
-    def actual_command (self, command, keep_stdin=False, dry_run=False):
+    def actual_command (self, command, keep_stdin=False, dry_run=False,backslash=True):
         if self.is_local():
             return command
         ssh_command = "ssh "
@@ -87,7 +87,11 @@ class TestSsh:
             ssh_command += TestSsh.std_options
             if self.unknown_host: ssh_command += TestSsh.unknown_option
         ssh_command += self.key_part()
-        ssh_command += "%s %s" %(self.hostname_part(),TestSsh.backslash_shell_specials(command))
+        ssh_command += self.hostname_part() + " "
+        if backslash:
+            ssh_command += TestSsh.backslash_shell_specials(command)
+        else:
+            ssh_command += command
         return ssh_command
 
     # same in argv form
@@ -170,7 +174,7 @@ class TestSsh:
     def copy (self,local_file,recursive=False,dry_run=False):
         if self.is_local():
             return 0
-        self.create_buildname_once()
+        self.create_buildname_once(dry_run)
         scp_command="scp "
         if not dry_run:
             scp_command += TestSsh.std_options
@@ -198,14 +202,15 @@ class TestSsh:
     def copy_home (self, local_file, recursive=False):
         return self.copy_abs(local_file,os.path.basename(local_file),recursive)
 
-    def fetch (self, remote_file, local_file, recursive=False):
+    def fetch (self, remote_file, local_file, recursive=False, dry_run=False):
         if self.is_local():
             command="cp "
             if recursive: command += "-r "
             command += "%s %s"%(remote_file,local_file)
         else:
             command="scp "
-            command += TestSsh.std_options
+            if not dry_run:
+                command += TestSsh.std_options
             if recursive: command += "-r "
             command += self.key_part()
             # absolute path - do not preprend buildname
@@ -213,6 +218,7 @@ class TestSsh:
                 remote_path=remote_file
             else:
                 remote_path="%s/%s"%(self.buildname,remote_file)
+                remote_path=self.fullname(remote_path)
             command += "%s:%s %s"%(self.hostname_part(),remote_path,local_file)
         return utils.system(command)