aboutsummaryrefslogtreecommitdiff
path: root/csharp/src/ProtoGen.Test/TempFile.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/src/ProtoGen.Test/TempFile.cs')
-rw-r--r--csharp/src/ProtoGen.Test/TempFile.cs59
1 files changed, 59 insertions, 0 deletions
diff --git a/csharp/src/ProtoGen.Test/TempFile.cs b/csharp/src/ProtoGen.Test/TempFile.cs
new file mode 100644
index 00000000..74a183f5
--- /dev/null
+++ b/csharp/src/ProtoGen.Test/TempFile.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace Google.ProtocolBuffers.ProtoGen
+{
+ internal class ProtoFile : TempFile
+ {
+ public ProtoFile(string filename, string contents)
+ : base(filename, contents)
+ {
+ }
+ }
+
+ internal class TempFile : IDisposable
+ {
+ private string tempFile;
+
+ public static TempFile Attach(string path)
+ {
+ return new TempFile(path, null);
+ }
+
+ protected TempFile(string filename, string contents)
+ {
+ tempFile = filename;
+ if (contents != null)
+ {
+ File.WriteAllText(tempFile, contents, new UTF8Encoding(false));
+ }
+ }
+
+ public TempFile(string contents)
+ : this(Path.GetTempFileName(), contents)
+ {
+ }
+
+ public string TempPath
+ {
+ get { return tempFile; }
+ }
+
+ public void ChangeExtension(string ext)
+ {
+ string newFile = Path.ChangeExtension(tempFile, ext);
+ File.Move(tempFile, newFile);
+ tempFile = newFile;
+ }
+
+ public void Dispose()
+ {
+ if (File.Exists(tempFile))
+ {
+ File.Delete(tempFile);
+ }
+ }
+ }
+} \ No newline at end of file