mirror of
https://github.com/samsonjs/media.git
synced 2026-04-07 11:35:46 +00:00
Use TemporaryFolder @Rule for automated tear down of temp files.
Reduce @Before specific logic, following java dev guide. PiperOrigin-RevId: 558825609
This commit is contained in:
parent
3ced1cbaa2
commit
7346029f72
5 changed files with 120 additions and 135 deletions
|
|
@ -32,16 +32,15 @@ import static com.google.common.truth.Truth.assertThat;
|
|||
import android.content.Context;
|
||||
import androidx.media3.common.MediaItem;
|
||||
import androidx.media3.common.MimeTypes;
|
||||
import androidx.media3.common.util.Util;
|
||||
import androidx.media3.test.utils.DumpFileAsserts;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
/**
|
||||
|
|
@ -50,23 +49,19 @@ import org.junit.runner.RunWith;
|
|||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class CompositionExportTest {
|
||||
@Rule public final TemporaryFolder outputDir = new TemporaryFolder();
|
||||
|
||||
private Context context;
|
||||
private String outputPath;
|
||||
private CapturingMuxer.Factory muxerFactory;
|
||||
private final Context context = ApplicationProvider.getApplicationContext();
|
||||
private final CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory();
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
context = ApplicationProvider.getApplicationContext();
|
||||
outputPath = Util.createTempFile(context, "TransformerTest").getPath();
|
||||
muxerFactory = new CapturingMuxer.Factory();
|
||||
public void setUp() {
|
||||
addAudioDecoders(MimeTypes.AUDIO_RAW);
|
||||
addAudioEncoders(MimeTypes.AUDIO_AAC);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
Files.delete(Paths.get(outputPath));
|
||||
public void tearDown() {
|
||||
removeEncodersAndDecoders();
|
||||
}
|
||||
|
||||
|
|
@ -76,7 +71,7 @@ public class CompositionExportTest {
|
|||
Transformer transformer =
|
||||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
ExportResult expectedExportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
EditedMediaItem audioEditedMediaItem =
|
||||
|
|
@ -91,7 +86,7 @@ public class CompositionExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
// We can't compare the muxer output against a dump file because the asset loaders in each
|
||||
|
|
@ -122,7 +117,7 @@ public class CompositionExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(exportResult.processedInputs).hasSize(6);
|
||||
|
|
@ -152,7 +147,7 @@ public class CompositionExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(exportResult.processedInputs).hasSize(7);
|
||||
|
|
@ -182,7 +177,7 @@ public class CompositionExportTest {
|
|||
Composition composition =
|
||||
new Composition.Builder(loopingAudioSequence, videoSequence).setTransmuxVideo(true).build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(exportResult.durationMs).isEqualTo(31_053);
|
||||
|
|
@ -205,7 +200,7 @@ public class CompositionExportTest {
|
|||
new EditedMediaItemSequence(rawAudioEditedMediaItem))
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(exportResult.processedInputs).hasSize(2);
|
||||
|
|
@ -234,7 +229,7 @@ public class CompositionExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(exportResult.processedInputs).hasSize(2);
|
||||
|
|
@ -263,7 +258,7 @@ public class CompositionExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(exportResult.processedInputs).hasSize(7);
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ import androidx.media3.common.Format;
|
|||
import androidx.media3.common.MediaItem;
|
||||
import androidx.media3.common.MimeTypes;
|
||||
import androidx.media3.common.audio.SonicAudioProcessor;
|
||||
import androidx.media3.common.util.Util;
|
||||
import androidx.media3.effect.Presentation;
|
||||
import androidx.media3.effect.ScaleAndRotateTransformation;
|
||||
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory;
|
||||
|
|
@ -84,8 +83,6 @@ import com.google.common.collect.ImmutableMap;
|
|||
import com.google.common.collect.Iterables;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
|
@ -97,7 +94,9 @@ import java.util.concurrent.atomic.AtomicReference;
|
|||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.robolectric.shadows.ShadowMediaCodec;
|
||||
|
|
@ -108,27 +107,22 @@ import org.robolectric.shadows.ShadowMediaCodec;
|
|||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public final class MediaItemExportTest {
|
||||
@Rule public final TemporaryFolder outputDir = new TemporaryFolder();
|
||||
|
||||
private Context context;
|
||||
private String outputPath;
|
||||
private CapturingMuxer.Factory muxerFactory;
|
||||
private ProgressHolder progressHolder;
|
||||
private ArgumentCaptor<Composition> compositionArgumentCaptor;
|
||||
private final Context context = ApplicationProvider.getApplicationContext();
|
||||
private final CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory();
|
||||
private final ProgressHolder progressHolder = new ProgressHolder();
|
||||
private final ArgumentCaptor<Composition> compositionArgumentCaptor =
|
||||
ArgumentCaptor.forClass(Composition.class);
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
context = ApplicationProvider.getApplicationContext();
|
||||
outputPath = Util.createTempFile(context, "TransformerTest").getPath();
|
||||
muxerFactory = new CapturingMuxer.Factory();
|
||||
progressHolder = new ProgressHolder();
|
||||
compositionArgumentCaptor = ArgumentCaptor.forClass(Composition.class);
|
||||
public void setUp() {
|
||||
addAudioDecoders(MimeTypes.AUDIO_RAW);
|
||||
addAudioEncoders(MimeTypes.AUDIO_AAC);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
Files.delete(Paths.get(outputPath));
|
||||
public void tearDown() {
|
||||
removeEncodersAndDecoders();
|
||||
}
|
||||
|
||||
|
|
@ -138,7 +132,7 @@ public final class MediaItemExportTest {
|
|||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -152,7 +146,7 @@ public final class MediaItemExportTest {
|
|||
// No decoders or encoders for AMR NB.
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_AMR_NB);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -167,7 +161,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -182,7 +176,7 @@ public final class MediaItemExportTest {
|
|||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -205,7 +199,7 @@ public final class MediaItemExportTest {
|
|||
.build())
|
||||
.build();
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -227,7 +221,7 @@ public final class MediaItemExportTest {
|
|||
.setRemoveAudio(true)
|
||||
.build();
|
||||
|
||||
transformer.start(editedMediaItem, outputPath);
|
||||
transformer.start(editedMediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -244,12 +238,11 @@ public final class MediaItemExportTest {
|
|||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
// Transform first media item.
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile("first").getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
Files.delete(Paths.get(outputPath));
|
||||
|
||||
// Transform second media item.
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile("second").getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -257,14 +250,16 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void start_concurrentExports_throwsError() {
|
||||
public void start_concurrentExports_throwsError() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile("first").getPath());
|
||||
|
||||
assertThrows(IllegalStateException.class, () -> transformer.start(mediaItem, outputPath));
|
||||
assertThrows(
|
||||
IllegalStateException.class,
|
||||
() -> transformer.start(mediaItem, outputDir.newFile("second").getPath()));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -276,7 +271,7 @@ public final class MediaItemExportTest {
|
|||
.setRemoveAudio(true)
|
||||
.build();
|
||||
|
||||
transformer.start(editedMediaItem, outputPath);
|
||||
transformer.start(editedMediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -295,7 +290,7 @@ public final class MediaItemExportTest {
|
|||
.setRemoveVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(editedMediaItem, outputPath);
|
||||
transformer.start(editedMediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -316,7 +311,7 @@ public final class MediaItemExportTest {
|
|||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -334,7 +329,7 @@ public final class MediaItemExportTest {
|
|||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -354,7 +349,7 @@ public final class MediaItemExportTest {
|
|||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -381,7 +376,7 @@ public final class MediaItemExportTest {
|
|||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -406,7 +401,7 @@ public final class MediaItemExportTest {
|
|||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
|
|
@ -426,7 +421,7 @@ public final class MediaItemExportTest {
|
|||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -449,7 +444,7 @@ public final class MediaItemExportTest {
|
|||
.setEffects(createAudioEffects(sonicAudioProcessor))
|
||||
.build();
|
||||
|
||||
transformer.start(editedMediaItem, outputPath);
|
||||
transformer.start(editedMediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -474,7 +469,7 @@ public final class MediaItemExportTest {
|
|||
.setTransmuxAudio(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
|
|
@ -495,7 +490,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
verify(mockListener1).onCompleted(compositionArgumentCaptor.capture(), any());
|
||||
|
|
@ -505,7 +500,7 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void start_withMultipleListeners_callsEachOnError() {
|
||||
public void start_withMultipleListeners_callsEachOnError() throws Exception {
|
||||
Transformer.Listener mockListener1 = mock(Transformer.Listener.class);
|
||||
Transformer.Listener mockListener2 = mock(Transformer.Listener.class);
|
||||
Transformer.Listener mockListener3 = mock(Transformer.Listener.class);
|
||||
|
|
@ -519,7 +514,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_AMR_WB);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
ExportException exception =
|
||||
assertThrows(ExportException.class, () -> TransformerTestRunner.runLooper(transformer));
|
||||
|
||||
|
|
@ -546,7 +541,8 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
|
||||
// No RAW encoder/muxer support, so fallback.
|
||||
transformer.start(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW), outputPath);
|
||||
transformer.start(
|
||||
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW), outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
verify(mockListener1)
|
||||
|
|
@ -587,7 +583,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(deprecatedFallbackCalled1.get()).isTrue();
|
||||
|
|
@ -629,7 +625,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri("invalid.uri");
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
try {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
} catch (ExportException exportException) {
|
||||
|
|
@ -659,7 +655,8 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
|
||||
// No RAW encoder/muxer support, so fallback.
|
||||
transformer.start(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW), outputPath);
|
||||
transformer.start(
|
||||
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW), outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(deprecatedFallbackCalled.get()).isTrue();
|
||||
|
|
@ -680,7 +677,7 @@ public final class MediaItemExportTest {
|
|||
Transformer transformer2 = transformer1.buildUpon().removeListener(mockListener2).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer2.start(mediaItem, outputPath);
|
||||
transformer2.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer2);
|
||||
|
||||
verify(mockListener1).onCompleted(compositionArgumentCaptor.capture(), any());
|
||||
|
|
@ -698,7 +695,7 @@ public final class MediaItemExportTest {
|
|||
.setRemoveAudio(true)
|
||||
.build();
|
||||
|
||||
transformer.start(editedMediaItem, outputPath);
|
||||
transformer.start(editedMediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -714,7 +711,7 @@ public final class MediaItemExportTest {
|
|||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
assertThat(exportResult.averageAudioBitrate).isGreaterThan(0);
|
||||
|
|
@ -722,7 +719,7 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void start_whenCodecFailsToConfigure_completesWithError() {
|
||||
public void start_whenCodecFailsToConfigure_completesWithError() throws Exception {
|
||||
String expectedFailureMessage = "Format not valid. AMR NB (3gpp)";
|
||||
ShadowMediaCodec.CodecConfig throwOnConfigureCodecConfig =
|
||||
new ShadowMediaCodec.CodecConfig(
|
||||
|
|
@ -751,7 +748,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
ExportException exception =
|
||||
assertThrows(ExportException.class, () -> TransformerTestRunner.runLooper(transformer));
|
||||
assertThat(exception.errorCode)
|
||||
|
|
@ -761,14 +758,14 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void start_withAudioFormatUnsupportedByDecoder_completesWithError() {
|
||||
public void start_withAudioFormatUnsupportedByDecoder_completesWithError() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false)
|
||||
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_AMR_WB);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
ExportException exception =
|
||||
assertThrows(ExportException.class, () -> TransformerTestRunner.runLooper(transformer));
|
||||
assertThat(exception).hasCauseThat().isInstanceOf(IllegalArgumentException.class);
|
||||
|
|
@ -798,7 +795,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -832,7 +829,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -847,12 +844,12 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void start_withIoError_completesWithError() {
|
||||
public void start_withIoError_completesWithError() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri("asset:///non-existing-path.mp4");
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
ExportException exception =
|
||||
assertThrows(ExportException.class, () -> TransformerTestRunner.runLooper(transformer));
|
||||
assertThat(exception).hasCauseThat().hasCauseThat().isInstanceOf(IOException.class);
|
||||
|
|
@ -860,7 +857,7 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void start_withSlowOutputSampleRate_completesWithError() {
|
||||
public void start_withSlowOutputSampleRate_completesWithError() throws Exception {
|
||||
MediaSource.Factory mediaSourceFactory =
|
||||
new DefaultMediaSourceFactory(
|
||||
context, new SlowExtractorsFactory(/* delayBetweenReadsMs= */ 10));
|
||||
|
|
@ -880,7 +877,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
ExportException exception =
|
||||
assertThrows(ExportException.class, () -> TransformerTestRunner.runLooper(transformer));
|
||||
assertThat(exception).hasCauseThat().isInstanceOf(IllegalStateException.class);
|
||||
|
|
@ -895,7 +892,7 @@ public final class MediaItemExportTest {
|
|||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -908,12 +905,11 @@ public final class MediaItemExportTest {
|
|||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile("first").getPath());
|
||||
transformer.cancel();
|
||||
Files.delete(Paths.get(outputPath));
|
||||
|
||||
// This would throw if the previous export had not been cancelled.
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile("second").getPath());
|
||||
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
// TODO(b/264974805): Make export output deterministic and check it against dump file.
|
||||
|
|
@ -937,7 +933,7 @@ public final class MediaItemExportTest {
|
|||
.post(
|
||||
() -> {
|
||||
try {
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
} catch (Exception e) {
|
||||
exception.set(e);
|
||||
|
|
@ -961,6 +957,7 @@ public final class MediaItemExportTest {
|
|||
AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>();
|
||||
CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||
|
||||
String outputPath = outputDir.newFile().getPath();
|
||||
anotherThread.start();
|
||||
new Handler(anotherThread.getLooper())
|
||||
.post(
|
||||
|
|
@ -989,7 +986,7 @@ public final class MediaItemExportTest {
|
|||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
runLooperUntil(transformer.getApplicationLooper(), () -> sampleConsumerRef.get() != null);
|
||||
|
||||
// Can never be false.
|
||||
|
|
@ -997,7 +994,8 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void start_withAssetLoaderNotDecodingAndDecodingNeeded_completesWithError() {
|
||||
public void start_withAssetLoaderNotDecodingAndDecodingNeeded_completesWithError()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false)
|
||||
.setAssetLoaderFactory(
|
||||
|
|
@ -1010,7 +1008,7 @@ public final class MediaItemExportTest {
|
|||
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
|
||||
.build();
|
||||
|
||||
transformer.start(editedMediaItem, outputPath);
|
||||
transformer.start(editedMediaItem, outputDir.newFile().getPath());
|
||||
ExportException exportException =
|
||||
assertThrows(ExportException.class, () -> TransformerTestRunner.runLooper(transformer));
|
||||
|
||||
|
|
@ -1031,7 +1029,7 @@ public final class MediaItemExportTest {
|
|||
EditedMediaItem editedMediaItem =
|
||||
new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();
|
||||
|
||||
transformer.start(editedMediaItem, outputPath);
|
||||
transformer.start(editedMediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
// Video transcoding in unit tests is not supported.
|
||||
|
|
@ -1051,7 +1049,7 @@ public final class MediaItemExportTest {
|
|||
EditedMediaItem editedMediaItem =
|
||||
new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();
|
||||
|
||||
transformer.start(editedMediaItem, outputPath);
|
||||
transformer.start(editedMediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
// Video transcoding in unit tests is not supported.
|
||||
|
|
@ -1102,7 +1100,7 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
};
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
progressHandler.sendEmptyMessage(0);
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
|
|
@ -1132,7 +1130,7 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
};
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
progressHandler.sendEmptyMessage(0);
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
|
|
@ -1151,7 +1149,7 @@ public final class MediaItemExportTest {
|
|||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
|
||||
@Transformer.ProgressState int stateBeforeTransform = transformer.getProgress(progressHolder);
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
@Transformer.ProgressState int stateAfterTransform = transformer.getProgress(progressHolder);
|
||||
|
||||
|
|
@ -1196,7 +1194,7 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
};
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
progressHandler.sendEmptyMessage(0);
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
|
|
@ -1234,7 +1232,7 @@ public final class MediaItemExportTest {
|
|||
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
transformer.start(mediaItem, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
transformer.cancel();
|
||||
}
|
||||
|
|
@ -1334,7 +1332,7 @@ public final class MediaItemExportTest {
|
|||
}
|
||||
}
|
||||
|
||||
public static final class FakeAssetLoader implements AssetLoader {
|
||||
private static final class FakeAssetLoader implements AssetLoader {
|
||||
|
||||
public static final class Factory implements AssetLoader.Factory {
|
||||
|
||||
|
|
|
|||
|
|
@ -114,6 +114,7 @@ public final class ParameterizedAudioExportTest {
|
|||
/* removeVideo= */ false));
|
||||
|
||||
@Rule public final TemporaryFolder outputDir = new TemporaryFolder();
|
||||
|
||||
@Parameter public SequenceConfig sequence;
|
||||
|
||||
private final CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory();
|
||||
|
|
|
|||
|
|
@ -33,17 +33,16 @@ import static androidx.media3.transformer.TestUtil.removeEncodersAndDecoders;
|
|||
import android.content.Context;
|
||||
import androidx.media3.common.MediaItem;
|
||||
import androidx.media3.common.MimeTypes;
|
||||
import androidx.media3.common.util.Util;
|
||||
import androidx.media3.effect.RgbFilter;
|
||||
import androidx.media3.test.utils.DumpFileAsserts;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
/**
|
||||
|
|
@ -59,23 +58,19 @@ import org.junit.runner.RunWith;
|
|||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public final class SequenceExportTest {
|
||||
@Rule public final TemporaryFolder outputDir = new TemporaryFolder();
|
||||
|
||||
private Context context;
|
||||
private String outputPath;
|
||||
private CapturingMuxer.Factory muxerFactory;
|
||||
private final Context context = ApplicationProvider.getApplicationContext();
|
||||
private final CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory();
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
context = ApplicationProvider.getApplicationContext();
|
||||
outputPath = Util.createTempFile(context, "TransformerTest").getPath();
|
||||
muxerFactory = new CapturingMuxer.Factory();
|
||||
public void setUp() {
|
||||
addAudioDecoders(MimeTypes.AUDIO_RAW);
|
||||
addAudioEncoders(MimeTypes.AUDIO_AAC);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
Files.delete(Paths.get(outputPath));
|
||||
public void tearDown() {
|
||||
removeEncodersAndDecoders();
|
||||
}
|
||||
|
||||
|
|
@ -91,7 +86,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -123,7 +118,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -169,7 +164,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -198,7 +193,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -226,7 +221,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -260,7 +255,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -294,7 +289,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -320,7 +315,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -351,7 +346,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -382,7 +377,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -416,7 +411,7 @@ public final class SequenceExportTest {
|
|||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -438,7 +433,7 @@ public final class SequenceExportTest {
|
|||
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem, editedMediaItem))
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -464,7 +459,7 @@ public final class SequenceExportTest {
|
|||
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem, editedMediaItem))
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -496,7 +491,7 @@ public final class SequenceExportTest {
|
|||
new Composition.Builder(new EditedMediaItemSequence(highPitchMediaItem, lowPitchMediaItem))
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -522,7 +517,7 @@ public final class SequenceExportTest {
|
|||
new EditedMediaItem.Builder(mono44100Audio).build()))
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -553,7 +548,7 @@ public final class SequenceExportTest {
|
|||
new Composition.Builder(new EditedMediaItemSequence(stereo48000Audio, mono44100Audio))
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
@ -585,7 +580,7 @@ public final class SequenceExportTest {
|
|||
new EditedMediaItemSequence(stereo48000AudioHighPitch, mono44100AudioLowPitch))
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputPath);
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
|
|
|
|||
|
|
@ -35,29 +35,25 @@ import androidx.media3.test.utils.FakeClock;
|
|||
import androidx.media3.test.utils.FakeExtractorOutput;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
/** End-to-end test for {@link Transformer} with {@link InAppMuxer}. */
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class TransformerWithInAppMuxerEndToEndTest {
|
||||
private static final String XMP_SAMPLE_DATA = "media/xmp/sample_datetime_xmp.xmp";
|
||||
private Context context;
|
||||
|
||||
@Rule public final TemporaryFolder outputDir = new TemporaryFolder();
|
||||
|
||||
private final Context context = ApplicationProvider.getApplicationContext();
|
||||
private String outputPath;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
context = ApplicationProvider.getApplicationContext();
|
||||
outputPath = Util.createTempFile(context, "TransformerTest").getPath();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
Files.delete(Paths.get(outputPath));
|
||||
public void setup() throws Exception {
|
||||
outputPath = outputDir.newFile().getPath();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
Loading…
Reference in a new issue