diff options
Diffstat (limited to 'tests/src/com/cyanogenmod/filemanager/commands/shell/ExecCommandTest.java')
| -rw-r--r-- | tests/src/com/cyanogenmod/filemanager/commands/shell/ExecCommandTest.java | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/src/com/cyanogenmod/filemanager/commands/shell/ExecCommandTest.java b/tests/src/com/cyanogenmod/filemanager/commands/shell/ExecCommandTest.java new file mode 100644 index 0000000..7cfd096 --- /dev/null +++ b/tests/src/com/cyanogenmod/filemanager/commands/shell/ExecCommandTest.java @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2012 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.cyanogenmod.filemanager.commands.shell; + +import java.io.OutputStream; + +import android.os.Environment; +import android.test.suitebuilder.annotation.MediumTest; + +import com.cyanogenmod.filemanager.commands.AsyncResultListener; +import com.cyanogenmod.filemanager.commands.WriteExecutable; +import com.cyanogenmod.filemanager.model.Permissions; +import com.cyanogenmod.filemanager.util.CommandHelper; + +/** + * A class for testing exec command. + * + * @see ExecCommand + */ +public class ExecCommandTest extends AbstractConsoleTest { + + private static final String EXEC_CMD = + Environment.getDataDirectory().getAbsolutePath() + "/source.sh"; //$NON-NLS-1$ + private static final String EXEC_PROGRAM = + "#!/system/bin/sh\necho \"List of files:\"\nls -la\n"; //$NON-NLS-1$ + private static final String EXEC_CMD_PERMISSIONS = "0755"; //$NON-NLS-1$ + + /** + * @hide + */ + final Object mSync = new Object(); + /** + * @hide + */ + boolean mNewPartialData; + + /** + * {@inheritDoc} + */ + @Override + public boolean isRootConsoleNeeded() { + return true; + } + + /** + * Method that performs a test over known executable program. + * + * @throws Exception If test failed + */ + @MediumTest + public void testExecWithPartialResult() throws Exception { + try { + // Create the test program + WriteExecutable writeCmd = + CommandHelper.write(getContext(), EXEC_CMD, null, getConsole()); + OutputStream os = writeCmd.createOutputStream(); + os.write(EXEC_PROGRAM.getBytes()); + writeCmd.end(); + + // Enable execute permission + CommandHelper.changePermissions( + getContext(), + EXEC_CMD, + Permissions.fromOctalString(EXEC_CMD_PERMISSIONS), + getConsole()); + + // Execute the test program + this.mNewPartialData = false; + CommandHelper.exec(getContext(), EXEC_CMD, new AsyncResultListener() { + public void onAsyncStart() { + /**NON BLOCK**/ + } + public void onAsyncEnd(boolean cancelled) { + synchronized (ExecCommandTest.this.mSync) { + ExecCommandTest.this.mSync.notify(); + } + } + public void onAsyncExitCode(int exitCode) { + /**NON BLOCK**/ + } + public void onException(Exception cause) { + fail(String.valueOf(cause)); + } + public void onPartialResult(Object results) { + ExecCommandTest.this.mNewPartialData = true; + } + }, getConsole()); + synchronized (ExecCommandTest.this.mSync) { + ExecCommandTest.this.mSync.wait(15000L); + } + assertTrue("no new partial data", this.mNewPartialData); //$NON-NLS-1$ + + } finally { + try { + CommandHelper.deleteFile(getContext(), EXEC_CMD, getConsole()); + } catch (Exception e) {/**NON BLOCK**/} + } + } + +} |
