Search Results

Search found 29195 results on 1168 pages for 'test explorer'.

Page 32/1168 | < Previous Page | 28 29 30 31 32 33 34 35 36 37 38 39  | Next Page >

  • Templated function with two type parameters fails compile when used with an error-checking macro

    - by SirPentor
    Because someone in our group hates exceptions (let's not discuss that here), we tend to use error-checking macros in our C++ projects. I have encountered an odd compilation failure when using a templated function with two type parameters. There are a few errors (below), but I think the root cause is a warning: warning C4002: too many actual parameters for macro 'BOOL_CHECK_BOOL_RETURN' Probably best explained in code: #include "stdafx.h" template<class A, class B> bool DoubleTemplated(B & value) { return true; } template<class A> bool SingleTemplated(A & value) { return true; } bool NotTemplated(bool & value) { return true; } #define BOOL_CHECK_BOOL_RETURN(expr) \ do \ { \ bool __b = (expr); \ if (!__b) \ { \ return false; \ } \ } while (false) \ bool call() { bool thing = true; // BOOL_CHECK_BOOL_RETURN(DoubleTemplated<int, bool>(thing)); // Above line doesn't compile. BOOL_CHECK_BOOL_RETURN((DoubleTemplated<int, bool>(thing))); // Above line compiles just fine. bool temp = DoubleTemplated<int, bool>(thing); // Above line compiles just fine. BOOL_CHECK_BOOL_RETURN(SingleTemplated<bool>(thing)); BOOL_CHECK_BOOL_RETURN(NotTemplated(thing)); return true; } int _tmain(int argc, _TCHAR* argv[]) { call(); return 0; } Here are the errors, when the offending line is not commented out: 1>------ Build started: Project: test, Configuration: Debug Win32 ------ 1>Compiling... 1>test.cpp 1>c:\junk\temp\test\test\test.cpp(38) : warning C4002: too many actual parameters for macro 'BOOL_CHECK_BOOL_RETURN' 1>c:\junk\temp\test\test\test.cpp(38) : error C2143: syntax error : missing ',' before ')' 1>c:\junk\temp\test\test\test.cpp(38) : error C2143: syntax error : missing ';' before '{' 1>c:\junk\temp\test\test\test.cpp(41) : error C2143: syntax error : missing ';' before '{' 1>c:\junk\temp\test\test\test.cpp(48) : error C2143: syntax error : missing ';' before '{' 1>c:\junk\temp\test\test\test.cpp(49) : error C2143: syntax error : missing ';' before '{' 1>c:\junk\temp\test\test\test.cpp(52) : error C2143: syntax error : missing ';' before '}' 1>c:\junk\temp\test\test\test.cpp(54) : error C2065: 'argv' : undeclared identifier 1>c:\junk\temp\test\test\test.cpp(54) : error C2059: syntax error : ']' 1>c:\junk\temp\test\test\test.cpp(55) : error C2143: syntax error : missing ';' before '{' 1>c:\junk\temp\test\test\test.cpp(58) : error C2143: syntax error : missing ';' before '}' 1>c:\junk\temp\test\test\test.cpp(60) : error C2143: syntax error : missing ';' before '}' 1>c:\junk\temp\test\test\test.cpp(60) : fatal error C1004: unexpected end-of-file found 1>Build log was saved at "file://c:\junk\temp\test\test\Debug\BuildLog.htm" 1>test - 12 error(s), 1 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Any ideas? Thanks!

    Read the article

  • How does Windows decide which icon format to display when showing an exe's icon in Windows Explorer?

    - by Malcolm
    How does Windows decide which icon format to display when showing an exe's icon in Windows Explorer? Problem: When we look at our icon file and exe with embedded icon file in various Windows Explorer file views, the icon file is displayed in a higher quality mode than the icon displayed for our executable even though the icon in our executable contains the exact same icon. Our exe's icon has jaggier edges which leads me to believe that Windows Explorer may be trying to upsize a lower resolution icon rather than picking an icon appropriate for the actual display size. In a multi-format icon file, is there a specific order we should use for positioning each icon format? For example, we have an icon file with icons in the following formats: - 16x16 - 32x32 - 48x48 - 64x64 - 128x128 - 256x256 We are testing the appearance of our exe's icon using Windows Explorer under Windows XP, Vista and Windows 7. Any suggestions appreciated.

    Read the article

  • Problem with IE and Jquery qTip plugin

    - by user272899
    I am having problems with the Jquery qtip plugin. It works fine in Firefox (see here http://movieo.no-ip.org/ hover over the first image). But doesn't work in IE. This is the code: $('.moviebox').each(function() { $(this).qtip({ content: $(this).children('.info'), show: 'mouseover', hide: 'mouseout', style: { name: 'light' }, position: { corner: { target: 'rightbottom', tooltip: 'bottomleft' } } }); }); And the html <!--start moviebox--> <div class="moviebox"> <a href="#"> <img src="http://1.bp.blogspot.com/_mySxtRcQIag/S6deHcoChaI/AAAAAAAAObc/Z1Xg3aB_wkU/s200/rising_sun.jpg" /> </a> <!--start infobox--> <div class="info"> <span>Rising Sun (2006)</span> <div class="description"><strong>Description:</strong><br /> test test test test test test test test test test test test test test test test</div> <img src="http://1.bp.blogspot.com/_mySxtRcQIag/S6deHcoChaI/AAAAAAAAObc/Z1Xg3aB_wkU/s200/rising_sun.jpg" /> <div class="cast"><strong>Cast:</strong><br /> Sean connery</div> <div class="rating"><strong>Rating:</strong><br />5stars</div> </div> <!--end infobox--> </div> <!--end moviebox--> Why wouldn't that work in IE????? Beats me. Checkout movieo.no-ip.org for the whole source

    Read the article

  • Where does IE store the ASP.NET_SessionId cookie?

    - by scherand
    I am a bit baffled here; using IE7, ASP.NET 2.0 and Cassini (the VS built-in web server; although the same thing seems to be true for "real" applications deployed in IIS) I am looking for the session-id-cookie. My test page shows a session id (by printing out Session.SessionId) and Response.Cookies.Keys contains ASP.NET_SessionId. So far so good. But I cannot find the cookie in IEs cookie-store! Nor does "remove all cookies" reset the session (as it does in FF)... So where - I am tempted to write that four letter word - does IE store that bloody cookie? Or am I missing something? By the way there is no hidden field with a session id either, as far as I can see. If I check in FF there is a cookie called ASP.NET_SessionId as I would expect. And as mentioned above deleting that cookie does start a new session; as I would expect. Can anybody imagine what is happening here?

    Read the article

  • IE7 & 8 not fireing jQuery click events for elements appended inside a table

    - by Keith
    I have an IE bug that I'm not sure how to fix. Using jQuery I'm dynamically moving a menu to appear on an element on mouseover. My code (simplified) looks something like this: $j = jQuery.noConflict(); $j(document).ready(function() { //do something on the menu clicks $j('div.ico').click(function() { alert($j(this).parent().html()); }); setUpActions('#tableId', '#menuId'); }); //on mouseover set up the actions menu to appear on mouseover function setUpActions(tableSelector, menuSelector) { $j(tableSelector + ' div.test').mouseover(function() { //note that append will move the underlying //DOM element with all events from it's old //parent to the end of this one. $j(this).append($j(menuSelector).show()); }); } This menu doesn't seem to register events correctly for the menu after it's been moved in IE7, IE8 and IE8-as-IE7 (yeah MS, that's really a 'new rendering engine' in IE8, we all believe you). It works as expected in everything else. You can see the behaviour in a basic demo here. In the demo you can see two examples of the issue: The image behind the buttons should change on hover (done with a CSS :hover selector). It works on the first mouseover but then persists. The click event doesn’t fire – however with the dev tools you can manually call it and it is still subscribed. You can see (2) in IE8's dev tools: Open page in IE8 Open dev tools Select "Script" tab and "Console" sub-tab Type: $j('#testFloat div.ico:first').click() to manually call any subscribed events There will be an alert on the page This means that I'm not losing the event subscriptions, they're still there, IE's just not calling them when I click. Does anyone know why this bug occurs (other than just because of IE's venerable engine)? Is there a workaround? Could it be something that I'm doing wrong that just happens to work as expected in everything else?

    Read the article

  • why it makes ie6 or ie8 compatible mode crash

    - by hylin
    Anybody can tell me why those code can make ie6 or ie8 compatible mode crash? PS:I know,there is so many ways to avoid this satuation, but I just want to know why. To avoid: Change class="wrapper"--class="wrapper2" or other != "wrapper" $('wrapper').style.overflow='visible'; -- setTimeout(function(){$('wrapper').style.overflow='visible';},10); Or remove any style , js operation... <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <style>.wrapper{width:975px;margin:60px auto 0}</style> </head> <body id="wrapper" style="overflow:hidden;"> <div id="overlay" style="position:absolute;"></div> <div class="wrapper"> <input type="text" id="input1"/> <a id="btn" href="javascript:;">test</a> </div> <script type="text/javascript"> $('btn').onclick = function(){ $('overlay').style.display='none'; $('wrapper').style.overflow='visible'; $("input1").focus(); } function $(s){ return document.getElementById(s); } </script> </body> </html>

    Read the article

  • Internet Explorer 10 Platform Preview 2 disponible, support accru du HTML5, CSS3

    Internet Explorer 10 Platform Preview 2 disponible Support accru du HTML5, CSS3 Mise à jour du 30/06/11, par Hinault Romaric Microsoft vient de publier la seconde Platform Preview d'Internet Explorer 10, et ce moins de trois mois après la présentation de la première lors de conférence Mix 10 de Las Vegas (lire ci-avant). Cette version embarque en natif le « moteur HTML5», déjà présenté dans une démonstration sur Windows 8, qui améliore encore le support du standard avec notamment la prise en charge du HTML5 Drag-drop et la validation HTML 5 Forms. On notera également le soutien de plusieurs technologies comme le ...

    Read the article

  • Windows 8 : L'OS pourrait embarquer Internet Explorer 10 à sa sortie, et le navigateur serait tactile

    Windows 8 : L'OS pourrait embarquer Internet Explorer 10 à sa sortie, et le navigateur serait tactile Mise à jour du 18.03.2011 par Katleen Et c'est parti pour une rumeur de plus. Celle-ci vient de Chine, et affirme que Microsoft prévoirait de sortir la prochaine version d'Internet Explorer avec Windows 8. Les deux programmes seraient même liés, puisque le navigateur serait intégré à l'OS. De plus, comme ce système à venir devrait logiquement être recentré sur le Cloud Computing et optimisé pour les tablettes (voir les news précédentes), il semble logique à certains de dire que IE10 sera tactile. Les prochains mois pourraient donc voir arriver un package "touch friendly", si ces supposition...

    Read the article

  • Lazy HTML attributes wrapping in Internet Explorer

    - by AGS777
    Having encountered this Internet Explorer (all versions) behavior several times previously, I eventually decided to share this most probably useless knowledge. Excuse my lengthy explanations because I am going to show the behavior along with a very simple case when one can come across it inadvertently. Let's say I want to implement some simple templating solution in JavaScript. I wrote an HTML template with an intention to bind data to it on the client side: Please note, that name of the “sys-template” class is just a coincidence. I do not use any ASP.NET AJAX code in this simple example. As you can see we need to replace placeholders (property name wrapped with curly braces) with actual data. Also, as you can see, many of the placeholders are situated within attribute values and it is where the danger lies. I am going to use <a /> element HTML as a template and replace each placeholder pattern with respective properties’ values with a little bit of jQuery like this: You can find complete code along with the contextFormat() method definition at the end of the post. Let’s assume that value for the name property (that we want to put in the title attribute) of the first data item is “first tooltip”. So it consists of two words. When the replacement occurred, title attribute should contain the “first tooltip” text which we are going to see as a tooltip for the <a /> element. But let’s run the sample code in Internet Explorer and check it out. What you’ll see is that only the first word of the supposed “title” attribute’s content is shown. So, were is the rest of my attribute and what happened? The answer is obvious once you see the result of jQuery(“.sys-template”).html() line for the given HTML markup. In IE you’ll get the following <A id={id} class={cssClass} title={name} href="{source}" myAttr="{attr}">Link to {source}</A> See any difference between this HTML and the one shown earlier? No? Then look carefully. While the original HTML of the <a /> element is well-formed and all the attributes are correctly quoted, when you take the same HTML back in Internet Explorer (it doesn’t matter whether you use html() method from jQuery library or IE’s innerHTML directly), you lose attributes’ quotes for some of the attributes. Then, after replacement, we’ll get following HTML for our first data item. I marked the attribute value in question with italic: <A id=1 class=first title=first tooltip href="first.html" myAttr="firstAttr">Link to first.html</A> Now you can easily imagine for yourself what happens when this HTML is inserted into the document and why we do not see the second (and any subsequent words if any) of our title attribute in the tooltip. There are still two important things to note. The first one (and it actually the reason why I named the post “lazy wrapping” is that if value of the HTML attribute does contains spaces in the original HTML, then it WILL be wrapped with quotation marks. For example, if I wrote following on my page (note the trailing space for the title attribute value) <a href="{source}" title="{name}  " id="{id}" myAttr="{attr}" class="{cssClass}">Link to {source}</a> then I would have my placeholder quoted correctly and the result of the replacement would render as expected: The second important thing to note is that there are exceptions for the lazy attributes wrapping rule in IE. As you can see href attribute value did not contain spaces exactly as all the other attributes with placeholders, but it was still returned correctly quoted Custom attribute myAttr is also quoted correctly when returned back from document, though its placeholder value does not contain spaces either. Now, on account of the highly unlikely probability that you found this information useful and need a solution to the problem the aforementioned behavior introduces for Internet Explorer browser, I can suggest a simple workaround – manually quote the mischievous attributes prior the placeholder pattern is replaced. Using the code of contextFormat() method shown below, you would need to add following line right before the return statement: result = result.replace(/=({([^}]+)})/g, '="$1"'); Below please find original sample code:

    Read the article

  • Gladinet Cloud Desktop tool to manage Windows Azure Blob Storage from Windows Explorer

    - by kaleidoscope
    Gladinet Cloud Desktop is designed to make it easier for Windows Azure users to manage Windows Azure Blob storage directly from Windows Explorer. The solution makes it possible for Windows Azure Blob storage to be mapped as a virtual network Drive. “You can map multiple Azure Blob Storage Accounts as side-by-side virtual folders in same network drive. You can do drag & drop between local drive and Azure drive. For more information -  http://www.ditii.com/2010/01/04/gladinet-cloud-desktop-tool-to-manage-windows-azure-blob-storage-from-windows-explorer/ For Downloading the tool – http://www.gladinet.com/p/download_starter_direct.htm   Ritesh, D

    Read the article

  • Pwn2Own 2011 : Safari vaincu en 5 secondes lors du concours de hacking, Internet Explorer 8 exploité

    Pwn2Own 2011 : Safari vaincu en 5 secondes, Internet Explorer 8 exploité La célèbre compétition de hacking Pwn2Own, qui se déroule une fois par an à Vancouver, a commencé hier. Et à l'occasion de cette première journée, deux navigateurs ont été franchement asticotés. Les spécialistes de la sécurité informatique qui participent au concours devaient choisir chacun un browser à malmener. Et ces derneirs...ont délaissé Firefox, qui n'a été choisi par personne ! Puis, un seul a décidé de s'occuper de Chrome, mais il ne s'est jamais présenté. Les autres concurrents se sont quant à eux concentrés sur Internet Explorer et Safari. Et le logiciel d'Apple n'aura pas résisté très longtemps. Ainsi, en cette première journée, Safa...

    Read the article

  • Patch Tuesday : Microsoft corrige 40 failles de sécurité dans Windows, Office, Internet Explorer, SharePoint et Exchange

    Microsoft corrige 40 failles de sécurité liées à Windows, Office, Internet Explorer, SharePoint Server et Exchange, dans son dernier Patch Tuesday de l'année Mise à jour du 15.12.2010 par Katleen Microsoft a rendu disponible hier son Patch Tuesday de décembre. Moins fourni que celui du mois dernier, il corrige tout de même 40 failles de sécurité. Composée de 17 bulletins (de MS10-090 à MS10-106), cette mise à jour est la dernière de l'année 2010 pour l'éditeur américain. Le premier bulletin de la série (MS10-090), l'un des plus cruciaux du lot, corrige sept failles touchant Internet Explorer (dans des environnements Windows et Windows Server uniquement). Parmi elles, cinq sont critique...

    Read the article

  • Beginner: How to Make Explorer Always Show the Full Path in Windows 8

    - by Taylor Gibb
    In older versions of Windows the Title Bar used to display your current location in the file system. In Windows 8 this is not the default behavior, however, you can enable it if you wish to. Display the Full Path in the Windows Explorer Title Bar Press the Windows + E keyboard combination to open Windows Explorer and then switch over to the View tab. On the right-hand side click on options and then select Change folder and search options from the drop-down. When the Folder Options dialog opens, switch over to the View options. Here you will need to tick the Display the full path in the title bar check box. That’s all there is to it. How To Switch Webmail Providers Without Losing All Your Email How To Force Windows Applications to Use a Specific CPU HTG Explains: Is UPnP a Security Risk?

    Read the article

  • Internet Explorer 9 : 2 millions de téléchargements pour la Release Candidate en moins d'une semaine

    La RC de Internet Explorer 9 a été téléchargée 2 millions de fois En moins d'une semaine Mise à jour du 17/02/11 Microsoft vient d'annoncer les premiers résultats des téléchargements de la Release Candidate d'Internet Explorer 9 sortie la semaine dernière. Avec 2 millions de téléchargements, ces résultats sont particulièrement bons. Cependant, Roger Capriotti veut garder les pieds sur terre. Il sait, comme Stanislas Quastana, architecte infrastructure, "on ne reviendra jamais à 90% de part de marché" mais il se félicite de cet intérêt pour le prochain navigateur de Microsoft. Par comparaison, les betas de IE9 a...

    Read the article

  • Internet Explorer 10 bientôt disponible pour Windows 7, Microsoft annonce la sortie d'une préversion en novembre

    Internet Explorer 10 bientôt disponible pour Windows 7, Microsoft annonce la sortie d'une préversion en novembre Les utilisateurs de Windows 7 pourront télécharger une préversion d'Internet Explorer 10 à partir de mi-novembre. IE 10 est la prochaine mise à jour majeure du navigateur de Microsoft qui sera disponible en version finale au même moment que Windows 8 annoncé pour le 26 octobre prochain. Cette version se distingue essentiellement par sa nouvelle interface qui repose sur les tuiles Windows 8 et le support de la navigation tactile. Le navigateur dispose de nouvelles capacités de développement et de performances améliorées grâce à l'accélération matérielle. M...

    Read the article

  • How To Change the Default Search Engine in Windows 8's Internet Explorer 10

    - by Chris Hoffman
    You can change the default search provider in the Modern version of Internet Explorer 10, but Microsoft hides this option well. You won’t find it in IE’s Settings charm – you’ll have to change this setting from the desktop. After you change this setting on the desktop, both versions of Internet Explorer will use your preferred search engine. You’ll have to use the desktop to change certain settings on Windows tablets — even Windows RT includes a limited desktop. 6 Start Menu Replacements for Windows 8 What Is the Purpose of the “Do Not Cover This Hole” Hole on Hard Drives? How To Log Into The Desktop, Add a Start Menu, and Disable Hot Corners in Windows 8

    Read the article

  • HTML5 : Microsoft propose des modules pour Websocket et IndexedDB installables sur la bêta d'Internet Explorer 9

    HTML5 : Microsoft propose des modules pour Websocket et IndexedDB Installables sur la bêta d'Internet Explorer 9 Microsoft vient de lancer un site dédié aux standards HTML5 ouverts, une manière de permettre aux développeurs d'expérimenter des standards qui ne seront pas intégrés à Internet Explorer avant leur finalisation par le W3C. Une approche qui se veut plus prudente et pragmatique que celles de ces concurrents, qui n'hésitent pas, eux, à implémenter - au moins partiellement - des standards en gestation dans les versions grand public de leurs navigateurs. Appelé HTML5 Labs, ce nouveau site propose, pour ses débuts, deux modules. Le premier est le...

    Read the article

  • Team Explorer Everywhere 2010 now Free..!

    - by Ravi
    Yes, now more ways to get connected to TFS 2010. Up until now, if you have to connect to TFS 2010 from other platforms - be it Linux, Mac, Solaris etc., you had to purchase a CAL (Client Access License) or a 90-day free trial of the Team Explorer Everywhere 2010. You don't have to do that anymore. Microsoft has made it free and released an update with Team Explorer Everywhere with SP1. Here's the download link - http://www.microsoft.com/download/en/details.aspx?id=25125 Have fun coding..!

    Read the article

  • Modifying value of "Rating" column within Explorer for arbitrary file types.

    - by Fake Name
    Basically, I have a large body of assorted media (text, images, flash files, archives, folders, etc...) and I'm attempting to organize it. Windows Explorer has a rating column, but there seems to be no way to modify the rating of the files short of opening them in their type-specific software (e.g. Media player, or Photo viewer). However, this does not work when the file is of an unsupported type (.rar, .swf ...), or a directory. I'd be more than willing to consider a file-manager replacement (I've alreadly looked at quite a few, Directory Opus, Total Commander, etc...), or even a solution that stores the rating metadata in a hidden file in each folder, or a separate database. The one real critical requirement is the ability to sort by rating, and being filetype-agnostic. Basically, is there any way to categorize a large collection of assorted files by rating that will work with any file type, including directories? - Ideally, there would be an easy way to add arbitrary columns to windows explorer, and edit them directly. However, there seems to be no way to do this. The rating column is the next best thing.

    Read the article

  • Continuous Integration for SQL Server Part II – Integration Testing

    - by Ben Rees
    My previous post, on setting up Continuous Integration for SQL Server databases using GitHub, Bamboo and Red Gate’s tools, covered the first two parts of a simple Database Continuous Delivery process: Putting your database in to a source control system, and, Running a continuous integration process, each time changes are checked in. However there is, of course, a lot more to to Continuous Delivery than that. Specifically, in addition to the above: Putting some actual integration tests in to the CI process (otherwise, they don’t really do much, do they!?), Deploying the database changes with a managed, automated approach, Monitoring what you’ve just put live, to make sure you haven’t broken anything. This post will detail how to set up a very simple pipeline for implementing the first of these (continuous integration testing). NB: A lot of the setup in this post is built on top of the configuration from before, so it might be difficult to implement this post without running through part I first. There’ll then be a third post on automated database deployment followed by a final post dealing with the last item – monitoring changes on the live system. In the previous post, I used a mixture of Red Gate products and other 3rd party software – GitHub and Atlassian Bamboo specifically. This was partly because I believe most people work in an heterogeneous environment, using software from different vendors to suit their purposes and I wanted to show how this could work for this process. For example, you could easily substitute Atlassian’s BitBucket or Stash for GitHub, depending on your needs, or use an alternative CI server such as TeamCity, TFS or Jenkins. However, in this, post, I’ll be mostly using Red Gate products only (other than tSQLt). I would do this, firstly because I work for Red Gate. However, I also think that in the area of Database Delivery processes, nobody else has the offerings to implement this process fully – so I didn’t have any choice!   Background on Continuous Delivery For me, a great source of information on what makes a proper Continuous Delivery process is the Jez Humble and David Farley classic: Continuous Delivery – Reliable Software Releases through Build, Test, and Deployment Automation This book is not of course, primarily about databases, and the process I outline here and in the previous article is a gross simplification of what Jez and David describe (not least because it’s that much harder for databases!). However, a lot of the principles that they describe can be equally applied to database development and, I would argue, should be. As I say however, what I describe here is a very simple version of what would be required for a full production process. A couple of useful resources on handling some of these complexities can be found in the following two references: Refactoring Databases – Evolutionary Database Design, by Scott J Ambler and Pramod J. Sadalage Versioning Databases – Branching and Merging, by Scott Allen In particular, I don’t deal at all with the issues of multiple branches and merging of those branches, an issue made particularly acute by the use of GitHub. The other point worth making is that, in the words of Martin Fowler: Continuous Delivery is about keeping your application in a state where it is always able to deploy into production.   I.e. we are not talking about continuously delivery updates to the production database every time someone checks in an amendment to a stored procedure. That is possible (and what Martin calls Continuous Deployment). However, again, that’s more than I describe in this article. And I doubt I need to remind DBAs or Developers to Proceed with Caution!   Integration Testing Back to something practical. The next stage, building on our set up from the previous article, is to add in some integration tests to the process. As I say, the CI process, though interesting, isn’t enormously useful without some sort of test process running. For this we’ll use the tSQLt framework, an open source framework designed specifically for running SQL Server tests. tSQLt is part of Red Gate’s SQL Test found on http://www.red-gate.com/products/sql-development/sql-test/ or can be downloaded separately from www.tsqlt.org - though I’ll provide a step-by-step guide below for setting this up. Getting tSQLt set up via SQL Test Click on the link http://www.red-gate.com/products/sql-development/sql-test/ and click on the blue Download button to download the Red Gate SQL Test product, if not already installed. Follow the install process for SQL Test to install the SQL Server Management Studio (SSMS) plugin on to your machine, if not already installed. Open SSMS. You should now see SQL Test under the Tools menu:   Clicking this link will give you the basic SQL Test dialogue: As yet, though we’ve installed the SQL Test product we haven’t yet installed the tSQLt test framework on to any particular database. To do this, we need to add our RedGateApp database using this dialogue, by clicking on the + Add Database to SQL Test… link, selecting the RedGateApp database and clicking the Add Database link:   In the next screen, SQL Test describes what will be installed on the database for the tSQLt framework. Also in this dialogue, uncheck the “Add SQL Cop tests” option (shown below). SQL Cop is a great set of pre-defined tests that work within the tSQLt framework to check the general health of your SQL Server database. However, we won’t be using them in this particular simple example: Once you’ve clicked on the OK button, the changes described in the dialogue will be made to your database. Some of these are shown in the left-hand-side below: We’ve now installed the framework. However, we haven’t actually created any tests, so this will be the next step. But, before we proceed, we’ve made an update to our database so should, again check this in to source control, adding comments as required:   Also worth a quick check that your build still runs with the new additions!: (And a quick check of the RedGateAppCI database shows that the changes have been made).   Creating and Testing a Unit Test There are, of course, a lot of very interesting unit tests that you could and should set up for a database. The great thing about the tSQLt framework is that you can write these in SQL. The example I’m going to use here is pretty Mickey Mouse – our database table is going to include some email addresses as reference data and I want to check whether these are all in a correct email format. Nothing clever but it illustrates the process and hopefully shows the method by which more interesting tests could be set up. Adding Reference Data to our Database To start, I want to add some reference data to my database, and have this source controlled (as well as the schema). First of all I need to add some data in to my solitary table – this can be done a number of ways, but I’ll do this in SSMS for simplicity: I then add some reference data to my table: Currently this reference data just exists in the database. For proper integration testing, this needs to form part of the source-controlled version of the database – and so needs to be added to the Git repository. This can be done via SQL Source Control, though first a Primary Key needs to be added to the table. Right click the table, select Design, then right-click on the first “id” row. Then click on “Set Primary Key”: NB: once this change is made, click Save to save the change to the table. Then, to source control this reference data, right click on the table (dbo.Email) and selecting the following option:   In the next screen, link the data in the Email table, by selecting it from the list and clicking “save and close”: We should at this point re-commit the changes (both the addition of the Primary Key, and the data) to the Git repo. NB: From here on, I won’t show screenshots for the GitHub side of things – it’s the same each time: whenever a change is made in SQL Source Control and committed to your local folder, you then need to sync this in the GitHub Windows client (as this is where the build server, Bamboo is taking it from). An interesting point to note here, when these changes are committed in SQL Source Control (right-click database and select “Commit Changes to Source Control..”): The display gives a warning about possibly needing a migration script for the “Add Primary Key” step of the changes. This isn’t actually necessary in this case, but this mechanism would allow you to create override scripts to replace the default change scripts created by the SQL Compare engine (which runs underneath SQL Source Control). Ignoring this message (!), we add a comment and commit the changes to Git. I then sync these, run a build (or the build gets run automatically), and check that the data is being deployed over to the target RedGateAppCI database:   Creating and Running the Test As I mention, the test I’m going to use here is a very simple one - are the email addresses in my reference table valid? This isn’t of course, a full test of email validation (I expect the email addresses I’ve chosen here aren’t really the those of the Fab Four) – but just a very basic check of format used. I’ve taken the relevant SQL from this Stack Overflow article. In SSMS select “SQL Test” from the Tools menu, then click on + New Test: In the next screen, give your new test a name, and also enter a name in the Test Class box (test classes are schemas that help you keep things organised). Also check that the database in which the test is going to be created is correct – RedGateApp in this example: Click “Create Test”. After closing a couple of subsequent dialogues, you’ll see a dummy script for the test, that needs filling in:   We now need to define the SQL for our test. As mentioned before, tSQLt allows you to write your unit tests in T-SQL, and the code I’m going to use here is as below. This needs to be copied and pasted in to the query window, to replace the default given by tSQLt: –  Basic email check test ALTER PROCEDURE [MyChecks].[test Check Email Addresses] AS BEGIN SET NOCOUNT ON         Declare @Output VarChar(max)     Set @Output = ”       SELECT  @Output = @Output + Email +Char(13) + Char(10) FROM dbo.Email WHERE email NOT LIKE ‘%_@__%.__%’       If @Output > ”         Begin             Set @Output = Char(13) + Char(10)                           + @Output             EXEC tSQLt.Fail@Output         End   END;   Once this script is entered, hit execute to add the Stored Procedure to the database. Before committing the test to source control,  it’s worth just checking that it works! For a positive test, click on “SQL Test” from the Tools menu, then click Run Tests. You should see output like the following: - a green tick to indicate success! But of course, what we also need to do is test that this is actually doing something by showing a failed test. Edit one of the email addresses in your table to an incorrect format: Now, re-run the same SQL Test as before and you’ll see the following: Great – we now know that our test is really doing something! You’ll also see a useful error message at the bottom of SSMS: (leave the email address as invalid for now, for the next steps). The next stage is to check this new test in to source control again, by right-clicking on the database and checking in the changes with a commit message (and not forgetting to sync in the GitHub client):   Checking that the Tests are Running as Integration Tests After the changes above are made, and after a build has run on Bamboo (manual or automatic), looking at the Stored Procedures for the RedGateAppCI, the SPROC for the new test has been moved over to the database. However this is not exactly what we were after. We didn’t want to just copy objects from one database to another, but actually run the tests as part of the build/integration test process. I.e. we’re continuously checking any changes we make (in this case, to the reference data emails), to ensure we’re not breaking a test that we’ve set up. The behaviour we want to see is that, if we check in static data that is incorrect (as we did in step 9 above) and we have the tSQLt test set up, then our build in Bamboo should fail. However, re-running the build shows the following: - sadly, a successful build! To make sure the tSQLt tests are run as part of the integration test, we need to amend a switch in the Red Gate CI config file. First, navigate to file sqlCI.targets in your working folder: Edit this document, make the following change, save the document, then commit and sync this change in the GitHub client: <!-- tSQLt tests --> <!-- Optional --> <!-- To run tSQLt tests in source control for the database, enter true. --> <enableTsqlt>true</enableTsqlt> Now, if we re-run the build in Bamboo (NB: I’ve moved to a new server here, hence different address and build number): - superb, a broken build!! The error message isn’t great here, so to get more detailed info, click on the full build log link on this page (below the fold). The interesting part of the log shown is towards the bottom. Pulling out this part:   21-Jun-2013 11:35:19 Build FAILED. 21-Jun-2013 11:35:19 21-Jun-2013 11:35:19 "C:\Users\Administrator\bamboo-home\xml-data\build-dir\RGA-RGP-JOB1\sqlCI.proj" (default target) (1) -> 21-Jun-2013 11:35:19 (sqlCI target) -> 21-Jun-2013 11:35:19 EXEC : sqlCI error occurred: RedGate.Deploy.SqlServerDbPackage.Shared.Exceptions.InvalidSqlException: Test Case Summary: 1 test case(s) executed, 0 succeeded, 1 failed, 0 errored. [C:\Users\Administrator\bamboo-home\xml-data\build-dir\RGA-RGP-JOB1\sqlCI.proj] 21-Jun-2013 11:35:19 EXEC : sqlCI error occurred: [MyChecks].[test Check Email Addresses] failed: [C:\Users\Administrator\bamboo-home\xml-data\build-dir\RGA-RGP-JOB1\sqlCI.proj] 21-Jun-2013 11:35:19 EXEC : sqlCI error occurred: ringo.starr@beatles [C:\Users\Administrator\bamboo-home\xml-data\build-dir\RGA-RGP-JOB1\sqlCI.proj] 21-Jun-2013 11:35:19 EXEC : sqlCI error occurred: [C:\Users\Administrator\bamboo-home\xml-data\build-dir\RGA-RGP-JOB1\sqlCI.proj] 21-Jun-2013 11:35:19 EXEC : sqlCI error occurred: +----------------------+ [C:\Users\Administrator\bamboo-home\xml-data\build-dir\RGA-RGP-JOB1\sqlCI.proj] 21-Jun-2013 11:35:19 EXEC : sqlCI error occurred: |Test Execution Summary| [C:\Users\Administrator\bamboo-home\xml-data\build-dir\RGA-RGP-JOB1\sqlCI.proj]   As a final check, we should make sure that, if we now fix this error, the build succeeds. So in SSMS, I’m going to correct the invalid email address, then check this change in to SQL Source Control (with a comment), commit to GitHub, and re-run the build:   This should have fixed the build: It worked! Summary This has been a very quick run through the implementation of CI for databases, including tSQLt tests to test whether your database updates are working. The next post in this series will focus on automated deployment – we’ve tested our database changes, how can we now deploy these to target sites?  

    Read the article

< Previous Page | 28 29 30 31 32 33 34 35 36 37 38 39  | Next Page >