Search in sources :

Example 1 with TempDirectory

use of org.robolectric.util.TempDirectory in project robolectric by robolectric.

the class AndroidTestEnvironment method setUpApplicationState.

@Override
public void setUpApplicationState(Method method, Configuration configuration, AndroidManifest appManifest) {
    for (TestEnvironmentLifecyclePlugin e : testEnvironmentLifecyclePlugins) {
        e.onSetupApplicationState();
    }
    Config config = configuration.get(Config.class);
    ConfigurationRegistry.instance = new ConfigurationRegistry(configuration.map());
    clearEnvironment();
    RuntimeEnvironment.setTempDirectory(new TempDirectory(createTestDataDirRootPath(method)));
    if (ShadowLooper.looperMode() == LooperMode.Mode.LEGACY) {
        RuntimeEnvironment.setMasterScheduler(new Scheduler());
        RuntimeEnvironment.setMainThread(Thread.currentThread());
        ShadowLegacyLooper.internalInitializeBackgroundThreadScheduler();
    }
    if (!loggingInitialized) {
        ShadowLog.setupLogging();
        loggingInitialized = true;
    }
    if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
        Security.addProvider(new BouncyCastleProvider());
    }
    android.content.res.Configuration androidConfiguration = new android.content.res.Configuration();
    DisplayMetrics displayMetrics = new DisplayMetrics();
    Bootstrap.applyQualifiers(config.qualifiers(), apiLevel, androidConfiguration, displayMetrics);
    Locale locale = apiLevel >= VERSION_CODES.N ? androidConfiguration.getLocales().get(0) : androidConfiguration.locale;
    Locale.setDefault(locale);
    // Looper needs to be prepared before the activity thread is created
    if (Looper.myLooper() == null) {
        Looper.prepareMainLooper();
    }
    if (ShadowLooper.looperMode() == LooperMode.Mode.LEGACY) {
        ShadowLooper.getShadowMainLooper().resetScheduler();
    } else {
        RuntimeEnvironment.setMasterScheduler(new LooperDelegatingScheduler(Looper.getMainLooper()));
    }
    preloadClasses(apiLevel);
    RuntimeEnvironment.setAndroidFrameworkJarPath(sdkJarPath);
    Bootstrap.setDisplayConfiguration(androidConfiguration, displayMetrics);
    RuntimeEnvironment.setActivityThread(ReflectionHelpers.newInstance(ActivityThread.class));
    ReflectionHelpers.setStaticField(ActivityThread.class, "sMainThreadHandler", new Handler(Looper.myLooper()));
    Instrumentation instrumentation = createInstrumentation();
    InstrumentationRegistry.registerInstance(instrumentation, new Bundle());
    Supplier<Application> applicationSupplier = createApplicationSupplier(appManifest, config, androidConfiguration, displayMetrics);
    RuntimeEnvironment.setApplicationSupplier(applicationSupplier);
    if (configuration.get(LazyLoad.class) == LazyLoad.ON) {
        RuntimeEnvironment.setConfiguredApplicationClass(getApplicationClass(appManifest, config, new ApplicationInfo()));
    } else {
        // force eager load of the application
        RuntimeEnvironment.getApplication();
    }
}
Also used : Locale(java.util.Locale) Configuration(org.robolectric.pluginapi.config.ConfigurationStrategy.Configuration) Config(org.robolectric.annotation.Config) Scheduler(org.robolectric.util.Scheduler) Bundle(android.os.Bundle) LazyLoad(org.robolectric.annotation.experimental.LazyApplication.LazyLoad) ApplicationInfo(android.content.pm.ApplicationInfo) ConfigurationRegistry(org.robolectric.config.ConfigurationRegistry) Handler(android.os.Handler) Instrumentation(android.app.Instrumentation) ShadowInstrumentation(org.robolectric.shadows.ShadowInstrumentation) ShadowActivityThread(org.robolectric.shadows.ShadowActivityThread) ActivityThread(android.app.ActivityThread) DisplayMetrics(android.util.DisplayMetrics) TestEnvironmentLifecyclePlugin(org.robolectric.pluginapi.TestEnvironmentLifecyclePlugin) TempDirectory(org.robolectric.util.TempDirectory) ShadowApplication(org.robolectric.shadows.ShadowApplication) Application(android.app.Application) BouncyCastleProvider(org.bouncycastle.jce.provider.BouncyCastleProvider)

Example 2 with TempDirectory

use of org.robolectric.util.TempDirectory in project robolectric by robolectric.

the class LegacyDependencyResolverTest method setUp.

@Before
public void setUp() throws Exception {
    tempDirectory = new TempDirectory();
    properties = new Properties();
    mockClassLoader = mock(DefinitelyNotAClassLoader.class);
}
Also used : TempDirectory(org.robolectric.util.TempDirectory) DefinitelyNotAClassLoader(org.robolectric.plugins.LegacyDependencyResolver.DefinitelyNotAClassLoader) Properties(java.util.Properties) Before(org.junit.Before)

Example 3 with TempDirectory

use of org.robolectric.util.TempDirectory in project robolectric by robolectric.

the class ShadowSharedMemory method nCreate.

@Implementation
protected static FileDescriptor nCreate(String name, int size) throws ErrnoException {
    maybeThrow(fakeCreateException);
    TempDirectory tempDirectory = RuntimeEnvironment.getTempDirectory();
    try {
        // Give each instance its own private file.
        File sharedMemoryFile = Files.createTempFile(tempDirectory.createIfNotExists("SharedMemory"), "shmem-" + name, ".tmp").toFile();
        RandomAccessFile randomAccessFile = new RandomAccessFile(sharedMemoryFile, "rw");
        randomAccessFile.setLength(0);
        randomAccessFile.setLength(size);
        FileDescriptor fileDescriptor = randomAccessFile.getFD();
        int fd = ReflectionHelpers.getField(fileDescriptor, "fd");
        filesByFd.put(fd, sharedMemoryFile);
        return fileDescriptor;
    } catch (IOException e) {
        throw new RuntimeException("Unable to create file descriptior", e);
    }
}
Also used : TempDirectory(org.robolectric.util.TempDirectory) RandomAccessFile(java.io.RandomAccessFile) IOException(java.io.IOException) RandomAccessFile(java.io.RandomAccessFile) File(java.io.File) FileDescriptor(java.io.FileDescriptor) Implementation(org.robolectric.annotation.Implementation)

Aggregations

TempDirectory (org.robolectric.util.TempDirectory)3 ActivityThread (android.app.ActivityThread)1 Application (android.app.Application)1 Instrumentation (android.app.Instrumentation)1 ApplicationInfo (android.content.pm.ApplicationInfo)1 Bundle (android.os.Bundle)1 Handler (android.os.Handler)1 DisplayMetrics (android.util.DisplayMetrics)1 File (java.io.File)1 FileDescriptor (java.io.FileDescriptor)1 IOException (java.io.IOException)1 RandomAccessFile (java.io.RandomAccessFile)1 Locale (java.util.Locale)1 Properties (java.util.Properties)1 BouncyCastleProvider (org.bouncycastle.jce.provider.BouncyCastleProvider)1 Before (org.junit.Before)1 Config (org.robolectric.annotation.Config)1 Implementation (org.robolectric.annotation.Implementation)1 LazyLoad (org.robolectric.annotation.experimental.LazyApplication.LazyLoad)1 ConfigurationRegistry (org.robolectric.config.ConfigurationRegistry)1