Remove old testsuite
[dyninst.git] / newtestsuite / src / dyninst / test_pt_ls.C
1 /*
2  * Copyright (c) 1996-2004 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as "Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * This license is for research uses.  For such uses, there is no
12  * charge. We define "research use" to mean you may freely use it
13  * inside your organization for whatever purposes you see fit. But you
14  * may not re-distribute Paradyn or parts of Paradyn, in any form
15  * source or binary (including derivatives), electronic or otherwise,
16  * to any other organization or entity without our permission.
17  * 
18  * (for other uses, please contact us at paradyn@cs.wisc.edu)
19  * 
20  * All warranties, including without limitation, any warranty of
21  * merchantability or fitness for a particular purpose, are hereby
22  * excluded.
23  * 
24  * By your use of Paradyn, you understand and agree that we (or any
25  * other person or entity with proprietary rights in Paradyn) are
26  * under no obligation to provide either maintenance services,
27  * update services, notices of latent defects, or correction of
28  * defects for Paradyn.
29  * 
30  * Even if advised of the possibility of such damages, under no
31  * circumstances shall we (or any other person or entity with
32  * proprietary rights in the software licensed hereunder) be liable
33  * to you or any third party for direct, indirect, or consequential
34  * damages of any character regardless of type of action, including,
35  * without limitation, loss of profits, loss of use, loss of good
36  * will, or computer failure or malfunction.  You agree to indemnify
37  * us (and any other person or entity with proprietary rights in the
38  * software licensed hereunder) for any and all liability it may
39  * incur to third parties resulting from your use of Paradyn.
40  */
41
42 // $Id: test2_1.C,v 1.1 2008/10/30 19:20:09 legendre Exp $
43 /*
44  * #Name: test_pt_ls
45  * #Desc: Run parseThat on ls
46  * #Dep: 
47  * #Arch: all but windows
48  * #Notes:
49  */
50
51 #include "BPatch.h"
52 #include "BPatch_Vector.h"
53 #include "BPatch_thread.h"
54 #include "BPatch_snippet.h"
55
56 #include "test_lib.h"
57 #include "Callbacks.h"
58 #include "dyninst_comp.h"
59 #include "ParseThat.h"
60
61 class test_pt_ls_Mutator : public DyninstMutator 
62 {
63   virtual bool hasCustomExecutionPath() { return true; }
64
65   virtual test_results_t setup(ParameterDict &param)
66   {
67           runmode = (create_mode_t) param["useAttach"]->getInt();
68           return PASSED;
69   }
70
71   virtual test_results_t executeTest();
72 };
73
74 extern "C" DLLEXPORT TestMutator *test_pt_ls_factory() 
75 {
76   return new test_pt_ls_Mutator();
77 }
78
79 test_results_t test_pt_ls_Mutator::executeTest() 
80 {
81
82         std::string prefix = std::string(BINEDIT_DIR) + std::string("/test_pt_ls");
83         std::string bin_outfile;
84         ParseThat parseThat;
85         parseThat.pt_output_redirect(prefix + std::string("_output1"));
86         parseThat.cmd_stdout_redirect(prefix + std::string("_stdout1"));
87         parseThat.cmd_stderr_redirect(prefix + std::string("_stderr1"));
88
89         ParseThat parseThat2;
90         parseThat2.pt_output_redirect(prefix + std::string("_output2"));
91         parseThat2.cmd_stdout_redirect(prefix + std::string("_stdout2"));
92         parseThat2.cmd_stderr_redirect(prefix + std::string("_stderr2"));
93
94         switch (runmode)
95         {
96                 case CREATE:
97                         break;
98                 case USEATTACH:
99                         return SKIPPED;
100                 case DISK:
101                         bin_outfile = prefix + std::string("_mutatee_out");
102                         parseThat2.use_rewriter(bin_outfile);
103                         break;
104                 default:
105                         fprintf(stderr, "%s[%d]:  bad runmode %s\n", FILE__, __LINE__, runmode);
106                         return FAILED;
107         };
108
109         std::string cmd("/bin/ls");
110
111         std::vector<std::string> args;
112         args.push_back(std::string("/"));
113
114         test_results_t res = parseThat(cmd, args);
115
116         if (res != PASSED)
117                 return res;
118
119         if (runmode == DISK)
120                 res = parseThat2(cmd, args);
121
122         return res;
123 }
124