forked from mirrors/gecko-dev
		
	 918ed6c474
			
		
	
	
		918ed6c474
		
	
	
	
	
		
			
			This was done using the following script:
37e3803c7a/processors/chromeutils-import.jsm
MozReview-Commit-ID: 1Nc3XDu0wGl
--HG--
extra : source : 12fc4dee861c812fd2bd032c63ef17af61800c70
extra : intermediate-source : 34c999fa006bffe8705cf50c54708aa21a962e62
extra : histedit_source : b2be2c5e5d226e6c347312456a6ae339c1e634b0
		
	
			
		
			
				
	
	
		
			118 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| /**
 | |
|  * Tests that DistributionCustomizer correctly caches the existence
 | |
|  * of the distribution.ini file and just rechecks it after a version
 | |
|  * update.
 | |
|  */
 | |
| 
 | |
| const PREF_CACHED_FILE_EXISTENCE  = "distribution.iniFile.exists.value";
 | |
| const PREF_CACHED_FILE_APPVERSION = "distribution.iniFile.exists.appversion";
 | |
| const PREF_LOAD_FROM_PROFILE      = "distribution.testing.loadFromProfile";
 | |
| 
 | |
| const gTestDir = do_get_cwd();
 | |
| 
 | |
| ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 | |
| 
 | |
| add_task(async function() {
 | |
|   // Start with a clean slate of the prefs that control this feature.
 | |
|   Services.prefs.clearUserPref(PREF_CACHED_FILE_APPVERSION);
 | |
|   Services.prefs.clearUserPref(PREF_CACHED_FILE_EXISTENCE);
 | |
|   setupTest();
 | |
| 
 | |
|   let {DistributionCustomizer} = ChromeUtils.import("resource:///modules/distribution.js", {});
 | |
|   let distribution = new DistributionCustomizer();
 | |
| 
 | |
|   copyDistributionToProfile();
 | |
| 
 | |
|   // Check that checking for distribution.ini returns the right value and sets up
 | |
|   // the cached prefs.
 | |
|   let exists = distribution._hasDistributionIni;
 | |
| 
 | |
|   Assert.ok(exists);
 | |
|   Assert.equal(Services.prefs.getBoolPref(PREF_CACHED_FILE_EXISTENCE, undefined),
 | |
|                true);
 | |
|   Assert.equal(Services.prefs.getStringPref(PREF_CACHED_FILE_APPVERSION, "unknown"),
 | |
|                AppConstants.MOZ_APP_VERSION);
 | |
| 
 | |
|   // Check that calling _hasDistributionIni again will use the cached value. We do
 | |
|   // this by deleting the file and expecting it to still return true instead of false.
 | |
|   // Also, we need to delete _hasDistributionIni from the object because the getter
 | |
|   // was replaced with a stored value.
 | |
|   deleteDistribution();
 | |
|   delete distribution._hasDistributionIni;
 | |
| 
 | |
|   exists = distribution._hasDistributionIni;
 | |
|   Assert.ok(exists);
 | |
| 
 | |
|   // Now let's invalidate the PREF_CACHED_FILE_EXISTENCE pref to make sure the
 | |
|   // value gets recomputed correctly.
 | |
|   Services.prefs.clearUserPref(PREF_CACHED_FILE_EXISTENCE);
 | |
|   delete distribution._hasDistributionIni;
 | |
|   exists = distribution._hasDistributionIni;
 | |
| 
 | |
|   // It now should return false, as well as storing false in the pref.
 | |
|   Assert.ok(!exists);
 | |
|   Assert.equal(Services.prefs.getBoolPref(PREF_CACHED_FILE_EXISTENCE, undefined),
 | |
|                false);
 | |
| 
 | |
|   // Check now that it will use the new cached value instead of returning true in
 | |
|   // the presence of the file.
 | |
|   copyDistributionToProfile();
 | |
|   delete distribution._hasDistributionIni;
 | |
|   exists = distribution._hasDistributionIni;
 | |
| 
 | |
|   Assert.ok(!exists);
 | |
| 
 | |
|   // Now let's do the same, but invalidating the App Version, as if a version
 | |
|   // update occurred.
 | |
|   Services.prefs.setStringPref(PREF_CACHED_FILE_APPVERSION, "older version");
 | |
|   delete distribution._hasDistributionIni;
 | |
|   exists = distribution._hasDistributionIni;
 | |
| 
 | |
|   Assert.ok(exists);
 | |
|   Assert.equal(Services.prefs.getBoolPref(PREF_CACHED_FILE_EXISTENCE, undefined),
 | |
|                true);
 | |
|   Assert.equal(Services.prefs.getStringPref(PREF_CACHED_FILE_APPVERSION, "unknown"),
 | |
|                AppConstants.MOZ_APP_VERSION);
 | |
| });
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * Helper functions
 | |
|  */
 | |
| function copyDistributionToProfile() {
 | |
|   // Copy distribution.ini file to the profile dir.
 | |
|   let distroDir = gProfD.clone();
 | |
|   distroDir.leafName = "distribution";
 | |
|   let iniFile = distroDir.clone();
 | |
|   iniFile.append("distribution.ini");
 | |
|   if (iniFile.exists()) {
 | |
|     iniFile.remove(false);
 | |
|     print("distribution.ini already exists, did some test forget to cleanup?");
 | |
|   }
 | |
| 
 | |
|   let testDistributionFile = gTestDir.clone();
 | |
|   testDistributionFile.append("distribution.ini");
 | |
|   testDistributionFile.copyTo(distroDir, "distribution.ini");
 | |
|   Assert.ok(testDistributionFile.exists());
 | |
| }
 | |
| 
 | |
| function deleteDistribution() {
 | |
|   let distroDir = gProfD.clone();
 | |
|   distroDir.leafName = "distribution";
 | |
|   let iniFile = distroDir.clone();
 | |
|   iniFile.append("distribution.ini");
 | |
|   iniFile.remove(false);
 | |
| }
 | |
| 
 | |
| function setupTest() {
 | |
|   // Set special pref to load distribution.ini from the profile folder.
 | |
|   Services.prefs.setBoolPref(PREF_LOAD_FROM_PROFILE, true);
 | |
| }
 | |
| 
 | |
| registerCleanupFunction(function() {
 | |
|   deleteDistribution();
 | |
|   Services.prefs.clearUserPref(PREF_LOAD_FROM_PROFILE);
 | |
| });
 |