Remove 2nd line from failure

In an attempt to provide more detailed information to the end-user, we
caused tests to fail [they parse the output of the 'pm' command]. Remove
the 2nd line of the output that was causing the failure.

Also took the opportunity to merge changes from the Pm command to the
Cmd command.

Bug: 26131598
Change-Id: I459f9ec8978d87dd571136222f780039e426474e
This commit is contained in:
Todd Kennedy
2015-12-16 13:47:14 -08:00
parent 0550f1b804
commit 8d9366cfe9
2 changed files with 41 additions and 26 deletions

View File

@@ -376,6 +376,7 @@ public final class Pm {
!= PackageInstaller.STATUS_SUCCESS) {
return 1;
}
System.out.println("Success");
return 0;
} finally {
try {
@@ -591,7 +592,6 @@ public final class Pm {
} else {
System.err.println("Failure ["
+ result.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE) + "]");
System.err.println("Failure details: " + result.getExtras());
}
return status;
} finally {

View File

@@ -46,7 +46,6 @@ import android.os.RemoteException;
import android.os.ShellCommand;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.PrintWriterPrinter;
import com.android.internal.util.SizedInputStream;
@@ -127,19 +126,30 @@ class PackageManagerShellCommand extends ShellCommand {
final InstallParams params = makeInstallParams();
final int sessionId = doCreateSession(params.sessionParams,
params.installerPackageName, params.userId);
final String inPath = getNextArg();
if (inPath == null && params.sessionParams.sizeBytes == 0) {
pw.println("Error: must either specify a package size or an APK file");
return 1;
boolean abandonSession = true;
try {
final String inPath = getNextArg();
if (inPath == null && params.sessionParams.sizeBytes == 0) {
pw.println("Error: must either specify a package size or an APK file");
return 1;
}
if (doWriteSession(sessionId, inPath, params.sessionParams.sizeBytes, "base.apk",
false /*logSuccess*/) != PackageInstaller.STATUS_SUCCESS) {
return 1;
}
if (doCommitSession(sessionId, false /*logSuccess*/) != PackageInstaller.STATUS_SUCCESS) {
return 1;
}
abandonSession = false;
return 0;
} finally {
if (abandonSession) {
try {
doAbandonSession(sessionId, false /*logSuccess*/);
} catch (Exception ignore) {
}
}
}
if (doWriteSession(sessionId, inPath, params.sessionParams.sizeBytes, "base.apk") != 0) {
return 1;
}
if (doCommitSession(sessionId) != 0) {
return 1;
}
return 0;
}
private int runSuspend(boolean suspendedState) {
@@ -179,12 +189,12 @@ class PackageManagerShellCommand extends ShellCommand {
private int runInstallAbandon() throws RemoteException {
final int sessionId = Integer.parseInt(getNextArg());
return doAbandonSession(sessionId);
return doAbandonSession(sessionId, true /*logSuccess*/);
}
private int runInstallCommit() throws RemoteException {
final int sessionId = Integer.parseInt(getNextArg());
return doCommitSession(sessionId);
return doCommitSession(sessionId, true /*logSuccess*/);
}
private int runInstallCreate() throws RemoteException {
@@ -213,7 +223,7 @@ class PackageManagerShellCommand extends ShellCommand {
final int sessionId = Integer.parseInt(getNextArg());
final String splitName = getNextArg();
final String path = getNextArg();
return doWriteSession(sessionId, path, sizeBytes, splitName);
return doWriteSession(sessionId, path, sizeBytes, splitName, true /*logSuccess*/);
}
private int runList() throws RemoteException {
@@ -559,7 +569,7 @@ class PackageManagerShellCommand extends ShellCommand {
} else {
final PackageInfo info = mInterface.getPackageInfo(packageName, 0, userId);
if (info == null) {
pw.println("Failure - not installed for " + userId);
pw.println("Failure [not installed for " + userId + "]");
return 1;
}
final boolean isSystem =
@@ -828,8 +838,8 @@ class PackageManagerShellCommand extends ShellCommand {
return sessionId;
}
private int doWriteSession(int sessionId, String inPath, long sizeBytes, String splitName)
throws RemoteException {
private int doWriteSession(int sessionId, String inPath, long sizeBytes, String splitName,
boolean logSuccess) throws RemoteException {
final PrintWriter pw = getOutPrintWriter();
if ("-".equals(inPath)) {
inPath = null;
@@ -870,7 +880,9 @@ class PackageManagerShellCommand extends ShellCommand {
}
session.fsync(out);
pw.println("Success: streamed " + total + " bytes");
if (logSuccess) {
pw.println("Success: streamed " + total + " bytes");
}
return 0;
} catch (IOException e) {
pw.println("Error: failed to write; " + e.getMessage());
@@ -882,7 +894,7 @@ class PackageManagerShellCommand extends ShellCommand {
}
}
private int doCommitSession(int sessionId) throws RemoteException {
private int doCommitSession(int sessionId, boolean logSuccess) throws RemoteException {
final PrintWriter pw = getOutPrintWriter();
PackageInstaller.Session session = null;
try {
@@ -896,11 +908,12 @@ class PackageManagerShellCommand extends ShellCommand {
final int status = result.getIntExtra(PackageInstaller.EXTRA_STATUS,
PackageInstaller.STATUS_FAILURE);
if (status == PackageInstaller.STATUS_SUCCESS) {
pw.println("Success");
if (logSuccess) {
System.out.println("Success");
}
} else {
pw.println("Failure ["
+ result.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE) + "]");
pw.println("Failure details: " + result.getExtras());
}
return status;
} finally {
@@ -908,14 +921,16 @@ class PackageManagerShellCommand extends ShellCommand {
}
}
private int doAbandonSession(int sessionId) throws RemoteException {
private int doAbandonSession(int sessionId, boolean logSuccess) throws RemoteException {
final PrintWriter pw = getOutPrintWriter();
PackageInstaller.Session session = null;
try {
session = new PackageInstaller.Session(
mInterface.getPackageInstaller().openSession(sessionId));
session.abandon();
pw.println("Success");
if (logSuccess) {
pw.println("Success");
}
return 0;
} finally {
IoUtils.closeQuietly(session);