public void executeCommand_givenEnvironmentVariable_echoThatEnvVar() {
   env.put("SHELL_EXECUTOR", "foo");
   String[] command = new String[] {"sh", "-c", "echo ${SHELL_EXECUTOR}"};
   shellExecutor.executeCommand(env, asList(command));
   List<String> out = shellExecutor.getStdOut();
   assertEquals(1, out.size());
   assertEquals("foo", out.get(0));
 }
 private void getFileNamePosition() {
   iNamePosition = 0;
   if (iShellExecutor.execute("ls -ld /")) {
     List<String> output = iShellExecutor.getStandardOutput();
     if ((output != null) && (output.size() == 1))
       iNamePosition = output.get(0).split("[ \t]+").length;
   }
 }
 public boolean isFolder(String pathname) {
   if (iShellExecutor.execute("ls -ld " + pathname)) {
     List<String> output = iShellExecutor.getStandardOutput();
     if ((output != null) && (output.size() == 1)) {
       if (output.get(0).startsWith("d")) return true;
     }
   }
   return false;
 }
 public void onResume() {
   super.onResume();
   if (!iInitialized) {
     iInitialized = true;
     iShellExecutor.beginSession();
     getFileNamePosition();
     showDirectoryContents(iCurrentPath);
   }
 }
  private int _showDirectoryContents() {
    // Obtenemos los ficheros del directorio recibido como parámetro.

    if (iShellExecutor.execute("ls -l " + iLoadingPathname + "/")) {
      List<String> output = iShellExecutor.getStandardOutput();
      if (output == null) {
        // No podemos visualizar el mensaje de error aquí.
        // Sólo en el flujo principal...

        return 1;
      }

      // Mostramos el contenido.
      // Mostraremos los directorios siempre y los ficheros sólo si "iShowPlainFiles" es true
      // (es decir, si no estamos en la pantalla de selección del directorio raíz)...

      iChilds.clear();
      for (String line : output) {
        MyFile child = new MyFile(line);
        if ((iShowPlainFiles) || (child.isDirectory())) iChilds.add(child);
      }

      // Ordenamos la lista de ficheros.
      // teniendo en cuenta cómo quiere verlos el usuario (si primero los directorios o no)...

      if (PreferenceManager.getDefaultSharedPreferences(this)
          .getBoolean("list_folders_first", true)) {
        Collections.sort(iChilds, iComparatorFoldersUp);
        iFoldersUp = true;
      } else {
        Collections.sort(iChilds, iComparatorFoldersNotUp);
        iFoldersUp = false;
      }
    }

    // Devolvemos 0 para indicar que el directorio debe visualizarse...

    return 0;
  }
  public void onDestroy() {
    // Como siempre, llamamos a la superclase. En este caso no es necesario
    // que sea la primera sentencia del procedimiento.

    super.onDestroy();

    // Finalizamos la sesión de shell

    iShellExecutor.closeSession();

    // Mensaje al log.

    Log.d(TAG, "Main class destroyed");
  }