Ejemplo n.º 1
0
		/// <summary>
		/// Creates a project to wrap a list of assemblies
		/// </summary>
		public NUnitProject WrapAssemblies( string[] assemblies )
		{
			// if only one assembly is passed in then the configuration file
			// should follow the name of the assembly. This will only happen
			// if the LoadAssembly method is called. Currently the console ui
			// does not differentiate between having one or multiple assemblies
			// passed in.
			if ( assemblies.Length == 1)
				return WrapAssembly(assemblies[0]);


			NUnitProject project = Services.ProjectService.EmptyProject();
			ProjectConfig config = new ProjectConfig( "Default" );
			foreach( string assembly in assemblies )
			{
				string fullPath = Path.GetFullPath( assembly );

				if ( !File.Exists( fullPath ) )
					throw new FileNotFoundException( string.Format( "Assembly not found: {0}", fullPath ) );
				
				config.Assemblies.Add( fullPath );
			}

			project.Configs.Add( config );

			// TODO: Deduce application base, and provide a
			// better value for loadpath and project path
			// analagous to how new projects are handled
			string basePath = Path.GetDirectoryName( Path.GetFullPath( assemblies[0] ) );
			project.ProjectPath = Path.Combine( basePath, project.Name + ".nunit" );

			project.IsDirty = true;

			return project;
		}
Ejemplo n.º 2
0
		public AssemblyListItem( ProjectConfig config, string path, bool hasTests )
		{
			if ( !Path.IsPathRooted( path ) )
				throw new ArgumentException( "Assembly path must be absolute" );

			this.config = config;
			this.path = path;
			this.hasTests = hasTests;
		}
Ejemplo n.º 3
0
        private void configComboBox_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            selectedConfig = project.Configs[(string)configComboBox.SelectedItem];

            applicationBaseTextBox.Text = selectedConfig.RelativeBasePath;

            configFileTextBox.Text = selectedConfig.ConfigurationFile;

            switch ( selectedConfig.BinPathType )
            {
                case BinPathType.Auto:
                    autoBinPathRadioButton.Checked = true;
                    break;

                case BinPathType.Manual:
                    manualBinPathRadioButton.Checked = true;
                    privateBinPathTextBox.Text = selectedConfig.PrivateBinPath;
                    break;

                default:
                    noBinPathRadioButton.Checked = true;
                    break;
            }

            assemblyListBox_Populate();
        }
Ejemplo n.º 4
0
        public void SetActiveConfig( int index )
		{
			activeConfig = configs[index];
            HasChangesRequiringReload = IsDirty = true;
		}
Ejemplo n.º 5
0
		public void SetActiveConfig( string name )
		{
			foreach( ProjectConfig config in configs )
			{
				if ( config.Name == name )
				{
					activeConfig = config;
                    HasChangesRequiringReload = IsDirty = true;
                    break;
				}
			}
		}
Ejemplo n.º 6
0
 public void SetActiveConfig(int index)
 {
     activeConfig = configs[index];
     OnProjectChange(ProjectChangeType.ActiveConfig, activeConfig.Name);
 }
Ejemplo n.º 7
0
		public bool Contains( ProjectConfig config )
		{
			return InnerList.Contains( config );
		}
Ejemplo n.º 8
0
		public AssemblyList( ProjectConfig config )
		{
			this.config = config;
		}
Ejemplo n.º 9
0
        private void configComboBox_Populate()
        {
            configComboBox.Items.Clear();

            if ( selectedConfig == null )
                selectedConfig = project.ActiveConfig;

            int selectedIndex = -1;
            foreach( ProjectConfig config in project.Configs )
            {
                string name = config.Name;
                int index = configComboBox.Items.Add( name );
                if ( name == selectedConfig.Name )
                    selectedIndex = index;
            }

            if ( selectedIndex == -1 && configComboBox.Items.Count > 0 )
            {
                selectedIndex = 0;
                selectedConfig = project.Configs[0];
            }

            if ( selectedIndex == -1 )
                selectedConfig = null;
            else
                configComboBox.SelectedIndex = selectedIndex;

            addAssemblyButton.Enabled = removeAssemblyButton.Enabled = project.Configs.Count > 0;
        }
Ejemplo n.º 10
0
		public int IndexOf( ProjectConfig config )
		{
			return InnerList.IndexOf( config );
		}
Ejemplo n.º 11
0
        /// <summary>
        /// Creates a project to wrap an assembly
        /// </summary>
        public static NUnitProject FromAssembly( string assemblyPath )
        {
            if ( !File.Exists( assemblyPath ) )
                throw new FileNotFoundException( string.Format( "Assembly not found: {0}", assemblyPath ) );

            string fullPath = Path.GetFullPath( assemblyPath );

            NUnitProject project = new NUnitProject( fullPath );

            ProjectConfig config = new ProjectConfig( "Default" );
            config.Assemblies.Add( fullPath );
            project.Configs.Add( config );

            project.isAssemblyWrapper = true;
            project.IsDirty = false;

            return project;
        }
Ejemplo n.º 12
0
        protected override void OnRemoveComplete(int index, object obj)
        {
            ProjectConfig config = obj as ProjectConfig;

            this.project.OnProjectChange(ProjectChangeType.RemoveConfig, config.Name);
        }
Ejemplo n.º 13
0
        protected override void OnInsertComplete(int index, object obj)
        {
            ProjectConfig config = obj as ProjectConfig;

            project.OnProjectChange(ProjectChangeType.AddConfig, config.Name);
        }
Ejemplo n.º 14
0
 public bool Contains(ProjectConfig config)
 {
     return(InnerList.Contains(config));
 }
Ejemplo n.º 15
0
 public void Add(ProjectConfig config)
 {
     List.Add(config);
     config.Project  = this.project;
     config.Changed += new EventHandler(config_Changed);
 }
Ejemplo n.º 16
0
        private void config_Changed(object sender, EventArgs e)
        {
            ProjectConfig config = sender as ProjectConfig;

            project.OnProjectChange(ProjectChangeType.UpdateConfig, config.Name);
        }
		private void okButton_Click(object sender, System.EventArgs e)
		{
			configurationName = configurationNameTextBox.Text;

			if ( configurationName == string.Empty )
			{
				UserMessage.Display( "No configuration name provided", "Configuration Name Error" );
				return;
			}

			if ( project.Configs.Contains( configurationName ) )
			{
				// TODO: Need general error message display
				UserMessage.Display( "A configuration with that name already exists", "Configuration Name Error" );
				return;
			}

			// ToDo: Move more of this to project
			ProjectConfig newConfig = new ProjectConfig( configurationName );
				
			copyConfigurationName = null;
			if ( configurationComboBox.SelectedIndex > 0 )
			{		
				copyConfigurationName = (string)configurationComboBox.SelectedItem;
				ProjectConfig copyConfig = project.Configs[copyConfigurationName];
				if ( copyConfig != null )
					foreach( string assembly in copyConfig.Assemblies )
						newConfig.Assemblies.Add( assembly );
			}

			project.Configs.Add( newConfig );
			DialogResult = DialogResult.OK;

			Close();
		}
Ejemplo n.º 18
0
 public void SetActiveConfig( int index )
 {
     activeConfig = configs[index];
     OnProjectChange( ProjectChangeType.ActiveConfig, activeConfig.Name );
 }
Ejemplo n.º 19
0
		public void Remove( ProjectConfig config )
		{
			string name = config.Name;
			bool wasActive = name == this.Project.ActiveConfigName;
			List.Remove( config );
		}
Ejemplo n.º 20
0
        public void Load()
        {
            XmlTextReader reader = new XmlTextReader(projectPath);

            string        activeConfigName = null;
            ProjectConfig currentConfig    = null;

            try
            {
                reader.MoveToContent();
                if (reader.NodeType != XmlNodeType.Element || reader.Name != "NUnitProject")
                {
                    throw new ProjectFormatException(
                              "Invalid project format: <NUnitProject> expected.",
                              reader.LineNumber, reader.LinePosition);
                }

                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        switch (reader.Name)
                        {
                        case "Settings":
                            if (reader.NodeType == XmlNodeType.Element)
                            {
                                activeConfigName = reader.GetAttribute("activeconfig");
                                if (activeConfigName == "NUnitAutoConfig")
                                {
                                    activeConfigName = NUnitFramework.BuildConfiguration;
                                }
                                string appbase = reader.GetAttribute("appbase");
                                if (appbase != null)
                                {
                                    this.BasePath = appbase;
                                }
                            }
                            break;

                        case "Config":
                            if (reader.NodeType == XmlNodeType.Element)
                            {
                                string configName = reader.GetAttribute("name");
                                currentConfig                   = new ProjectConfig(configName);
                                currentConfig.BasePath          = reader.GetAttribute("appbase");
                                currentConfig.ConfigurationFile = reader.GetAttribute("configfile");

                                string binpath = reader.GetAttribute("binpath");
                                currentConfig.PrivateBinPath = binpath;
                                string type = reader.GetAttribute("binpathtype");
                                if (type == null)
                                {
                                    if (binpath == null)
                                    {
                                        currentConfig.BinPathType = BinPathType.Auto;
                                    }
                                    else
                                    {
                                        currentConfig.BinPathType = BinPathType.Manual;
                                    }
                                }
                                else
                                {
                                    currentConfig.BinPathType = (BinPathType)Enum.Parse(typeof(BinPathType), type, true);
                                }
                                Configs.Add(currentConfig);
                                if (configName == activeConfigName)
                                {
                                    activeConfig = currentConfig;
                                }
                            }
                            else if (reader.NodeType == XmlNodeType.EndElement)
                            {
                                currentConfig = null;
                            }
                            break;

                        case "assembly":
                            if (reader.NodeType == XmlNodeType.Element && currentConfig != null)
                            {
                                string path = reader.GetAttribute("path");
                                currentConfig.Assemblies.Add(
                                    Path.Combine(currentConfig.BasePath, path));
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }

                this.IsDirty = false;
            }
            catch (FileNotFoundException)
            {
                throw;
            }
            catch (XmlException e)
            {
                throw new ProjectFormatException(
                          string.Format("Invalid project format: {0}", e.Message),
                          e.LineNumber, e.LinePosition);
            }
            catch (Exception e)
            {
                throw new ProjectFormatException(
                          string.Format("Invalid project format: {0} Line {1}, Position {2}",
                                        e.Message, reader.LineNumber, reader.LinePosition),
                          reader.LineNumber, reader.LinePosition);
            }
            finally
            {
                reader.Close();
            }
        }
Ejemplo n.º 21
0
        public void Load()
        {
            XmlTextReader reader = new XmlTextReader( projectPath );

            string activeConfigName = null;
            ProjectConfig currentConfig = null;

            try
            {
                reader.MoveToContent();
                if ( reader.NodeType != XmlNodeType.Element || reader.Name != "NUnitProject" )
                    throw new ProjectFormatException(
                        "Invalid project format: <NUnitProject> expected.",
                        reader.LineNumber, reader.LinePosition );

                while( reader.Read() )
                    if ( reader.NodeType == XmlNodeType.Element )
                        switch( reader.Name )
                        {
                            case "Settings":
                                if ( reader.NodeType == XmlNodeType.Element )
                                {
                                    activeConfigName = reader.GetAttribute( "activeconfig" );
                                    if (activeConfigName == "NUnitAutoConfig")
                                        activeConfigName = NUnitFramework.BuildConfiguration;
                                    string appbase = reader.GetAttribute( "appbase" );
                                    if ( appbase != null )
                                        this.BasePath = appbase;
                                }
                                break;

                            case "Config":
                                if ( reader.NodeType == XmlNodeType.Element )
                                {
                                    string configName = reader.GetAttribute( "name" );
                                    currentConfig = new ProjectConfig( configName );
                                    currentConfig.BasePath = reader.GetAttribute( "appbase" );
                                    currentConfig.ConfigurationFile = reader.GetAttribute( "configfile" );

                                    string binpath = reader.GetAttribute( "binpath" );
                                    currentConfig.PrivateBinPath = binpath;
                                    string type = reader.GetAttribute( "binpathtype" );
                                    if ( type == null )
                                        if ( binpath == null )
                                            currentConfig.BinPathType = BinPathType.Auto;
                                        else
                                            currentConfig.BinPathType = BinPathType.Manual;
                                    else
                                        currentConfig.BinPathType = (BinPathType)Enum.Parse( typeof( BinPathType ), type, true );
                                    Configs.Add( currentConfig );
                                    if ( configName == activeConfigName )
                                        activeConfig = currentConfig;
                                }
                                else if ( reader.NodeType == XmlNodeType.EndElement )
                                    currentConfig = null;
                                break;

                            case "assembly":
                                if ( reader.NodeType == XmlNodeType.Element && currentConfig != null )
                                {
                                    string path = reader.GetAttribute( "path" );
                                    currentConfig.Assemblies.Add(
                                        Path.Combine( currentConfig.BasePath, path ) );
                                }
                                break;

                            default:
                                break;
                        }

                this.IsDirty = false;
            }
            catch( FileNotFoundException )
            {
                throw;
            }
            catch( XmlException e )
            {
                throw new ProjectFormatException(
                    string.Format( "Invalid project format: {0}", e.Message ),
                    e.LineNumber, e.LinePosition );
            }
            catch( Exception e )
            {
                throw new ProjectFormatException(
                    string.Format( "Invalid project format: {0} Line {1}, Position {2}",
                    e.Message, reader.LineNumber, reader.LinePosition ),
                    reader.LineNumber, reader.LinePosition );
            }
            finally
            {
                reader.Close();
            }
        }
		public void Add( ProjectConfig config )
		{
			List.Add( config );
			config.Project = this.project;
		}
Ejemplo n.º 23
0
 public void SetActiveConfig( string name )
 {
     foreach( ProjectConfig config in configs )
     {
         if ( config.Name == name )
         {
             activeConfig = config;
             OnProjectChange( ProjectChangeType.ActiveConfig, activeConfig.Name );
             break;
         }
     }
 }
Ejemplo n.º 24
0
		public void Add( ProjectConfig config )
		{
			List.Add( config );
			config.Project = this.project;
			config.Changed += new EventHandler(config_Changed);
		}
Ejemplo n.º 25
0
        private void configComboBox_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            selectedConfig = project.Configs[(string)configComboBox.SelectedItem];

            RuntimeFramework framework = selectedConfig.RuntimeFramework;

            RuntimeType runtime = RuntimeType.Any;
            Version version = RuntimeFramework.DefaultVersion;

            if (framework != null)
            {
                runtime = framework.Runtime;
                version = framework.ClrVersion;
            }

            int index = runtimeComboBox.FindStringExact(runtime.ToString(), 0);
            if ( index < 0 ) index = 0;
            runtimeComboBox.SelectedIndex = index;

            if (framework == null || framework.AllowAnyVersion)
                runtimeVersionComboBox.SelectedIndex = 0;
            else
                runtimeVersionComboBox.Text = version.ToString();

            applicationBaseTextBox.Text = selectedConfig.RelativeBasePath;

            configFileTextBox.Text = selectedConfig.ConfigurationFile;

            switch ( selectedConfig.BinPathType )
            {
                case BinPathType.Auto:
                    autoBinPathRadioButton.Checked = true;
                    break;

                case BinPathType.Manual:
                    manualBinPathRadioButton.Checked = true;
                    privateBinPathTextBox.Text = selectedConfig.PrivateBinPath;
                    break;

                default:
                    noBinPathRadioButton.Checked = true;
                    break;
            }

            assemblyListBox_Populate();
        }
Ejemplo n.º 26
0
 public void SetActiveConfig(int index)
 {
     activeConfig = configs[index];
     HasChangesRequiringReload = IsDirty = true;
 }