Search in sources :

Example 56 with ZipInspector

use of com.facebook.buck.testutil.integration.ZipInspector in project buck by facebook.

the class AndroidResourceFilterIntegrationTest method testApkWithStringsAsAssets.

@Test
public void testApkWithStringsAsAssets() throws IOException {
    String target = "//apps/sample:app_comp_str";
    ProjectWorkspace.ProcessResult result = workspace.runBuckCommand("build", target);
    result.assertSuccess();
    Path apkFile = workspace.getPath(BuildTargets.getGenPath(filesystem, BuildTargetFactory.newInstance(target), "%s.apk"));
    ZipInspector zipInspector = new ZipInspector(apkFile);
    zipInspector.assertFileExists("assets/strings/fr.fbstr");
}
Also used : Path(java.nio.file.Path) ProjectWorkspace(com.facebook.buck.testutil.integration.ProjectWorkspace) ZipInspector(com.facebook.buck.testutil.integration.ZipInspector) Test(org.junit.Test)

Example 57 with ZipInspector

use of com.facebook.buck.testutil.integration.ZipInspector in project buck by facebook.

the class ResourcesRootIntegrationTest method testResourcePathRelativeToResourcesRoot.

@Test
public void testResourcePathRelativeToResourcesRoot() throws IOException, InterruptedException {
    ProjectWorkspace workspace = TestDataHelper.createProjectWorkspaceForScenario(this, "resources_root", temporaryFolder);
    workspace.setUp();
    Path supWorldJar = workspace.buildAndReturnOutput("//java/com/example:SupWorld");
    ZipInspector inspector = new ZipInspector(supWorldJar);
    inspector.assertFileExists("com/another/supworld.txt");
    ProcessExecutor.Result result = workspace.runJar(supWorldJar);
    assertEquals("SupWorld should print the resource file's contents.", "nuthin much\n", result.getStdout().get());
    assertEquals("", result.getStderr().get());
}
Also used : Path(java.nio.file.Path) ProjectWorkspace(com.facebook.buck.testutil.integration.ProjectWorkspace) ZipInspector(com.facebook.buck.testutil.integration.ZipInspector) ProcessExecutor(com.facebook.buck.util.ProcessExecutor) Test(org.junit.Test)

Example 58 with ZipInspector

use of com.facebook.buck.testutil.integration.ZipInspector in project buck by facebook.

the class RageCommandIntegrationTest method testUploadFailure.

@Test
public void testUploadFailure() throws Exception {
    ProjectWorkspace workspace = TestDataHelper.createProjectWorkspaceForScenario(this, "interactive_report", temporaryFolder);
    workspace.setUp();
    try (HttpdForTests httpd = new HttpdForTests()) {
        httpd.addHandler(new AbstractHandler() {

            @Override
            public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
                httpServletResponse.setStatus(500);
                request.setHandled(true);
            }
        });
        httpd.start();
        RageConfig rageConfig = createRageConfig(httpd.getRootUri().getPort(), "", RageProtocolVersion.SIMPLE);
        ProjectFilesystem filesystem = new ProjectFilesystem(temporaryFolder.getRoot());
        ObjectMapper objectMapper = ObjectMappers.newDefaultInstance();
        Clock clock = new DefaultClock();
        DefectReporter reporter = new DefaultDefectReporter(filesystem, objectMapper, rageConfig, BuckEventBusFactory.newInstance(clock), clock);
        AutomatedReport automatedReport = new AutomatedReport(reporter, filesystem, objectMapper, new TestConsole(), TestBuildEnvironmentDescription.INSTANCE, VcsInfoCollector.create(new NoOpCmdLineInterface()), rageConfig, Optional::empty);
        DefectSubmitResult submitReport = automatedReport.collectAndSubmitResult().get();
        // If upload fails it should store the zip locally and inform the user.
        assertFalse(submitReport.getReportSubmitErrorMessage().get().isEmpty());
        ZipInspector zipInspector = new ZipInspector(filesystem.resolve(submitReport.getReportSubmitLocation().get()));
        assertEquals(zipInspector.getZipFileEntries().size(), 7);
    }
}
Also used : HttpdForTests(com.facebook.buck.testutil.integration.HttpdForTests) Optional(java.util.Optional) NoOpCmdLineInterface(com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface) ZipInspector(com.facebook.buck.testutil.integration.ZipInspector) Request(org.eclipse.jetty.server.Request) HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpServletResponse(javax.servlet.http.HttpServletResponse) IOException(java.io.IOException) DefaultClock(com.facebook.buck.timing.DefaultClock) Clock(com.facebook.buck.timing.Clock) AbstractHandler(org.eclipse.jetty.server.handler.AbstractHandler) HttpServletRequest(javax.servlet.http.HttpServletRequest) ServletException(javax.servlet.ServletException) ProjectWorkspace(com.facebook.buck.testutil.integration.ProjectWorkspace) DefaultClock(com.facebook.buck.timing.DefaultClock) ProjectFilesystem(com.facebook.buck.io.ProjectFilesystem) TestConsole(com.facebook.buck.testutil.TestConsole) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Test(org.junit.Test)

Example 59 with ZipInspector

use of com.facebook.buck.testutil.integration.ZipInspector in project buck by facebook.

the class RageCommandIntegrationTest method testUpload.

@Test
public void testUpload() throws Exception {
    ProjectWorkspace workspace = TestDataHelper.createProjectWorkspaceForScenario(this, "interactive_report", temporaryFolder);
    workspace.setUp();
    final AtomicReference<String> requestMethod = new AtomicReference<>();
    final AtomicReference<String> requestPath = new AtomicReference<>();
    final AtomicReference<byte[]> requestBody = new AtomicReference<>();
    final String successMessage = "Upload successful";
    try (HttpdForTests httpd = new HttpdForTests()) {
        httpd.addHandler(new AbstractHandler() {

            @Override
            public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
                httpServletResponse.setStatus(200);
                request.setHandled(true);
                if (request.getUri().getPath().equals("/status.php")) {
                    return;
                }
                requestPath.set(request.getUri().getPath());
                requestMethod.set(request.getMethod());
                requestBody.set(ByteStreams.toByteArray(httpServletRequest.getInputStream()));
                try (DataOutputStream out = new DataOutputStream(httpServletResponse.getOutputStream())) {
                    out.writeBytes(successMessage);
                }
            }
        });
        httpd.start();
        RageConfig rageConfig = createRageConfig(httpd.getRootUri().getPort(), "", RageProtocolVersion.SIMPLE);
        ProjectFilesystem filesystem = new ProjectFilesystem(temporaryFolder.getRoot());
        Clock clock = new DefaultClock();
        DefectReporter reporter = new DefaultDefectReporter(filesystem, objectMapper, rageConfig, BuckEventBusFactory.newInstance(clock), clock);
        AutomatedReport automatedReport = new AutomatedReport(reporter, filesystem, objectMapper, new TestConsole(), TestBuildEnvironmentDescription.INSTANCE, VcsInfoCollector.create(new NoOpCmdLineInterface()), rageConfig, Optional::empty);
        DefectSubmitResult defectSubmitResult = automatedReport.collectAndSubmitResult().get();
        assertThat(defectSubmitResult.getReportSubmitMessage(), Matchers.equalTo(Optional.of(successMessage)));
        assertThat(requestPath.get(), Matchers.equalTo(UPLOAD_PATH));
        assertThat(requestMethod.get(), Matchers.equalTo("POST"));
        filesystem.mkdirs(filesystem.getBuckPaths().getBuckOut());
        Path report = filesystem.createTempFile(filesystem.getBuckPaths().getBuckOut(), "report", "zip");
        filesystem.writeBytesToPath(requestBody.get(), report);
        ZipInspector zipInspector = new ZipInspector(filesystem.resolve(report));
        zipInspector.assertFileExists("report.json");
        zipInspector.assertFileExists("buckconfig.local");
        zipInspector.assertFileExists("bucklogging.local.properties");
        zipInspector.assertFileExists(BUILD_COMMAND_DIR_PATH + "buck.log");
        zipInspector.assertFileExists(AUTODEPS_COMMAND_DIR_PATH + "buck.log");
        zipInspector.assertFileExists(BUILD_COMMAND_DIR_PATH + "buck-machine-log");
        zipInspector.assertFileExists(AUTODEPS_COMMAND_DIR_PATH + "buck-machine-log");
    }
}
Also used : DataOutputStream(java.io.DataOutputStream) ZipInspector(com.facebook.buck.testutil.integration.ZipInspector) DefaultClock(com.facebook.buck.timing.DefaultClock) Clock(com.facebook.buck.timing.Clock) AbstractHandler(org.eclipse.jetty.server.handler.AbstractHandler) HttpServletRequest(javax.servlet.http.HttpServletRequest) ServletException(javax.servlet.ServletException) ProjectWorkspace(com.facebook.buck.testutil.integration.ProjectWorkspace) DefaultClock(com.facebook.buck.timing.DefaultClock) ProjectFilesystem(com.facebook.buck.io.ProjectFilesystem) HttpdForTests(com.facebook.buck.testutil.integration.HttpdForTests) Path(java.nio.file.Path) Optional(java.util.Optional) NoOpCmdLineInterface(com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface) Request(org.eclipse.jetty.server.Request) HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpServletResponse(javax.servlet.http.HttpServletResponse) AtomicReference(java.util.concurrent.atomic.AtomicReference) IOException(java.io.IOException) TestConsole(com.facebook.buck.testutil.TestConsole) Test(org.junit.Test)

Example 60 with ZipInspector

use of com.facebook.buck.testutil.integration.ZipInspector in project buck by facebook.

the class DefectReporterTest method testAttachesPaths.

@Test
public void testAttachesPaths() throws Exception {
    ProjectFilesystem filesystem = new ProjectFilesystem(temporaryFolder.getRoot());
    RageConfig config = RageConfig.of(FakeBuckConfig.builder().build());
    Clock clock = new DefaultClock();
    DefectReporter reporter = new DefaultDefectReporter(filesystem, ObjectMappers.newDefaultInstance(), config, BuckEventBusFactory.newInstance(clock), clock);
    Path fileToBeIncluded = Paths.get("FileToBeIncluded.txt");
    filesystem.touch(fileToBeIncluded);
    String fileToBeIncludedContent = "testcontentbehere";
    filesystem.writeContentsToPath(fileToBeIncludedContent, fileToBeIncluded);
    DefectSubmitResult defectSubmitResult = reporter.submitReport(DefectReport.builder().setBuildEnvironmentDescription(TEST_ENV_DESCRIPTION).setIncludedPaths(fileToBeIncluded).setUserLocalConfiguration(TEST_USER_LOCAL_CONFIGURATION).build());
    Path reportPath = filesystem.resolve(defectSubmitResult.getReportSubmitLocation().get());
    ZipInspector inspector = new ZipInspector(reportPath);
    inspector.assertFileContents(fileToBeIncluded, fileToBeIncludedContent);
}
Also used : Path(java.nio.file.Path) DefaultClock(com.facebook.buck.timing.DefaultClock) ZipInspector(com.facebook.buck.testutil.integration.ZipInspector) ProjectFilesystem(com.facebook.buck.io.ProjectFilesystem) DefaultClock(com.facebook.buck.timing.DefaultClock) Clock(com.facebook.buck.timing.Clock) Test(org.junit.Test)

Aggregations

ZipInspector (com.facebook.buck.testutil.integration.ZipInspector)63 Test (org.junit.Test)62 Path (java.nio.file.Path)34 ProjectWorkspace (com.facebook.buck.testutil.integration.ProjectWorkspace)29 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)15 BuildTarget (com.facebook.buck.model.BuildTarget)10 ProjectFilesystem (com.facebook.buck.io.ProjectFilesystem)7 TestConsole (com.facebook.buck.testutil.TestConsole)4 ByteArrayInputStream (java.io.ByteArrayInputStream)4 BuildRuleResolver (com.facebook.buck.rules.BuildRuleResolver)3 DefaultTargetNodeToBuildRuleTransformer (com.facebook.buck.rules.DefaultTargetNodeToBuildRuleTransformer)3 SourcePathResolver (com.facebook.buck.rules.SourcePathResolver)3 SourcePathRuleFinder (com.facebook.buck.rules.SourcePathRuleFinder)3 ProcessResult (com.facebook.buck.testutil.integration.ProjectWorkspace.ProcessResult)3 Clock (com.facebook.buck.timing.Clock)3 DefaultClock (com.facebook.buck.timing.DefaultClock)3 SymbolGetter (com.facebook.buck.android.AndroidNdkHelper.SymbolGetter)2 SymbolsAndDtNeeded (com.facebook.buck.android.AndroidNdkHelper.SymbolsAndDtNeeded)2 FakeBuildableContext (com.facebook.buck.rules.FakeBuildableContext)2 ExecutionContext (com.facebook.buck.step.ExecutionContext)2