public void SerializeDirectoryPackageRepository() { // just make shure test works on different platforms string reppath = Path.GetTempPath(); string reppathuri = (new Uri(reppath)).AbsoluteUri; // here comes the test DirectoryPackageRepository repository = new DirectoryPackageRepository("myrep", reppath); string repositorystring = WaldiSerializer.Serialize(repository); string expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<DirectoryPackageRepository xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Name>myrep</Name>\r\n <PackageDir>" + reppathuri + "</PackageDir>\r\n</DirectoryPackageRepository>"; Assert.AreEqual(expected, repositorystring); }
public void SerializeFeature() { Feature feature = new Feature("myfeature1") { Description = "mydescription", Url = "http://myurl.test/", Enabled = true }; string featurestring = WaldiSerializer.Serialize(feature); string expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Feature xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Name>myfeature1</Name>\r\n <Description>mydescription</Description>\r\n <Url>http://myurl.test/</Url>\r\n <Enabled>true</Enabled>\r\n</Feature>"; Assert.AreEqual(expected, featurestring); }
public void DeserializeDirectoryPackageRepositoryLocalUri() { string repositorystring = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<DirectoryPackageRepository xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Name>myrep</Name>\r\n <PackageDir>file://~/packages/</PackageDir>\r\n</DirectoryPackageRepository>"; string packagedir = Path.Combine(Directory.GetCurrentDirectory(), "packages"); if (!Directory.Exists(packagedir)) { Directory.CreateDirectory(packagedir); } DirectoryPackageRepository repository = WaldiSerializer.DeserializePackageRepository(repositorystring) as DirectoryPackageRepository; DirectoryPackageRepository expected = new DirectoryPackageRepository("myrep", packagedir); Assert.AreEqual(expected, repository); }
public void DeserializeMultiPackageRepository() { // just make shure test works on different platforms string reppath = Path.GetTempPath(); string reppathuri = (new Uri(reppath)).AbsoluteUri; // here comes the test string repositorystring = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<MultiPackageRepository xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Name>myrep</Name>\r\n <Repositories>\r\n <DirectoryPackageRepository>\r\n <Name>myrep1</Name>\r\n <PackageDir>" + reppathuri + "</PackageDir>\r\n </DirectoryPackageRepository>\r\n <DirectoryPackageRepository>\r\n <Name>myrep2</Name>\r\n <PackageDir>" + reppathuri + "</PackageDir>\r\n </DirectoryPackageRepository>\r\n </Repositories>\r\n</MultiPackageRepository>"; MultiPackageRepository repository = WaldiSerializer.DeserializePackageRepository(repositorystring) as MultiPackageRepository; DirectoryPackageRepository expected1 = new DirectoryPackageRepository("myrep1", reppath); DirectoryPackageRepository expected2 = new DirectoryPackageRepository("myrep2", reppath); MultiPackageRepository expected = new MultiPackageRepository("myrep", expected1, expected2); Assert.AreEqual(expected, repository); }
public void DeserializePackage() { string packagestring = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Package xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Name>mypackage1</Name>\r\n <Description>mydescription</Description>\r\n <Url>http://myurl.test/</Url>\r\n <IsMaster>true</IsMaster>\r\n <Versions>\r\n <Version>\r\n <Name>1.0</Name>\r\n </Version>\r\n <Version>\r\n <Name>2.3</Name>\r\n </Version>\r\n <Version>\r\n <Name>2.4</Name>\r\n </Version>\r\n </Versions>\r\n <Dependencies>\r\n <Dependency>\r\n <Name>mypackage2.myfeature1</Name>\r\n <Version>\r\n <Name>*</Name>\r\n </Version>\r\n <IsOptional>false</IsOptional>\r\n </Dependency>\r\n <Dependency>\r\n <Name>mypackage2.myfeature2</Name>\r\n <Version>\r\n <Name>*</Name>\r\n </Version>\r\n <IsOptional>false</IsOptional>\r\n </Dependency>\r\n <Dependency>\r\n <Name>mypackage3.myfeature1</Name>\r\n <Version>\r\n <Name>*</Name>\r\n </Version>\r\n <IsOptional>false</IsOptional>\r\n </Dependency>\r\n </Dependencies>\r\n <SelectedVersion>\r\n <Name>2.4</Name>\r\n </SelectedVersion>\r\n <Features>\r\n <Feature>\r\n <Name>myfeature1</Name>\r\n <Enabled>false</Enabled>\r\n </Feature>\r\n <Feature>\r\n <Name>myfeature2</Name>\r\n <Enabled>false</Enabled>\r\n </Feature>\r\n </Features>\r\n</Package>"; IPackage package = WaldiSerializer.DeserializePackage(packagestring); BasicPackage expected = new BasicPackage("mypackage1") { Description = "mydescription", Url = "http://myurl.test/", IsMaster = true, SelectedVersion = new PackageVersion("2.4") }; expected.Versions.Add(new PackageVersion("1.0")); expected.Versions.Add(new PackageVersion("2.3")); expected.Versions.Add(new PackageVersion("2.4")); expected.Dependencies.Add(new Dependency("mypackage2.myfeature1")); expected.Dependencies.Add(new Dependency("mypackage2.myfeature2")); expected.Dependencies.Add(new Dependency("mypackage3.myfeature1")); expected.Features.Add(new Feature("myfeature1")); expected.Features.Add(new Feature("myfeature2")); Assert.AreEqual(expected as IPackage, package as IPackage); }
public static void Load() { string configpath = IO.Path.Combine(Environment.CurrentDirectory, "waldiconfig.xml"); if (!IO.File.Exists(configpath)) { throw new ConfigException("Could not find configuration file in current directory."); } WaldiSerializer.MapType(typeof(ConfigDtoDto), typeof(ConfigDto)); ConfigDto serobj; try { string serstr = System.IO.File.ReadAllText(configpath); serobj = WaldiSerializer.Deserialize(serstr, typeof(ConfigDto), typeof(ConfigDtoDto)) as ConfigDto; } catch (Exception ex) { throw new ConfigException("Could load config from configuration file in current directory.", ex); } Config.LocalRepository = serobj.LocalRepository; Config.RemoteRepository = serobj.RemoteRepository; }
public void AddPackage(IPackage pkg, string pathtosourcedir) { if (pkg == null) { throw new ArgumentNullException("pkg"); } if (this.GetPackage(pkg.Name) != null) { throw new ArgumentException("A package named " + pkg.Name + " already exists.", "pkgname"); } DirectoryInfo sourcedir = new DirectoryInfo(pathtosourcedir); if (!sourcedir.Exists) { throw new DirectoryNotFoundException(); } string pkgdirpath = Path.Combine(this.PackageDir.FullName, pkg.Name); DirectoryInfo destdir = new DirectoryInfo(pkgdirpath); if (!destdir.Exists) { destdir.Create(); } if (!destdir.IsEmpty()) { throw new PackageIoException("New package directory is not empty: " + destdir.Name); } sourcedir.CopyTo(destdir.FullName, true); // create package definition file string pkgdefpath = Path.Combine(destdir.FullName, "package.wpdef"); using (Stream str = System.IO.File.OpenWrite(pkgdefpath)) { WaldiSerializer.Serialize(pkg, str); } }
protected IPackage ReadPackageDir(DirectoryInfo dir) { if (!dir.Exists) { throw new PackageIoException("Package directory for package " + dir.Name + " does not exist."); } FileInfo definitionfile = new FileInfo(Path.Combine(dir.FullName, "package.wpdef")); if (definitionfile.Exists) { using (StreamReader stream = new StreamReader(definitionfile.FullName)) { try { return(WaldiSerializer.DeserializePackage(stream)); } catch (Exception ex) { throw new PackageIoException("Could not read package definition for package " + dir.Name + ".", dir.Name, ex); } } } return(null); }