Author: gert
Date: 2007-10-15 14:21:27 -0400 (Mon, 15 Oct 2007)
New Revision: 87528

Added:
   trunk/gert/standalone/bug333985/
   trunk/gert/standalone/bug333985/default.build
   trunk/gert/standalone/bug333985/test.cs
Log:
Added test for bug #333985.


Added: trunk/gert/standalone/bug333985/default.build
===================================================================
--- trunk/gert/standalone/bug333985/default.build       2007-10-15 18:06:04 UTC 
(rev 87527)
+++ trunk/gert/standalone/bug333985/default.build       2007-10-15 18:21:27 UTC 
(rev 87528)
@@ -0,0 +1,53 @@
+<project name="bug333985" default="rebuild">
+       <target name="mono-2.0">
+               <property name="csc.defines" 
value="NET_1_0,NET_1_1,NET_2_0,ONLY_2_0,MONO" />
+       </target>
+
+       <target name="net-2.0">
+               <property name="csc.defines" 
value="NET_1_0,NET_1_1,NET_2_0,ONLY_2_0" />
+       </target>
+
+       <property name="frameworks" value="mono-2.0,net-2.0" />
+
+       <target name="clean">
+               <delete>
+                       <fileset>
+                               <include name="out" />
+                               <include name="test.exe" />
+                       </fileset>
+               </delete>
+       </target>
+
+       <target name="build">
+               <property name="original.targetframework" 
value="${nant.settings.currentframework}" />
+
+               <foreach property="framework" item="String" in="${frameworks}" 
delim=",">
+                       <if test="${framework::exists(framework)}">
+                               <property name="nant.settings.currentframework" 
value="${framework}" />
+                               <call 
target="${nant.settings.currentframework}" />
+                               <call target="run" />
+                               <call target="clean" />
+                       </if>
+               </foreach>
+
+               <property name="nant.settings.currentframework" 
value="${original.targetframework}" />
+       </target>
+
+       <target name="compile">
+               <csc target="exe" output="test.exe" warnaserror="true" 
warninglevel="4">
+                       <sources>
+                               <include name="test.cs" />
+                       </sources>
+                       <references>
+                               <include name="System.Data.dll" />
+                       </references>
+               </csc>
+       </target>
+
+       <target name="run" depends="compile">
+               <exec program="test.exe" managed="true" output="out" />
+               <fail if="${file::exists('out')}" />
+       </target>
+
+       <target name="rebuild" depends="clean, build" />
+</project>


Property changes on: trunk/gert/standalone/bug333985/default.build
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/gert/standalone/bug333985/test.cs
===================================================================
--- trunk/gert/standalone/bug333985/test.cs     2007-10-15 18:06:04 UTC (rev 
87527)
+++ trunk/gert/standalone/bug333985/test.cs     2007-10-15 18:21:27 UTC (rev 
87528)
@@ -0,0 +1,104 @@
+using System;
+using System.IO;
+using System.Net;
+using System.Text;
+
+class Program
+{
+       static void Main ()
+       {
+               string url = "ftp://users.telenet.be/mono/"; +
+                       Guid.NewGuid ().ToString ("N") + ".tmp";
+
+               UploadFile (url);
+               DownloadFile (url);
+               DeleteFile (url);
+               DeleteFile_NonExisting (url);
+       }
+
+       static void UploadFile (string url)
+       {
+               FtpWebRequest req = (FtpWebRequest) WebRequest.Create (url);
+               req.Credentials = GetCredentials ();
+               req.Method = WebRequestMethods.Ftp.UploadFile;
+
+               Stream rs = req.GetRequestStream ();
+
+               using (StreamWriter sw = new StreamWriter (rs, Encoding.UTF8)) {
+                       sw.WriteLine ("Standalone test for Mono's 
FtpWebRequest.");
+                       sw.WriteLine ("Working gr�at!");
+                       sw.Flush ();
+               }
+               rs.Close ();
+       }
+
+       static void DownloadFile (string url)
+       {
+               string expected = "Standalone test for Mono's FtpWebRequest."
+                       + Environment.NewLine + "Working gr�at!"
+                       + Environment.NewLine;
+
+               FtpWebRequest req = (FtpWebRequest) WebRequest.Create (url);
+               req.Credentials = GetCredentials ();
+               req.Method = WebRequestMethods.Ftp.DownloadFile;
+
+               FtpWebResponse resp = (FtpWebResponse) req.GetResponse ();
+               Stream rs = resp.GetResponseStream ();
+               using (StreamReader sr = new StreamReader (rs, Encoding.UTF8, 
true)) {
+                       string content = sr.ReadToEnd ();
+                       if (content != expected)
+                               throw new Exception ("#1:" + content);
+               }
+               rs.Close ();
+       }
+
+       static void DeleteFile (string url)
+       {
+               FtpWebRequest req = (FtpWebRequest) WebRequest.Create (url);
+               req.Credentials = GetCredentials ();
+               req.Method = WebRequestMethods.Ftp.DeleteFile;
+
+               FtpWebResponse resp = (FtpWebResponse) req.GetResponse ();
+               try {
+                       if (resp.StatusCode != FtpStatusCode.FileActionOK)
+                               throw new Exception ("#1:" 
+resp.StatusCode.ToString ());
+               } finally {
+                       resp.Close ();
+               }
+       }
+
+       static void DeleteFile_NonExisting (string url)
+       {
+               FtpWebRequest req = (FtpWebRequest) WebRequest.Create (url);
+               req.Credentials = GetCredentials ();
+               req.Method = WebRequestMethods.Ftp.DeleteFile;
+
+               try {
+                       req.GetResponse ();
+                       throw new Exception ("#1");
+               } catch (WebException ex) {
+                       FtpWebResponse resp = ex.Response as FtpWebResponse;
+                       if (resp == null)
+                               throw new Exception ("#2");
+                       if (resp.StatusCode != 
FtpStatusCode.ActionNotTakenFileUnavailable)
+                               throw new Exception ("#3:" + resp.StatusCode);
+               }
+       }
+
+       static NetworkCredential GetCredentials ()
+       {
+               string userName = Environment.GetEnvironmentVariable 
("MONO_TESTS_FTP_USER");
+               if (userName == null)
+                       throw CreateEnvironmentVariableNotSetException 
("MONO_TESTS_FTP_USER");
+
+               string pwd = Environment.GetEnvironmentVariable 
("MONO_TESTS_FTP_PWD");
+               if (pwd == null)
+                       throw CreateEnvironmentVariableNotSetException 
("MONO_TESTS_FTP_PWD");
+               return new NetworkCredential (userName, pwd);
+       }
+
+       static ArgumentException CreateEnvironmentVariableNotSetException 
(string name)
+       {
+               return new ArgumentException ("The " + name + " environment 
variable is not set");
+       }
+}


Property changes on: trunk/gert/standalone/bug333985/test.cs
___________________________________________________________________
Name: svn:eol-style
   + native

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to